Migration notes 5.3

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

Migrate to 5.3.3

Breaking changes

  • Netted measures: Added IRT Desk to the leaf levels for standalone calculations for Netted measures.

Summary

  • Configuration Changes

Netted measures

Added IRT Desk to the leaf levels for standalone calculations for Netted measures. This is a reversible configuration change.

Configuration files

Files Modified

frtb-config.properties

Updated properties:

Property Name New Value Old Value Comment
netting-set.level Netting Set@Netting Set@Booking,IRT Desk@IRT Desk@Booking Netting Set@Netting Set@Booking Added IRT Desk to the leaf levels for standalone calculations for Netted measures.
This property now supports multiple levels.
reference-levels.list ,IRT Desk,FRTB Model... ,FRTB Model... Added IRT Desk to the list of levels available to the ReferenceLevel context value.

Migrate to 5.3.2

Breaking changes

  • Offline Documentation: No longer automatically included on the server. A configuration option has been added to enable this.

Offline Documentation

The offline documentation that was automatically included on the server has been removed.

To re-enable this the server.resources.documentation property has been added to point to the directory location of the documentation (included with the distribution).

Startup properties

Modification Property Name Value Comment
Added server.resources.documentation null The optional resource location of the offline documentation.
For example, “classpath:/static/documentation/”.

Migrate to 5.3.1

Breaking Changes

  • What-if Persistence: New configuration options have been added to persist what-if simulation status to a hibernate JDBC database.

Summary

  • Distributed What-if: Additional configuration options have been added to configure the REST endpoints used for distributed what-if.
  • Upgrade to Atoti Server

Distributed What-If Configuration

When using distributed what-if, the data nodes will use the cluster communication channels to tell the query node the base URL of the REST endpoints. The query node will then use the REST endpoints to execute the what-if simulations on the data nodes.

The REST endpoint configuration includes four components (protocol, host, port, and suffix) which are used to construct the REST endpoint URLs:

  • port (required): Must match the port in server.port.
  • suffix (required): Must be compatible with the path in server.servlet.context-path.
  • protocol (optional): “http” or “https”. Defaults to “http”.
  • host (optional): If not set, this will default to the server’s IP address.

For example:

activeviam.distribution.endpoint:
  protocol: "http"
  port: ${server.port}
  suffix: "frtb-starter"

What-If Persistence Configuration

The what-if engine is now set up to persist what-if simulation statuses to a hibernate JDBC database. The hibernate configuration uses the properties what-if.db.*, where the individual properties are defined in the hibernate documentation.

Atoti FRTB ships with a default configuration that will use an in-memory h2 database:

what-if.db:
  hibernate:
    dialect: org.hibernate.dialect.H2Dialect
    hbm2ddl.auto: create
    current_session_context_class: thread
    connection.url: jdbc:h2:mem:what-if;DB_CLOSE_DELAY=-1
    connection.driver_class: org.h2.Driver

Startup properties

Property Name Value Comment
activeviam.distribution.endpoint.protocol “http” Protocol to use when connecting to the server’s REST endpoints.
activeviam.distribution.endpoint.host Host name to use when connecting to the server’s REST endpoints.
what-if.db.* (see above) The properties used to define the hibernate JDBC database for persisting the what-if engine simulation statuses.

See the hibernate documentation for details on individual properties.

Configuration files

Files Modified

application.yaml

New properties:

Property Name Value Comment
activeviam.distribution.endpoint.protocol “http” Protocol to use when connecting to the server’s REST endpoints.
activeviam.distribution.endpoint.port ${server.port} Port to use when connecting to the server’s REST endpoints.
activeviam.distribution.endpoint.suffix “frtb-starter” Servlet context path for connecting to the server’s REST endpoints.
what-if.db.hibernate.dialect org.hibernate.dialect.H2Dialect Hibernate’s hibernate.dialect property.
what-if.db.hibernate.hbm2ddl.auto create Hibernate’s hibernate.hbm2ddl.auto property.
what-if.db.hibernate.current_session_context_class thread Hibernate’s hibernate.current_session_context_class property.
what-if.db.hibernate.connection.url jdbc:h2:mem:what-if;DB_CLOSE_DELAY=-1 Hibernate’s hibernate.connection.url property.
what-if.db.hibernate.connection.driver_class org.h2.Driver Hibernate’s hibernate.connection.driver_class property.

