Release notes 6.0

info

For user-facing changes, refer to the What’s New page.
For the list of issues covered in this release, see the Changelog.
For information on upgrading from previous versions, see the Atoti Market Risk Migration Guide.

6.0.4

2025-09-09

Follow this link to download the zipped distribution files for:

  • UI source code
  • UI build
  • Source files to build the module
  • Sample bookmarks
  • Offline documentation that can be served by the module
  • Maven repository required to build the project and run the tests. The Atoti Server 6.1.11 Maven repository files can be downloaded from here.

Dependencies

Component Version
Adjustments Services API 4.1.0
Atoti Market Data 1.3.3
Atoti Server 6.1.11
Atoti UI 5.2.x
Bookmark Tool 3.4.0-AS6.1
Common Library 2.1.8-AS6.1
Data Connectors Integrated in Atoti 6.1.11
Datastore Helper 3.4.0-AS6.1
Java JDK21
Sign-Off API 4.2.0
UI Components 5.2.9
What-If 4.0.4-AS6.1

Summary

Improvements

Improvements

Migrated to DirectQuery Local Cache

Atoti Market Risk 6.0.0 included the preview for a DirectQuery cache that balanced fast Get-By-Key query performance with controllable memory consumption. This cache was integrated into Atoti Server 6.1.9 as a robust, fully supported feature. In Atoti Market Risk the preview cache has been removed and replaced with the Atoti Server version.

This cache is still enabled by setting the property mr.enable.preview.directquery-cache=true. With this setting enabled, all market data stores (specifically CubeMarketData, CurveMarketData, FxRateMarketData, SpotMarketData, SurfaceMarketData, and MarketShifts) are now cached when using DirectQuery. In previous versions, the MarketShifts store wasn’t cached.

Fixed cube-level adjustment issues

Previously, cube-level adjustments made to the Instrument Type level were visible in Atoti Sign-Off but weren’t correctly reflected in Atoti Market Risk. Now, the adjustments are accurately displayed in both places. Additionally, adjusted values were incorrectly associated with the default LIVE version instead of the correct OLD version. This has also been corrected.

Improved stability and performance of distributed what-if simulations

The what-if simulation process has been updated to be significantly faster and more stable. The system now uses a single-phase commit mechanism, replacing the previous multi-phase commit process.

This change simplifies the simulation operation, which results in notable improvements in performance and cluster stability at the expense of some consistency checks.

6.0.3

2025-07-01

Follow this link to download the zipped distribution files for:

  • UI source code
  • UI build
  • Source files to build the module
  • Sample bookmarks
  • Maven repository required to build the project and run the tests. The Atoti Server 6.1.9 Maven repository files can be downloaded from here.

Dependencies

Component Version
Adjustments Services API 4.1.0
Atoti Market Data 1.3.2
Atoti Server 6.1.9
Atoti UI 5.2.x
Bookmark Tool 3.4.0-AS6.1
Common Library 2.1.8-AS6.1
Data Connectors 5.0.7
Datastore Helper 3.4.0-AS6.1
Java JDK21
Sign-Off API 4.2.0
UI Components 5.2.9
What-If 4.0.2-AS6.1

Summary

New features

Improvements

New features

Databricks handle row-based vector schema

Databricks supports native vector aggregation, however, there are cases where you may prefer to use row-based vectors. Notably, native vector aggregation is only available when using “All-purpose compute” clusters and is not available to SQL Warehouses.

Atoti Market Risk includes four tables that use vectors, TradePnLs, TradeSensitivities (for ladders), SensiLadders, and MarketShifts. This release allows you to use row-based vectors for any or all of these tables. Additionally, in mr-directquery/src/test/resources/databases/databricks/row-based-vectors we provide SQL scripts to create an Atoti Market Risk schema with row-based-vectors for the stores mentioned above.

The Atoti Market Risk DirectQuery schema is created using the Migrator component. This takes the in-memory MR schema and converts it to a DirectQuery compatible schema. By default, when running with Databricks, the schema will be created with native vector fields. You can choose to use row-based vector fields by modifying the Migrator bean as follows:

@Bean
public Migrator myMigrator() {
    var schemaHelper = new DatastoreSchemaHelper(activePivotManagerDescription, datastoreSchemaDescription);
    Migrator migrator = new Migrator(datastoreSchemaDescription, activePivotManagerDescription, nameMapper, schemaHelper, toolbox, directQuerySpringProperties);

    migrator.onlyIncludeStoresInStarSchema(true);
    migrator.vectorsTableBehaviour(TRADE_PNL_STORE_NAME, VectorTableMigration.ROW);
    migrator.vectorsTableBehaviour(TRADE_SENSITIVITIES_STORE_NAME, VectorTableMigration.ROW);
    migrator.vectorsTableBehaviour(MARKET_SHIFT_STORE_NAME, VectorTableMigration.ROW);
    migrator.vectorsTableBehaviour(SENSI_LADDER_STORE, VectorTableMigration.ROW);

    return migrator;
}

Improvements

Update to Atoti 6.1.9

This release includes an update to Atoti Server 6.1.9.

note

Atoti Server 6.1.9 contains a full, production-ready version of the DirectQuery cache that was included in Atoti Market Risk 6.0.0. However, Atoti Market Risk 6.0.3 has not been updated to work with the Atoti Server version. Atoti Market Risk will be migrated to use this new cache in a future release.

Data Connectors Update

This release includes an update to Data Connectors 5.0.7 which provides a number of bug fixes.

You may see some new WARN logs as a result of this update.

This update also highlighted some missing topic imports for the Sensitivity Summary cube which are fixed in this release. This also required some changes to the imports of the main Sensitivity Cube configuration.

Extensible tail measure types

The ITailMeasureCalc.CalcType and IWeightedTailMeasureCalc.CalcType enums are used to differentiate between tail measures like VaR and Expected Shortfall, which are mostly similar but require somewhat distinct processing logic. This logic is mostly contained in classes implementing the ITailMeasureCalc and IWeightedTailMeasureCalc interfaces.

Enums are not easily extensible, meaning it is difficult to add custom tail measure types. In this release, we have deprecated these enums and instead introduced a TailMeasureCalcType class. This class operates like an enum with default static values, such as TailMeasureCalcType.VAR. But you can provide custom types with: TailMeasureCalcType.getByDescription("NewType"), so you can now define new types of tail measures.

If you want to use custom types, you will also need to provide logic for these types by creating your own implementation of ITailMeasureCalc and/or IWeightedTailMeasureCalc.

The methods that used these enums, primarily on the ITailMeasureCalc and IWeightedTailMeasureCalc interfaces and their implementations, have also been deprecated. New methods have been added that use TailMeasureCalcType instead. These deprecated methods will be removed in a future release.

Duplicate DirectQuery join bug resolved

When starting in DirectQuery mode, if your schema contained any joins to a table with vectors this join would be duplicated in the DirectQuery schema. This would cause a startup failure due to an invalid schema. This issue has been resolved in this release.

New property to enable MRCombined Cube

The word common in the property and annotation mr.enable.cubes.common and @ConditionalOnCommonCubeEnabled which enables the combined cube may cause confusion regarding intended functionality. The introduction of the property mr.enable.cubes.combined and the annotation @ConditionalOnCombinedCubeEnabled renames and in a future release will replace the now deprecated property and annotation mr.enable.cubes.common and @ConditionalOnCommonCubeEnabled.

springdoc-openapi version fix

The version of springdoc-openapi that is used in Atoti Market Risk version 6.0.2 was incorrect: version 2.5.x was used, which is incompatible with the version of Spring Boot used, which is 3.4.x. See: https://springdoc.org/faq.html#_what_is_the_compatibility_matrix_of_springdoc_openapi_with_spring_boot springdoc-openapi version 2.8.9 is used in Atoti Market Risk version 6.0.3.

clear-filter parameter is taken in account for Drill-up comparative measures

The parameters clear-filter located on mr.metrics.booking, mr.metrics.trades, mr.metrics.custom-metrics.* path is now taken in account for the post-processor=ParentValue setup.

For instance here is the behaviour change:

Result without filtering
Levels VaR LEstimated
Total -10518762.87 -10518762.87
Equities -10930109.59 -10484558.87
FICC -3721950.54 -191748.48
Global Hedging -564782.43 157544.48
LEstimated value with Equities filtered out
Levels VaR clear-filter=true clear-filter=false
Total -3456776.25 -34204.00 -3456776.25
FICC -3721950.54 -191748.48 -3338879.68
Global Hedging -564782.43 157544.48 -117896.56

Taylor VaR post-processors now take into account additional levels

The IMarketDataRetrievalService.updateLeafCoordinatesFunction method is now properly taken into account in post-processors used to compute Taylor VaR metrics.

6.0.2

2025-05-21

