Migration notes 5.0

This page explains the changes required to migrate to the stated version of the FRTB Accelerator.

note

Update for 5.0.1

The mechanism for customizing the ETL was broken in 5.0.0. This has been fixed and cleaned up in 5.0.1. See Customizations below.

Upgrading from version 4.1 - See FRTB Accelerator 5.0 Release Notes.

The Accelerator is using Atoti Server 6.0.3 and ActiveUI 5.0.15.

For new features and fixes included in these releases, please see the ActiveUI documentation and ActiveUI Migration Notes, and the release notes for Atoti Server.

For clients licensed to use ActiveMonitor, a skeleton module based on version 6.0.1 is included with the FRTB Accelerator 5.0.0 release.

Headline announcement

  • Upgrade to Atoti Server 6.0
  • Swagger UI has been added. It can be enabled in the application.yaml file.
  • Summary cubes : The IMADRCSummaryCube and the PLSummaryCube have been removed. Data are now in the IMADRCCube and the PLCube, respectively.
  • SBM sensitivity interpolation : Interpolation is now performed at query time, in the first stage of the Standardised Model Approach computation.
  • CSR Sec non-CTP tranche overlaps : New columns added to Delta, Vega, Curvature, and Underlying Description Overrides files: Pool, Attachment, Detachment
  • What-If REST services migrated to Spring MVC : The What-if REST services are now @RestController classes that conform to Spring MVC patterns.
  • ETL Customizations (since 5.0.1) : The mechanism for customizing the ETL (e.g. file formats and topics) has been cleaned up.

Breaking Changes

  • The IMADRCSummaryCube has been removed, data can now be found in IMADRCCube.
  • The PLSummaryCube has been removed, data can now be found in PLCube.
  • The AsOfDate placeholder has been added to all included DEE template orders.
  • The StressCalibrationCube is no longer part of the FRTBCombinedCube.
  • Renamed some measures and hierarchies in the StressCalibrationCube
  • The metrics from the data cubes in the FRTBCombinedCube are no longer suffixed by their cube ID.
  • The hibernate properties have changed. hibernate.properties
  • C3P0 connection pool has been dropped in favor of Tomcat JDBC
  • The meaning of the Liquidity Horizon field in the files **/IMA_*_Trades*.csv, **/IMA_Summary*.csv, and **/StressCalibration_*_Trades*.csv has changed. Now it’s an array of liquidity horizons and no longer simply the largest one.
  • Underlying Description Overrides file has new columns inserted for CSR Sec non-CTP tranche overlaps.
  • The return type of methods in What-If REST services (for desk model switching, trade scaling and book parent-child customizations) has been changed from Response to the underlying object. For details, refer to the Swagger interface.
  • The “Risk Factor” level in the cube now represents a single (input) risk-factor and not a vector indexed by tenor.
    • When risk-factor names are generated in the ETL, they will now have the tenor appended.
  • In the ETL, the Risk Factor Type field is no longer modified for CSR and Equity Vega.

IMADRCSummaryCube removed

  • The data belonging to the summary scope (aggregated at book level) are now held by the IMADRCCube.
  • When loading summary data, if auto-cleanup.upon.summary.data=true the full dataset (with trade id) for the impacted dates is erased, to avoid duplicate data.
  • The file formats and source topics remain unchanged.
  • The IMADRCSummaryCube queries should now be run on the IMADRCCube, the other queries remain unchanged.
  • The partitioning of the DRCIMABase store has been changed to hold numerous dates.

PLSummaryCube removed

  • The data belonging to the summary scope (aggregated at book level) are now held by the PLCube.
  • When loading summary data, if auto-cleanup.upon.summary.data=true the full dataset (with trade id) for the impacted dates is erased, to avoid duplicate data.
  • The file formats and source topics remain unchanged.
  • The PLSummaryCube queries should now be run on the PLCube, the other queries remain unchanged.
  • The partitioning of the PLTrades store has been changed to hold numerous dates.

StressCalibrationCube

  • The data held by the StressCalibrationCube no longer feeds into the FRTBCombinedCube.
  • The cluster ID of the StressCalibrationCube is now Cluster2, so a query cube pointing to the cluster Cluster2 changed grab it.
  • Some measures in the StressCalibrationCube have had .Window appended. This is for measures which used to share the same name as IMA measures, but applied to a (1 year) window of the P&L vector.
  • The Scenarios hierarchy has been renamed Scenario Dates.

Combined cube measure name suffixes

  • The data cube metrics are no longer suffixed with the app ID when used in FRTBCombinedCube. The name is exactly the same as in the corresponding data cube.
  • For instance IMCC.IMAMeasures is renamed to IMCC in FRTBCombinedCube
