Migration notes 3.1
This page explains the changes required to migrate to the stated version of the FRTB Accelerator.
Migrate to 3.1
Upgrading from version 3.0 - see FRTB Accelerator 3.1 Release Notes.
Breaking Changes
-
In the DRC Trade Level file, the obligor and tranche fields have been replaced and will need to be updated in existing CSV files will need to be updated in order to be loaded into 3.1. See below for details.
-
The new Equity Bucket Descriptions file is required, and the new EquityBucketDesc store must be populated, for the Equity calculations. As a consequence of the direct bucketing changes, the market cap and economy are now determined from this store.
-
The direct bucketing changes impose a new order on file loading.
The SA bucket files must now be loaded before (or at the same time as) the sensitivities files.
SA DRC Data Model Changes
- In the DRC Trade Level file:
- The obligor and tranche columns are combined into a single Underlying column.
- An optional risk-factor column has been added. If not provided, it will be generated from the Underlying and maturity date (and seniority for DRC non-Sec).
- In the datastore:
- The DRCBase store includes all the fields needed to calculate the Gross JTD and a reference to the risk-factor.
- The RiskFactorDescription store now includes the maturity, seniority (DRC non-Sec), and a reference to either the obligor (DRC non-Sec) or tranche (DRC Sec non-CTP).
- The Obligor and Tranche stores continue to describe the obligors and tranches.
RRAO Data Model Changes
- In the Trade Attributes file, the optional RRAO category field has been added.
- If not provided, it will be populated in the ETL. However, it will not be populated in a way that is amenable to changing per jurisdiction.
- In the ETL, a fact is added to the cube (a row in the TradeBase store) if:
- The RRAO field is “Y” (unchanged), OR
- The RRAO category is provided (new)
- In the datastore, the RRAO store has been added. Indexed by category, it contains the RRAO description (flags and type).
- These fields have been moved out of the trade attributes store.
- In the calculations, a filter has been added to require the RRAO flag to be “Y” (previously this was implicit because facts were only added when the flag was Y).
- In the SA cube, the RRAO flag hierarchy has been added.
Direct Bucket Mappings
- In the CSV files:
- An optional bucket column has been added to the Delta, Vega, and Curvature sensitivities files and to the DRC Trade Level files.
- If not provided, it will be determined from the underlying description fields.
- Some of the underlying descriptions fields are now optional and can be populated from the bucket.
- Note: Either the bucket or the underlying description fields must be provided.
- Note: A new Equity Bucket Description file has been added to populate the underlying description fields based on the equity bucket.
- An optional bucket column has been added to the Delta, Vega, and Curvature sensitivities files and to the DRC Trade Level files.
- In the ETL:
- The bucket mapping and description files must be loaded before the sensitivities files.
- If they are loaded in the same command (e.g. using the “ALLSA” topic alias), then the DLC will load bucket files first.
- By default, the bucket files are loaded at the same time as the sensitivities files (using the “ALLSA” topic alias). This is unchanged from pervious versions.
- If the bucket column is not populated, it will be looked up from the underlying description fields using the bucket mappings.
- If the underlying descriptions fields are not populated, they will be looked up from the bucket using the bucket descriptions.
- The bucket mapping and description files must be loaded before the sensitivities files.
- In the datastore:
- The stores mapping the underlying descriptions to buckets are no longer part of the cube schema (they are now “isolated” stores). They are used in the ETL, but do not become part of the cube.
- The bucket column has been added to the UnderlyingDescription store.
- The EquityBucketDesc store has been added.
- The mapping stores for FX and GIRR buckets have been removed.
Support for Subsidiaries
The netting sets and imported values functionality directly affect the following measures, which are the ones requested in the CRR2 reporting template.
- “risk-class risk-measure Risk Charge scenario”
- “risk-class Delta Sensitivities direction”
- “drc-risk-class Default Risk Charge”
- “drc-risk-class Gross JTD direction”
- “RRAO Exotic”
- “RRAO Other”
Where:
- risk-class is one of: GIRR, CSR non-Sec, CSR Sec non-CTP, CSR Sec CTP, Equity, Commodity, FX
- risk-measure is one of: Delta, Vega, Curvature
- scenario is one of: blank (for medium correlation scenario), High, Low
- direction is one of: Long, Short
- drc-risk-class is one of: DRC non-Sec, DRC Sec non-CTP
Additionally, the SA measures that follow on from the above list are also impacted, up to the “Portfolio Risk Charge”.
A new measure variation with the suffix “(reported)” has been added that includes the impact of the netting sets and imported values. For example, “Portfolio Risk Charge (reported)”. The netting sets and imported values do not currently impact the unmodified measures; for example, “Portfolio Risk Charge” is not changed.
Netting Sets
A new measure variation has been added with the suffix “(netted)”. The netting sets only impact the measures with this suffix (and with the “(reported)” suffix).
- The new (optional) Legal Entity Attributes file (and corresponding LegalEntityAttributes store) maps legal entities to netting sets.
- A new Netting Set hierarchy allows for filtering by netting set.
- The capital charge calculations are performed with the netting sets as the leaf level, so that:
- The capital charges are calculated without netting sensitivities across netting sets.
- After the capital charges are calculated (independently) for each netting set, they are summed.
As with the “(reported)” suffix, the same set of measures are directly and indirectly impacted.
Imported Values
A new measure variation has been added with the suffix “(imported)”. The imported values only impacts measures with this suffix (and with the “(reported)” suffix).
- The new (optional) Legal Entity Imports file (and corresponding LegalEntityImports store) contains the imported values.
- The imported values are identified by legal entity, parameter set, and measure name (and as-of date).
- The measure name must be one from the list above.
-
The imported measures are not included when drilling down. For example, if a query filters on a desk or node from the booking hierarchy, then the imported measures will not be included.
-
A configuration option has been added to specify for which hierarchies to ignore filters. For example, if you have added a “sensitivity-type” hierarchy and add that to the list to ignore, then the imported values will still be included even if a query filters by “sensitivity-type”.
Static Data Overrides
- New files and stores have been added that parallel the stores for the underlying, obligor, tranche, and RRAO descriptions.
- The new files and stores have the same contents as the existing stores, plus a “parameter set” column.
- During the calculations, if the parameter set is not “BCBS”,
then these stores are queried for potential overrides.
- If an override is found, then the sensitivities are shifted to the new location in the cube (corresponding to the overridden data).
- The override lookup queries will walk up the parameter set tree structure looking for overrides. For example, if you have added a variant of the CRR2 parameter set, then the CRR2 overrides will still be used for this variant.
Risk Class | Override File | Override Store |
---|---|---|
CSR non-Sec, CSR Sec non-CTP, CSR Sec CTP, Equity, Commodity | Underlying Description Overrides | UnderlyingDescriptionOverride |
DRC non-Sec | Obligor Overides | ObligorOverride |
DRC Sec non-CTP | Tranche Overrides | TrancheOverride |
RRAO | RRAO Overrides | RRAOOveride |
When specifying override data, it should be specified consistently. For example, changing the equity bucket from 5 to 10 without also changing the market cap, may cause problems.
Performance note: When drilling down on the calculations, additional data may be loaded and subsequently discarded. This impacts drilling down into levels that may be overridden. For example, if you add the filter rating=AAA to your query, the data and overrides will still be loaded for all ratings. Then, after the overrides have been applied, the non-AAA ratings will be discarded. This means that applying the filter rating=AAA will not necessarily be any faster than if the filter was not applied.
Spring Bean Configuration
Some of the functionality for customizing the Datastore Helper and for adding copper measures to cubes can now be registered using Spring beans.
Datastore Configuration
Beans of type Consumer<IDatastoreConfigurator>
will automatically be called to provide extra datastore configuration.
This is an alternative to adding methods to DatastoreCustomisationConfig
.
For example:
@Bean
public Consumer<IDatastoreConfigurator> myDatastoreConfig() {
return configurator -> {
// Code for additional datastore configuration here
};
}
Copper Configuration
Beans of type Consumer<ICopperContext>
will automatically be called to provide additional copper configuration to a cube (based on qualifier).
They will be called during the withCalculations
phase of the cube description builder.
Cube | Qualifier |
---|---|
StandardisedApproachCube | “saCopperConfig” |
InternalModelApproachCube | “imaCopperConfig” |
IMASummaryCube | “imaSummaryCopperConfig” |
IMADRCCube | “imaDrcCopperConfig” |
IMADRCSummaryCube | “imaDrcSummaryCopperConfig” |
PLCube | “plCopperConfig” |
PLSummaryMeasures | “plSummaryCopperConfig” |
For example, to add some copper configuration to both the SA and IMA cubes:
@Qualifier("saCopperConfig")
@Bean
public Consumer<ICopperContext> saMyCopperConfig() {
return this::myCopperConfig;
}
@Qualifier("imaCopperConfig")
@Bean
public Consumer<ICopperContext> imaMyCopperConfig() {
return this::myCopperConfig;
}
protected void myCopperConfig(ICopperContext context) {
// Code for additional copper configuration
}
Input file formats
New Files
File | Required | Purpose |
---|---|---|
Legal Entity Attributes | Specify the netting sets per legal entity | |
Legal Entity Imports | Import pre-calculated, capital charge values from subsidiaries | |
Equity Bucket Descriptions | Y | Describe Equity buckets, as part of the direct bucket mapping functionality |
Obligor Overides | Alternative descriptions of the DRC non-Sec obligors, per jurisdiction | |
Tranche Overrides | Alternative descriptions of the DRC Sec non-CTP tranches, per jurisdiction | |
RRAO Overrides | Alternative descriptions of the RRAO categories, per jurisdiction | |
Underlying Description Overrides | Alternative descriptions of the SBM underlyings, per jurisdiction |
Modified
Modification | File | Field | Optional | Description |
---|---|---|---|---|
Added | DRC Trade Level | Bucket | Y | DRC Sec non-CTP only. The ETL can derive the bucket from the asset class and region. |
Replaced | DRC Trade Level | Obligor → RiskFactor | Y | The obligor is now specified in the Underlying field. This field will be populated in the ETL if not present. |
Replaced | DRC Trade Level | Tranche → Underlying | N | This field now includes both the Obligor and Tranche. |
Added | Trade Attributes | RRAOCategory | Y | The category, used for changing the RRAO by jurisdiction. |
ETL Changes
The new Bucket column in the Delta, Vega, and Curvature files is optional. If not provided it will be populated using the previously loaded bucket files.
Additionally, a lot of the fields in the SBM underlying description have become optional, as long as the bucket is specified. For CSR and Equities, these fields can be populated from previously loaded bucket description files.
These bucket description files are now also used to populate these fields when loading CRIF files.
Risk Class | Optional Fields When Bucket Provided | Bucket File | Bucket Description File |
---|---|---|---|
CSR non-Sec | CSRQuality, CSRSector | CSR non-Sec Buckets | CSR non-Sec Bucket Descriptions |
CSR Sec non-CTP | CSRQuality, CSRSector | CSR Sec non-CTP Buckets | CSR Sec non-CTP Bucket Descriptions |
CSR Sec CTP | CSRQuality, CSRSector | CSR Sec CTP Buckets | CSR Sec CTP Bucket Descriptions |
Equity | EquityEconomy, EquityMarketCap, EquitySector | Equity Buckets | Equity Bucket Descriptions |
Commodity | Commodity Buckets |
The bucket is not sufficient to populate the CSRRating field for CSR non-Sec.
Configuration files
Modified
frtb.properties
Modification | Property | Default | Description |
---|---|---|---|
Added | ima.disable | false | Disable IMA cubes. |
frtb-config.properties
Modification | Property | Default | Description |
---|---|---|---|
Added | sbm.buckets.level | SBM Bucket@SBM Buckets@Buckets | Cube level for SBM buckets. |
Added | equity.market-data.market-cap.category.level | Equity Market Cap Category@Equity Market Cap Category@Market Data | Cube level for Equity Market Cap Category. |
Added | equity.market-data.economy.category.level | Equity Economy Category@Equity Economy Category@Market Data | Cube level for Equity Economy Category. |
Added | equity.market-data.sector.category.level | Equity Sector Category@Equity Sector Category@Market Data | Cube level for Equity Sector Category. |
Added | netting-set.level | Netting Set@Netting Set@Booking | Cube level for Netting sets |
Added | rrao.other-type.level | Other Residual Risk Type@Residual Risk Add On@Risk | Cube level for RRAO Other Residual Risk Type |
Added | rrao.flag.level | RRAO@RRAO@Risk | Cube level for RRAO flag |
Added | rrao.category.level | RRAO Category@RRAO Category@Risk | Cube level for RRAO Category |
Changed | drc.obligor.level | Underlying@Underlying@Market Data | Cube level of DRC Obligor. Changed to use common level |
Added | drc.obligor.alt.level | DRC Obligor@DRC Obligor@Default Risk Charge | Alternative Cube level of DRC Obligor. Previous value of drc.obligor.level. |
Added | drc.non-sec.seniority.level | DRC Seniority@DRC Seniority@Default Risk Charge | Cube level of DRC non-Sec Seniority |
Added | drc.sec-non-ctp.seniority.level | DRC Sec non-CTP Seniority@DRC Sec non-CTP Seniority@Default Risk Charge | Cube level of DRC Sec non-CTP Seniority |
Changed | drc.tranche.level | Underlying@Underlying@Market Data | Cube level of DRC Tranche. Changed to use common level |
Added | drc.tranche.alt.level | DRC Sec non-CTP Tranche@DRC Sec non-CTP Tranche@Default Risk Charge | Alternative Cube level of DRC Tranche. Previous value of drc.tranche.level. |
Added | drc.sec-non-ctp.region.level | DRC Sec non-CTP Region@DRC Sec non-CTP Region@Default Risk Charge | Cube level of DRC Sec non-CTP Region |
Added | drc.sec-non-ctp.asset-class.level | DRC Sec non-CTP Asset Class@DRC Sec non-CTP Asset Class@Default Risk Charge | Cube level of DRC Sec non-CTP Asset Class |
Added | ima.drc.seniority.level | DRC Seniority@DRC Seniority@Default Risk Charge | Cube level of IMA DRC Seniority |
Added | imported.ignore.hierarchies | The hierarchies that will be ignored when importing capital charge values. |
frtb-data-load.properties
Modification | Parameter | Default Value | Description |
---|---|---|---|
Added | legal-entity.attributes.file-pattern |
**/LegalEntityAttributes*.csv |
File matching pattern for the Legal Entity Attributes file |
Added | legal-entity.imports.file-pattern |
**/LegalEntityImports*.csv |
File matching pattern for the Legal Entity Imports file |
Added | equity.bucket-description.file-pattern |
**/Equity_Bucket_Description*.csv |
File matching pattern for the Equity Bucket Descriptions file |
Added | underlying-desc.overrides.file-pattern |
**/Underlying_Desc_Overrides*.csv |
File matching pattern for the Underlying Description Overrides file |
Added | drc.obligor.overrides.file-pattern |
**/Obligor_Overrides*.csv |
File matching pattern for the Obligor Overides file |
Added | drc.tranche.overrides.file-pattern |
**/Tranche_Overrides*.csv |
File matching pattern for the Tranche Overrides file |
Added | rrao.overrides.file-pattern |
**/RRAO_Overrides*.csv |
File matching pattern for the RRAO Overrides file |
Datastores
Added
Store | Details |
---|---|
LegalEntityAttributes | The descriptions of the legal entity (i.e. netting set) |
LegalEntityImports | The pre-calculated, capital charge values to be imported at the legal entity level. |
EquityBucketDesc | The descriptions for the Equity buckets. |
RRAO | The descriptions of the RRAO categories. |
UnderlyingDescriptionOverride | Alternative descriptions of the SBM underlyings, per jurisdiction. |
ObligorOverride | Alternative descriptions of the obligor, per jurisdiction. |
TrancheOverride | Alternative descriptions of the tranche, per jurisdiction. |
RRAOOveride | Alternative descriptions of the RRAO category, per jurisdiction. |
Modified
Modification | Store | Field | Type | Description |
---|---|---|---|---|
Reorder | LegalEntityHierarchy | LegalEntity and AsOfDate | These two columns have been moved to the beginning of the store. | |
Replace | DRCBase | ObligorId → Risk Factor | String | The Obligor ID field has been replaced with the Risk Factor field |
Delete | DRCBase | Seniority | Split into RiskFactorDescription (DRC non-Sec) and Tranche (DRC Sec non-CTP) stores. | |
Delete | DRCBase | Maturity and Tranche | Moved to RiskFactorDescription store. | |
Added | RiskFactorDescription | Seniority | String | Seniority of the exposure. Split from the DRCBase store. |
Added | RiskFactorDescription | Maturity | Object | The maturity of the trade, can be a LocalDate, Period, Double (year fraction), or String. Moved from DRCBase store. |
Delete | SATradeDescription | ResidualRisk, ExoticUnderlying, and OtherResidualRiskType | Moved to new RRAO store. | |
Added | Tranche | Bucket | String | The Bucket the tranche belongs to. |
Added | Tranche | Seniority | String | Split from DRCBase. |
Added | UnderlyingDescription | Bucket | String | The SBM Bucket of the underlying. |
Removed
Store | Details |
---|---|
GIRRBuckets | no longer needed with the direct bucket mapping |
FXBuckets | no longer needed with the direct bucket mapping |
Cube schema
Added
Cube | Field / Level | Details |
---|---|---|
All | Netting Set | |
SA | Equity Market Cap Category | The canonical Market Cap for an Equity Bucket, used for determining the Equity correlations |
SA | Equity Economy Category | The canonical Economy for an Equity Bucket, used for determining the Equity correlations |
SA | Equity Sector Category | The canonical name for the Sector for an Equity Bucket |
SA | DRC Sec non-CTP Seniority | The Tranche seniority |
SA | RRAO Category | Category for describing the Residual Risk Add Ons, to support overriding per jurisdiction |
SA | RRAO | Flag to indicate if RRAO applies or not. |
Measures
Added
Cube | Measure | Details |
---|---|---|
SA | RRAO Exotic | The Residual Risk Add On filtered by Exotic Underlying = Y |
SA | RRAO Other | The Residual Risk Add On filtered by Exotic Underlying = N |
SA | RRAO Notional | The notional used for the Residual Risk Add On |
Drillthrough Columns
The following drillthrough columns have been added to properly display the vectors used for the SA sensitivities
Cube | Column | Details |
---|---|---|
SA | Sensitivities Delta | Input Delta sensitivities |
SA | Delta Dates | Input vertices for Delta sensitivities |
SA | Sensitivities Vega | Input Vega sensitivities |
SA | Vega Maturity Dates | Input vertices for Vega sensitivities |
SA | Vega Expiry Dates | Second dimension of input vertices for GIRR Vega sensitivities |
SA | Delta Interpolated | Delta sensitivities interpolated to standard vertices |
SA | Vega Interpolated | Vega sensitivities interpolated to standard vertices |
SA | Curvature Risk Weight | Input risk-weights for Curvature shocked prices |
SA | Scenario Up | Input shocked-up scenario prices for different risk-weights |
SA | Scenario Down | Input shocked-down scenario prices for different risk-weights |
Context values
No change.
DLC Topic Aliases
The following topics have been added to aliases:
Alias | Topic | Details |
---|---|---|
OrganisationData | LegalEntityAttributes | Legal Entity Attributes file |
OrganisationData | LegalEntityImports | Legal Entity Imports file |
SBMData | EQUITY_BUCKET_DESCRIPTION | Equity Bucket Descriptions file |
SAOverrides | UnderlyingDescriptionOverrides | Underlying Description Overrides file |
SAOverrides | ObligorOverrides | Obligor Overides file |
SAOverrides | TrancheOverrides | Tranche Overrides file |
SAOverrides | RRAOOverrides | RRAO Overrides file |
TupleData | IMATrades | Liquidity Horizon gap filling for IMCC (trade-level) P&L vectors |
TupleData | IMASummary | Liquidity Horizon gap filling for IMCC (summary-level) P&L vectors |
Additionally, the “SAOverrides” alias has been added to the “ALLSA” alias.