Skip to content

Commit be6238a

Browse files
committed
Features:
Bug Fixes/Re-organization: - SIMM Estimator Product Class Settings - Label Correlation (1) - SIMM Estimator Product Class Settings - FX Risk Sensitivity (2, 3) - SIMM Estimator Product Class Settings - IR Risk Sensitivity (4, 5) - SIMM Estimator Product Class Settings - Equity Risk Sensitivity (6, 7) - SIMM Estimator Product Class Settings - Commodity Risk Sensitivity (8, 9) - SIMM Estimator Product Class Settings - Credit Qualifying Risk Sensitivity (10, 11) - SIMM Estimator Product Class Settings - Non-credit Qualifying Risk Sensitivity (12, 13) - SIMM Estimator Product Class Settings - ISDA 2.0 (14) - SIMM Estimator Product Class Settings - ISDA 2.1 (15) - SIMM Estimator Product Class Settings - ISDA 2.4 (16) - SIMM Estimator Product Class Settings - Constructor (17, 18, 19) - SIMM Foundation Curvature Estimator (20, 21) - SIMM Foundation Curvature Estimator - Compute the SBA Margin from the Sensitivities (22) - SIMM Foundation Curvature Estimator - Indicate if the Correlator is Quadratic (23) - SIMM Foundation Curvature Estimator - Generate the Bucket Pair Variance Modulator (24) - SIMM Foundation Curvature Estimator FRTB (25, 26) - SIMM Foundation Curvature Estimator FRTB - Construct the Standard Instance (27) - SIMM Foundation Curvature Estimator FRTB - Empty Constructor (28) - SIMM Foundation Curvature Estimator FRTB - Margin (29) - SIMM Foundation Curvature Estimator FRTB - Is Correlator Quadratric (30) - SIMM Foundation Curvature Estimator FRTB - Variance Modulator (31) - SIMM Foundation Curvature Estimator ISDA Delta (32, 33) - SIMM Foundation Curvature Estimator ISDA Delta - Construct the Standard Instance (34) - SIMM Foundation Curvature Estimator ISDA Delta - Empty Constructor (35) - SIMM Foundation Curvature Estimator ISDA Delta - Margin (36, 37) - SIMM Foundation Curvature Estimator ISDA Delta - Is Correlator Quadratric (38) - SIMM Foundation Curvature Estimator ISDA Delta - Variance Modulator (39) - SIMM Foundation Curvature Estimator Response Function #1 (40, 41) - SIMM Foundation Curvature Response (42, 43) - SIMM Foundation Curvature Response - Lambda (44) - SIMM Foundation Curvature Estimator Response Function #2 (45, 46) - SIMM Foundation Curvature Estimator Response Function - Constructor (47) - SIMM Foundation Curvature Estimator Response Function - Margin (48) - SIMM Foundation Curvature Estimator Response Function - Correlator is Quadratic (49) - SIMM Foundation Curvature Estimator Response Function - Variance Modulator (50) - SIMM Foundation Curvature Response Cornish Fischer (51, 52) - SIMM Foundation Curvature Response Cornish Fischer - ISDA SIMM VaR Cut-off (53) - SIMM Foundation Curvature Response Cornish Fischer - Retrieve the VaR Cut-off (54, 55) - SIMM Foundation Curvature Response Cornish Fischer - Retrieve the Lambda Plateau Peak (56, 57) - SIMM Foundation Curvature Response Cornish Fischer - Standard (58) - SIMM Foundation Curvature Response Cornish Fischer - Constructor (59) - SIMM Foundation Curvature Response Cornish Fischer - Lambda (60) Samples: IdeaDRIP:
1 parent 4999659 commit be6238a

8 files changed

+297
-211
lines changed

ScheduleSheet.xlsx

-2 Bytes
Binary file not shown.

src/main/java/org/drip/simm/estimator/ProductClassSettings.java

