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 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.
  • 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.
  • 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.

note

  • 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

note

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

note

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
Modific
ation
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.