Data cube Old suffix to be removed from all MDX queries
StandardisedApproachCube .SAMeasures
InternalModelApproachCube .IMAMeasures
IMADRCCube .IMADRCMeasures
PLCube .PLMeasures

CSR Sec non-CTP tranche overlaps

For CSR Sec non-CTP, the Accelerator now collects additional details for each tranche. These additional details are used to determine when two tranches overlap.

For each tranche, the Accelerator now collects Pool, Attachment, and Detachment. These fields can be provided in the Delta, Vega, Curvature, and Underlying Description Overrides. These fields are optional in all four files. In the Delta, Vega, and Curvature files, if the pool is not provided then the Tranche field is copied to the Pool field.

SBM sensitivity interpolation at query time

In previous versions of the Accelerator, the interpolated Delta and Vega was computed and stored in the datastore. Now the interpolation is performed at query time, in the first stage of the Standardised Model Approach computation.

To achieve this, the Delta and Vega sensitivities are now stored in a scalar format rather than in a vectorized form. At load time, the vectorized sensitivities are de-multiplexed to be stored in this scalar representation. Now the maturity pillars (SensitivityDates, OptionMaturity and UnderlyingMaturity) are part of the Risk Factor name (see Vectorization) and the maturities are stored in the RiskFactorDescription store. The pillar sets and the non-interpolated vector are removed from the delta and vega stores. The interpolated delta/vega vector is replaced by the de-multiplexed input scalar value.

The field Liquidity Horizon

The meaning of the Liquidity Horizon field in the files **/IMA_*_Trades*.csv, **/IMA_Summary*.csv, and **/StressCalibration_*_Trades*.csv has changed. It’s now an array of liquidity horizons. Previously the liquidity horizon would automatically expand to the next shortest one, now you have to explicitly set all the horizons the pnl refers to. The liquidity horizon is still restricted to the following values : 0, 10, 20, 40, 60, 120.

Here is a sample for one trade id, as of date or one book, legal entity, as of date:

Old definition New definition
20 20;10
40 40
120 120;60;40

DEE templates

The AsOfDate placeholder has been added to all included DEE template orders. Any use of these template orders should now include a value for the AsOfDate, see Using DEE Template Orders.

The output file name now also includes the AsOfDate and the timestamp is now in ISO8601 format.

Input file formats

Modified

Modification File Field Optional Description
Added Delta Pool Y For CSR Sec non-CTP, the underlying pool for the tranche
Added Vega Pool Y For CSR Sec non-CTP, the underlying pool for the tranche
Added Curvature Pool Y For CSR Sec non-CTP, the underlying pool for the tranche
Added Underlying Description Overrides Pool Y For CSR Sec non-CTP, the underlying pool for the tranche
Added Delta Attachment Y For CSR Sec non-CTP, the tranche’s attachment point
Added Vega Attachment Y For CSR Sec non-CTP, the tranche’s attachment point
Added Curvature Attachment Y For CSR Sec non-CTP, the tranche’s attachment point
Added Underlying Description Overrides Attachment Y For CSR Sec non-CTP, the tranche’s attachment point
Added Delta Detachment Y For CSR Sec non-CTP, the tranche’s detachment point
Added Vega Detachment Y For CSR Sec non-CTP, the tranche’s detachment point
Added Curvature Detachment Y For CSR Sec non-CTP, the tranche’s detachment point
Added Underlying Description Overrides Detachment Y For CSR Sec non-CTP, the tranche’s detachment point
Modified Expected Shortfall PL Trade LiquidityHorizon Y Can now list multiple liquidity horizons
Modified IMA Summary LiquidityHorizon Y Can now list multiple liquidity horizons
Added Multiplier ParameterSet Y (since 5.0.1) The parameter set to which the multipliers belong (default = BCBS).

Configuration files

Files Added

apm.properties

ActivePivot Monitoring (APM) configuration.

tracing.properties

Files Modified

jwt.properties

Properties starting with qfs.jwt have been renamed to start with activeviam.jwt.

application.yaml

New properties:

Property Name Value Comment
springdoc.swagger-ui.enabled false Enable flag for Swagger UI.
springdoc.swagger-ui.path Path to Swagger UI.
directquery.enabled false Enable DirectQuery
directquery.database.* DirectQuery database configuration
frtb.properties

New properties:

Property Name Value Comment
user-detail-filename null Specifies the csv file for describing the userDetailService. If not set, use hardcoded user details. If property is set, load from file.
activeviam.apm.enable true Enable ActivePivot Monitoring (APM)
auto-cleanup.upon.summary.data true When loading data into a cube, the presence of summary data for an AsOfDate automatically erases the corresponding full dataset.

Updated properties:

Property Name Comment New Value Old Value
activeviam.distribution.maxPendingDiscoveries Property has been renamed from qfs.distribution.maxPendingDiscoveries. 5 7
frtb-config.properties

