Skip to main content

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:
Step-by-step overview:
  1. Inputs:
    1. Read and process sensitivities - ss,
    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 - kk,
    2. Derived Bucket - bb,
    3. for each input sensitivity record.
  3. Compute Weighted sensitivity WSkWS_k:
    1. Lookup concentration thresholds TbTb
    2. Compute concentration risk factor CRCR
    3. Assign risk weights RWRW
    4. Compute weighted sensitivity WSWS
  4. Bucket-level margin KbK_b:
    1. Lookup risk factor correlations ρkl\rho_{kl} (and ϕi,j\phi_{i,j} for rates)
    2. Compute inner correlation adjustment factor fk,lf_{k,l} for non-IR risk classes
    3. Compute bucket-level margin KbK_b
  5. Delta, Vega, BaseCorr, and Curvature margins for each risk class
    1. Look up cross-bucket correlation γk,l\gamma_{k,l}
    2. Compute SbS_b for each bucket
    3. Compute inner correlation adjustment factor gb,cg_{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: VRi,k=HVRRiskClassjσkjViσVR_{i,k} = HVR_{RiskClass}\cdot \sum_{j} \sigma_{kj} \cdot \frac{\partial V_i}{\partial \sigma} where j\sum_{j} - summing across tenors.
  • HVR (Historical volatility ratio) - is set as a single value per RiskClass and is obtained via a lookup from the parameter set.
  • Vega - is provided in the CRIF file.
  • Volatility is computed as follows: σk,j=RWk3651.4Info_MPORα\sigma_{k,j}=\frac{RW_k \cdot \sqrt{\frac{365}{1.4\cdot Info\_MPOR}}}{\alpha}
where α=Φ1(99%)\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 CVRikCVR_{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): SF(t)=0.5min(1,14daystdays)SF(t) = 0.5 \cdot min(1, \frac{14 days}{t days}) Then, the curvature risk is computed as follows: CVRi,k=jSF(tkj)σkjViσ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.

Derived Bucket

Section C1 specifies the way sensitivities are grouped into Buckets - bb. 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. TbT_b concentration threshold is looked up in the parameter set based on: 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: CRb=max(1,abs(net sensitivity)concentration threshold)CR_b = max\left ( 1, \sqrt{\frac{abs(\text{net sensitivity})}{\text{concentration threshold}}} \right ) The CRbCR_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: CRb=max(1,k,isk,iTb)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, VCRb=max(1,k,iVRk,iVTb)VCR_b = max\left ( 1, \sqrt{\frac{|\sum_{k,i}VR_{k,i}|}{VT_b}} \right ) Equity, Commodity, and Foreign Exchange CRk=max(1,skTb)CR_k = max\left ( 1, \sqrt{\frac{|s_{k}|}{T_b}} \right ) VCRk=max(1,iVRk,iVTb)VCR_k = max\left ( 1, \sqrt{\frac{|\sum_{i}VR_{k,i}|}{VT_b}} \right ) Credit spread CRk=max(1,jsjTb)CR_k = max\left ( 1, \sqrt{\frac{| \sum_j s_{j} |}{T_b}} \right ) VCRk=max(1,ijVRijVTb)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.

Formula for the Weighted Sensitivities

Once the risk weights, RWRW, are assigned, the weighted sensitivities WSWS are computed according to this general formula: WS=sRWCRWS = s \cdot RW \cdot CR Specific formula for each risk type:

Bucket-Level Capital Charge

Weighted sensitivities netted at Risk Factor level are rolled up into Bucket Level Margin KbK_{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. ρk,l\rho_{k,l} - are defined per risk class without a split onto delta and vega. We assume same ρk,l\rho_{k,l} for vega, as for delta. Interest Rate For all pairs of risk factors of the same curve currency: 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: Credit spread For all risk factors inside a bucket:

Inner correlation adjustment factor

For some of the risk types, the inner correlation adjustment factor fk,lf_{k,l} plays a role, otherwise assume f_k,lf\_{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,lf\_{k,l} is set at 1. Non-Interest Rate

Formula for the Bucket-Level Capital Charge

Risk factor level Weighted Sensitivities WSkWS_k and Curvature risk CVR_kCVR\_k, together with Risk Factors Correlations ρ_kl\rho\_{kl} feed the bucket-level margin formula, defined for interest rate as follows: Kb=k,ibWSk,i2+k,i(j,l)(k,i)ϕi,jρklWSk,iWSl,jK_{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: Kb=kbWSk2+klkfk,lρk,lWSkWSlK_{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: Kb=kbWSk2+klkρk,lWSkWSlK_{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: Kb=kbCVRk2+klkρk,l2CVRkCVRlK_{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 KbK_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 γbc\gamma_{bc}.

Capped Net Weighted Sensitivity

For each bucket, we also compute SbS_b: Sb=max(min(Kb,net WSb),Kb)S_b = max \left ( min \left ( K_b, \text{net } WS_b\right ), -K_b \right ) The SbS_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: gb,c=min(CRb,CRc)max(CRb,CRc)g_{b,c} = \frac{min(CR_b, CR_c)}{max(CR_b,CR_c)} For all other risk classes, gb,c=1g_{b,c} = 1. Vega The Vega margin calculation uses this formula for the adjustment factor: gb,c=min(VCRb,VCRc)max(VCRb,VCRc)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=bKb2+bcbγb,cgb,cSbSc+KresidualMargin = \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 bb - all buckets, excluding residual and KresidualK_{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: Credit Qualifying BaseCorrMargin=Kb\text{Credit Qualifying BaseCorrMargin} = K_b FX DeltaMargin=Kb\text{FX DeltaMargin} = K_b FX VegaMargin=Kb\text{FX VegaMargin} = K_b

Curvature

Theta
Compute theta and lambda: across non-residual buckets and for the residual bucket. θ=min(b,kCVRb,kb,kCVRb,k,0)\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: λ=((Φ99.51)21)(1+θ)θ\lambda =( \left ( \Phi_{99.5}^{-1} \right )^2-1)(1+\theta)-\theta
Curvature margin partials
Compute SbS_b similar to the delta margin calculation for each bucket: Sb=max(min(Kb,net CVRb),Kb)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(b,kCVRb,k+λbKb2+bcbγb,c2SbSc,0)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=CurvatureMarginnonresidual+CurvatureMarginresidualCurvatureMargin = CurvatureMargin_{non-residual} + CurvatureMargin_{residual}

Risk class level margin

Sum up Delta, Vega, BaseCorr, and Curvature margins to obtain risk class level margin. IMRiskClass=DeltaMarginRiskClass+VegaMarginRiskClass+CurvatureMarginRiskClass+BaseCorrMarginRiskClassIM_{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: SIMMproduct=rIMr2+rsrψr,sIMrIMsSIMM_{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=SIMMRatesFX+SIMMCredit+SIMMEquity+SIMMCommoditySIMM = 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). ↩︎