Migration notes 6.0
This page explains the changes required to migrate to the stated version of the Atoti Market Risk.
Migrate to 6.0.0-M1
Upgrading from version 5.4.0, see Atoti Market Risk 6.0-M1 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.1.2 . For details, see the dedicated Atoti Market Data documentation.
- 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 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.
- 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.
- Updated dashboards : A number of dashboards have been updated due to market data measure and context value changes. For details, see Updated dashboards.
- 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.
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.
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.1.2 .
The market data artifacts (market-data-lib
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 uses the Risk Factor field to fill in the base currency. |
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.
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.
xxx Current MD / xxx Previous MD
The following measures do not handle FX conversion anymore. They return the same value as the underlying xxx xxx MD Native
metric.
Correlation Current MD
Correlation Previous MD
CrossGamma Current MD
CrossGamma Current MD 2
CrossGamma Previous MD
CrossGamma Previous MD 2
Delta Current MD
Delta Previous MD
Dividend Current
Dividend Previous
Gamma Current MD
Gamma Previous MD
Vanna Current MD
Vanna Current MD 2
Vanna Previous MD
Vanna Previous MD 2
Vega Current MD
Vega Previous MD
Volga Current MD
Volga Previous MD
In addition, the axes needed to fetch the underlying market data are now required: sensitivity name ([Sensitivities].[Sensitivity].[SensitivityName]
), risk class ([Risk].[Risk Classes].[RiskClass]
), risk factor, and other dimensional axes, such as tenor/maturity/moneyness (for curve/surface/cubes market data). Even if two pieces of market data are the same, they can’t be merged for display anymore.
Hidden MD measures
The following measures are now hidden, since the notion of native currency is not applicable to market data. The value of a measure xxx MD Native
value is now equal to the value of the corresponding xxx MD
measure.
In addition, the axes needed to fetch the underlying market data are now required: sensitivity name ([Sensitivities].[Sensitivity].[SensitivityName]
), risk class ([Risk].[Risk Classes].[RiskClass]
), risk factor, and other dimensional axes, such as tenor/maturity/moneyness (for curve/surface/cubes market data). Even if two pieces of market data are the same, they can’t be merged for display anymore.
Correlation Current MD Native
Correlation Previous MD Native
CrossGamma Current MD 2 Native
CrossGamma Current MD Native
CrossGamma Previous MD 2 Native
CrossGamma Previous MD Native
Delta Current MD Native
Delta Previous MD Native
Dividend Previous Native
Dividend Current Native
Gamma Current MD Native
Gamma Previous MD Native
Vanna Current MD 2 Native
Vanna Current MD Native
Vanna Previous MD 2 Native
Vanna Previous MD Native
Vega Current MD Native
Vega Previous MD Native
Volga Current MD Native
Volga Previous MD Native
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
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. |
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. |
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.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. |
Properties modified
Property Name | Comment | New Value | Old Value |
---|---|---|---|
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 |
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.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.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 |
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. |
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. |
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. |
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 | 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 | TRADE_SENSITIVITIES_VECTOR | 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 | TRADEPNLS | MarketDataSet | String | The market data set that should be used when retrieving rates for FX conversion. |
Added field | TRADEPNLS_VECTOR | MarketDataSet | String | The market data set that should be used when retrieving rates for FX conversion. |
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 | TRADE_SENSITIVITIES_VECTOR | 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_VECTOR | 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_VECTOR | MaturityLabels -> MaturityLabel | String | Name for the bucketed group. |
Changed field name | TRADE_SENSITIVITIES_VECTOR | MaturityDates -> MaturityDate | Date | An explicit maturity date, which is used to sort tenors and to re-bucket sensitivities (if supported). |
Changed field name | TRADE_ATTRIBUTES | MaturityDate -> TradeMaturityDate | String | The maturity date of the trade. |
Changed field name | DYNAMIC_TENORS | TenorLabels -> TenorLabel | String | The label corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Changed field name | DYNAMIC_MATURITIES | TenorLabels -> TenorLabel | String | The label corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
Changed field name | DYNAMIC_MONEYNESS | TenorLabels -> TenorLabel | String | The label corresponding to the vertex of the risk factor, such as 3M, 5Y, and so on. |
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
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] |
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. |
Removed
Cube | Measure | Details |
---|---|---|
Sensitivity Cube | Cash FX Rate | Replaced with the FX Rate Current measure. |
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. |
Vector-specific measures
All vector counterparts of the sensitivities measures have been removed. This affects any annotated CopperMeasure
bean with
@ConditionalOnVectorizedSensitivity
.
Context values
No changes.
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
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.