SIMM

Introduction

This section outlines our interpretation of the SIMM variance-covariance methodology1 and describes the input data, calculations, and results.

Quick overview

Summary of the aggregation steps:

For each NettingSet:
   For each ProductClass in [RatesFX, Credit, Equity, Commodity]:
     For each RiskClass in [Interest Rate, Credit Qualifying, Credit Non-Qualifying, Equity, Commodity, FX]:
         Compute Delta, Vega, Curvature and BaseCorr margins
      IM_<RiskClass> (from <SensitivityType>Margin): IM_x = DeltaMargin_x +
                                     + VegaMargin_x + CurvatureMargin_x + BaseCorrMargin_x
   SIMM_product (from IM_<RiskClass>): aggregate IM across risk classes (variance covariance)
SIMM (from SIMM_product): SIMM = SIMMRatesFX + SIMMCredit + SIMMEquity+SIMMCommodity

Step-by-step overview:

  1. Inputs:
    1. Read and process sensitivities - $s$,
    2. Compute vega risk (weight vega by vol) for Equity, Commodity, FX,
    3. Generate Curvature Risk Exposure CVR from vegas.
  2. Define aggregation levels - k and b:
    1. Derived Risk Factor - $k$,
    2. Derived Bucket - $b$,
    3. for each input sensitivity record.
  3. Compute Weighted sensitivity $WS_k$:
    1. Lookup concentration thresholds $Tb$
    2. Compute concentration risk factor $CR$
    3. Assign risk weights $RW$
    4. Compute weighted sensitivity $WS$
  4. Bucket-level margin $K_b$:
    1. Lookup risk factor correlations $\rho_{kl}$ (and $\phi_{i,j}$ for rates)
    2. Compute inner correlation adjustment factor $f_{k,l}$ for non-IR risk classes
    3. Compute bucket-level margin $K_b$
  5. Delta, Vega, BaseCorr, and Curvature margins for each risk class
    1. Look up cross-bucket correlation $\gamma_{k,l}$
    2. Compute $S_b$ for each bucket
    3. Compute inner correlation adjustment factor $g_{b,c}$ for IR risk classes
    4. Compute margins for each risk class and sensitivity type
  6. Compute risk class level margin (sum across sensitivity types)
  7. Compute product level margin (aggregate across risk classes using variance-covariance formula)
  8. Compute total SIMM requirement (sum across product classes)

Reading and processing sensitivities

Atoti ISDA-SIMM expects to receive trade-level sensitivities in CRIF format from the upstream risk engine and data management systems.

Calculation Currency and FX Delta

The calculation currency is looked up for each netting set based on the netting set attributes. FX Delta exposures where qualifier matches the calculation currency do not contribute into Margin.

Compute vol-weighted vega risk

This step is applicable for equity, fx, and commodity risk classes.

Vol-weighted vega risk is computed as follows:

$$VR_{i,k} = HVR_{RiskClass}\cdot \sum_{j} \sigma_{kj} \cdot \frac{\partial V_i}{\partial \sigma}$$

where $\sum_{j}$ - summing across tenors.

where $\alpha = \Phi^{-1}(99%)$.

See the resulting measures in the Sensitivities section.

Generate Curvature Risk Exposure CVR from vegas

Curvature Risk Exposure is used for gamma effect calculation (approximation) and is denoted as $CVR_{ik}$, where i is for instrument (trade).

CVR is maturity-weighted and volatility-weighted vega across tenors, where weights are defined as $SF(t)$:

$$SF(t) = 0.5 \cdot min(1, \frac{14 days}{t days})$$

Then, the curvature risk is computed as follows:

$$CVR_{i,k} = \sum_{j} SF(t_{kj})\cdot \sigma_{kj} \cdot \frac{\partial V_i}{\partial \sigma}$$

Interest rate and credit vegas come already vol-weighted.

Bucket and risk factor

This section describes Buckets and Risk Factors which are specific aggregation levels defined by the methodology. They are most probably different from the definition of buckets and risk factors for internal risk management.

Derived risk factors

Section C1 specifies a certain definition of risk factors (subscript ~k~ in the methodology).

Risk factors are further used as the aggregation level for weighted sensitivities/CVR (see the variance-covariance formula for the Bucket-Level Margin).

This table summarizes the combinations of fields used to assign risk factors for interest rate sensitivities.