Migrate to 5.3.0

Upgrading from version 5.2.0, see Atoti FRTB 5.3 Release Notes.

Atoti FRTB uses Atoti Server 6.0.14-sb3 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.14-sb3 is included with the Atoti FRTB 5.3.0 release.

Headline announcement

  • EBA Reporting : Additional fields and measures have been included to support new EBA reporting templates.
    • The “Imported” measures used for the old reporting templates have been deprecated.
  • Spring Boot 3 : Upgraded to Spring Boot 3.
  • Spring Profiles : Profile-based configuration has been replaced with properties (backwards compatible).
  • UI Activation : An import of react-query is required when using frtb-sdk. See UI activation for more details.
  • DirectQuery IMA Support: Addes support for using the IMA-ES cube (InternalModelApproachCube) with DirectQuery.
  • Configuration Property Naming Convention: Configuration properties inside application.yaml have been updated from camelCase to kebab-case. This change is to align with the Spring Boot naming convention. Both naming conventions are interchangeable/compatible with each other.
  • Inclusion of Query Cubes: IMA, IMA-DRC, PL, StressCalibration query cubes have been added. These cubes are used to query data across data nodes. A complete list of moved measures can be found here.
  • Reinstating the Categories hierarchy: The Categories hierarchy that was removed in 5.1.0 can be re-instated with the configuration property categories-hierarchy.enabled=true.
  • IRT Desk improvements: IRT Desk membership is now specified directly at the book level. Additionally, it is possible to dynamically change which books are members of the IRT Desk.

Breaking Changes

  • IRT_Desk field: Moved from the DeskDescription store to the BookDescription store. This change is also reflected in DirectQuery Tables.
    The BookDescription store was previously named BookDeskMapping. Backwards compatibility with old input files is maintained, though the use of the IRT_Desk field in DeskDescription files has been deprecated.
  • obligor_category field: input field is no longer being converted to canonical value within DefaultRiskChargeTuplePublisher. This logic has been moved to a column calculator which is enabled by default but will be disabled in future releases. To re-enable, set drc.bucket.cleaning to true.

Profile-based Configuration

The code in Atoti FRTB will no longer change behavior based directly on Spring profiles. Instead, the behavior will be determined by properties. The properties can be set by profile-selected configuration files. Default properties files are included to preserve backwards compatibility with the use of profiles.

In particular, instead of the profiles dist-data-node, dist-query-node, and forceNetty (and the property directquery.enabled), we have the following properties:

Property Description Values
starter.deployment.type Specifies the nature of the database used for the cube. It can take three values:
  • in-memory (default): The in-memory datastore is used.
  • direct-query: An external database is used. This replaces the directquery.enabled property.

    note

    An in-memory datastore is still used for configuration data and caching.

  • query-node: No database is used. This can contain the FRTBCombinedCube and the StandardisedApproachCube (support for IMA cubes will be in a future version).
starter.deployment.transport Specifies the messenger to use for communication between cubes. It can take three values:
  • local (default): For communication only within a single machine. It cannot be used for distribution, but is faster if distribution isn’t needed.
  • netty: For jgroups communication between machines in a distributed deployment.
  • none: For data cubes that use no communication bus. This configuration cannot be used with query-nodes and the FRTBCombinedCube must be disabled.
combined.disable=false An existing flag which turns the FRTBCombinedCube polymorphic cube on or off.

Change to frtb.properties

We have switched from frtb.properties to application.properties which is automatically picked up by Spring Boot. Properties are no longer read from frtb.properties which has now been removed. The following configuration files have been added to match the behavior of the profiles:

