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 thePLSummaryCube
have been removed. Data are now in theIMADRCCube
and thePLCube
, 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 inIMADRCCube
. - The
PLSummaryCube
has been removed, data can now be found inPLCube
. - The
AsOfDate
placeholder has been added to all included DEE template orders. - The
StressCalibrationCube
is no longer part of theFRTBCombinedCube
. - 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 theIMADRCCube
, 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 thePLCube
, 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 theFRTBCombinedCube
. - The cluster ID of the
StressCalibrationCube
is nowCluster2
, so a query cube pointing to the clusterCluster2
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 renamedScenario 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 toIMCC
inFRTBCombinedCube
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 IMATrades store 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. theCsvScopedFetchSource
object incsvSource()
)
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.
-
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. -
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",
-
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.