Migration notes 5.1
This page explains the changes required to migrate to the stated version of Atoti FRTB.
Migrate to 5.1.1
No migration needed.
Breaking Changes
None
Summary
This release fixes some bugs.
Migrate to 5.1.0
Upgrading from version 5.0.1 See Atoti FRTB 5.1 Release Notes.
Atoti FRTB uses Atoti Server 6.0.5 and Atoti UI 5.1.x. For new features and fixes included in these releases, please see the Atoti UI documentation and Atoti UI Migration Notes, and the release notes for Atoti Server.
For clients licensed to use ActiveMonitor, a skeleton module based on version 6.0.5 is included with the Atoti FRTB 5.1.0 release.
Breaking Changes
None
Summary
DirectQuery
- Direct Query Database Configuration changes: Some fields have been modified in this version. See the Direct Query Database Configuration section below for a complete list of changes.
- Parent-child support with DirectQuery : LegalEntityParentChild and BookParentChild data can be provided in place of the LegalEntityHierarchy and BookHierarchy tables respectively.
- Direct Query Database Configuration changes: Some fields have been modified in this version. See the Direct Query Database Configuration section below for a complete list of changes.
- Additional DirectQuery Configuration Properties: See the new properties added to the application.yaml file.
- DirectQuery distribution configuration: The distribution configuration in DirectQuery now requires three nodes instead of two. See DirectQuery Horizontal Distribution for details on how to set up distribution when using DirectQuery.
- Migration REST Service: The Migration REST Service allows for extracting of data into a format that is ready to be loaded into one of the supported DirectQuery databases.
- DirectQuery Annotations: Annotations for use with DirectQuery have been added to help make defining beans and configuration classes easier when using DirectQuery.
- New Date Filter Configuration Bean: The newly added directQueryDatesToIncludeFilter bean allows for custom configuration of which dates to include in your DirectQuery data node.
- Removed “preview” package: The
preview
package has been removed from the frtb-directquery module. All child packages or classes have been moved to the parentfrtb
package. - DirectQuery nodes work with InMemory Sign-off enabled nodes: A DirectQuery data node can now be connected to nodes with Sign-off enabled. The
enable-signoff
spring profile must be active on all nodes (in-memory and DirectQuery). - Removed CacheRemoteTableLocallyTuplePublisher: You no longer need custom channel parameters when defining a cached remote table.
Other Changes
- Curvature store un-vectorized : Curvature store has been un-vectorized.
- ChannelParameters follow fluent conventions : We have changed how ChannelParameters are created by following fluent conventions instead of relying on a handful of constructors.
- Desk Descriptions separated from BookParentChild & BookHierarchy Stores: Desk Descriptions has been added to store desk descriptions.
- Stop Using Trade-Level PV and Notional for DRC and Curvature: Measure Chains for DRC and Curvature stores have been adjusted to use PV and Notional respectively.
- Split Desks from Book Parent Child: Desk Descriptions have been separated from the BookHierarchy store.
- What-If upgrade to 2.0.1: See What-If section below for the summary of changes.
- Book Desk Switching What-If Added new what-if for switching the desk of a given book. Works similarly to a desk model switch what-if
- Merged SA Sensitivities stores : Fixed memory use issue by merging the stores
TradeBase
,Delta
,Vega
,Curvature
, andDRCBase
into a singleSASensitivities
store. - Added SA Query Cube : With this query cube, you can now query data across multiple data nodes in the StandardisedApproachCube.
- Minor database field changes: Some fields have been modified in this version. See the Databases section below for a complete list of changes.
- Parameter Adjustments: Updated parameters to match ISDA requirements in all data sets.
- Actuator Endpoint: Tightened security in default configuration for Spring boot actuator and now require admin role.
- Minor Refactoring of
initialDataLoad
bean: This bean now depends on a new bean,initialConfigDataLoad
. More can be read below.
Parent-child support with DirectQuery
Previously the LegalEntityHierarchy and BookHierarchy stores had to define 5 and 15 levels respectively. Now, rather than creating and managing the LegalEntityHierarchy and BookHierarchy Tables yourself, you can instead just provide a ParentChild table, then create a series of views to generate the LegalEntityHierarchy and BookHierarchy Tables on the remote database.
For the SQL script to create the views to populate from a ParentChild table, see:
Stop Using Trade-Level PV and Notional for DRC and Curvature
Measure Chains for DRC and Curvature stores have been adjusted to use PV and Notional respectively. A migration script has been provided for migrating input data for each store. The scripts can be found in the folder frtb-starter/src/scripts
.
Script | Description |
---|---|
CopyCurvatureFromTradeAttributes.py | Retrieves PV from Trade Attributes file for each trade in a Curvature file. Additionally if PVApplied is ‘N’, and currencies don’t match, it queries a running project for the value. |
CopyDRCFromTradeAttributes.py | Retrieves PV and Notional from Trade Attributes file for each trade in a DRC file. |
Split Desks from Book Parent Child
Desk Descriptions have been separated from the BookHierarchy store. BookParentChild.csv
has been deprecated and renamed to BookParentChild.v1.csv
. Old files can still be loaded and a migration script has been provided for the new file format.
Script | Description |
---|---|
SplitBookParentChild.py | Migration script which takes BookParentChild.v1.csv and creates BookParentChild.v2.csv , DeskDescription.csv and BookDeskMapping.csv |
What-If upgrade to 2.0.1
AWhatIfDefinition
is nowADatabaseSimulationDefinition
.SimulationDefinitions
createJsonDatabaseActions
which can be INSERT, UPDATE, or DELETE.- To clean up the logic in the What-If REST controllers, some elements have been moved to simulation definitions.
- Now that desk descriptions are separated from the BookParentChild store, we use the common library implementation of
BookParentChildWhatIfSubmitter
.
SA Query Cube
The SA Query Cube, named “StandardisedApproachCube”, allows for querying across multiple SA data nodes. When running an application with DirectQuery and in-memory data, you are now be able to query all data in the StandardisedApproachCube. Previously, querying across the multiple nodes was only available in the combined cube.
AsOfDate Filter Config Bean
A new bean directQueryDatesToIncludeFilter has been added that supports
complex logic for which dates to include in your DirectQuery data node. You no longer have to specify the dates you want to exclude from your DirectQuery data
node through the initial-load.business-dates
property.
Input file formats
Added
File | Details |
---|---|
BookParentChild.v1.csv | This file replaces BookParentChild.csv and allows users to load deprecated book parent child files |
BookParentChild.v2.csv | New book parent child file which no longer contains desk descriptions |
DeskDescription.csv | New file which contains desk descriptions |
BookDeskMapping.csv | New file which contains book to desk mappings |
IMA_ES_ScenarioFX.csv | New file that provides FX spot rates used in IMA ES scenarios |
Modified
Modification | File | Field | Optional | Description |
---|---|---|---|---|
Unused | BookParentChild.v1.csv | Category | Category field will no longer be loaded | |
Deleted | Expected Shortfall PL Trade | PnL | N | Replaced with PV |
Added | Expected Shortfall PL Trade | PV | N | Replaces PnL (backwards compatible) |
Added | Expected Shortfall PL Trade | Base PV | Y | If present, subtracted from PV to get PnL |
Deleted | IMA Summary | PnL | N | Replaced with PV |
Added | IMA Summary | PV | N | Replaces PnL (backwards compatible) |
Added | IMA Summary | Base PV | Y | If present, subtracted from PV to get PnL |
Deprecated
File | Details |
---|---|
\BookParentChild.v1.csv | Book Parent Child file with Desk descriptions |
Configuration files
Files Added
CSRNonSec_HighRatings.csv
Added CSRNonSec_HighRatings.csv to provide the ratings that are considered “high” for CSR non-Sec covered bonds.
Multiplier.csv
This file has moved from the daily files to the configuration files.
Files Modified
signoff.properties
Updated properties:
Property Name | Comment | New Value | Old Value |
---|---|---|---|
sign-off.level.members | New member names for sign-off analysis hierarchy | LATEST,SNAPSHOT,PRELIMINARY | INTRA-DAY,TOTAL REVIEWABLE,UNAPPROVED |
frtb.properties
New properties:
Property Name | Value | Comment |
---|---|---|
contentServer.root.user | pivot | The root user of the content server, used by RemoteContentServiceConfig . |
contentServer.remote.max-connection-time | PT5M | The max time to wait for Remote Content Service (in seconds or duration string), used by RemoteContentServiceConfig . |
Deleted properties:
Property Name | Comment |
---|---|
contentServer.context-values.ignore | This property was used for a workaround for performance issues when using a remote content server. The original issue was due to cache for entitlements being set in milliseconds instead of seconds. |
frtb-config.properties
New properties:
Property Name | Value | Comment |
---|---|---|
sbm.risk-factor.always-append-tenor | false |
Set to true to always append the tenor to the risk factor name based on the risk-class and risk measure.When |
curvature.pv-ladder.level | Present Value Ladder@Present Value Ladder@Risk | Present Value Ladder Level |
drc.gross-jtd.overridden.level | DRC Gross JTD Overridden@DRC Gross JTD Overridden@Default Risk Charge | Cube level for Gross JTD Overridden |
agg.cache.size.sa-query | 10,000,000 | Configures the size of the aggregate cache for the StandardisedApproachCube Query Node |
Deleted properties:
Property Name | Comment |
---|---|
curvature.pv.overridden.level | No longer needed now that Trade PV is no longer used |
drc.pv.overridden.level | No longer needed now that Trade PV is no longer used |
drc.notional.overridden.level | No longer needed now that Trade Notional is no longer used |
frtb-data-load.properties
New properties:
Property Name | Value | Details |
---|---|---|
csr-non-sec.high-ratings.file-pattern | **/CSRNonSec_HighRatings*.csv{,.gz} | File name pattern match for CSRNonSec_HighRatings.csv |
application.yaml
New properties:
Property Name | Default Value | Details |
---|---|---|
directquery.waitForDataLoad |
true |
Application will wait to start until all initial aggregation queries are complete. |
directquery.schema.validation.validateOnStartup |
true |
Validate the remote database schema when the application starts. |
directquery.schema.validation.failStartupOnBadSchema |
true |
If the schema is invalid, then the application should not start. |
directquery.clustering.enabled |
true |
Indicates if clustering by database fields is enabled. |
directquery.clustering.clusteringPerTable |
SASensitivities: AsOfDate |
Defines the clustering fields per database table. |
directquery.database.snowflake.feedingWarehouse |
directquery.database.snowflake.warehouse value |
The Snowflake compute warehouse to use for the initial aggregation queries. |
directquery.database.snowflake.role |
null |
The Snowflake user role for Atoti FRTB to use when running queries on the database. |
management.endpoints.web.exposure.exclude |
env,beans |
Endpoints to exclude from Spring boot actuator |
management.endpoint.env.additional-keys-to-sanitize |
activeviam.jwt.key.* |
Exclude JWT keys from actuator env endpoint (if enabled) |
Updated properties:
Property Name | New Value | Old Value | Comment |
---|---|---|---|
management.endpoints.web.exposure.include |
health |
* |
Only expose health endpoint in actuator |
FRTBParameters.csv
Modification | Parameter | Type | Default | Description |
---|---|---|---|---|
Modified | sa.girr.major-ccy-adjustment |
Boolean | true |
Divide risk weights for major currencies by square root of 2 |
Modified | sa.fx.major-ccy-adjustment |
Boolean | true |
Divide risk weights for some currency pairs by square root of 2 |
Modified | sa.vega.rw.rounding-dp |
Integer | 0 |
Turn off rounding for Vega risk weights. |
Modified | sa.girr.delta.vertex.correlation.rounding-dp |
Integer | 0 |
Turn off rounding for GIRR Delta vertex correlations. |
Files Deleted
Multiplier.csv was previously loaded as a daily file, but has been moved to the configuration files.
Datastores
Added stores
Store | Details |
---|---|
CSRNonSecHighRatings | The ratings that are considered “high” for CSR non-Sec covered bonds. |
SaSensitivities | Merged TradeBase, Delta, Vega, Curvature, and DRCBase stores. |
BookDeskMapping | Split descriptions of the desks from BookHierarchy. |
DeskDescription | Split mapping of books to desks from BookHierarchy. |
Modified stores
Modification | Store | Field | Type | Description |
---|---|---|---|---|
Modified | Curvature | RiskWeight | Double | Curvature store is now un-vectorized on ETL, files can remain untouched. |
Modified | Curvature | ShiftUpPV | Double | Curvature store is now un-vectorized on ETL, files can remain untouched. |
Modified | Curvature | ShiftDownPV | Double | Curvature store is now un-vectorized on ETL, files can remain untouched. |
Added | Curvature | PVLadder | String | New optional field for interpolation. |
Deleted | Curvature | PresentValueOverridden | String | No longer needed now that Trade PV is no longer used. |
Deleted | DRCBase | PresentValueOverridden | String | No longer needed now that Trade PV is no longer used. |
Deleted | DRCBase | NotionalOverridden | String | No longer needed now that Trade Notional is no longer used. |
Modified | BookHierarchy | Split out BookDeskMapping and DeskDescription stores. | ||
Added | SaSensitivities | Underlying | String | Added Underlying field, files can remain untouched. |
Modified | RiskFactorDescription | Underlying | String | Made Underlying a key field. |
Added | SaSensitivities | TradeKey | String | Added TradeKey field, files can remain untouched. |
Modified | TradeMapping | TradeKey | String | TradeID field renamed to TradeKey. |
Deleted stores
Store | Details |
---|---|
TradeBase | Merged into SaSensitivities store |
Delta | Merged into SaSensitivities store |
Vega | Merged into SaSensitivities store |
Curvature | Merged into SaSensitivities store |
DRCBase | Merged into SaSensitivities store |
Partitioning
The datastore partitioning has been modified to match the partitioning of the default partial LEAF aggregate providers.
The following stores now use modulo partitioning on the Underlying (or equivalent) field
- SaSensitivities
- RiskFactorDescription
- UnderlyingDescription
- RRAO (
RRAOCategory
) - Obligor (
ObligorId
) - Tranche (
Tranche
) - Security (
Security
)
The following stores no longer use modulo partitioning on TradeId
- SaSensitivities
- SATradeDescription
- TradeMapping
Databases
Added Tables
Table | Details |
---|---|
SaSensitivities | Merged TradeBase, Delta, Vega, Curvature, and DRCBase tables. |
BookDeskMapping | Split descriptions of the desks from BookHierarchy. |
Desk Description | Desk descriptions have been separated out from the BookHierarchy store. |
Modified Tables
Modification | Table | Field(s) | Type | Description |
---|---|---|---|---|
Moved | Book Hierarchy | DESK , FRTB_DESK_MODEL , PLA_ZONE , IRT_DESK |
Desk description fields have been moved from the BookHierarchy store and moved to the newly added Desk Description store | |
Removed | Book Hierarchy | CATEGORY |
Category field has been removed from the data model and as such has been removed from the DirectQuery Database configuration | |
Modified | Curvature | RISK_WEIGHT |
DOUBLE | Risk weights are no longer a vector being stored as a string |
Modified | Curvature | FX_DIVIDER_ELIGIBILITY |
STRING | Name changed with added underscore (formerly FXDIVIDER_ELIGIBILITY) |
Added | Curvature | PV_LADDER |
STRING | Optional field that defaults to tradeID, used in shock interpolation |
Removed | Curvature | PRESENT_VALUE_OVERRIDDEN |
STRING | No longer needed now that Trade PV is no longer used |
Removed | DRCBASE | PRESENT_VALUE_OVERRIDDEN |
STRING | No longer needed now that Trade PV is no longer used |
Removed | DRCBASE | NOTIONAL_OVERRIDDEN |
STRING | No longer needed now that Trade Notional is no longer used |
Added | Trade Mapping | DESK |
STRING | Desk field has been added to the TradeMapping store |
Removed Not-Null | Underlying Description | BUCKET |
Bucket can be null | |
Modified | Trade Mapping | TRADE_KEY |
String | TRADE_ID field renamed to TRADE_KEY |
Added | SaSensitivities | UNDERLYING |
String | Added Underlying field |
Added | SaSensitivities | TRADE_KEY |
String | Added TradeKey field |
Deleted Tables
Table | Details |
---|---|
TradeBase | Merged into SaSensitivities table |
Delta | Merged into SaSensitivities table |
Vega | Merged into SaSensitivities table |
Curvature | Merged into SaSensitivities table |
DRCBase | Merged into SaSensitivities table |
Cube schema
Added
Cube | Dimension | Hierarchy | Levels | Datastore fields | Details |
---|---|---|---|---|---|
StandardisedApproach | Risk | Present Value Ladder | Present Value Ladder | SaSensitivities.PVLadder | The cube leaf level (along with the RiskFactor and AsOfDate) to use when interpolating shocked PV ladders. |
StandardisedApproach | Currencies | Currency | Ccy | SaSensitivities.Ccy | Currency used in the Sensitivity, ShiftUpPV, ShiftDownPV, PresentValue, Notional, GrossJTD, and Adjustment fields. Merged from several (hidden) currency levels. |
Modified
None
Removed
None
Measures
Added
Cube | Measure | Details |
---|---|---|
StandardisedApproach | SA | The Portfolio Risk Charge measure evaluated independently for the IRT and non-IRT desks, then summed. |
Context values
No changes
Measure Customizations
The annotations used to customize measures have changed as follows:
Cube | Old Annotation | New Annotation | List of Measures |
---|---|---|---|
StandardisedApproachCube | @SACopperContextBean |
@SAMeasure |
|
InternalModelsApproachCube | @IMACopperContextBean |
@IMAMeasure |
IMA Cube Measure Beans |
StressCalibrationCube | @StressCalibrationMeasure |
Additionally, the @Primary
annotation is no longer needed on the custom measures.
See Replacing Cube Measures for more details.
Other changes
initialDataLoad
bean refactoring
The initialDataLoad
bean has been slightly altered to now rely on an initialConfigDataLoad
bean which is responsible for loading the configuration data.
The overall logic and order of file loading has not changed. Moving the loading of the configuration data into its own bean allows for cleaner configuration
of a DirectQuery application.
Removed CacheRemoteTableLocallyTuplePublisher
The CacheRemoteTableLocallyTuplePublisher
has been removed. Now when defining tables to cache locally,
all that is required is to define the qualified SideStoresToCache
bean.