Migration notes 5.1

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

Migrate to 5.1.2

No migration needed.

Breaking Changes

None

Summary

  • Atoti Server version: Upgraded to 6.0.13
  • Bug fixes This release fixes some known issues.

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 parent frtb 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, and DRCBase into a single SASensitivities 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 now ADatabaseSimulationDefinition.
  • SimulationDefinitions create JsonDatabaseActions 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 false the tenor will only be appended for those rows that contain vectors of sensitivities.

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.