CRR2 support
CRR2 is the European regulation that contains the EU version of FRTB.
This page walks you through the CRR2 support provided in the FRTB Accelerator via the following elements:
The Accelerator includes the CRR2 parameter set, inheriting all the parameters from the (default) BCBS parameter set.
To use these parameters in queries, in the ParameterSet.csv configuration file set the "Parameter Set" level to CRR2 (instead of the default BCBS).
For an overview of parameter sets, see Parameter Sets
For the CSR non-Sec and CSR Sec CTP risk classes, the CRR2 regulation has added new buckets for exposures to member states. In doing this, the numbering of the buckets has been shifted.
To support these additional buckets, the risk weights and correlations in the Accelerator have been updated for the CRR2 parameter set.
| File | Additions made for CRR2 support |
|---|---|
|
For the CRR2 parameter set:
Note: The ERM II configuration is included see below for details. |
|
|
Inter-bucket gamma correlations for CRR2
|
|
|
CRR2 risk-weights
|
Changes to daily sensitivities files
To use these additional buckets, the Accelerator includes the following changes to the daily sensitivities files. For details of each file, see the SA Input File Formats section in the FRTB Accelerator Reference Guide.
| File | Changes made for CRR2 support |
|---|---|
|
CSR_Bucket_NONSEC.csv CSR_Bucket_SECCTP.csv |
Bucket numbers updated "Member State" sectors added, mapping to the new buckets |
|
CSR_Bucket_Description_NONSEC.csv CSR_Bucket_Description_SECCTP.csv |
Bucket numbers updated "Member State" buckets added |
|
SBM_Delta_Sensitivities*.csv SBM_Vega_Sensitivities*.csv SBM_Curvature_Sensitivities*.csv |
Use of new "Member State" sectors |
You can load a single set of sensitivities into the FRTB Accelerator and use those sensitivities for both BCBS and CRR2 calculations.
Example
The CSR non-Sec sensitivity files use sectors "Member State Sovereigns" and "Sovereigns" depending on if the issuer is a member state or not. For CRR2 we can map the member state and other sovereigns to different buckets as follows:
Bucket,Credit Quality,Sector,Date
1,IG,Member State Sovereigns,2018-09-28
1,HY,Member State Sovereigns,2018-09-28
1,NR,Member State Sovereigns,2018-09-28
2,IG,Sovereigns,2018-09-28
...
11,HY,Sovereigns,2018-09-28
11,NR,Sovereigns,2018-09-28
...
While for BCBS we can map them to the same buckets:
Bucket,Credit Quality,Sector,Date
1,IG,Member State Sovereigns,2018-09-28
1,IG,Sovereigns,2018-09-28
...
9,HY,Member State Sovereigns,2018-09-28
9,NR,Member State Sovereigns,2018-09-28
9,HY,Sovereigns,2018-09-28
9,NR,Sovereigns,2018-09-28
...
This requires loading two different versions of the CSR bucket (and bucket description) files.
Loading different versions of CSR bucket files
As the Accelerator data model currently only supports a single version of these files, there are two options for loading the different versions:
-
The easiest way is to load them into different instances of the Accelerator. For example, load the CRR2 buckets for BAU use, and load the BCBS buckets for QIS exercises.
-
Use what-if branches to load one version of the files into a what-if branch. In the master branch we will map the sensitivities to the BCBS buckets, then in a "CRR2" branch we will map sensitivities to CRR2 buckets.
Follow these steps:
-
Update the sensitivities files to use the new Member State sectors (for sovereigns and covered bonds).
-
Modify the BCBS versions of the CSR bucket mappings files to map the new CRR2 Member State sectors to BCBS buckets (see below)
-
Start up the cube with the following:
-
Updated configuration files, which still default to BCBS, but contain CRR2 parameters as well
-
Updated sensitivities files
-
Unmodified (BCBS) CSR bucket description files
-
Modified bucket mapping files (with Member State sectors mapped to BCBS buckets)
-
All other files unchanged
-
-
Create a "CRR2" what-if branch, and load the CRR2 versions of the CSR bucket and CSR bucket description files
Result
When querying the cube:
-
The master branch, with the BCBS parameter set, will perform the BCBS calculations.
-
The CRR2 branch, with the CRR2 parameter set, will perform the CRR2 calculations.
-
For more information on What-If, see Parameter Sets What-If Widget
Currently interpretation of the CRR2 regulations for the DRC non-Sec risk weights is not included in the Accelerator.
In version 2.3.0, the Accelerator introduces the concept of "Adjunct Currencies", for currencies that have a special relationship to the reporting currency. This is designed to be used for the ERM II currencies (i.e. DKK).
Currently, based on Article 325ag (2), the Adjunct Currency support includes:
-
Different GIRR bucket correlation (
) with reporting currency
-
Specific FX risk weights per (adjunct) currency
So, for ERM II the Accelerator includes the following new elements:
| File |
Details |
Description |
|---|---|---|
| Adjunct_Currencies.csv |
|
Identifies DKK as an adjunct currency, and sets the FX Delta Risk Weight to 2.25% |
| FRTBParameters.csv |
|
Sets the GIRR bucket correlation between DKK and EUR as 80%. |
To meet the reporting requirements, you need to net the positive and negative delta sensitivities, then sort them into positive and negative measures. These measures are planned for version 2.4.0 but in the meantime you can calculate them in MDX.
Calculating positive and negative delta sensitivities using MDX
-
Use the
sum()function. -
Set the Risk Factor (and Vertex, if applicable) as the leaf level.
-
Select the positive or negative values.
Example
GIRR is the most complicated risk class, because the Yield curves have vertices, while the inflation and cross-currency basis curves don't. The following is the MDX for the GIRR long and short sensitivity measures (and intermediate steps):
WITH
Member [Measures].[GIRR Delta Sensitivities Yield Long] AS sum(
[Risk].[Risk Factors].[Risk Factor] * [Risk].[Vertices].[Vertex] * [Market Data].[GIRR Curve Types].[GIRR Curve Type].[Yield],
iif(
[Measures].[GIRR Delta Sensitivities] > 0,
[Measures].[GIRR Delta Sensitivities],
0
)
), FORMAT_STRING = "#,###"
Member [Measures].[GIRR Delta Sensitivities Infl+XCCY Long] AS sum(
[Risk].[Risk Factors].[Risk Factor] * {
[Market Data].[GIRR Curve Types].[GIRR Curve Type].[Basis],
[Market Data].[GIRR Curve Types].[GIRR Curve Type].[Inflation]
},
iif(
[Measures].[GIRR Delta Sensitivities] > 0,
[Measures].[GIRR Delta Sensitivities],
0
)
), FORMAT_STRING = "#,###"
Member [measures].[GIRR Delta Sensitivities Yield Short] AS sum(
[Risk].[Risk Factors].[Risk Factor] * [Risk].[Vertices].[Vertex] * [Market Data].[GIRR Curve Types].[GIRR Curve Type].[Yield],
iif(
[Measures].[GIRR Delta Sensitivities] < 0,
[Measures].[GIRR Delta Sensitivities],
0
)
), FORMAT_STRING = "#,###"
Member [Measures].[GIRR Delta Sensitivities Infl+XCCY Short] AS sum(
[Risk].[Risk Factors].[Risk Factor] * {
[Market Data].[GIRR Curve Types].[GIRR Curve Type].[Basis],
[Market Data].[GIRR Curve Types].[GIRR Curve Type].[Inflation]
},
iif(
[Measures].[GIRR Delta Sensitivities] < 0,
[Measures].[GIRR Delta Sensitivities],
0
)
), FORMAT_STRING = "#,###"
Member [Measures].[GIRR Delta Sensitivities Long] AS [Measures].[GIRR Delta Sensitivities Yield Long] + [Measures].[GIRR Delta Sensitivities Infl+XCCY Long], FORMAT_STRING = "#,###"
Member [Measures].[GIRR Delta Sensitivities Short] AS [Measures].[GIRR Delta Sensitivities Yield Short] + [Measures].[GIRR Delta Sensitivities Infl+XCCY Short], FORMAT_STRING = "#,###"
SELECT
NON EMPTY {
[Measures].[GIRR Delta Sensitivities],
[measures].[GIRR Delta Sensitivities Yield Long],
[measures].[GIRR Delta Sensitivities Infl+XCCY Long],
[measures].[GIRR Delta Sensitivities Yield Short],
[measures].[GIRR Delta Sensitivities Infl+XCCY Short],
[Measures].[GIRR Delta Sensitivities Long],
[Measures].[GIRR Delta Sensitivities Short]
} ON COLUMNS,
NON EMPTY Crossjoin(
Hierarchize(
DrilldownLevel(
[Market Data].[GIRR Curve Types].[ALL].[AllMember]
)
),
Hierarchize(
DrilldownLevel(
[Risk].[Vertices].[ALL].[AllMember]
)
)
) ON ROWS
FROM [StandardisedApproachCube]