Follow this link to download the distribution files for:

  • UI source code.
  • UI build that does not require an installation and can be directly deployed.
  • Source files that can be used to build the module.
  • Maven repository required to build the project and run the tests.

    note

    The Atoti Server 6.1.8 Maven repository files have been removed from this zip, so you’ll need to download them separately. Click here to locate them.

  • Offline documentation that can be served by the module.

Dependencies

Component Version
Adjustments Services API 4.1.0
Atoti Market Data 1.3.1
Atoti Server 6.1.8
Atoti UI 5.2.x
Bookmark Tool 3.4.0-AS6.1
Common Library 2.1.5-AS6.1
Data Connectors 5.0.3
Datastore Helper 3.4.0-AS6.1
Java JDK21
Sign-Off API 4.2.0
UI Components 5.2.8
What-If 4.0.2-AS6.1

Summary

New features

Improvements

New features

Properties to enable data overlap

You can now enable data overlap within a horizontally distributed setup using the newly added Cube properties.

Improvements

Atoti Market Risk upgrade

Atoti Market Risk has been upgraded to Atoti Server 6.1.8.

6.0.1

2025-04-17

Follow this link to download the distribution files for:

  • UI source code.
  • UI build that does not require an installation and can be directly deployed.
  • Source files that can be used to build the module.
  • Maven repository required to build the project and run the tests.

    note

    The Atoti Server 6.1.6 Maven repository files have been removed from this zip, so you’ll need to download them separately. Click here to locate them.

  • Offline documentation that can be served by the module.

Dependencies

Component Version
Adjustments Services API 4.1.0
Atoti Market Data 1.3.1
Atoti Server 6.1.6
Atoti UI 5.2.x
Bookmark Tool 3.4.0-AS6.1
Common Library 2.1.4-AS6.1
Data Connectors 5.0.3
Datastore Helper 3.4.0-AS6.1
Java JDK21
Sign-Off API 4.2.0
UI Components 5.2.7
What-If 4.0.2-AS6.1

Summary

Improvements

Improvements

Theta PnL Explain fix

The Theta Pnl Explain formula has been fixed to correctly compute the losses due to time decay.

Configurable FX conversion default rate

FX conversion post-processors can now be configured to use a default FX rate if the actual rate cannot be computed for the FX pair.

GenericLambdaCalculator

The GenericLambdaCalculator class has been added to provide a source type independent way of creating column calculators. We recommend using this instead of the LambdaCalculator class to create simple column calculators.

Option to disable partitioning on AsOfDate

The property mr.partitioning.as-of-date.partition-type can now be set to none to disable partitioning on AsOfDate.

6.0.0

2025-03-31

Follow this link to download the distribution files for:

  • UI source code.
  • UI build that does not require an installation and can be directly deployed.
  • Source files that can be used to build the module.
  • Maven repository required to build the project and run the tests.

    note

    The Atoti Server 6.1.5 Maven repository files have been removed from this zip, so you’ll need to download them separately. Click here to locate them.

  • Offline documentation that can be served by the module.

Dependencies

Component Version
Adjustments Services API 4.1.0
Atoti Market Data 1.3.1
Atoti Server 6.1.5
Atoti UI 5.2.x
Bookmark Tool 3.4.0-AS6.1
Common Library 2.1.4-AS6.1
Data Connectors 5.0.1
Datastore Helper 3.4.0-AS6.1
Java JDK21
Sign-Off API 4.2.0
UI Components 5.2.4
What-If 4.0.2-AS6.1

Summary

New features

Improvements

New features

Atoti Market Data

The Market Data API, introduced in Atoti Market Risk 5.3, is now an external dependency called Atoti Market Data, using version 1.3.1 . For details, see the dedicated Atoti Market Data documentation.

Configurable parent-child depth

You can now configure the maximum depth of parent-child hierarchies. This means you can set the depths that suits your needs perfectly.

New DirectQuery Cache

This release includes a new DirectQuery caching mechanism that pulls slices of market data into memory when required to improve the performance of market data retrievals. This is a preview feature, disabled by default. See 6.0 Migration Notes for details.

Handling multi-leg trades

The attribute LegId has been added to the PLCube to enable sending in trades that will have multiple legs under a single TradeId. Only available when the property mr.pnl.enable.leg-id is set to true. LegId should be added to the end of PLActuals and PLPCActuals.csv, and to .json summary export files. Please update database scripts accordingly to use with DirectQuery.

Base store and aggregate provider partitioning by AsOfDate