RiskType Example of a CRIF record (for a trade aka “instrument” in SIMM) Risk factor fields in CRIF
Risk_IRCurve {RiskType: Risk_IRCurve, Qualifier: USD, Bucket: 1, Label 1: 1y, Label2: Libor3m, Amount: 23472.8, AmountCcy: EUR} Qualifier, Label1, Label2
Risk_Inflation {RiskType: Risk_Inflation, Qualifier: USD, Amount: 23472.8, AmountCcy: EUR} Qualifier
Risk_XCcyBasis {RiskType: Risk_XCcyBasis, Qualifier: JPY, Amount: 23472.8, AmountCcy: EUR} Qualifier
Risk_IRVol {RiskType: Risk_IRVol, Qualifier : USD, Label1: 1y, Amount: Vega x Volatility} Qualifier, Label1
Risk_InflationVol {RiskType: Risk_InflationVol, Qualifier : USD, Label1: 1yr, Amount: Vega x Volatility} Qualifier, Label1
Risk_Equity {RiskType: Risk_CreditQ, Qualifier: ISIN:US1081333921, Bucket: 1, Amount: 23472.8, AmountCcy: EUR} Qualifier
Risk_EquityVol {RiskType: Risk_EquityVol, Qualifier: ISIN:US682348237, Bucket: 1, Label 1: 1y, Amount: 23472.8, AmountCcy: EUR} Qualifier, Label1
Risk_FX {RiskType: Risk_FX, Qualifier: CHF, Amount: 23472.8, AmountCcy: EUR} Qualifier
Risk_FXVol {RiskType: Risk_FXVol, Qualifier: USDEUR, Label 1: 1y, Amount: 23472.8, AmountCcy: EUR} Qualifier, Label1
Risk_Commodity {RiskType: Risk_Commodity, Qualifier: Coal Europe, Bucket: 1, Amount: 23472.8, AmountCcy: EUR} Qualifier
Risk_CommodityVol {RiskType: Risk_CommodityVol, Qualifier: Coal Europe, Label1: 1y, Amount: 23472.8, AmountCcy: EUR} Qualifier, Label1
Risk_CreditQ {RiskType: Risk_CreditQ, Qualifier: ISIN:US7648683693, Bucket: 2, Label1: 2Y, Label2: USD, Amount: 23472.8, AmountCcy: EUR} Qualifier, Label1, Label2
Risk_CreditVol {RiskType: Risk_CreditVol, Qualifier: ISIN:US7648683693, Bucket: 2, Label1: 2Y, Label2: USD, Amount: 23472.8, AmountCcy: EUR} Qualifier, Label1, Label2
Risk_BaseCorr {RiskType: Risk_BaseCorr, Qualifier: CDX IG, Amount: 23472.8, AmountCcy: EUR} Qualifier
Risk_CreditNonQ {RiskType: Risk_CreditNonQ, Qualifier: Instrument1, Bucket: 2, Label1: 2Y, Label2: CMBX, Amount: 23472.8, AmountCcy: EUR} Qualifier, Label1, Label2
Risk_CreditVolNonQ {RiskType: Risk_CreditVolNonQ, Qualifier: Instrument1, Bucket: 2, Label1: 2Y, Label2: CMBX, Amount: 23472.8, AmountCcy: EUR} Qualifier, Label1, Label2

Derived Bucket

Section C1 specifies the way sensitivities are grouped into Buckets - $b$.

Buckets are further used:

  1. as a parameter for defining Risk Weight,
  2. as an aggregation level for Bucket-Level Margin.

The regulatory (aggregation) buckets are defined as follows:

  1. For interest rate risk class, bucket is currency delivered in the Qualifier field.
  2. For foreign exchange, all sensitivities are place into a single bucket.
  3. For risk type Risk_BaseCorr, all sensitivities are place into a single bucket.
  4. In all other cases: bucket is provided in the input file.

Weighted Sensitivities

Weighted sensitivities are computed for each input sensitivity record.

Concentration Threshold

This step is not applicable for the curvature chains of calculations and for the base correlation.

$T_b$ concentration threshold is looked up in the parameter set based on:

RiskType Specified per Remark
Risk_IRCurve + Risk_Inflation CurrencyRiskGroup delta
Risk_XCcyBasis not defined delta
Risk_IRVol + Risk_InflationVol CurrencyRiskGroup vega
Risk_Equity Bucket delta
Risk_EquityVol Bucket vega
Risk_FX CurrencyRiskGroup delta
Risk_FXVol CurrencyRiskGroup of one currency in pair and CurrencyRiskGroup of the second currency in pair vega
Risk_Commodity Bucket delta
Risk_CommodityVol Bucket vega
Risk_CreditQ Bucket delta
Risk_CreditVol single value vega
Risk_CreditNonQ Bucket delta
Risk_CreditVolNonQ single value vega
Curvatures not defined not defined
Risk_BaseCorr not defined not defined