New properties:

Property Name Value Comment
csr-sec-non-ctp.market-data.pool.level CSR Sec non-CTP Pool@CSR Sec non-CTP Pool@Market Data Cube level for CSR Sec Non-CTP Pool
csr-sec-non-ctp.market-data.attachment.level CSR Sec non-CTP Attachment@CSR Sec non-CTP Attachment@Market Data Cube level for CSR Sec Non-CTP Attachment
csr-sec-non-ctp.market-data.detachment.level CSR Sec non-CTP Detachment@CSR Sec non-CTP Detachment@Market Data Cube level for CSR Sec Non-CTP Detachment
aggregated-double-precision 0.000001 The precision to use when testing equality of up and down curvature risk position scenarios

New properties in 5.0.1:

Property Name Comment Value
measure.capital-allocation.hide Hides Capital-Allocation measures. false
measure.incremental.hide Hides Incremental measures. false
what-if.trade-scaling.disable Disables trade-scaling REST functionality. false
what-if.file-upload.disable Disables file-upload REST functionality. false
what-if.book-hierarchy.disable Disables book-hierarchy REST functionality. false
what-if.desk-switch.disable Disables desk-switch REST functionality. false
what-if.parameter-set.disable Disables parameter-set REST functionality. false

Updated properties:

Property Name New Value Comment
stress-calibration.scenario.level Scenario Date@Scenario Dates@Risk Renamed level and hierarchy
drc.batch.size 2 With changes in partitioning (due to the removal of the summary cube), the number of simultaneous batches has increased.
sparse.vectors.enable.for.stores DRCIMABase:ScenarioRecoveryValues Removed summary cube

Deleted properties:

Property Name Comment
agg.cache.size.drcsummary As the IMA DRC Summary Cube has been removed, this property is no longer needed.
agg.cache.size.plsummary As the PL Summary Cube has been removed, this property is no longer needed.
FRTBParameters.csv
Modification Parameter Type Default Description
Added sa.csr-sec-non-ctp.delta.rho-tranche.overlap-threshold Double 0.8 The CSR Sec No CTP tranche notional overlap threshold. Used in MAR 21.68 rho(tranche).
hibernate.properties

Hibernate properties in this file have been renamed to prepend content-service.db. to the property name.

The C3P0 connection pool properties have been replaced with Tomcat JDBC connection pool properties.

Maven Profiles

A new direct-query Maven Profile has been added if using DirectQuery. You will need to enable this profile to have the frtb-directquery module included in your classpath.

Datastores

Modified stores

Modification Store Field Type Description
Added PLTrades TradeKey String Primary key that contains either tradeID or book and legal entity
Added DRCIMABase TradeKey String Primary key that contains either tradeID or book and legal entity
Added UnderlyingDescription Pool String For CSR Sec non-CTP, the underlying pool for the tranche
Added UnderlyingDescription Attachment Double For CSR Sec non-CTP, the tranche’s attachment point
Added UnderlyingDescription Detachment Double For CSR Sec non-CTP, the tranche’s detachment point
Added UnderlyingDescriptionOverrides Pool String For CSR Sec non-CTP, the underlying pool for the tranche
Added UnderlyingDescriptionOverrides Attachment Double For CSR Sec non-CTP, the tranche’s attachment point
Added UnderlyingDescriptionOverrides Detachment Double For CSR Sec non-CTP, the tranche’s detachment point
Deleted Delta SensitivityDates String[] Now stored in the RiskFactorDescription table’s Maturity field.
Deleted Delta DeltaSensitivities - Interpolated double[] Interpolation is now done on the fly.
Replaced Delta DeltaSensitivities Double The type has changed from double[] to Double and replaces DeltaSensitivities - Interpolated
Deleted Vega OptionMaturity String[] Now stored in the RiskFactorDescription table’s Maturity field.
Deleted Vega UnderlyingMaturity String[] Now stored in the RiskFactorDescription table’s UnderlyingMaturity field.
Deleted Vega VegaSensitivitiesInterpolated double[] Interpolation is now done on the fly.
Replaced Vega VegaSensitivities Double The type has changed from double[] to Double and replaces VegaSensitivitiesInterpolated
Added RiskFactorDescription UnderlyingMaturity Object The maturity pillar of the underlying instrument for a Vega sensitivity.
Modified IMATrades Liquidity Horizon String Now an array of liquidity horizons
Added IMATrades PnL double[] The P&L vector; moved from the deleted IMATradesPL store
Added IMATrades Ccy String The curreny of the P&L vector; moved from the deleted IMATradesPL store
Modified StressCalibrationTrades Liquidity Horizon String Now an array of liquidity horizons
Added StressCalibrationTrades PnL double[] The P&L vector; moved from the deleted StressCalibrationTradesPL store
Added StressCalibrationTrades Ccy String The curreny of the P&L vector; moved from the deleted StressCalibrationTradesPL store
Added IMAMultiplier ParameterSet String (since 5.0.1) The parameter set to which the multipliers belong (default = BCBS).