Added the new String property mr.partitioning.as-of-date.partition-type to configure the type of partitioning used for the field AsOfDate and the Integer property mr.partitioning.as-of-date.number-of-partitions to configure the number of partitions for the field AsOfDate when modulo partitioning is used. AsOfDate uses value partitioning by default.

Updated TradeAttributes store

The TradeAttributes store now includes the fields TradeSource,TradeStatus, and OriginalNotional. The hierarchies TradeSources and TradeStatuses have been added to summary cubes. The measures Original Notional and Original Notional Native have been added to the VaR-ES cube.

Improvements

Dependency upgrades

  • Atoti Server: Atoti Market Risk has been upgraded to Atoti Server 6.1.5. This version requires Java 21.
  • JDK: Upgraded from JDK 17 to JDK 21 to utilize the latest features.
  • Data Connectors: This version of Atoti Market Risk uses Atoti Data Connectors 5.0.0, which has a completely reworked API. For details, see Data Connectors upgrade.
  • What-if: Upgraded to What-if 4.0.2-AS6.1.

What-if improvements

  • Migrated What-if persistence to Hibernate: The What-if persistence layer has been migrated from branch-based persistence to a Hibernate database implementation.
  • Added What-if configuration beans: Added supplier beans for cluster addresses and the user authenticator used by the REST distributed database service for What-if.

Updated dashboards

A number of dashboards have been updated due to market data measure and context value changes. In addition, dashboards have been migrated to use Atoti UI’s Investigation feature instead of the story-telling feature, which has been decommissioned. For more information on the Investigation feature, see Investigations.

Market data set changes

Market data sets have significantly changed in this release. Most notably MarketDataSet is now a field on all base stores ensuring each fact is specifically associated to a set.

  • Deprecated vector sensitivities data model code removed: The code specific to vector sensitivities data model and subsequent code have been removed.
  • Deprecated market data and FX services removed: Several deprecated services made obsolete by the move to Atoti Market Data have been removed.
  • General measure chain changes: FX conversions are now done through Atoti Market Data APIs, leading to several measure chain changes.
  • Market data chain changes: Market data chain has been changed: it is now required to add the sensitivity name and risk class levels in the views to display market data.
  • Market data file format configuration clean-up: Market data file formats now default to the Atoti Market Data 1.1.0 market data files, no longer requiring explicit file naming patterns to be declared. Backwards compatibility has been maintained by matching the configured file naming pattern to the deprecated file formats.
  • Removed risk factor FX pair fallback logic: Removed logic that would default to using the risk factor as a base currency and the display currency as a counter currency when the risk factor did not contain a currency pair in the XXX/YYY format.
  • Removed Cash sensitivities: Cash sensitivities were dependent on risk factor FX pair fallback logic and have therefore been removed.
  • Removal of RoundingMethods and Quantiles stores: These stores are no longer needed.

Simplified PnL Actuals tables

The following attributes have been removed from the stores PnL and PnLBaseStore and the cubes PLCube and PL Summary cube, because for actual PnL, there is no breakdown of the PnLs at these factor levels:

  • RiskFactor
  • RiskFactorType
  • RiskFactorCcy
  • CurveType
  • RiskClass
  • Qualifier

Liquidity Horizon

The Liquidity Horizon parameter is now taken into account when computing VaR/Es metrics. To achieve this, the parameter has moved to the Scenario table. See VaRTimePeriod context value for the behavior of the field.

Cube-level adjustments

The implementation of cube-level adjustments has been changed: now only add-ons are supported for cube-level adjustments, and the add-ons are aggregated. *_Adjusted measures have been removed.

Fixed creation of VaR risk class measures

Risk class measures are now correctly created when the mr.risk.risk-class-members property is used.

Measure folders

Measures related to a fixed confidence level have been moved back into the folders related to fixed confidence levels. Starting from version 5.0, some of those measures were defined in the wrong folders.

Data node market data

During the initial data load (within the InitialDataLoadConfig class), market data is now loaded for all available dates, without taking the DLC scope into account.

Custom exception handling in the UI

The Atoti Market Risk UI now parses custom exception responses in a consistent manner. For more information, see Adding Custom UI Exceptions.

Admin UI Measure dependencies

The functionality previously provided by DoctorPivot is now easily accessible through the Atoti Admin UI in the Measure dependencies tab. The standalone DoctorPivot app no longer exists.

Replaced APM starter dependency

Replaced the dependency apm with atoti-server-apm-starter in market-risk/pom.xml and added the dependency atoti-server-apm-starter to mr-application/pom.xml.