Spring profile Configuration file starter.deployment.type starter.deployment.transport combined.disable
default in-memory local unset (false)
dist-data-node application-dist-data-node.yaml in-memory netty true
dist-query-node application-dist-query-node.yaml query-node netty unset (false)
forceNetty application-forceNetty.yaml unset (in-memory) netty unset (false)

See the Externalized Configuration section of the Spring boot documentation for more information on profiles and property management.

Input file formats

Added

File Details
BookDescription.csv This file replaces BookDeskMapping.csv and provides a description of the books.
It includes the IRT_DESK field which replaces the field of the same name removed from the DeskDescription file. The old input file BookDeskMapping.csv is deprecated but can still be loaded.
IRTDeskGroups.csv This file offers a way to provide multiple membership groups for IRT Desk. It is optional and to use it you must enable irt-desk-groups.enabled
Categories.csv This file provides a mapping of nodes in the book hierarchy to categories. It is only used if the property categories-hierarchy.enabled=true is set.

Modified

Modification File Field Optional Description
Added DRC_Trade.csv Instrument Type Y Reported Instrument Type (“Derivative” or “Non-Derivative”).
Added DRC_Summary.csv Instrument Type Y Reported Instrument Type (“Derivative” or “Non-Derivative”).
Added RRAO_Trade.csv Residual Risk Y Is this position subject to RRAO.\nDefault = ‘Y’.
Added RRAO_Trade.csv Exemption Reason Y Reported reason why the position is exempt from RRAO.
Added RRAO_Trade.csv Asset Class Y Reported asset class.
Added RRAO_Summary.csv Residual Risk Y Is this position subject to RRAO.\nDefault = ‘Y’.
Added RRAO_Summary.csv Exemption Reason Y Reported reason why the position is exempt from RRAO.
Added RRAO_Summary.csv Asset Class Y Reported asset class.
Added RRAO_Overrides.csv Exemption Reason Y Reported reason why the position is exempt from RRAO.
Added RRAO_Overrides.csv Asset Class Y Reported asset class.
Added SBM_Delta_Sensitivities.csv GIRR Basis Ccy Y The counter currency for GIRR cross-currency basis curves (USD or EUR).
Added SBM_Summary_Delta_Sensitivities.csv GIRR Basis Ccy Y The counter currency for GIRR cross-currency basis curves (USD or EUR).
Added SBM_Vega_Sensitivities.csv GIRR Basis Ccy Y The counter currency for GIRR cross-currency basis curves (USD or EUR).
Added SBM_Summary_Vega_Sensitivities.csv GIRR Basis Ccy Y The counter currency for GIRR cross-currency basis curves (USD or EUR).
Removed DeskDescription.csv IRT_DESK Y This field has been deprecated to use this field to overwrite the ones provided in the BookDescription files you must enable irt.desk.use-desk-description

Deprecated

File Details
LegalEntityImports.csv Imported measures are deprecated and only provided for backwards compatibility with older EBA reporting templates.
BookMapping.csv This file can still be loaded, but has been replaced by DeskDescription.csv

Configuration files

Files Modified

hibernate.properties

New properties:

Property Name Comment Value
content-service.db.jakarta.persistence.jdbc.driver Replaces content-service.db.driverClassName org.h2.Driver

Deleted properties:

Property Name Comment
content-service.db.driverClassName Replaced by content-service.db.jakarta.persistence.jdbc.driver
application.yaml

New properties:

Property Name Comment Value
starter.deployment.type The type of database used for the cube. in-memory (default), direct-query or query-node. “in-memory”
starter.deployment.transport The messenger to use for communication between cubes. local (default) or netty. “local”
server.servlet.session.cookie.name Customize cookie name “FRTB_JSESSIONID”
server.servlet.session.cookie.secure Whether to always mark the cookie as secure “true”
server.servlet.session.cookie.http-only Whether to use “HttpOnly” attribute for the cookie “true”
server.servlet.session.cookie.same-site SameSite setting for the cookie “none”
directquery.database.databricks.* DirectQuery settings for Databricks database
categories-hierarchy.enabled Flag to enable the Categories hierarchy. “false”