Deleted stores

Store Details
PLSummary No longer used as the PLSummaryCube has been removed
DRCIMASummaryBase No longer used as the IMADRCSummaryCube has been removed
IMATradesPL No longer used; the IMATradesstore contains all the required values, and no further ETL processing is performed (gap filler)
StressCalibrationTradesPL No longer used; the StressCalibrationTrades store contains all the required values, and no further ETL processing is performed (gap filler)

Cube schema

Added

Cube Dimension Hierarchy Levels Datastore fields Details
All cubes Dates BookStructureDate ALL, BookStructureDate BookHierarchy/AsOfDate Analysis hierarchy used to choose a different date for the book hierarchy. If nothing is specified, the asOfDate is used.
StandardisedApproach Market Data CSR Sec non-CTP Pool CSR Sec non-CTP Pool UnderlyingDescription.Pool For CSR Sec non-CTP, the underlying pool for the tranche
StandardisedApproach Market Data CSR Sec non-CTP Attachment CSR Sec non-CTP Attachment UnderlyingDescription.Attachment For CSR Sec non-CTP, the tranche’s attachment point
StandardisedApproach Market Data CSR Sec non-CTP Detachment CSR Sec non-CTP Detachment UnderlyingDescription.Detachment For CSR Sec non-CTP, the tranche’s detachment point
StandardisedApproach Risk Original Maturity Original Maturity RiskFactorDescription.Maturity The input maturity for the risk-factor
StandardisedApproach Risk Original Underlying Maturity Original Underlying Maturity RiskFactorDescription.Underlying Maturity The input GIRR Vega underlying maturity for the risk-factor

Modified

Cube Dimension Hierarchy Levels Datastore fields Details
All cubes Booking Desks [ALL, Desk] BookHierarchy/Desk The level property “Sign-Off Field” has been added with the value “Desk”
StressCalibration Risk Scenario Dates Scenario Dates StressCalibrationScenarios.Scenario Scenario labels for stress calibration P&L vectors.

Measures

Added

Cube Measure Details
StandardisedApproach SBM Risk Charge (reference scenario) The sensitivities-based risk charge, for the reference level correlation scenario

Context values

No Change

Topic Aliases

No Change

Customizations

(Since 5.0.1)

We have simplified and standardized how ETL modifications can be made. It is no longer necessary to extend accelerator classes or override methods and beans. Instead, the loading of data from csv files is now controlled by ChannelParameters beans. New beans can be used to replace the description of existing file types or to add additional file types.

Changes to how ChannelParameters are added/modified

Previously, depending on the topic, you would have to perform one or other of the following actions:

  • Append to the ChannelParameters list in an existing bean (e.g. sourceConfigStores)
  • Call createAndAddTopics to add topics to the source object (e.g. the CsvScopedFetchSource object in csvSource())

We now create a new ChannelParameters bean, these beans can represent new ChannelParameters or to replace existing ones. For more information, see ChannelParameters Bean Annotations.

Installing Dependencies

note

We recommend using the latest LTS version of Node 16.x.x for the Accelerator projects, even though ActiveUI 5 only requires that you use Node 14.x.x. During development we’ve experienced minor issues using Node Node 14.x.x.

  1. After downloading the ActiveUI5 app, run these commands in the following order to test that the app works as expected:

    1) yarn install
    2) yarn build
    3) yarn start
    

    The yarn start command opens the project in your browser, displaying a blank ActiveUI5 project.

  2. After confirming that the project starts correctly, add the Accelerator-sdk and Accelerator-specific packages to your project. You can do this by going to the package.json file of your project, and adding the following dependencies:

    "@activeviam/frtb-sdk": "5.0.0",
    "@activeviam/accelerator-sdk": "5.0.15",
    
  3. After adding these dependencies to your package.json, rerun the yarn install command.

Sign-Off features

Dependencies

The dependency to the Signoff-ext module has been updated to 2.1.0-RC.

REST services

  • The ISignOffRestService class has been removed from the FRTB project. That class is now imported from the Signoff-ext dependency.
  • The SignOffRestServiceConfig class has been removed, as well as the import of that class in the FrtbSignOffParentConfig class.
  • The SignOffRestService now used the @RestController Spring annotation and returns DTOs that are not wrapped in javax.ws.rs.core.Response objects any more.
  • A level property has been added to the Desk level (see section Cube Schema).

Adjustments

In the AdjustmentExecutionConfig class, a helper method “transfer” is used to read the retrieved datastore tuples.