+48-73
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,17 @@
122122
* It provides the following Functionality:
123123
*
124124
* <ul>
125-
* <li><i>ProductClassSensitivity</i> Constructor</li>
125+
* <li>Construct an ISDA SIMM 2.0 Version of <i>ProductClassSettings</i></li>
126+
* <li>Construct an ISDA SIMM 2.1 Version of <i>ProductClassSettings</i></li>
127+
* <li>Construct an ISDA SIMM 2.4 Version of <i>ProductClassSettings</i></li>
128+
* <li><i>ProductClassSettings</i> Constructor</li>
129+
* <li>Retrieve the Equity Risk Class Sensitivity Settings</li>
130+
* <li>Retrieve the Commodity Risk Class Sensitivity Settings</li>
131+
* <li>Retrieve the FX Risk Class Sensitivity Settings</li>
132+
* <li>Retrieve the IR Risk Class Sensitivity Settings</li>
133+
* <li>Retrieve the Credit Qualifying Risk Class Sensitivity Settings</li>
134+
* <li>Retrieve the Credit Non-Qualifying Risk Class Sensitivity Settings</li>
135+
* <li>Retrieve the Cross Risk Class Label Correlation</li>
126136
* </ul>
127137
*
128138
* <br>
@@ -148,96 +158,74 @@ public class ProductClassSettings
148158
private RiskClassSensitivitySettingsCR _creditNonQualifyingRiskClassSensitivitySettings = null;
149159

150160
/**
151-
* Construct an ISDA SIMM 2.0 Version of ProductClassSettings
161+
* Construct an ISDA SIMM 2.0 Version of <i>ProductClassSettings</i>
152162
*
153163
* @param currencyList Currency List
154164
* @param vegaDurationDays The Volatility Duration in Days
155165
*
156-
* @return ISDA SIMM 2.0 Version of ProductClassSettings
166+
* @return ISDA SIMM 2.0 Version of <i>ProductClassSettings</i>
157167
*/
158168