Deleted properties:

Property Name Comment
directquery.enabled Replaced by starter.deployment.type=direct-query
directquery.wait-for-data-load / directquery.waitForDataLoad Replaced by starter.deployment.type=direct-query
application.properties (formerly frtb.properties)

New properties:

Property Name Comment Value
tracing.enabled Enable OpenTelemetry Configuration true
open-telemetry.zipkin-span-exporter.url URL to use for zipkin SpanProcessor bean
open-telemetry.logging-span-exporter.enabled Enable SpanProcessor bean with LoggingSpanExporter
frtb-config.properties

New properties:

Property Name Comment Value
irt.desk.use-desk-description Flag to use deprecated IRT_Flag field from DeskDescription input files to override the values provided by BookDescription input files false
ctx.drillthrough.maxrows Flag used to set the drillthrough maximum rows. 10000
drc.bucket.cleaning Enable column calculator to use canonical names for DRC Non-Sec Buckets. For details, see breaking change to obligor_category field. false
irt-desk-groups.enabled Enable multiple membership groups for IRT Desk. false
frtb-data-load.properties

New properties:

Property Name Value Comment
irt-desk-groups.file-pattern **/IRTDeskGroups*.csv{,.gz} File pattern for IRT Desk Groups files
categories.file-pattern **/Categories*.csv{,.gz} File pattern for Categories files

Updated properties:

Property Name Comment New Value Old Value
book-description-file-pattern Renamed from book-desk-mapping.file-pattern **/{BookDeskMapping,BookDescription}*.csv{,.gz} **/BookDeskMapping*.csv{,.gz}
CSRNS_Bucket_Correlations (UK-PRA)

A UK-PRA version of this file was added because the CSR non-Sec gamma correlations for UK-PRA now consider the rating of the index buckets.

Datastores

Added stores

Store Details
BookDescription Replaces BookDeskMapping store.
IRT Desk Groups Added to support multiple membership groups for IRT Desk
CategoriesSource Maps parent/child nodes to categories. Used to build the Categories store. Only used if the property categories-hierarchy.enabled=true is set.
Categories Maps books to categories. Built from the CategoriesSource store. Only used if the property categories-hierarchy.enabled=true is set.

Modified stores

Modification Store Field Type Description
Added SaSensitivities Instrument Type String For DRC non-Sec only. Reported Instrument Type (“Derivative” or “Non-Derivative”).
Added RRAO Exemption Reason String Reported reason why the position is exempt from RRAO.
Added RRAO Asset Class String Reported asset class.
Added RRAOOverrides Exemption Reason String Reported reason why the position is exempt from RRAO.
Added RRAOOverrides Asset Class String Reported asset class.
Added UnderlyingDescription GIRR Basis Ccy String GIRR only. The counter currency for GIRR cross-currency basis curves (USD or EUR).
Added BookDescription IRT_DESK String
Removed DeskDescription IRT_DESK String

Removed stores

Store Details
BookDeskMapping Renamed as BookDescription

DirectQuery

Added

Added Details
IMA ES Support DirectQuery can now be used with the InternalModelApproachCube cube. The IMA ES calculations can now be performed against data sourced from a remote database when using DirectQuery.
Cube Conditional Annotations Conditional expression annotations to create beans depending on whether different cubes are enabled/disabled.
Dates Filter Added configurations to filter the dates the DirectQuery node has access to from the remote database.
DirectQueryCachedTablesConfig Configures which tables to cache in-memory, sourced from a DirectQuery remote database table.
DirectQueryDictionarizedFieldsConfig Configures which DirectQuery table fields should be dictionarized.

Changed

