Migration notes 6.0
This page explains the changes required to migrate to the stated version of Atoti Market Risk.
Migrate to 6.0.0-M2
Upgrading from version 5.4.0, see Atoti Market Risk 6.0-M2 Release Notes.
Atoti Market Risk uses Atoti Server 6.1.2 and Atoti UI 5.2.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.
Headline announcement
- Atoti Server upgrade: Atoti Market Risk has been upgraded to Atoti Server 6.1.2. This version requires Java 21.
- Upgraded to JDK 21: Upgraded from JDK 17 to JDK 21 to utilize the latest features.
- Deprecated vector sensitivities data model code removed: Code specific to the vectorized sensitivities data model, which was deprecated in Atoti Market Risk 5.4, has been removed.
- Move to 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.2.0 . For details, see the dedicated Atoti Market Data documentation.
- Removal of solutions dependency management: Solution dependencies are now explicitly versioned, without a dependency management import of the Solutions Tools BOM.
- Upgraded dependencies: All the Solution’s dependencies have been upgraded to their latest releases. See Dependency versions for the exact version numbers and links to their respective documentation pages.
- Deprecated market data and FX services removed: Several deprecated services made obsolete by the move to Atoti Market Data have been removed.
- Measure chain changes related to Atoti Market Data: FX conversions and market data retrieval are now done through Atoti Market Data APIs, leading to several measure chain changes.
- 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.
- Liquidity Horizon: The Liquidity Horizon parameter is now taken into account when computing VaR/Es metrics. To achieve this, the parameter has been moved to the Scenario table.
- Removed fields from PnL Actual tables: Fields related to risk factors have been removed from the stores PnL and PnLBaseStore and the cubes PLCube and PL Summary cube.
- Market data file format configuration clean-up: Market data file formats now match Atoti Market Data tables, 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. For details, see Market data API data loading.
- Updated dashboards: A number of dashboards have been updated due to market data measure and context value changes. For details, see Updated dashboards.
- Configurable parent-child depth: You can now configure the maximum depth of parent-child hierarchies.
- Removal of RoundingMethods and Quantiles stores: These stores are no longer needed.
- Added optional LegId attribute: 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. - Data Connectors 5.0: 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.
Breaking Changes
- Atoti Market Data dependencies: The way Atoti Market Risk specifies the Atoti Market Data dependency has changed. Please see the full details below.
- Measure chain changes related to Atoti Market Data: FX conversions and market data retrieval are now done through Atoti Market Data APIs, leading to several measure chain changes.
- Rebuild schedule change: Previously the Atoti schemas would be rebuilt every 30 minutes. This has now changed to once a day, and we have added properties to configure this for your requirements.
- 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.
- Adjustment Config classes moved: SupportedAdjustment and AdjustmentExecution config classes have moved from
mr-pnl/sensi/var-config
modules to mr-application to make it easier to disable specific adjustments. - 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. For details, see Cube-level adjustments.
- Data Connectors 5.0: 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.
- Removal of obsolete DispatcherServlet configuration classes: Removed a configuration class and two utility classes setting up a
DispatcherServletRegistrationBean
as a workaround to Spring Boot incompatibilities in previous versions of Atoti Server. For details, see DispatcherServlet configuration removal. - Market data set changes: MarketDataSet is now a field on all base stores ensuring each fact is specifically associated to a set.
- Liquidity Horizon: The parameter has moved to the Scenario table. See VaRTimePeriod context value for the behavior of the field.
- Removed fields from PnL Actual tables: The attributes RiskFactor, RiskFactorType,RiskFactorCcy, CurveType, RiskClass and Qualifier have been removed from the stores PnL and PnLBaseStore and the cubes PLCube and PL Summary cube.
Atoti Server upgrade
For details on migrating your code to Atoti Server 6.1.2, see the Atoti Server migration notes.
Java 21
Update your Java version to Java 21 or later in order to run Atoti Market Risk.
Atoti Spring Boot Starter changes
Atoti Server now ships with a suite of Spring Boot Starters. These dependencies auto-configure default imports required by Atoti Server, that you may override at runtime.
The following core classes have been removed, as they are now inherited from starters:
ActiveViamPropertyFromSpringConfig.class
ActivePivotServicesConfig.class
PartitionManagerConfig.class
ApplicationJwtConfig.class
SameSiteConfig.class
ActiveViamRestServicesConfig.class
ActiveViamWebSocketServicesConfig.class
ContentServerWebSocketServicesConfig.class
ApplicationMonitoringConfig.class
MonitoringRestServicesConfig.class
MonitorConfig.class
JwtRestServiceConfig.class
VersionServicesConfig.class
StreamingMonitorConfig.class
ActivePivotXmlaServletConfig.class
- All beans with return type
JMXEnabler
Security configuration changes
The upgrade to Atoti Server 6.1.2 includes changes to the security configuration. We expect you to implement your own security, but we provide a sample configuration in the com.activeviam.mr.application.config.security
package.
warning
This is not a production grade sample.
For details on how to implement your own security, please see the Atoti Server documentation.
DispatcherServlet configuration removal
Older versions of Atoti Server contained incompatibilities with Spring Boot. As a workaround, Atoti Market Risk provided the DispatcherServletConfig
configuration class, exposing a DispatcherServletRegistrationBean
registering the DispatcherServlet
to the Atoti Server
Spring context, and two ServletContextInitializer
beans, registering SQL driver cleaners and a Java Logging to SLF4J logging bridge.
These workarounds are no longer needed and clash with tests using multiple SQL connections, such as what-if testing with a local content service.
The following classes have been deleted:
Class | Details |
---|---|
DispatcherServletConfig |
Configuration class containing Spring beans for incompatibility workarounds. |
SqlDriverCleaner |
An implementation of a ServletContextListener that deregisters SQL drivers when the context is shutting down. |
SqlUtil |
Helper class with a single method registering SQL cleaners to a ServletContext . |
Data Connectors upgrade
Atoti Data Connectors 5.0 has a new API that avoids technical beans and instead, makes extensive use of properties.
Certain Spring Configuration and classes are no longer useful and have been removed:
In addition:
- The Spring properties
mr.data-load.csv
have been removed, and the default Data Connector properties are now used instead. - The source definition is described in the
application.yaml
configuration file. For convenience, the content specific to Data Connectors is set in theapplication-dlc.yaml
file. - The topics used by Atoti Market Risk are defined via Java beans of type
ISourceTopicDescription
. They are still using thefile-patterns
properties, defined in theapplication.yaml
configuration file.
Migration to 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.2.0 .
The market data artifacts (market-data-lib
, market-data-config
, and market-data-spring-boot-starter
) are versioned independently, and the source code is no longer provided alongside the Atoti Market Risk source code.
For more information, see the Atoti Market Data Documentation.
As part of this migration, several changes have been made:
Type | Change | Description |
---|---|---|
Sample data change | Additional rows in the cube market data files. | Added values for 45c and 45p moneyness in the cube market data files to account for the removal of cube interpolation in Atoti Market Data. |
Simplified configuration | Removed configuration in the MaturityConverterConfig class. |
All MapperFactory beans have now been removed, with Atoti Market Data having a simpler API for defining tenor and moneyness conversion. |
Simplified post-processors | Usage of Atoti Market Data API for FX | The FxSpotMarketDataPostProcessor is now an extension of FxRateMarketDataPostProcessor using an IRiskFactorFXPairTranslator to build the coordinates for retrieval, instead of a completely standalone implementation. |
Simplified post-processors | New measure builder. | Added FxSpotMarketDataMeasureBuilder for an FX rate measure that parses the Risk Factor field for a currency pair. |
Simplified post-processors | Usage of Atoti Market Data API for FX | The CubeLevelAdjustmentPostProcessor implements IMarketDataRetrievalContainerServiceAware<IDefaultMarketDataRetriever> instead of IFXRatesAware . |
Additional post-processors | New post-processors and measure builders. | Added FxConverterMarketDataPostProcessor and FxVectorConverterMarketDataPostProcessor , which multiply the Number or IVector underliers (respectively) by the internally retrieved FX rate. These post-processors can be initialized using the new FxConverterMarketDataMeasureBuilder and FxVectorConverterMarketDataMeasureBuilder classes. |
New currency retriever | Added a querier for the FxRateMarketData store. | Added an AvailableCurrenciesQuerier , which runs a query on the FxRateMarketDataStore (if it exists) to retrieve the available currencies. This is now used in the FxHierarchyFromMarketDataStore and HierarchyWithFxRiskFactors classes to determine available currencies, instead of an IFxRates service. |
Removal of deprecated market data and FX services
Removed | Description | Replacement |
---|---|---|
InterpolationConfiguration logic |
Removed logic for determining whether market data should use interpolation and the pre- and post- interpolation functions to use. | Atoti Market Data APIs and the CopperMarketDataMeasure configuration mechanism. |
InterpolationFunctionTypeConverter |
Removed a configuration properties converter. | None, interpolation is no longer configured through the old API, so no conversion is required for InterpolationFunction objects. |
*NoInterpolation* and *WithPreAndPostInter* rules |
Removed rules from the sensitivity rule configuration service. | None, interpolation configuration is done through Atoti Market Data APIs. |
IFxRates service and configuration |
Removed the configuration for the Atoti Market Risk IFxRates service. |
FX conversion now uses Atoti Market Data APIs. |
AFxRate , FXRates , FXRateWrapper and TestFxRates |
Removed implementations used by the IFxRates services. |
FX conversion now uses Atoti Market Data APIs. |
MarketDataRetrievalService , AMarketDataPostProcessor , ScalarMarketDataPostProcessor |
Removed market data services and post-processors with Atoti Market Data replacements. | Market data retrieval should use Atoti Market Data APIs as much as possible. |
Configurable parent child depth
You can now configure the maximum depth of the parent-child hierarchies (books, legal entities, counterparties) with new properties.
To achieve this, the stores BookHierarchy, CounterpartyHierarchy, LegalEntityHierarchy now also have a variable number of fields to store the corresponding level entries. In addition, the summary flat stores (PnLBaseStore, SensiBaseStore, BaseStore) have a variable number of fields to be in line with the variable depth.
Removal of risk factor FX pair fallback logic
Previous versions of Atoti Market Risk would parse the risk factor for a currency pair when computing FX-related PnL Explain and when retrieving the FX rate to use for PnL vectors in the VaR cube.
If the risk factor could not be parsed as an XXX/YYY
-formatted currency pair, the logic would attempt to use the risk factor as a base currency and the display currency as a counter currency for the FX rate.
This fallback logic has now been removed, with VaR Cube PnL conversion using the default FX rate retrieval (which uses the fact currency and the display currency). PnL Explain logic will fail to retrieve an FX rate if the risk factor is not in the correct format.
Measure chain changes
PnL
A new MeasureCreator
method has been added for FX conversion: IPnLMeasures#convert(MarketDataDateShift shift, NameRetriever<PnLMeasureNames> nameRetriever)
. For this method, a market data set level identifier has been added to the PnLMeasureParameters
configuration object.
Sensitivities
API changes
The CopperMarketDateMeasure
typo has been fixed, with the class now named CopperMarketDataMeasure
.
New FX-related MeasureCreator
methods have been added to the factory interfaces:
Factory | Method | Description |
---|---|---|
IBaseMeasures |
rate(MarketDataDateShift dateShift, NameRetriever<SensiMeasureNames> nameRetriever) |
Creates an FX rate measure on the given date shift, with the given name. |
IBaseMeasures |
convert(MarketDataDateShift dateShift, NameRetriever<SensiMeasureNames> nameRetriever) |
Converts an underlying scalar measure, on the given date shift, with the given name. |
IBaseMeasures |
convertVector(MarketDataDateShift dateShift, NameRetriever<SensiMeasureNames> nameRetriever) |
Converts an underlying vector measure, on the given date shift, with the given name. |
The replaced methods have been removed:
Factory | Method | Description |
---|---|---|
ILadderExpansionMeasures |
ladderExpand() |
FX conversion for the scalar ladder measures. |
ILadderExpansionMeasures |
ladderExpandTechnical() |
FX conversion for the vector ladder measures. |
ITaylorVaRMeasures |
pnlVectorForTaylorVar() |
FX conversion for the vector Taylor VaR measures. |
ISensitivityMeasures |
rate() |
Sensitivity cube FX rate. |
ISensitivityMeasures |
sensitivity() |
FX conversion for scalar sensitivities. |
Additionally, the ATaylorFactory
factories now implement IBaseMeasures
, gaining access to the added FX MeasureCreator
methods.
VaR
FX conversion
New FX-related MeasureCreator
methods have been added to the factory interface:
Factory | Method | Description |
---|---|---|
IVaRESMeasures |
convertWithNotionalCurrency(MarketDataDateShift dateShift, NameRetriever<VarMetricParametersAndNames> nameRetriever) |
Converts an underlying scalar measure, on the given date shift, with the given name. Uses the notional currency as the base currency. |
IVaRESMeasures |
convertVarVector(MarketDataDateShift dateShift, NameRetriever<VarMetricParametersAndNames> nameRetriever) |
Converts an underlying vector measure, on the given date shift, with the given name. |
The replaced methods have been removed:
Factory | Method | Description |
---|---|---|
IVaRESMeasures |
mtm() |
FX conversion for the MtM measure. |
IVaRESMeasures |
notional() |
FX conversion for Notional measure. |
IVaRESMeasures |
varFxVector() |
FX conversion for the vector FX-shifted measures. |
Updated dashboards
- The following dashboards have been updated with the levels
[Sensitivities].[Sensitivity].[SensitivityName]
and[Risk].[Risk Classes].[RiskClass]
added to their MDX queries so that market data can be displayed.Atoti MR & PL/Story-Telling Target Views/Delta and Gamma P&L Explain
Atoti MR & PL/Story-Telling Target Views/Vega P&L Explain
MR/03 - PnL Explain/02 - Example for one trade
MR/03 - PnL Explain/03 - Vega Market data
- The following dashboards have been updated to remove any usage of Cash-related measures:
Atoti MR & PL/How It Works/Computing Greek-Based PL
Atoti MR & PL/How It Works/How Taylor VaR is computed
Atoti MR & PL/How It Works/Taylor VaR using previous MD
Atoti MR & PL/Story-Telling Target Views/Backtesting Risk Factor View
Atoti MR & PL/Story-Telling Target Views/Investigate Tail for Taylor
Atoti MR & PL/Story-Telling Target Views/Taylor VaR Risk Factor View
MR/03 - PnL Explain/01 - PnL explain break-down
MR/01 - VaR-ES/03 - VaR Explain Dashboard
has been fixed: a context value that was removed in a previous version was incorrectly used in the dashboard.
MarketDataSets
Each market data value in Atoti Market Risk is associated with a market data set. This set is used within calculations to ensure the appropriate market data value is retrieved. Prior to this release MarketDataSets was a slicing analysis hierarchy populated from an external store.
With this release MarketDataSet is now a field on each of the base stores. This reflects that each fact is associated to a given market data set and this should be used consistently within calculations. As you can see below, the store definitions and input file formats have been updated to accommodate this change. The MarketDataSets hierarchy is now based on these fields, and the external MarketDataStore has been removed.
By default, MarketDataSets remains a slicing hierarchy. However, we now offer a property (mr.cubes.levels.slicing-market-data-set
) to toggle this to a non-slicing hierarchy.
note
Setting MarketDataSets to non-slicing can have a significant impact on calculations. Please ensure this is appropriate for your use-case.
Input file formats
Modified
Modification | File | Field | Optional | Description |
---|---|---|---|---|
Added field | PLPCActuals.csv | MarketDataSet | No | The market data set that should be used when retrieving rates for FX conversion. |
Added field | PLCube.csv | MarketDataSet | No | The market data set that should be used when retrieving rates for FX conversion. |
Added field | Summary PL.csv | MarketDataSet | No | The market data set that should be used when retrieving rates for FX conversion. |
Added field | Sensitivities.csv | MarketDataSet | No | The market data set that was used when the sensitivity was calculated. This will be used to retrieve appropriate market data values for PnL Explain and Taylor VaR computations. |
Added field | CrossSensitivities.csv | MarketDataSet | No | The market data set that was used when the sensitivity was calculated. This will be used to retrieve appropriate market data values for PnL Explain and Taylor VaR computations. |
Added field | Sensitivity Cube.csv | MarketDataSet | No | The market data set that was used when the sensitivity was calculated. This will be used to retrieve appropriate market data values for PnL Explain and Taylor VaR computations. |
Added field | Summary Sensitivity.csv | MarketDataSet | No | The market data set that was used when the sensitivity was calculated. This will be used to retrieve appropriate market data values for PnL Explain and Taylor VaR computations. |
Added field | TradePnLs.csv | MarketDataSet | No | The market data set that should be used when retrieving rates for FX conversion. |
Added field | VaR-ES Cube.csv | MarketDataSet | No | The market data set that should be used when retrieving rates for FX conversion. |
Added field | Summary VaR.csv | MarketDataSet | No | The market data set that should be used when retrieving rates for FX conversion. |
Added field | PLActuals.csv | LegId | Yes | Leg Ids under a single Trade Id to enable sending in trades with multiple legs. Only available when the property mr.pnl.enable.leg-id is set to true. |
Added field | PLPCActuals.csv | LegId | Yes | Leg Ids under a single Trade Id to enable sending in trades with multiple legs. Only available when the property mr.pnl.enable.leg-id is set to true. |
Added field | TradeAttributes.csv | TradeSource | No | Identifier of the source system the trade was executed in. |
Added field | TradeAttributes.csv | TradeStatus | No | Status representing the step in the trade lifecycle. |
Added field | TradeAttributes.csv | OriginalNotional | No | Represents the notional at trade date. |
Added field | VaR-ES Cube.csv | TradeSource | No | Identifier of the source system the trade was executed in. |
Added field | VaR-ES Cube.csv | TradeStatus | No | Status representing the step in the trade lifecycle. |
Added field | Sensitivity Cube.csv | TradeSource | No | Identifier of the source system the trade was executed in. |
Added field | Sensitivity Cube.csv | TradeStatus | No | Status representing the step in the trade lifecycle. |
Added field | PLCube.csv | TradeSource | No | Identifier of the source system the trade was executed in. |
Added field | PLCube.csv | TradeStatus | No | Status representing the step in the trade lifecycle. |
Changed field name | TradeAttributes.csv | MaturityDate -> TradeMaturityDate | No | Maturity date of the trade. |
Changed field name | DynamicMaturities.csv | MaturityLabels -> MaturityLabel | No | Name for the bucketed group. |
Changed field name | DynamicMoneyness.csv | MoneynessLabels -> MoneynessLabel | No | Name for the bucketed group. |
Changed field name | DynamicTenors.csv | TenorLabels -> TenorLabel | No | Name for the bucketed group. |
Added field | Scenarios.csv | Liquidity Horizon | Yes | The liquidity horizon corresponding to the depicted scenario. It has been moved from the main VaR-ES store. |
Removed field | SummaryVaR.csv | Liquidity Horizon | Yes | The liquidity horizon has moved to the Scenarios file. |
Removed field | TradePnL.csv | Liquidity Horizon | Yes | The liquidity horizon has moved to the Scenarios file. |
Removed field | VaR-ESCube.csv | Liquidity Horizon | Yes | The liquidity horizon has moved to the Scenarios file. |
Removed field | cubeAdjustments.csv | Digest | The location digest is no longer used for cube-level adjustments. | |
Changed meaning of field | cubeAdjustments.csv | Id | No | The value of this field is now equal to the value of the adjustment source field in the base store, and not to the adjustment execution ID, like before. |
Removed field | PLActuals.csv | RiskFactor | No | This field is no longer required. |
Removed field | PLActuals.csv | RiskClass | No | This field is no longer required. |
Removed field | PLCube.csv | RiskFactor | No | This field is no longer required. |
Removed field | PLCube.csv | RiskFactorType | No | This field is no longer required. |
Removed field | PLCube.csv | RiskFactorCcy | No | This field is no longer required. |
Removed field | PLCube.csv | CurveType | No | This field is no longer required. |
Removed field | PLCube.csv | Qualifier | No | This field is no longer required. |
Removed field | PLCube.csv | RiskClass | No | This field is no longer required. |
Removed field | PLPCActuals.csv | RiskFactorId | No | This field is no longer required. |
Removed field | PLPCActuals.csv | RiskClass | No | This field is no longer required. |
Removed field | Summary PL.csv | RiskFactor | No | This field is no longer required. |
Removed field | Summary PL.csv | RiskClass | No | This field is no longer required. |
Removed
File | Details |
---|---|
CorporateAction.csv | Deprecated file removed. |
RoundingMethods.csv | File is no longer needed. |
Quantiles.csv | File is no longer needed. |
StaticMaturities.csv | The Maturities store has been removed as part of the removal of vectorized sensitivities. This input file format is therefore no longer required. |
StaticMoneyness.csv | The Moneyness store has been removed as part of the removal of vectorized sensitivities. This input file format is therefore no longer required. |
StaticTenors.csv | The Tenors store has been removed as part of the removal of vectorized sensitivities. This input file format is therefore no longer required. |
MarketDataSet.csv | MarketDataSet is now a field on all base stores. |
Configuration
Configuration properties
Properties added
Property | Default value | Description |
---|---|---|
mr.application.rebuild.initial-delay |
1440 | The delay (in minutes) between the application start up and the first rebuild of the Atoti schemas. |
mr.application.rebuild.interval |
1440 | After the first rebuild of the Atoti schemas (determined by the initial-delay), this is the interval (in minutes) between ensuing rebuilds. |
Property | Default value | Description |
---|---|---|
mr.parent-child.book-depth |
15 | Maximum level of BookHierarchy . |
mr.parent-child.legal-entity-depth |
10 | Maximum level of LegalEntityHierarchy . |
mr.parent-child.counterparty-depth |
5 | Maximum level of CounterpartyHierarchy . |
mr.cubes.levels.slicing-market-data-set |
true | This toggles whether the market data set hierarchy is slicing or not. Please note this is likely to significantly impact calculations. |
mr.cubes.levels.liquidity-horizon-level |
Liquidity Horizon@Liquidity Horizons@Risk | The level that contains the liquidity horizon related to the current scenario. |
Property | Default value | Description |
---|---|---|
mr.pnl.enable.leg-id |
false | When true, this adds the hierarchy Legs with the level LegId to the Booking dimension. LegId is an optional field, which can be added to the PLActuals.csv and PLPCActuals.csv input files. |
Properties modified
Property Name | Comment | New Value | Old Value |
---|---|---|---|
mr.sign-off.common.hierarchy.level2.approved |
This is for compatibility with Sign-off 5.3, ensuring the official sign-off feed status is updated after export. | EXPORT_SUCCEEDED | APPROVED |
mr.common.file-patterns.spot-market-data |
Added a default value to this pattern, matching the value previously defined in application.yaml . Setting the pattern to regex:^(?=.*MarketData)(?:(?!Sets).)+.csv$ enables backwards-compatible data loading. |
glob:**Spot_Market_Data*.csv |
None. |
mr.common.file-patterns.curve-market-data |
Added a default value to this pattern, matching the value previously defined in application.yaml . Setting the pattern to regex:^(?=.*MarketData)(?:(?!Sets).)+.csv$ enables backwards-compatible data loading. |
glob:**Curve_Market_Data*.csv |
None. |
mr.common.file-patterns.fx-rate-market-data |
Added a default value to this pattern, matching the value previously defined in application.yaml . Setting the pattern to glob:**FXRates*.csv enables backwards-compatible data loading. |
glob:**FX_Rate_Market_Data*.csv |
None. |
mr.common.file-patterns.surface-market-data |
Added a default value to this pattern, matching the value previously defined in application.yaml . Setting the pattern to regex:^(?=.*MarketData)(?:(?!Sets).)+.csv$ enables backwards-compatible data loading. |
glob:**Surface_Market_Data*.csv |
None. |
mr.common.file-patterns.cube-market-data |
Added a default value to this pattern, matching the value previously defined in application.yaml . Setting the pattern to regex:^(?=.*MarketData)(?:(?!Sets).)+.csv$ enables backwards-compatible data loading. |
glob:**Cube_Market_Data*.csv |
None. |
mr.data-load.format |
Updated the default value to the the current release. | 6.0 | 5.1 |
Market data properties (e.g. mr.sensi.market-data.vega.any.custom.interest-rate-risk.market-data-type=cube
) have been updated to reject incorrect (or unsupported) configuration:
market-data-type |
interpolate |
interpolation-mode |
Details |
---|---|---|---|
Spot |
Hardcoded to false. | None. | Single value spot prices cannot be interpolated. |
FX Spot |
Hardcoded to false. | None. | Single value FX rates cannot be interpolated. |
Split Ratio |
N/A. | N/A. | No properties are available for the Split Ratio measures. |
Cube |
Hardcoded to false. | None. | Mathematically possible, but unsupported by our API. |
Correlation |
Hardcoded to false. | None. | A correlation value cannot be interpolated. |
Dividend |
Hardcoded to false. | None. | Dividend amounts cannot be interpolated. |
Theta |
N/A. | N/A. | As a function of the time to maturity, Theta cannot be interpolated. |
Property Name | Comment | New Value | Old Value |
---|---|---|---|
mr.sign-off.pnl.pnl-cube-adjustments.hierarchies-to-exclude |
Removed MarketDataSet hierarchy from the list of excluded hierarchies so that adjustments can be applied to a single MarketDataSet at a time. | Date@Dates,MarketDataSets@MarketData,Sign-off Status@Sign-off,Types@PnL,DayToDay@Dates | Date@Dates,Sign-off Status@Sign-off,Types@PnL,DayToDay@Dates |
mr.sign-off.pnl.pnl-cube-adjustments.hierarchies-to-exclude |
Default value changed. | Date@Dates,Sign-off Status@Sign-off,DayToDay@Dates |
Date@Dates,Sign-off Status@Sign-off,Types@PnL,DayToDay@Dates |
Property Name | Comment | New Value | Old Value |
---|---|---|---|
mr.sensi.file-patterns.market-data |
Updated the default pattern to correctly pick up MarketData.csv but not MarketDataSets.csv . |
regex:^(?=.*MarketData)(?:(?!Sets).)+.csv$ |
regex:^(?i).*MarketData(?<!MarketDataSets).*.csv.*$ |
mr.sign-off.sensi.sensi-cube-adjustments.hierarchies-to-exclude |
Removed MarketDataSet hierarchy from the list of excluded hierarchies so that adjustments can be applied to a single MarketDataSet at a time. Added MarketShiftDate and DisplayCurrencies hierarchies to the list of excluded hierarchies as these are slicing hierarchies. | Date@Dates,Quantiles@Quantiles,RoundingMethods@Rounding,Scenario Sets@Risk,Sign-off Status@Sign-off,DynamicMaturities@DynamicBucketing,DynamicMoneyness@DynamicBucketing,DynamicTenors@DynamicBucketing,MarketShiftDate@Dates,displayCurrency@Currencies,DayToDay@Dates | Date@Dates,MarketDataSets@MarketData,Quantiles@Quantiles,RoundingMethods@Rounding,Scenario Sets@Risk,Sign-off Status@Sign-off,DynamicMaturities@DynamicBucketing,DynamicMoneyness@DynamicBucketing,DynamicTenors@DynamicBucketing,DayToDay@Dates |
Property Name | Comment | New Value | Old Value |
---|---|---|---|
mr.sign-off.var.var-cube-adjustments.hierarchies-to-exclude |
Removed MarketDataSet hierarchy from the list of excluded hierarchies so that adjustments can be applied to a single MarketDataSet at a time. Added MarketShiftDate and DisplayCurrencies hierarchies to the list of excluded hierarchies as these are slicing hierarchies. | Date@Dates,Quantiles@Quantiles,RoundingMethods@Rounding,Scenario Sets@Risk,Sign-off Status@Sign-off,CalculationIds@Risk,MarketShiftDate@Dates,displayCurrency@Currencies,DayToDay@Dates | Date@Dates,MarketDataSets@MarketData,Quantiles@Quantiles,RoundingMethods@Rounding,Scenario Sets@Risk,Sign-off Status@Sign-off,CalculationIds@Risk,DayToDay@Dates |
mr.sign-off.var.var-cube-adjustments.hierarchies-to-exclude |
Default value changed. | Date@Dates,Quantiles@Quantiles,RoundingMethods@Rounding,Sign-off Status@Sign-off,MarketShiftDate@Dates,displayCurrency@Currencies,DayToDay@Dates |
Date@Dates,Quantiles@Quantiles,RoundingMethods@Rounding,Scenario Sets@Risk,Sign-off Status@Sign-off,CalculationIds@Risk,MarketShiftDate@Dates,displayCurrency@Currencies,DayToDay@Dates |
Properties removed
Property Name | Comment |
---|---|
mr.enable.data-model.scalar-sensitivities |
Scalar sensitivities are now the default and only sensitivities data model. |
mr.common.file-patterns.market-data-sets |
The MarketDataSets store has been removed. |
mr.common.file-patterns.quantiles |
The Quantiles store has been removed. |
mr.common.file-patterns.rounding-methods |
The RoundingMethods store has been removed. |
mr.sensi.file-patterns.maturities |
The Maturities store has been removed as part of the removal of vectorized sensitivities. This property is therefore no longer required. |
mr.sensi.file-patterns.moneyness |
The Moneyness store has been removed as part of the removal of vectorized sensitivities. This property is therefore no longer required. |
mr.sensi.file-patterns.tenors |
The Tenors store has been removed as part of the removal of vectorized sensitivities. This property is therefore no longer required. |
mr.sign-off.extraction-templates |
This property defined templates to be used with vectorized sensitivities. As this mode is no longer supported, the property is not required. |
mr.sensi.rules.cash |
All properties in this section have been removed as Cash sensitivities are no longer supported by Atoti Market Risk. |
mr.sensi.market-data.cash |
All properties in this section have been removed as Cash sensitivities are no longer supported by Atoti Market Risk. |
mr.data-load.csv.buffer-size |
Replaced by the Data Connectors API property dlc.csv.local.sources.[Source Name].source-properties.buffer-size . |
mr.data-load.csv.dataset |
Replaced by the Data Connectors API property dlc.csv.local.sources.[Source Name].root-base-dir . |
mr.data-load.csv.lines-to-skip |
Replaced by the Data Connectors API properties associated to the topic with the class CsvParserDescription . |
mr.data-load.csv.parser-threads |
Replaced by the Data Connectors API property dlc.csv.local.sources.[Source Name].source-properties.parser-threads . |
mr.data-load.csv.separator |
Replaced by the Data Connectors API properties associated to the topic with the class CsvParserDescription . |
mr.data-load.csv.synchronous-mode |
Replaced by the Data Connectors API property dlc.csv.local.sources.[Source Name].source-properties.synchronous-mode . |
mr.data-load.source |
The setup relies on the Data Connectors configuration. |
Property Name | Comment |
---|---|
mr.sensi.file-patterns.cash |
All properties in this section have been removed as Cash sensitivities are no longer supported by Atoti Market Risk. |
mr.sensi.types.cash |
All properties in this section have been removed as Cash sensitivities are no longer supported by Atoti Market Risk. |
Properties files
Files added
File Name | Details |
---|---|
application-databricks.yaml |
This file provides a default set of properties to run in DirectQuery mode using Databricks. This profile allows you to specify environment-specific properties, such as password or database, with environment variables. You can also edit the file with your specific property values. |
Files modified
File Name | Details |
---|---|
application.yaml |
DirectQuery properties have been removed from this properties file. These properties are now exclusively in the property file for the specific database: application-databricks/mssql/snowflake.yaml . |
application-mssql.yaml |
Environment-specific properties, such as username, password, schema, can now be specified with environment variables when using this profile. Additionally, schema validation is now enabled, and clustering is used for all base fields. |
application-snowflake.yaml |
Environment-specific properties, such as username, password, schema, can now be specified with environment variables when using this profile. Additionally, schema validation is now enabled, and clustering is used for all base fields. |
Datastores
Modified stores
Modification | Store | Field | Type | Description |
---|---|---|---|---|
Added field | PnL | MarketDataSet | String | The market data set that should be used when retrieving rates for FX conversion. |
Added field | PnLBaseStore | MarketDataSet | String | The market data set that should be used when retrieving rates for FX conversion. |
Added field | Trade Sensitivities | MarketDataSet | String | The market data set that was used when the sensitivity was calculated. This will be used to retrieve appropriate market data values for PnL Explain and Taylor VaR computations. |
Added field | SensiBaseStore | MarketDataSet | String | The market data set that was used when the sensitivity was calculated. This will be used to retrieve appropriate market data values for PnL Explain and Taylor VaR computations. |
Added field | Trade PnLs | MarketDataSet | String | The market data set that should be used when retrieving rates for FX conversion. |
Added field | BaseStore | MarketDataSet | String | The market data set that should be used when retrieving rates for FX conversion. |
Added field | PnL | LegId | String | Leg Ids under a single Trade Id to enable sending in trades that will have multiple legs under a single Trade Id. This is an optional field available when the property mr.pnl.enable.leg-id is set to true. |
Added field | Trade Attributes | TradeSource | String | The identifier of the source system the trade was executed in. |
Added field | Trade Attributes | TradeStatus | String | The status representing the step in the trade lifecycle. If left blank, this field will default to LIVE. |
Added field | Trade Attributes | OriginalNotional | Double | The notional at trade date. |
Added field | BaseStore | TradeSource | String | The identifier of the source system the trade was executed in. |
Added field | BaseStore | TradeStatus | String | The status representing the step in the trade lifecycle. If left blank, this field will default to LIVE. |
Added field | SensiBaseStore | TradeSource | String | The identifier of the source system the trade was executed in. |
Added field | SensiBaseStore | TradeStatus | String | The status representing the step in the trade lifecycle. If left blank, this field will default to LIVE. |
Added field | PnLBaseStore | TradeSource | String | The identifier of the source system the trade was executed in. |
Added field | PnLBaseStore | TradeStatus | String | The status representing the step in the trade lifecycle. If left blank, this field will default to LIVE. |
Added field | Scenarios | LiquidityHorizon | Integer | The Liquidity Horizon in days. This field is optional. |
Removed field | Trade PNL | LiquidityHorizon | Integer | The field has been moved to the Scenarios store. |
Changed field name | Trade Sensitivities | TenorLabels -> TenorLabel | String | The tenor label, corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Changed field name | Trade Sensitivities | TenorDates -> TenorDate | Date | An explicit tenor date, which is used to sort tenors and to re-bucket sensitivities (if supported). |
Changed field name | Trade Sensitivities | MaturityLabels -> MaturityLabel | String | Name for the bucketed group. |
Changed field name | Trade Sensitivities | MaturityDates -> MaturityDate | Date | An explicit maturity date, which is used to sort tenors and to re-bucket sensitivities (if supported). |
Changed field name | Trade Sensitivities | Values -> Value | Double | A sensitivity value. |
Changed field name | PnLBaseStore | MaturityDate -> TradeMaturityDate | Date | The maturity date of the trade. |
Changed field name | SensiBaseStore | MaturityDate -> TradeMaturityDate | Date | The maturity date of the trade. |
Changed field name | BaseStore | MaturityDate -> TradeMaturityDate | Date | The maturity date of the trade. |
Changed field name | Trade Attributes | MaturityDate -> TradeMaturityDate | Date | The maturity date of the trade. |
Changed field name | DynamicTenors | TenorLabels -> TenorLabel | String | The label corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Changed field name | DynamicMaturities | TenorLabels -> TenorLabel | String | The label corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Changed field name | DynamicMoneyness | TenorLabels -> TenorLabel | String | The label corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Renamed store | CubeLevelAdjustments | SignOffDigestStore -> CubeLevelAdjustments | ||
Removed field | CubeLevelAdjustments | Digest | String | The location digest is no longer used for cube-level adjustments. |
Changed field name | CubeLevelAdjustments | MandateId -> TaskId | String | The name of the task for which the adjustment was created. |
Removed field | PnL | RiskFactor | String | This field is no longer required. |
Removed field | PnL | RiskClass | String | This field is no longer required. |
Removed field | PnLBaseStore | RiskFactor | String | This field is no longer required. |
Removed field | PnLBaseStore | RiskFactorType | String | This field is no longer required. |
Removed field | PnLBaseStore | RiskFactorCcy | String | This field is no longer required. |
Removed field | PnLBaseStore | CurveType | String | This field is no longer required. |
Removed field | PnLBaseStore | Qualifier | String | This field is no longer required. |
Removed field | PnLBaseStore | RiskClass | String | This field is no longer required. |
Deleted stores
Stores relating to the removal of the vectorized sensitivity data model
The following stores have been deleted due to the removal of the vectorized sensitivity data model:
- mr-sensi-config/src/main/java/com/activeviam/mr/sensi/datastore/description/complete/stores/MarketDataStoreConfig.java. If you continue to use the deprecated
market data API, you can find this store configuration in the
MarketDataStoreConfig
class. You will need to import this class to use the store. - mr-sensi-config/src/main/java/com/activeviam/mr/sensi/datastore/description/complete/stores/CorporateActionStoreConfig.java
- mr-sensi-config/src/main/java/com/activeviam/mr/sensi/datastore/description/complete/stores/TenorsStoreConfig.java.
- mr-sensi-config/src/main/java/com/activeviam/mr/sensi/datastore/description/complete/stores/VectorMarketDataStoreConfig.java
- mr-sensi-config/src/main/java/com/activeviam/mr/sensi/datastore/description/complete/stores/VectorTradeSensitivitiesStoreConfig.java
- mr-sensi-config/src/main/java/com/activeviam/mr/sensi/datastore/description/summary/VectorSensiAggregatedStoreConfig.java
- mr-sensi-config/src/main/java/com/activeviam/mr/sensi/datastore/description/summary/VectorSensiFlatStoreConfig.java
note
If you were using the Tenor, Maturity, or Moneyness stores for the StoreQueryMaturityConverter
, the configuration for these classes has
been removed. To continue using this, please add a store configuration for each.
Other stores
Store | Details |
---|---|
Quantiles | No longer needed. |
RoundingMethods | No longer needed. |
MarketDataSets | MarketDataSet is now an additional field on all base stores. |
Database
Modified tables
Modification | Table | Field | Type | Description |
---|---|---|---|---|
Added field | PNL | MARKET_DATA_SET | String | The market data set that should be used when retrieving rates for FX conversion. |
Added field | TRADE_SENSITIVITIES | MARKET_DATA_SET | String | The market data set that was used when the sensitivity was calculated. This will be used to retrieve appropriate market data values for PnL Explain and Taylor VaR computations. |
Added field | TRADE_SENSITIVITIES_VECTOR | MARKET_DATA_SET | String | The market data set that was used when the sensitivity was calculated. This will be used to retrieve appropriate market data values for PnL Explain and Taylor VaR computations. |
Added field | TRADEPNLS | MARKET_DATA_SET | String | The market data set that should be used when retrieving rates for FX conversion. |
Added field | TRADEPNLS_VECTOR | MARKET_DATA_SET | String | The market data set that should be used when retrieving rates for FX conversion. |
Added field | TRADE_ATTRIBUTES | TRADE_SOURCE | String | Identifier of the source system the trade was executed in. |
Added field | TRADE_ATTRIBUTES | TRADE_STATUS | String | Status representing the step in the trade lifecycle. |
Added field | TRADE_ATTRIBUTES | ORIGINAL_NOTIONAL | Double | Represents the notional at trade date. |
Added field | SCENARIOS | LIQUIDITY_HORIZON | Integer | The Liquidity Horizon in days. This field is optional. |
Removed field | TRADEPNLS | LIQUIDITY_HORIZON | Integer | The field has been moved to the SCENARIOS table. |
Removed field | TRADEPNLS_VECTOR | LIQUIDITY_HORIZON | Integer | The field has been moved to the SCENARIOS table. |
Changed field name | TRADE_SENSITIVITIES | TENOR_LABELS -> TENOR_LABEL | String | The tenor label, corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Changed field name | TRADE_SENSITIVITIES | TENOR_DATES -> TENOR_DATE | Date | An explicit tenor date, which is used to sort tenors and to re-bucket sensitivities (if supported). |
Changed field name | TRADE_SENSITIVITIES | MATURITY_LABELS -> MATURITY_LABEL | String | Name for the bucketed group. |
Changed field name | TRADE_SENSITIVITIES | MATURITY_DATES -> MATURITY_DATE | Date | An explicit maturity date, which is used to sort tenors and to re-bucket sensitivities (if supported). |
Changed field name | TRADE_SENSITIVITIES | VALUES -> VALUE | Double | A sensitivity value. |
Changed field name | TRADE_SENSITIVITIES_VECTOR | TENOR_LABELS -> TENOR_LABEL | String | The tenor label, corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Changed field name | TRADE_SENSITIVITIES_VECTOR | TENOR_DATES -> TenorDate | Date | An explicit tenor date, which is used to sort tenors and to re-bucket sensitivities (if supported). |
Changed field name | TRADE_SENSITIVITIES_VECTOR | MATURITY_LABELS -> MATURITY_LABEL | String | Name for the bucketed group. |
Changed field name | TRADE_SENSITIVITIES_VECTOR | MATURITY_DATES -> MATURITY_DATE | Date | An explicit maturity date, which is used to sort tenors and to re-bucket sensitivities (if supported). |
Changed field name | TRADE_ATTRIBUTES | MATURITY_DATE -> TRADE_MATURITY_DATE | String | The maturity date of the trade. |
Changed field name | DYNAMIC_TENORS | TENOR_LABELS -> TENOR_LABEL | String | The label corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Changed field name | DYNAMIC_MATURITIES | TENOR_LABELS -> TENOR_LABEL | String | The label corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Changed field name | DYNAMIC_MONEYNESS | TENOR_LABELS -> TENOR_LABEL | String | The label corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Renamed table | CUBE_LEVEL_ADJUSTMENTS | SIGN_OFF_DIGEST_STORE -> CUBE_LEVEL_ADJUSTMENTS | ||
Removed field | CUBE_LEVEL_ADJUSTMENTS | DIGEST | String | The location digest is no longer used for cube-level adjustments. |
Changed field name | CUBE_LEVEL_ADJUSTMENTS | MANDATE_ID -> TASK_ID | String | The name of the task for which the adjustment was created. |
Removed field | PNL | RISK_FACTOR | String | This field is no longer required. Please note this field was a primary key. Data must be modified accordingly to avoid primary key collisions. |
Removed field | PNL | RISK_CLASS | String | This field is no longer required. |
Deleted tables
Table | Details |
---|---|
QUANTILES | Table is no longer needed. |
ROUNDING_METHODS | Table is no longer needed. |
MARKET_DATA_SET | MarketDataSet is now a field on all base tables. |
Cube schema
Added
Cube | Dimension | Hierarchy | Levels | Datastore fields | Details |
---|---|---|---|---|---|
PLCube | Booking | Legs | LegId | LegId | This optional attribute was added 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. |
All | TradeAttributes | TradeSources | TradeSource | TradeSource | Added to identify the source system the trade was executed in. |
All | TradeAttributes | TradeStatuses | TradeStatus | TradeStatus | Added to analyse and break down the dtd pnl differences to find the components due to new trades, amended trades and cancelled trades. |
Modified
Cube | Dimension | Hierarchy | Levels | Datastore fields | Details |
---|---|---|---|---|---|
All | TradeAttributes | MaturityDates -> TradeMaturityDates | MaturityDate -> TradeMaturityDate | MaturityDate | Renamed to distinguish between the MaturityDate hierarchy in the TradeSensitivities cube. |
All | MarketData | MarketDataSets | MarketDataSet | MarketDataSet | This level was previously based on the MarketDataSets store. It is now based on the MarketDataSet field that has been added to each base store. |
Removed
Cube | Dimension | Hierarchy | Levels |
---|---|---|---|
VaR-ES | Quantiles | Quantiles | [ALL, QuantileName] |
VaR-ES | Rounding | RoundingMethods | [ALL, MethodName] |
PLCube | Risk | RiskFactors | [ALL, RiskFactor] |
PLCube | Risk | RiskFactorTypes | [ALL, RiskFactorType] |
PLCube | Risk | RiskFactorCurrencies | [ALL, RiskFactorCcy] |
PLCube | Risk | CurveTypes | [ALL, CurveType] |
PLCube | Risk | Qualifiers | [ALL, Qualifier] |
PLCube | Risk | RiskClasses | [ALL, RiskClass] |
PL Summary Cube | Risk | RiskFactors | [ALL, RiskFactor] |
PL Summary Cube | Risk | RiskFactorTypes | [ALL, RiskFactorType] |
PL Summary Cube | Risk | RiskFactorCurrencies | [ALL, RiskFactorCcy] |
PL Summary Cube | Risk | CurveTypes | [ALL, CurveType] |
PL Summary Cube | Risk | Qualifiers | [ALL, Qualifier] |
PL Summary Cube | Risk | RiskClasses | [ALL, RiskClass] |
note
As part of the removal of the vectorized sensitivities data model we have removed configuration of dimensions for it, but no actual dimension has been removed.
Measures
Added
Cube | Measure | Details |
---|---|---|
Sensitivity Cube | FX Rate Current | An FX rate between the currency in the Currencies hierarchy and the display currency, for the current as-of date. |
Sensitivity Cube | FX Rate Previous | An FX rate between the currency in the Currencies hierarchy and the display currency, for the previous as-of date. |
Sensitivity Cube | FX Rate Next | An FX rate between the currency in the Currencies hierarchy and the display currency, for the next as-of date. |
VaR-ES Cube | Original Notional | The notional at trade date. If the trade is amended or partially terminated, the changed value will be sent to Notional . |
VaR-ES Cube | Original Notional Native | The notional at trade date in the native currency. |
Modified
All measures in the Value at Risk
folder have moved to the Value At Risk
folder, and those in Value at Earnings
have moved to Value At Earnings
.
Market data
Sensitivity- and risk-class-agnostic market data measures have been added, replacing the previously visible FX-converted and Native
measures.
For sensitivities that used a single type of market data (for example, CrossGamma only uses Spot market data), the PnL Explain chains have been updated to use those market data types directly. When a sensitivity uses multiple types of market data depending on risk class, such as Delta with Spot for equities and Curve for GIRR, the top level market data measures have been updated to behave as a location-based switcher between the available market data types.
For details about the market data measures made available in Market Risk 6.0.0, the Market Data section covers the types of market data available in the Sensitivity Cube as well as which market data types are used for each sensitivity. A complete list of measures is also available.
Removed
Cube | Measure | Details |
---|---|---|
Sensitivity Cube | Correlation FX Rate | Replaced with the FX Rate Current measure. |
Sensitivity Cube | CrossGamma FX Rate | Replaced with the FX Rate Current measure. |
Sensitivity Cube | Delta FX Rate | Replaced with the FX Rate Current measure. |
Sensitivity Cube | Dividend FX Rate | Replaced with the FX Rate Current measure. |
Sensitivity Cube | Gamma FX Rate | Replaced with the FX Rate Current measure. |
Sensitivity Cube | Theta FX Rate | Replaced with the FX Rate Current measure. |
Sensitivity Cube | Vanna FX Rate | Replaced with the FX Rate Current measure. |
Sensitivity Cube | Vega FX Rate | Replaced with the FX Rate Current measure. |
Sensitivity Cube | Volga FX Rate | Replaced with the FX Rate Current measure. |
Sensitivity Cube | Cash measures | All Cash measures have been removed without a replacement. |
Vector-specific measures
All vector counterparts of the sensitivities measures have been removed. This affects any annotated CopperMeasure
bean with
@ConditionalOnVectorizedSensitivity
.
Context values
Added
Name | Details |
---|---|
VaRTimePeriod | The VaR time period context value works in conjunction with the Liquidity Horizon field. |
Other changes
Adjustments
The MarketDataSet level is now a required input for all adjustments. See the SupportedAdjustments(Sensi/PnL/VaR)Config
classes
for full configuration. This reflects the fact that MarketDataSet is now a base store field.
DLC
The StaticSensiPillars
topic alias has been removed. This was used to load data into the Tenors
, Maturities
, and Moneyness
stores. These stores have been removed as part of the removal of vectorized sensitivities, so this topic is no longer required.
Removed duplicate store field constant
The store field constant STORE_DATE_FIELD_FORMAT
was duplicated and bore the same value in each case. We have kept the iteration in
DatastoreConstants
(mr-common-config
) and removed the following ones:
- com/activeviam/mr/pnl/datastore/description/complete/PnLStoreConfig.java
- com/activeviam/mr/var/datastore/description/complete/VaRStoreConfig.java
FXShifts
FXShiftsServiceConfig
has been split out of the existing FXRatesServiceConfig
class. To use the market shift service (IFxShift
), you must now import the
FXShiftsServiceConfig
class. By default, it is imported in MarketRiskConfig
.
Removal of deprecated code
Code
Class | Status | Details |
---|---|---|
mr-common-config/src/main/java/com/activeviam/mr/common/config/spring/annotations/ConditionalOnScalarSensitivity.java | Removed | No longer required |
mr-common-config/src/main/java/com/activeviam/mr/common/config/spring/annotations/ConditionalOnVectorizedSensitivity.java | Removed | No longer required |
mr-common-config/src/main/java/com/activeviam/mr/common/config/spring/conditions/beans/BeanScalar.java | Removed | No longer required |
mr-common-config/src/main/java/com/activeviam/mr/common/config/spring/conditions/beans/BeanVectorised.java | Removed | No longer required |
mr-common-config/src/main/java/com/activeviam/mr/common/config/spring/conditions/configuration/ConfigurationScalar.java | Removed | No longer required |
mr-common-config/src/main/java/com/activeviam/mr/common/config/spring/conditions/configuration/ConfigurationVectorised.java | Removed | No longer required |
mr-sensi-config/src/main/java/com/activeviam/mr/sensi/cube/complete/dimensions/VectorRiskDimensionConfig.java | Removed | No longer required |
mr-sensi-config/src/main/java/com/activeviam/mr/sensi/sources/impl/SensiTradeStoreTuplePublisher.java | Removed | No longer required |
mr-sensi-lib/src/main/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/MarketDataPostProcessor.java | Removed | Legacy Market Data API |
mr-sensi-lib/src/main/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/PnLExplainCrossPostProcessor.java | Removed | Vector counterpart |
mr-sensi-lib/src/main/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/PnLExplainPostProcessor.java | Removed | Vector counterpart |
mr-sensi-lib/src/main/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/PnlVectorFromCrossRiskSensiPostProcessor.java | Removed | Vector counterpart |
mr-sensi-lib/src/main/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/ShiftVectorPostProcessor.java | Removed | No longer required |
mr-sensi-lib/src/main/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/TenorMaturityAndMoneynessVectorExpand.java | Removed | No longer required |
mr-sensi-lib/src/main/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/VectorAggregationPostProcessor.java | Removed | No longer required |
Adjustments
The following methods have been removed:
- SupportedAdjustmentsSensiConfig.sensiAddOn
- SupportedAdjustmentsSensiConfig.sensiScaling
- SupportedAdjustmentsSensiConfig.sensiOverride
- AdjustmentsExecutionSensiConfig.getSensiScalingExecution
- AdjustmentsExecutionSensiConfig.getSensiOverrideExecution
These methods were used to create and support adjustment types for the vectorized model of the sensitivities cube. The Add-on
, Override
, and Scaling
adjustments are still available when using the scalar model of the sensitivities cube.
DEE Templates
The following DEE templates (found in mr-application/src/main/resources/dee-templates
) were used for vectorized sensitivities. They have been removed in this
release:
- SensiCubeExport
- SensiAggregatedCubeExport
Cube-level adjustments
Cube-level adjustments now rely on the creation of facts added to the base store (and on entries added to stores referenced by the base store if needed) to define the location at which they are applied, and on entries in an isolated store to define the measures for which they are defined, along with the adjusted values. Only add-ons are now supported for cube-level adjustments. The add-ons are aggregated using dynamic aggregation on the adjustment source field of the base store of the cube for which the adjustment is created. The notion of location digest has been removed from the logic used for cube-level adjustments. Please see additional details in Testing custom adjustment types.
The store SignOffDigestStore
has been renamed to CubeLevelAdjustments
and its field updated - please see description of the changes in the Datastores and
Database sections.
The method CubeLevelAdjustedMeasuresBuilder.buildAdjustmentMeasures(ICanStartBuildingMeasures builder,
String pluginKey,
List<String> adjustableMeasures,
LevelIdentifier asOfDateLevel,
LevelIdentifier displayCurrencyLevel,
LevelIdentifier marketDatSetLevel,
List<HierarchyIdentifier> hierarchiesToExlude,
LevelIdentifier signOffStatusLevel,
String otherMember,
String formatter)
has been removed.
Supported Adjustments definitions
- The Type level has been added to the
SupportedAdjustmentDTO
SupportedAdjustmentsPnLConfig.pnlCubeLevelAdjustment()
. - The Scenario Set, Calculation Id and Instrument type levels have been added to the
SupportedAdjustmentDTO
SupportedAdjustmentsVaRConfig.varEsCubeLevelAdjustment()
.
DEE templates
The CubeAdjustmentTemplate
DEE template (found in mr-application/src/main/resources/dee-templates
) has been updated to use the CubeLevelAdjustments
store.
Tests
Removed
Test | Details |
---|---|
mr-application-tests/src/test/java/com/activeviam/mr/application/modes/OnlySensiCubeProfileWithOldDataTest.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/application/modes/StandardAggProfileTest.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/application/modes/StandardProfileMultilevelScopeTest.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/application/modes/StandardProfileTest.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/application/sources/AzureDataLoadingTest.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/application/whatif/rest/SensiBookScalingRestServiceStandardIT.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/application/whatif/rest/SensiVectorScalingRestServiceStandardIT.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/application/whatif/rest/SensiVectorSubstitutionRestServiceStandardIT.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/regression/ReferenceRegressionTestCombinedIT.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/regression/ReferenceRegressionTestIT.java | Vector-specific test |
mr-application-tests/src/test/java/com/activeviam/mr/signoff/MarketRiskSignOffApplicationTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/DeltaPnLExplainPostProcessorsInterpolation2Test.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/DeltaPnLExplainPostProcessorsInterpolationDisabledTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/DeltaPnLExplainPostProcessorsRiskClassTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/DeltaPnLExplainPostProcessorsTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/TaylorVaRLadderVectorTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/VegaPnLExplainPostProcessorsInterpolation2Test.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/VegaPnLExplainPostProcessorsInterpolationDisabledTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/VegaPnLExplainPostProcessorsInterpolationTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/VegaPnLExplainPostProcessorsRiskClassTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/VegaPnLExplainPostProcessorsTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/calculations/VolgaTaylorVaRTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/config/CashGreekSensiCubeMeasureConfigTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/config/CorrelationGreekSensiCubeMeasureConfigTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/measures/config/ThetaGreekSensiCubeMeasureConfigTest.java | Vector-specific test |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/services/impl/MarketDataRetrievalServiceTest.java | Vector-specific test |
mr-sensi-lib/src/test/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/APnlVectorFromRiskSensiPostProcessorTest.java | Vector-specific test |
mr-sensi-lib/src/test/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/PnlVectorFromCrossRiskSensiPostProcessorTest.java | Vector-specific test |
mr-sensi-lib/src/test/java/com/activeviam/mr/sensi/calculations/postprocessors/impl/PnlVectorFromRiskSensiPostProcessorTest.java | Vector-specific test |
Modified
Test | Details |
---|---|
mr-application-tests/src/test/java/com/activeviam/mr/application/integration/ARealTimeTest.java | Converted to scalar data model. |
mr-application-tests/src/test/java/com/activeviam/mr/application/integration/RealTimeTest.java | Converted to scalar data model. |
mr-application-tests/src/test/java/com/activeviam/mr/application/modes/OnlySensiSummaryCubeProfileTest.java | Converted to scalar data model. |
mr-application-tests/src/test/java/com/activeviam/mr/application/modes/OnlySensiCubeProfileTest.java | Converted to scalar data model. |
mr-application-tests/src/test/java/com/activeviam/mr/application/modes/RealTimeBehaviourTestIT.java | Converted to scalar data model. |
mr-common-config/src/test/java/com/activeviam/mr/common/config/spring/properties/FeaturePropertiesTest.java | Removed test for property. |
mr-sensi-config/src/test/java/com/activeviam/mr/sensi/services/impl/ScalarMarketDataRetrievalServiceTest.java | Includes the removed MarketData and CorporateAction stores for testing purposes as the MarketDataRetrievalService is not removed yet. |
Refactor of SensiMeasureParameters
With the removal of the vector data model, the SensiMeasureParameters
constructor has been refactored to remove the boolean isVector
field.
Atoti Server patches
This release contains a patch for the CSVSource to resolve a bug introduced in Atoti Server 6.1.2. There are four patch classes in the mr-application
module under the com.activeviam.source.csv
package. These classes should not be used directly, as they will be removed in a later release.
Additionally, the DirectQueryActivePivotConfig
class no longer extends the ADirectQueryApplicationConfig
class from Atoti Server. Atoti Server 6.1.2 introduced some bean name changes in this class that cause bean resolution issues. These will be resolved in a following Atoti Server release, at which time this change can be reversed.
Schema rebuild
In the MarketRiskConfig
class in mr-application
we create a bean to schedule an Atoti schema rebuild. Previously this would run after 5 minutes and every 30 minutes thereafter. This was more frequent than necessary and may impact performance. We have increased the default to 1,440 minutes (24 hours) so the rebuild occurs once a day. We have also added new properties (mr.application.rebuild...
) to customize this for your requirements.
Sign-Off REST services
The implementation of the Sign-Off REST services now has a Boolean to enable/disable them. Out of the box, the Sign-Off REST services are disabled until the initial load is completed. This prevents the Sign-Off server from sending requests on those services before the end of the initial load.
Atoti core exceptions are now used instead of the previously used Javax exceptions.
Error messages and constants have been fixed. Their prefix and/or content was previously incorrect.
In particular, the constant ERROR_MESSAGE
has been replaced by the constant ERROR_MESSAGE_NO_VALID_DTO_PROVIDED
.
Webservices
The following outdated dependency has been removed from the POM file of the mr-common-lib
module:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
<scope>compile</scope>
</dependency>
The String constant for the "application/json"
media type from the Spring class org.springframework.http.MediaType
is used instead of the corresponding
constant from thejavax.ws.rs.core.MediaType
class.
Sorting order of beans
The class StartupSpringBeanOrder
has been added with constants used to define the order in which some of the beans are loaded:
In increasing order:
START_MANAGER
: Starts the Atoti Server manager.REGISTER_DATABASE_LISTENERS
: Registers the parent/child listeners.INITIAL_CONFIGURATION_DATA_LOAD
: Starts the initial data load.INITIAL_DATA_LOAD
: Instantiates beans after the initial data load is completed.START_DISTRIBUTED_MESSENGERS
: Starts the distribution messengers.