159169
public static final ProductClassSettings ISDA_20 (
160170
final List<String> currencyList,
161171
final int vegaDurationDays)
162172
{
163-
try
164-
{
173+
try {
165174
return new ProductClassSettings (
166-
RiskClassSensitivitySettings.ISDA_EQ_20 (
167-
vegaDurationDays
168-
),
169-
RiskClassSensitivitySettings.ISDA_CT_20 (
170-
vegaDurationDays
171-
),
172-
RiskClassSensitivitySettings.ISDA_FX_20 (
173-
vegaDurationDays
174-
),
175-
RiskClassSensitivitySettingsIR.ISDA_20 (
176-
currencyList
177-
),
175+
RiskClassSensitivitySettings.ISDA_EQ_20 (vegaDurationDays),
176+
RiskClassSensitivitySettings.ISDA_CT_20 (vegaDurationDays),
177+
RiskClassSensitivitySettings.ISDA_FX_20 (vegaDurationDays),
178+
RiskClassSensitivitySettingsIR.ISDA_20 (currencyList),
178179
RiskClassSensitivitySettingsCR.ISDA_CRQ_20(),
179180
RiskClassSensitivitySettingsCR.ISDA_CRNQ_20(),
180181
CrossRiskClassCorrelation20.Matrix()
181182
);
182-
}
183-
catch (Exception e)
184-
{
183+
} catch (Exception e) {
185184
e.printStackTrace();
186185
}
187186

188187
return null;
189188
}
190189

191190
/**
192-
* Construct an ISDA SIMM 2.1 Version of ProductClassSettings
191+
* Construct an ISDA SIMM 2.1 Version of <i>ProductClassSettings</i>
193192
*
194193
* @param currencyList Currency List
195194
* @param vegaDurationDays The Volatility Duration in Days
196195
*
197-
* @return ISDA SIMM 2.1 Version of ProductClassSettings
196+
* @return ISDA SIMM 2.1 Version of <i>ProductClassSettings</i>
198197
*/
199198

200199
public static final ProductClassSettings ISDA_21 (
201200
final List<String> currencyList,
202201
final int vegaDurationDays)
203202
{
204-
try
205-
{
203+
try {
206204
return new ProductClassSettings (
207-
RiskClassSensitivitySettings.ISDA_EQ_21 (
208-
vegaDurationDays
209-
),
210-
RiskClassSensitivitySettings.ISDA_CT_21 (
211-
vegaDurationDays
212-
),
213-
RiskClassSensitivitySettings.ISDA_FX_21 (
214-
vegaDurationDays
215-
),
216-
RiskClassSensitivitySettingsIR.ISDA_21 (
217-
currencyList
218-
),
205+
RiskClassSensitivitySettings.ISDA_EQ_21 (vegaDurationDays),
206+
RiskClassSensitivitySettings.ISDA_CT_21 (vegaDurationDays),
207+
RiskClassSensitivitySettings.ISDA_FX_21 (vegaDurationDays),
208+
RiskClassSensitivitySettingsIR.ISDA_21 (currencyList),
219209
RiskClassSensitivitySettingsCR.ISDA_CRQ_21(),
220210
RiskClassSensitivitySettingsCR.ISDA_CRNQ_21(),
221211
CrossRiskClassCorrelation21.Matrix()
222212
);
223-
}
224-
catch (Exception e)
225-
{
213+
} catch (Exception e) {
226214
e.printStackTrace();
227215
}
228216

229217
return null;
230218
}
231219

232220
/**
233-
* Construct an ISDA SIMM 2.4 Version of ProductClassSettings
221+
* Construct an ISDA SIMM 2.4 Version of <i>ProductClassSettings</i>
234222
*
235223
* @param currencyList Currency List
236224
* @param vegaDurationDays The Volatility Duration in Days
237225
* @param givenCurrency Given Currency
238226
* @param calculationCurrency Calculation Currency
239227
*
240-
* @return ISDA SIMM 2.4 Version of ProductClassSettings
228+
* @return ISDA SIMM 2.4 Version of <i>ProductClassSettings</i>
241229
*/
242230

243231
public static final ProductClassSettings ISDA_24 (
@@ -246,38 +234,29 @@ public static final ProductClassSettings ISDA_24 (
246234
final String givenCurrency,
247235
final String calculationCurrency)
248236
{
249-
try
250-
{
237+
try {
251238
return new ProductClassSettings (
252-
RiskClassSensitivitySettings.ISDA_EQ_24 (
253-
vegaDurationDays
254-
),
255-
RiskClassSensitivitySettings.ISDA_CT_24 (
256-
vegaDurationDays
257-
),
239+
RiskClassSensitivitySettings.ISDA_EQ_24 (vegaDurationDays),
240+
RiskClassSensitivitySettings.ISDA_CT_24 (vegaDurationDays),
258241
RiskClassSensitivitySettings.ISDA_FX_24 (
259242
vegaDurationDays,
260243
givenCurrency,
261244
calculationCurrency
262245
),
263-
RiskClassSensitivitySettingsIR.ISDA_24 (
264-
currencyList
265-
),
246+
RiskClassSensitivitySettingsIR.ISDA_24 (currencyList),
266247
RiskClassSensitivitySettingsCR.ISDA_CRQ_24(),
267248
RiskClassSensitivitySettingsCR.ISDA_CRNQ_24(),
268249
CrossRiskClassCorrelation21.Matrix()
269250
);
270-
}
271-
catch (Exception e)
272-
{
251+
} catch (Exception e) {
273252
e.printStackTrace();
274253
}
275254

276255
return null;
277256
}
278257

279258
/**
280-
* ProductClassSettings Constructor
259+
* <i>ProductClassSettings</i> Constructor
281260
*
282261
* @param equityRiskClassSensitivitySettings Equity Risk Class Sensitivity Settings
283262
* @param commodityRiskClassSensitivitySettings Commodity Risk Class Sensitivity Settings
@@ -301,24 +280,20 @@ public ProductClassSettings (
301280
final LabelCorrelation labelCorrelation)
302281
throws Exception
303282
{
304-
_fxRiskClassSensitivitySettings = fxRiskClassSensitivitySettings;
305-
_irRiskClassSensitivitySettings = irRiskClassSensitivitySettings;
306-
_equityRiskClassSensitivitySettings = equityRiskClassSensitivitySettings;
307-
_commodityRiskClassSensitivitySettings = commodityRiskClassSensitivitySettings;
308-
_creditQualifyingRiskClassSensitivitySettings = creditQualifyingRiskClassSensitivitySettings;
309-
_creditNonQualifyingRiskClassSensitivitySettings = creditNonQualifyingRiskClassSensitivitySettings;
310-
311-
if ((null == _equityRiskClassSensitivitySettings &&
312-
null == _commodityRiskClassSensitivitySettings &&
313-
null == _fxRiskClassSensitivitySettings &&
314-
null == _irRiskClassSensitivitySettings &&
315-
null == _creditQualifyingRiskClassSensitivitySettings &&
316-
null == _creditNonQualifyingRiskClassSensitivitySettings) ||
317-
null == (_labelCorrelation = labelCorrelation))
283+
if (
284+
(
285+
null == (_equityRiskClassSensitivitySettings = equityRiskClassSensitivitySettings) &&
286+
null == (_commodityRiskClassSensitivitySettings = commodityRiskClassSensitivitySettings) &&
287+
null == (_fxRiskClassSensitivitySettings = fxRiskClassSensitivitySettings) &&
288+
null == (_irRiskClassSensitivitySettings = irRiskClassSensitivitySettings) &&
289+
null == (_creditQualifyingRiskClassSensitivitySettings =
290+
creditQualifyingRiskClassSensitivitySettings) &&
291+
null == (_creditNonQualifyingRiskClassSensitivitySettings =
292+
creditNonQualifyingRiskClassSensitivitySettings
293+
)
294+
) || null == (_labelCorrelation = labelCorrelation))
318295
{
319-
throw new Exception (
320-
"ProductClassSettings Constructor => Invalid Inputs"
321-
);
296+
throw new Exception ("ProductClassSettings Constructor => Invalid Inputs");
322297
}
323298
}
324299

src/main/java/org/drip/simm/foundation/CurvatureEstimator.java

+19-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
*/
77

88
/*!
9+
* Copyright (C) 2025 Lakshmi Krishnamurthy
10+
* Copyright (C) 2024 Lakshmi Krishnamurthy
11+
* Copyright (C) 2023 Lakshmi Krishnamurthy
912
* Copyright (C) 2022 Lakshmi Krishnamurthy
1013
* Copyright (C) 2021 Lakshmi Krishnamurthy
1114
* Copyright (C) 2020 Lakshmi Krishnamurthy
@@ -79,7 +82,7 @@
7982

8083
/**
8184
* <i>CurvatureEstimator</i> exposes the Curvature Margin Estimation using the Curvature Sensitivities. The
82-
* References are:
85+
* References are:
8386
*
8487
* <br><br>
8588
* <ul>
@@ -106,15 +109,23 @@
106109
* https://www.isda.org/a/oFiDE/isda-simm-v2.pdf
107110
* </li>
108111
* </ul>
109-
*
110-
* <br><br>
112+
*
113+
* It provides the following Functionality:
114+
*
111115
* <ul>
112-
* <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/PortfolioCore.md">Portfolio Core Module</a></li>
113-
* <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/MarginAnalyticsLibrary.md">Initial and Variation Margin Analytics</a></li>
114-
* <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/simm/README.md">Initial Margin Analytics based on ISDA SIMM and its Variants</a></li>
115-
* <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/simm/foundation/README.md">Foundation Utilities for ISDA SIMM</a></li>
116+
* <li>Compute the SBA Margin from the Curvature Sensitivities</li>
117+
* <li>Indicate if the Correlator is Quadratic</li>
118+
* <li>Generate the Bucket Pair Curvature Variance Modulator</li>
116119
* </ul>
117-
* <br><br>
120+
*
121+
* <br>
122+
* <table style="border:1px solid black;margin-left:auto;margin-right:auto;">
123+
* <tr><td><b>Module </b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/PortfolioCore.md">Portfolio Core Module</a></td></tr>
124+
* <tr><td><b>Library</b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/MarginAnalyticsLibrary.md">Initial and Variation Margin Analytics</a></td></tr>
125+
* <tr><td><b>Project</b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/simm/README.md">Initial Margin Analytics based on ISDA SIMM and its Variants</a></td></tr>
126+
* <tr><td><b>Package</b></td> <td><a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/simm/foundation/README.md">Foundation Utilities for ISDA SIMM</a></td></tr>
127+
* </table>
128+
* <br>
118129
*
119130
* @author Lakshmi Krishnamurthy
120131
*/

0 commit comments

Comments
 (0)