Change Details
InitialDataDirectQueryConfig replaced with DirectQueryDatesFilterConfig Filtering dates has been modified to use standalone properties. Additionally customizations of the DirectQueryDatesFilterConfig beans have been simplified.
Defining tables to cache locally How the tables to cache locally are defined has changed. Customizing the tables that are cached locally has been simplified.
Reference database data is now GZipped. The reference data that is provided within frtb-directquery/src/test/resources/databases/xxx/input_data/ is now GZipped. This reduces the size of the deliverables.

Removed

Class Details
ADirectQueryDatabaseSchema Configuration has been removed and replaced with DirectQueryCachedTablesConfig and DirectQueryDictionarizedFieldsConfig.

Removal of ADirectQueryDatabaseSchema

Rather than manually migrating each in-memory datastore definition into a DirectQuery database table, we now fully rely on the Migrator to migrate our in-memory datastore definitions into DirectQuery table definitions. This is done within the DirectQueryApplicationConfig.schema() method.

All customizations on in-memory stores will be automatically applied to the DirectQuery schema.

Databases

Included in the distribution are DDL scripts that will upgrade a database from the previous versions.

Added tables

Table Details
ES_SCENARIO_FX_RATES Only needed for IMA
IMARISK_FACTORS Only needed for IMA
IMATRADES Only needed for IMA
SCENARIOS Only needed for IMA
BOOK_DESCRIPTION Replaces BookDeskMapping table.

Modified tables

Modification Table Field Type Description
Added SASENSITIVITIES INSTRUMENT_TYPE STRING For DRC non-Sec only. Reported Instrument Type (“Derivative” or “Non-Derivative”).
Added RRAO EXEMPTION_REASON STRING Reported reason why the position is exempt from RRAO.
Added RRAO ASSET_CLASS STRING Reported asset class.
Added RRAOOVERRIDES EXEMPTION_REASON STRING Reported reason why the position is exempt from RRAO.
Added RRAOOVERRIDES ASSET_CLASS STRING Reported asset class.
Added UNDERLYING_DESCRIPTION GIRR_BASIS_CCY STRING GIRR only. The counter currency for GIRR cross-currency basis curves (USD or EUR).
Added BOOK_DESCRIPTION IRT_DESK String
Removed DESK_DESCRIPTION IRT_DESK String

Deleted tables

Table Details
BookDeskMapping Renamed as BOOK_DESCRIPTION

Deprecated

Table Details
LegalEntityImports Imported measures are deprecated and only provided for backwards compatibility with older EBA reporting templates.

Cube schema

Added

Cube Dimension Hierarchy Levels Datastore fields Details
SA Default Risk Charge [DRC non-Sec Instrument Type] DRC non-Sec Instrument Type SaSensitivities.Instrument Type Reported type of the instrument, derivative or non-derivative.
SA Risk [RRAO Exemption Reason] RRAO Exemption Reason RRAO.Exemption Reason Reported reason why the position is exempt from RRAO.
SA Risk [RRAO Asset Class] RRAO Asset Class RRAO.Asset Class Reported asset class for the position.
SA Risk [GIRR Basis Ccy] GIRR Basis Ccy UnderlyingDescription.GIRR Basis Ccy The counter currency for GIRR cross-currency basis curves.
All Booking [IRT Group] IRT Group IRTDeskGroups.IRT_Group The membership group to use for IRT Desks.
All Organization [Categories] Category Categories.Category A category that can be used for internal reporting. Only present if the property categories-hierarchy.enabled=true is set.

Measures

Added

Cube Measure Details
SA risk-class risk-measure Risk Position scenario (reported) The “Reported” variation of the SBM Risk Position measures have been added for the new EBA reporting requirements.
SA drc-risk-class Net JTD direction (reported) The “Reported” variation of the DRC Net JTD measures have been added for the new EBA reporting requirements.
SA drc-risk-class WtS Ratio (reported) The “Reported” variation of the DRC WtS Ratio measures have been added for the new EBA reporting requirements.

Moved

The following measures have been moved form the CombinedCube into the respective query cubes. By moving these measures into the query cube, we can now query across dates and data nodes without the measure needing to be defined in the CombinedCube. These measures will still exist in the CombinedCube and on all data-nodes.