The currency risk group mapping is part of the parameter set configuration and must be provided for each Qualifier.

Concentration Risk Factor

This step is not applicable for the curvature chains of calculations, and for Risk_BaseCorr. Assume CR = 1.

The formula is similar for all risk classes/sensitivity types:

$$CR_b = max\left ( 1, \sqrt{\frac{abs(\text{net sensitivity})}{\text{concentration threshold}}} \right )$$

The $CR_b$ is computed for each RiskType and bucket inside a netting set and product class.

Interest Rate

For Risk_IRCurve and Risk_Inflation, the CR_b is computed on the currency level, but does not include XCcy risk:

$$CR_b = max\left ( 1, \sqrt{\frac{|\sum_{k,i}s_{k,i}|}{T_b}} \right )$$

For Risk_XCcyBasis CR = 1 (see para 7b).

For Risk_IRVol and Risk_InflationVol,

$$VCR_b = max\left ( 1, \sqrt{\frac{|\sum_{k,i}VR_{k,i}|}{VT_b}} \right )$$

Equity, Commodity, and Foreign Exchange

$$CR_k = max\left ( 1, \sqrt{\frac{|s_{k}|}{T_b}} \right )$$

$$VCR_k = max\left ( 1, \sqrt{\frac{|\sum_{i}VR_{k,i}|}{VT_b}} \right )$$

Credit spread

$$CR_k = max\left ( 1, \sqrt{\frac{| \sum_j s_{j} |}{T_b}} \right )$$

$$VCR_k = max\left ( 1, \sqrt{\frac{|\sum_{ij} VR_{ij}|}{VT_b}} \right )$$

Risk Weights

Risk Weights lookup is defined per risk type. It is either based on a lookup of a combination of fields or a constant value.

Risk Type RW/VRW lookup specification
Curvatures not defined, RW = 1
Risk_BaseCorr single value
Risk_Commodity per Bucket
Risk_CommodityVol single value
Risk_CreditNonQ per Bucket
Risk_CreditQ per Bucket
Risk_CreditVol single value
Risk_CreditVolNonQ single value
Risk_Equity per Bucket
Risk_EquityVol per Bucket
Risk_FX single value
Risk_FXVol single value
Risk_Inflation single value
Risk_InflationVol single value
Risk_IRCurve per CurrencyRiskGroup, Tenor
Risk_IRVol single value
Risk_XCcyBasis single value

Formula for the Weighted Sensitivities

Once the risk weights, $RW$, are assigned, the weighted sensitivities $WS$ are computed according to this general formula:

$$WS = s \cdot RW \cdot CR$$

Specific formula for each risk type:

RiskType Notation Formula
Risk_IRCurve, Risk_Inflation, Risk_XCcyBasis $WS_{k,i}$ $WS = s_{i,k} \cdot RW_{k} \cdot CR_b$ Note, that for Risk_XccyCurve CR=1 (para 7b)
Risk_CreditQ, Risk_CreditNonQ, Risk_Equity, Risk_FX, Risk_Commodity $WS_{k}$ $WS = s_{k} \cdot RW_{k} \cdot CR_k$
Risk_IRVol, Risk_InflationVol,Risk_CreditVol, Risk_CreditVolNonQ, Risk_EquityVol, Risk_FXVol, Risk_CommodityVol $VR_k$ $$VR_k = VRW \cdot \left ( \sum_i VR_{i,k} \right ) \cdot VCR_b$$ for rates, $$VR_k = VRW \cdot \left ( \sum_i VR_{i,k} \right ) \cdot VCR_k$$ - all other risk classes
Risk_BaseCorr $WS_{k}$ $WS_k = RW_k \cdot s_k$
Curvatures not defined $WS = CVR$

Bucket-Level Capital Charge

Weighted sensitivities netted at Risk Factor level are rolled up into Bucket Level Margin $K_{b}$ using a variance-covariance type formula.

Risk Factors Correlation

For all pairs of risk factors in each bucket (see definitions above) we need to look up risk factor correlations from the parameter set. $\rho_{k,l}$ - are defined per risk class without a split onto delta and vega. We assume same $\rho_{k,l}$ for vega, as for delta.

Interest Rate

For all pairs of risk factors of the same curve currency:

RiskType Notation Lookup
Risk_IRCurve $\phi_{i,j} \cdot \rho_{k,l}$ - risk factors correlation is a product of two variables. $$\rho_{i,j}$$ is set per Tenor 1, Tenor 2. $$\phi_{i,j}$$ is subcurve correlation, it is set as a single value for different subcurves and as 1 between tenors of one subcurve
Risk_Inflation $\rho_{k,l}$ single value
Risk_XCcyBasis $\rho_{k,l}$ single value

Note the correlations for Risk_Inflation and Risk_XCcyBasis are for those sensitivities against all Risk_IRCurve sensitivities (within the same currency).

Equity, Commodity, Foreign exchange

For all risk factors inside a bucket:

RiskType Notation Lookup
Risk_Equity, Risk_EquityVol $\rho_{k,l}$ single value per Bucket
Risk_Commodity, Risk_CommodityVol $\rho_{k,l}$ single value per Bucket
Risk_FX, Risk_FXVol $\rho_{k,l}$ set per currency volatility group

Credit spread

For all risk factors inside a bucket:

RiskType Notation Lookup
Risk_CreditQ, Risk_CreditVol $\rho_{k,l}$ Two correlation values, depending on whether Qualifiers are equal or not, are defined for any of the non-Residual buckets and for the Residual bucket.
Risk_CreditNonQ, Risk_CreditVolNonQ $\rho_{k,l}$ Two correlation values, depending on whether Label2 are equal or not, are defined for any of the non-Residual buckets and for the Residual bucket.
Risk_BaseCorr $\rho_{k,l}$ single value

Inner correlation adjustment factor

For some of the risk types, the inner correlation adjustment factor $f_{k,l}$ plays a role, otherwise assume $f_{k,l}$ is set at 1.

Interest Rate

For the risk types: Risk_IRCurve, Risk_Inflation, Risk_XCcyBasis, Risk_IRVol, Risk_InflationVol parameters, $f_{k,l}$ is set at 1.

Non-Interest Rate

RiskType $f_{kl}$
Risk_IRCurve, Risk_Inflation, Risk_XCcyBasis 1
Risk_IRVol, Risk_InflationVol 1
Risk_CreditQ, Risk_CreditNonQ, Risk_Equity, Risk_FX, Risk_Commodity $f_{kl} = \frac{min(CR_k,CR_l)}{max(CR_k,CR_L)}$
Risk_CreditVol, Risk_CreditVolNonQ, Risk_EquityVol, Risk_FXVol, Risk_CommodityVol $f_{kl} = \frac{min(VCR_k,VCR_l)}{max(VCR_k,VCR_L)}$
Risk_BaseCorr 1

Formula for the Bucket-Level Capital Charge

Risk factor level Weighted Sensitivities $WS_k$ and Curvature risk $CVR_k$, together with Risk Factors Correlations $\rho_{kl}$ feed the bucket-level margin formula, defined for interest rate as follows:

$$K_{b} = \sqrt{\sum_{k,i \in b} WS_{k,i}^{2} + \sum_{k,i} \sum_{(j,l) \neq (k,i)} \phi_{i,j} \cdot \rho_{kl} \cdot WS_{k,i} \cdot WS_{l,j} }$$

For the non-interest rate risk classes delta and vega, excluding base correlation:

$$K_{b} = \sqrt{\sum_{k \in b} WS_{k}^{2} + \sum_{k} \sum_{l \neq k} f_{k,l} \cdot \rho_{k,l} \cdot WS_{k} \cdot WS_{l} }$$

Base correlation:

$$K_{b} = \sqrt{\sum_{k \in b} WS_{k}^{2} + \sum_{k} \sum_{l \neq k} \rho_{k,l} \cdot WS_{k} \cdot WS_{l} }$$

Curvature chain:

$$K_{b} = \sqrt{\sum_{k \in b} CVR_{k}^{2} + \sum_{k} \sum_{l \neq k} \rho_{k,l}^2 \cdot CVR_{k} \cdot CVR_{l} }$$

Delta, Vega, BaseCorr, and Curvature margins

Bucket level Margin $K_b$ are rolled up into risk class/sensitivity type level Margin using a variance-covariance type formula.

Cross-Buckets Correlation

For the next aggregation step, we need to obtain cross-bucket correlations - denoted as $\gamma_{bc}$.

Risk Class Delta and Vega
Interest Rate single value
Equity Bucket Pairs (not defined for the residual bucket)
Foreign Exchange not defined
Commodity Bucket Pairs
Credit qualifying Bucket Pairs (not defined for the residual bucket)
Credit non-qualifying single value

Capped Net Weighted Sensitivity

For each bucket, we also compute $S_b$:

$$S_b = max \left ( min \left ( K_b, \text{net } WS_b\right ), -K_b \right )$$

The $S_b$ for the Residual bucket will not contribute into the Margin.

Outer Correlation Adjustment Factor

This step is applicable only to the IR risk class.

Delta

The Delta margin calculation for interest rates uses this formula for the adjustment factor:

$$g_{b,c} = \frac{min(CR_b, CR_c)}{max(CR_b,CR_c)}$$

For all other risk classes, $g_{b,c} = 1$.

Vega

The Vega margin calculation uses this formula for the adjustment factor:

$$g_{b,c} = \frac{min(VCR_b, VCR_c)}{max(VCR_b,VCR_c)}$$

Curvature

This step is not applicable.

BaseCorr

This step is not applicable.

Formula for Delta, Vega, Curvature, and BaseCorr Margin

Delta, Vega, Curvature, and BaseCorr margins are computed for each ProductClass and RiskClass separately.

Delta and Vega

The general formula for the sensitivity type margin is as follows:

$$Margin = \sqrt{\sum_{b}K_{b}^{2} + \sum_{b}{\sum_{c \neq b} \gamma_{b,c} \cdot g_{b,c} \cdot S_{b} \cdot S_{c}}} + K_{residual}$$

where $b$ - all buckets, excluding residual and $K_{residual}$ - bucket-level margin for the residual bucket (if exists).

Special cases

Please note that since all risk factors belong to a single bucket for these sensitivities, Margin is equal to bucket-level margin:

$$\text{Credit Qualifying BaseCorrMargin} = K_b$$

$$\text{FX DeltaMargin} = K_b$$

$$\text{FX VegaMargin} = K_b$$

Curvature

Theta

Compute theta and lambda: across non-residual buckets and for the residual bucket.

$$\theta = min\left ( \frac{\sum_{b,k} CVR_{b,k}}{\sum_{b,k}|CVR_{b,k}|} ,0\right )$$

The formula has the net CVR measure in nominator and gross CVR in denominator, where for the gross CVR the abs is taken at risk factor level. The formula is computed twice: first, it aggregates all buckets except residual, then it is applied to the residual bucket.

Lambda

Compute lambda using theta for the non-residual buckets and for the residual bucket:

$$\lambda =( \left ( \Phi_{99.5}^{-1} \right )^2-1)(1+\theta)-\theta$$

Curvature margin partials

Compute $S_b$ similar to the delta margin calculation for each bucket:

$$S_b = max \left ( min \left ( K_b, \text{net } CVR_b\right ), -K_b \right )$$

Compute Curvature Margin residual and Curvature margin non-res:

$$CurvatureMargin =max\left ( \sum_{b,k} CVR_{b,k} + \lambda \cdot \sqrt{\sum_{b}K_{b}^{2} + \sum_{b}{\sum_{c \neq b} \gamma_{b,c}^2 \cdot S_{b} \cdot S_{c}}} ,0 \right )$$

The formula is computed twice: first, it aggregates all buckets except residual, then it is applied to the residual bucket.

Curvature margins

Sum up the partials for the non-residual buckets and the residual bucket:

$$CurvatureMargin = CurvatureMargin_{non-residual} + CurvatureMargin_{residual}$$

Risk class level margin

Sum up Delta, Vega, BaseCorr, and Curvature margins to obtain risk class level margin.

$$IM_{RiskClass} = DeltaMargin_{RiskClass} + VegaMargin_{RiskClass}+ CurvatureMargin_{RiskClass}+ BaseCorrMargin_{RiskClass}$$

Product level margin

Roll up risk class margins using variance covariance formula to obtain product level margin:

$$SIMM_{product} = \sqrt{\sum_r IM_r^2+\sum_r \sum_{s \neq r} \psi_{r,s} IM_r IM_s}$$

where parameter $\psi$ is looked up based on a pair of risk classes.

Total SIMM margin

Finally, the SIMM margin for a netting set is computed as follows:

$$SIMM = SIMM_{RatesFX} + SIMM_{Credit} + SIMM_{Equity} + SIMM_{Commodity}$$


  1. Licensed from International Swaps and Derivatives Association, Inc., All Rights Reserved. Please note that your use of this ISDA SIMM(tm) service or product for calculating your firm’s initial margin pursuant to applicable regulations requires a license from the International Swaps and Derivatives Association, Inc. (ISDA), which may be obtained by contacting isdalegal@isda.org. Licensing the ISDA SIMM provides documentation and support required to properly implement and maintain the ISDA SIMM(tm). ↩︎

See also