Previous cube New cube Measure name
CombinedCube IMADRCCube DRC - IMA
CombinedCube IMADRCCube IMADRC Lookback
CombinedCube IMADRCCube IMADRCavg
CombinedCube InternalModelApproachCube CA
CombinedCube InternalModelApproachCube ES (Model Variation) Lookback
CombinedCube InternalModelApproachCube ES (Model Variation) avg
CombinedCube InternalModelApproachCube IMCC Lookback
CombinedCube InternalModelApproachCube IMCCavg
CombinedCube InternalModelApproachCube SES Lookback
CombinedCube InternalModelApproachCube SESavg
CombinedCube PLCube Actual PL Lookback
CombinedCube PLCube Actual PL Lookback Index
CombinedCube PLCube Actual PL Lookback Rank
CombinedCube PLCube Exception 97.5 (Actual) Count
CombinedCube PLCube Exception 97.5 (Actual) Dates
CombinedCube PLCube Exception 97.5 (Actual) Lookback
CombinedCube PLCube Exception 97.5 (Hypothetical) Count
CombinedCube PLCube Exception 97.5 (Hypothetical) Dates
CombinedCube PLCube Exception 97.5 (Hypothetical) Lookback
CombinedCube PLCube Exception 97.5 Count
CombinedCube PLCube Exception 99 (Actual) Count
CombinedCube PLCube Exception 99 (Actual) Dates
CombinedCube PLCube Exception 99 (Actual) Lookback
CombinedCube PLCube Exception 99 (Hypothetical) Count
CombinedCube PLCube Exception 99 (Hypothetical) Dates
CombinedCube PLCube Exception 99 (Hypothetical) Lookback
CombinedCube PLCube Exception 99 Count
CombinedCube PLCube Hypothetical PL Lookback
CombinedCube PLCube Hypothetical PL Lookback Index
CombinedCube PLCube Hypothetical PL Lookback Rank
CombinedCube PLCube Kolmogorov-Smirnov Test Metric
CombinedCube PLCube Kolmogorov-Smirnov Test p-value
CombinedCube PLCube Mean Ratio
CombinedCube PLCube Mean Unexplained PL
CombinedCube PLCube Outlier 97.5 Count
CombinedCube PLCube Outlier 97.5 Dates
CombinedCube PLCube Outlier 99 Count
CombinedCube PLCube Outlier 99 Dates
CombinedCube PLCube Spearman Correlation Metric
CombinedCube PLCube Spearman Correlation Metric Denominator
CombinedCube PLCube Spearman Correlation Metric Numerator
CombinedCube PLCube Std Dev Hypothetical PL
CombinedCube PLCube Std Dev Hypothetical PL Lookback Rank
CombinedCube PLCube Std Dev Theoretical PL Lookback Rank
CombinedCube PLCube Theoretical PL Lookback
CombinedCube PLCube Theoretical PL Lookback Index
CombinedCube PLCube Theoretical PL Lookback Rank
CombinedCube PLCube Unexplained PL Lookback
CombinedCube PLCube VaR 97.5% (previous day) Lookback
CombinedCube PLCube VaR 99% (previous day) Lookback
CombinedCube PLCube Variance Hypothetical PL
CombinedCube PLCube Variance Ratio
CombinedCube PLCube Variance Unexplained PL
CombinedCube PLCube p-value (Actual) Lookback
CombinedCube PLCube p-value (Actual) Lookback Index
CombinedCube PLCube p-value (Actual) Lookback Rank
CombinedCube PLCube p-value (Hypothetical) Lookback
CombinedCube PLCube p-value (Hypothetical) Lookback Index
CombinedCube PLCube p-value (Hypothetical) Lookback Rank
CombinedCube StandardisedApproachCube PortfolioRiskCharge.D2D

Deprecated

Cube Measure Details
SA base-measure Imported Imported measures are and only provided for backwards compatibility with older EBA reporting templates. In a future version these measures will be hidden.

Context values

No changes.