This page explains the changes required to migrate to the stated version of Atoti Market Risk.Documentation Index
Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
Use this file to discover all available pages before exploring further.
Migrate to 6.0.8
Atoti Market Risk uses Atoti Server 6.1.19 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.Migration Helper REST endpoint
The newMRMigrationHelperRestController is automatically registered when running in in-memory mode via InMemoryDatastoreExtractionMigratorConfig (com.activeviam.mr.migration.config), which is imported by the default MarketRiskConfig. If you maintain your own copy of MarketRiskConfig, add InMemoryDatastoreExtractionMigratorConfig.class to your @Import list to pick up the new controller.
The migration helper requires in-memory data cubes: it reads rows directly from the in-memory
IDatastore to produce the CSV exports and the DDL. It therefore does not apply to DirectQuery deployments (starter.deployment.type=direct-query) or to query-only nodes (starter.deployment.type=query-node) — the controller is skipped on both. See the Migration helper page in the DirectQuery section for the intended workflow (extract an in-memory dataset, then start the application in DirectQuery mode).POST /extract and POST /extractForDatabase/{database}) are restricted to a configurable base directory via mr.migration.export.base-dir (defaults to the JVM temp directory). To allow exports to a custom path, set this property:
mr.migration.export.enabled to false (defaults to true):
ISideStoresToMigrate bean or sets the storesToMigrate field on DirectQueryActivePivotConfig, note that both are now deprecated. The migration helper controller manages store selection through its getDefaultExtractionBuilder() method. You can continue using the deprecated APIs, but they will be removed in a future release.
Deprecated APIs
| Deprecated API | Replacement |
|---|---|
ISideStoresToMigrate | Store selection is configured in MRMigrationHelperRestController.getDefaultExtractionBuilder() |
DirectQueryActivePivotConfig.storesToMigrate | Store selection is configured in MRMigrationHelperRestController.getDefaultExtractionBuilder() |
Atoti Server upgrade to 6.1.19
Atoti Market Risk 6.0.8 upgrades to Atoti Server 6.1.19 (from 6.1.17). PIVOT-12863 patch files removed. The patch files for PIVOT-12863 (CompositeVersionAccessor and SqlVersionAccessorWithCache) that were introduced in 6.0.5 have been removed, as the fix is now included in core. If your project overrides or references these classes, remove those overrides.
QueryCubeSync test utility relocated. The QueryCubeSync test utility class has been relocated from com.activeviam.activepivot.dist.test.internal.cube to com.activeviam.activepivot.dist.querynode.test.internal.cube. If your test code imports this class, update the import accordingly.
Distributed messaging API rework. Atoti Server 6.1.19 also reworks the distributed messaging API. The legacy broadcast-message types (ABroadcastMessageV2, IMessageAnswer, IMessageHandler, IMessageHandlerRegistrar, SyncMessageHandler, IBroadcastResult) have been replaced with the new Request / Answer / ProcessedOutput records and the CommunicationRegistration builder.
Atoti Market Risk does not reference any of the distributed messaging classes affected by this change. No code change is required in projects that build on top of the standard Atoti Market Risk configuration. The sections below describe the underlying changes for projects that extend the distributed messaging or Snowflake integration directly.
| Removed type | Replacement / notes |
|---|---|
com.activeviam.accelerator.common.utils.AUniqueBroadcastMessage | No replacement — base class ABroadcastMessageV2 removed from Atoti Server. |
com.activeviam.accelerator.common.utils.AUniqueSyncBroadcastMessageHandler | No replacement — base class SyncMessageHandler removed. |
com.activeviam.accelerator.common.distribution.SharedMessageHandlerRegistrar | DistributedParametersRetriever registers its handler itself. |
com.activeviam.services.ServicesMessageHandlerRegistrar | EndPointFinderService registers its handler itself. |
com.activeviam.accelerator.common.parameter.impl.DistributedParametersMessageHandler | Logic moved into DistributedParametersRetriever. |
com.activeviam.services.endpointfinder.EndPointFinderMessageHandler | Logic moved into EndPointFinderService. |
Registry.RegistryContributions setup listed SharedMessageHandlerRegistrar or ServicesMessageHandlerRegistrar, simply drop those entries.
Message types are now records. DistributedParametersMessage and EndPointFinderMessage are now record types implementing com.activeviam.activepivot.dist.impl.avinternal.communication.Request. DistributedParametersData and EndPointFinderMessage.EndPointFinderMessageAnswer now implement Answer (the latter also ProcessedOutput). Replace getter calls with record accessors (message.getBranch() → message.branch(), etc.).
DistributedParametersRetriever constructor change. The retriever now registers its own message handler at construction time via CommunicationRegistration, so it needs the IActivePivotManager:
| Class | Old package | New package |
|---|---|---|
SFSessionProperty | net.snowflake.client.core | net.snowflake.client.internal.core |
SnowflakeStatement | net.snowflake.client.jdbc | net.snowflake.client.api.statement |
auth_class change described in SharedSecretAuthToken replaces AtotiAuthToken in the 6.0.6 → 6.0.7 section.
POM file changes
The upgrade bumps theactivepivot.version and common-lib.version properties in the root pom.xml — see the Dependencies page for the resolved versions per release.
A new com.activeviam.apps:services library dependency is also introduced. It contains REST endpoint services (such as EndPointFinderService and LevelPathService) that were previously bundled inside com.activeviam.apps:shared and the Atoti Server core.
Managed entry to add in the root pom.xml <dependencyManagement> block:
mr-application/pom.xml:
mr-application or maintains a pom.xml derived from Atoti Market Risk, add the services dependency (no <version> needed if you import the Atoti Market Risk BOM or copy the managed entry above).
FX shift factor moved to IFxShift service
The FX shift factor (mr.fx.shift-factor) was previously applied within the measure chain, which caused incorrect results for inverse and cross-currency pairs. The shift factor is now applied directly inside the IFxShift service before any pair inversion or cross-currency computation.
If you use the default FXShift implementation (provided by FXShiftsServiceConfig), no action is required. The shift factor is automatically read from IFxProperties.getShiftFactor().
If you have a custom IFxShift implementation, ensure the shift factor is applied to the raw shift vectors before any inversion or cross-currency resolution.
FX relative sensitivity formula fix
TheFX_RELATIVE sensitivity formula in ASensiFormulaProvider.fxRelativeShiftFormula() applied the priceFactor after the non-linear FX inversion, which is mathematically incorrect. The formula has been corrected to apply the priceFactor before the inversion:
Stable names for hidden technical measures
Hidden intermediate technical measures in theMTM, Notional, and OriginalNotional chains have been renamed. Previously their names were generated automatically by Copper (for example MTM.SUM__#__0__#__VaR). These names are now stable, explicit, and include the cube name (for example MTMVaR-ES Cube.TECHNICAL).
Impact on DirectQuery aggregate tables. If your DirectQuery aggregate table configuration references any of the old auto-generated names, update those references to the new names:
| Cube | Old auto-generated name pattern | New stable name |
|---|---|---|
| VaR-ES Cube | MTM.SUM__#__… | MTMVaR-ES Cube.TECHNICAL |
| VaR-ES Cube | Notional.SUM__#__… | NotionalVaR-ES Cube.TECHNICAL |
| VaR-ES Cube | OriginalNotional.SUM__#__… | OriginalNotionalVaR-ES Cube.TECHNICAL |
| VaR-ES Summary Cube | MTM.SUM__#__… | MTMVaR-ES Summary Cube.TECHNICAL |
| Sensitivity Cube | Notional.SUM__#__… | NotionalSensitivity Cube.TECHNICAL |
| Sensitivity Cube | OriginalNotional.SUM__#__… | OriginalNotionalSensitivity Cube.TECHNICAL |
| PLCube | Notional.SUM__#__… | NotionalPLCube.TECHNICAL |
| PLCube | OriginalNotional.SUM__#__… | OriginalNotionalPLCube.TECHNICAL |
nameTechnicalMeasure(String) method is a default method on IMeasureParameters. If a custom suffix is needed, override it in your IMeasureParameters implementation.
Clash risk for deprecated factory overloads. The deprecated no-arg factory methods INotionalMeasures.notional(), INotionalMeasures.originalNotional(), and IVaRESMeasures.mtmNative() produce unqualified names such as Notional.TECHNICAL. If an extender calls a deprecated overload from more than one cube, startup will fail with a duplicate-measure-name error. Migrate to the cube-aware overloads (notional(String cube), originalNotional(String cube), mtmNative(String cube)) without delay.
Deprecated APIs
The following APIs have been deprecated for removal in a future version:| Deprecated API | Replacement |
|---|---|
IMeasureParameters.getFxShiftFactor() | Configure mr.fx.shift-factor — now applied in the IFxShift service |
FxRiskPostProcessorBuilder.withShiftFactor(double) | No replacement needed — shift factor is applied in the IFxShift service |
ApplyShiftPostProcessorBuilder.withShiftFactor(double) | No replacement needed — shift factor is applied in the IFxShift service |
FXShift(String, IMarketDataRetrievalService, String, IRiskFactorFXPairTranslator) | FXShift(IFxProperties, IMarketDataRetrievalService, IRiskFactorFXPairTranslator) |
INotionalMeasures.notional() | INotionalMeasures.notional(String cube) — pass the cube name to avoid clashes |
INotionalMeasures.originalNotional() | INotionalMeasures.originalNotional(String cube) — pass the cube name to avoid clashes |
IVaRESMeasures.mtmNative() | IVaRESMeasures.mtmNative(String cube) — pass the cube name to avoid clashes |
FXShift constructor change
TheFXShift class now accepts IFxProperties instead of individual String parameters for the common currency. The new constructor also reads the shift factor from IFxProperties.getShiftFactor().
If you instantiate FXShift directly, update your code:
Properties added
mr-common-config module:| Property | Default value | Description |
|---|---|---|
mr.migration.export.enabled | true | Whether the MRMigrationHelperRestController (the /migrationHelper REST endpoints) is registered. Set to false to remove the migration helper from deployments that don’t need it. |
mr.migration.export.base-dir | java.io.tmpdir | Allowed base directory for CSV file exports. Any outputDirectory requested by POST /migrationHelper/extract* that resolves outside this path after normalization is rejected. |
mr.fx.enable-fx-risk-on-var-cube | true | Whether FX risk is included in the VaR cube computation. Set to false to exclude FX risk from both the complete and summary VaR chains, and to suppress synthetic *_FX Risk Factor members. |
Exclude FX risk from the VaR cube
The new propertymr.fx.enable-fx-risk-on-var-cube defaults to true. No action is required to preserve the current behavior.
To opt in and exclude FX risk from the VaR cube, set the property to false:
false is incompatible with mr.fx.enable-var-base-currency-dimension=true. The application will fail at startup if both properties are set together.
In distributed deployments, set this property on each data node that hosts the VaR cube. Keep the value consistent across all data nodes to avoid schema reconciliation failures at startup. Setting the property on a query node alone has no effect.
6.0.6 to 6.0.7
Upgrading from version 6.0.6, see Atoti Market Risk 6.0.7 Release Notes. Atoti Market Risk uses Atoti Server 6.1.17 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.Summary
- Atoti Server upgrade: Atoti Server has been upgraded to 6.1.17.
- Base Currency dimension extracted to conditional beans: The Base Currency dimension is now registered as a conditional Spring bean in each cube’s dimension config, replacing inline static method calls. Action required if you override dimension config classes or call
BaseCurrencyDimensionConfig.fxEffectDimension()directly in custom dimension builders. - Sensitivity cube configuration refactoring: Taylor-specific dimensions have been extracted into a separate configuration class. Action required if you have custom extensions.
- New CubeMoveKind date members available:
Previous=CUB+1andNext=CUB-1can now be configured inmr.taylor.market-shift-date-specificandmr.cubes.levels.day-to-day-membersto enable cube-relative date shifting. These are opt-in features that must be explicitly added to your configuration. - JGroups authentication class changed: The JGroups
AUTHprotocol class has been changed fromAtotiAuthTokentoSharedSecretAuthToken. Action required if you have custom JGroups protocol XML files.
Base Currency dimension extracted to conditional beans
The Base Currency dimension was previously added to each cube via inline calls toBaseCurrencyDimensionConfig.fxEffectDimension() inside dimension builder lambdas. These inline calls have been removed. The dimension is now registered as a separate conditional Spring bean in each cube’s dimension config class.
The affected classes are:
VarESCubeDimensionsConfig: new beanvarFxEffectDimension, annotated with@ConditionalOnVarFxDimensionEnabledVarESSummaryCubeDimensionsConfig: new beanvarSummaryFxEffectDimension, annotated with@ConditionalOnVarFxDimensionEnabledSensiCubeDimensionsConfig: new beansensiFxEffectDimension, annotated with@ConditionalOnSensiFxDimensionEnabledSensiSummaryCubeDimensionsConfig: new beansensiSummaryFxEffectDimension, annotated with@ConditionalOnSensiFxDimensionEnabledBaseCurrencyDimensionConfig: the commonfxEffectDimensionbean is now annotated with@ConditionalOnSensiFxDimensionEnabled
BaseCurrencyDimensionConfig.fxEffectDimension() from dimension builder lambdas and define a dedicated conditional bean instead.
If you call BaseCurrencyDimensionConfig.fxEffectDimension() directly in a custom dimension builder, replace that call with a bean definition annotated with the appropriate condition annotation, or use the static overload that accepts individual parameters such as displayCurrencies and localRiskMember.
No action required if:
- You use the standard Market Risk configuration without custom extensions
- You do not override any of the dimension config classes listed above
Configuration changes
Taylor dimensions extraction
The following three dimensions have been moved fromSensiCubeDimensionsConfig to a new configuration class TaylorDimensionsConfig:
- Scenario Analysis Hierarchy
- Liquidity Horizon Hierarchy
- Scenario Set Hierarchy
TaylorMeasuresConfig.
Impact on custom projects:
If you have custom configuration that extends or overrides SensiCubeDimensionsConfig, you may need to update your imports.
If you have custom configuration that directly references these dimension beans, ensure your configuration imports TaylorDimensionsConfig or has a dependency on TaylorMeasuresConfig.
No action required if:
- You use the standard Market Risk configuration without custom extensions
- You do not override Sensitivity cube dimension configuration
New CubeMoveKind date members available
TheCUB prefix is now supported for date shifting in the following properties. The CUB prefix stands for Cube-relative shift: it resolves to the nearest date that actually exists in the cube (dates are sorted in the cube’s natural descending order, from most recent to oldest), as opposed to DAY which shifts by a fixed number of business days.
mr.taylor.market-shift-date-specific(MarketShiftDate hierarchy)mr.cubes.levels.day-to-day-members(Day-to-Day hierarchy)
Previous=CUB+1 and/or Next=CUB-1 to your configuration:
Previous the default member, place it first in the list.
Dependency upgrades
JGroups authentication class change
SharedSecretAuthToken replaces AtotiAuthToken
The JGroupsAUTH protocol class has been changed from com.activeviam.activepivot.dist.impl.internal.distribution.security.impl.AtotiAuthToken to com.activeviam.common.distribution.security.SharedSecretAuthToken.
If you have custom JGroups protocol XML files (protocol-tcp.xml or protocol-udp.xml), update the AUTH element:
6.0.5 to 6.0.6
Upgrading from version 6.0.5, see Atoti Market Risk 6.0.6 Release Notes. Atoti Market Risk uses Atoti Server 6.1.15 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.Summary
- Atoti Server upgrade: Atoti Server has been upgraded from 6.1.13 to 6.1.15.
- Atoti What-If upgrade: Atoti What-If has been upgraded to 4.1.6-AS6.1. To migrate any custom What-If configuration, see the migration guides for this release.
- Common-lib upgrade: Common-lib has been upgraded from 2.1.11-AS6.1 to 2.1.12-AS6.1.
- Scenario handling rework: Scenario index decoding now uses a join-based approach via
ScenarioNameFromJoinPostProcessor, replacing the old store-basedScenarioNamePostProcessor. - DirectQuery incremental refresh: The
IRefreshTaskinterface has a new method signature accepting aChangeDescriptionparameter. - Branch permissions config moved:
ActivePivotBranchPermissionsManagerConfighas moved frommr-common-configtomr-application. - Measure parameter constructors updated:
VaRMeasureParametersandPnLMeasureParametersconstructors now accept anIFxPropertiesobject instead of separate FX parameters.
API updates
IRefreshTask interface change
The IRefreshTask functional interface has been updated. The old refresh() method is now deprecated and replaced by refresh(@Nullable ChangeDescription changeDescription). If you have custom implementations of IRefreshTask, update them to accept the new ChangeDescription parameter:
ChangeDescription parameter allows incremental refresh operations. Pass null if a full refresh is desired.
VaRMeasureParameters constructor change
The VaRMeasureParameters constructor that accepted separate String fxRiskClass and Double defaultFxRate parameters has been deprecated. The new constructor accepts an IFxProperties object instead:
PnLMeasureParameters. If you have custom measure parameter beans (e.g. in classes extending VarMeasureParametersBeans or PnlMeasureParametersBeans), update the constructor calls accordingly.
RiskDimension.getRiskClassesHierarchyWithNA() deprecated
The method RiskDimension.getRiskClassesHierarchyWithNA() has been deprecated. Its behaviour (contributing unknown members with AUTO_CONTRIBUTE_UNKNOWN_MEMBER_ALWAYS) has been merged into getRiskClassesHierarchy(). Replace any calls to getRiskClassesHierarchyWithNA() with getRiskClassesHierarchy().
Deprecated classes and methods
The following deprecations have been introduced in 6.0.6. These will be removed in a future release.ActivePivotBranchPermissionsManagerConfig in mr-common-config
The class com.activeviam.mr.common.datastore.permissions.ActivePivotBranchPermissionsManagerConfig in the mr-common-config module has been deprecated (@Deprecated(forRemoval = true, since = "6.0.6")). The replacement class is com.activeviam.mr.application.config.security.ActivePivotBranchPermissionsManagerConfig in the mr-application module. The new implementation uses AtotiSecurityProperties to dynamically resolve admin roles instead of a hardcoded list.
If you have a custom implementation of branch permissions, migrate to extend or replace the new mr-application version.
Scenario measure methods
Several scenario-related methods have been deprecated in favour of new “Ex” variants that use theScenarioNameFromJoinPostProcessor (join-based) instead of the old ScenarioNamePostProcessor (store-based):
| Interface | Deprecated method | Replacement |
|---|---|---|
IVaRESMeasures | worstScenario() | worstScenarioEx() |
IVaRESMeasures | bestScenario() | bestScenarioEx() |
IFixedConfidenceMeasures | scenariosConfidence(String) | scenariosConfidenceEx(String) |
IRiskClassFixedConfidenceMeasures | scenariosConfidence(String, String) | scenariosConfidenceEx(String, String) |
IContextualMeasures | contextScenarios() | contextScenariosEx() |
IContextualMeasures | contextScenarios(String, String) | contextScenariosEx(String, String) |
IMeasureResolver.getMeasureBeans()
The method getMeasureBeans() has been deprecated (since 6.0.5). Use getCopperBeans() instead, which returns Publishable<?> beans (a broader scope including both measures and non-measure copper elements).
Scenario join-based configuration
Scenario hierarchies and scenario name decoding have been reworked to use a left-join approach. This is the most significant architectural change in 6.0.6.New classes
JoinScenarioHierarchy(mr-common-config): Provides base left-join configurations for scenario analysis, liquidity horizon, and scenario set hierarchies.JoinScenarioHierarchyVaR(mr-var-config): VaR cube-specific scenario join configuration.JoinScenarioHierarchySensi(mr-sensi-config): Sensitivity cube-specific scenario join configuration.ScenarioNameFromJoinPostProcessor(mr-common-lib): New post-processor that decodes scenario indices using the join rather than direct store lookups. ImplementsIDistributedPostProcessorfor distributed cube support.
New Spring qualifier constants
New qualifier constants have been added toSpringConstants for injecting scenario store joins and hierarchies:
| Constant | Description |
|---|---|
SP_QUALIFIER__SCENARIO_STORE_NAME_JOIN_VAR | Scenario store join for VaR cube |
SP_QUALIFIER__SCENARIO_STORE_NAME_JOIN_VAR_SUMMARY | Scenario store join for VaR Summary cube |
SP_QUALIFIER__SCENARIO_STORE_NAME_JOIN_SENSI | Scenario store join for Sensitivity cube |
SP_QUALIFIER__SCENARIO_STORE_NAME_JOIN_SENSI_SUMMARY | Scenario store join for Sensitivity Summary cube |
SP_QUALIFIER__SCENARIO_ANALYSIS_HIERARCHY_* | Scenario analysis hierarchy for each cube |
SP_QUALIFIER__LIQUIDITY_HORIZONS_HIERARCHY_* | Liquidity horizon hierarchy for each cube |
Cube dimension configuration changes
The dimension configuration classes for all cubes have been updated to use the new join-based scenario hierarchies:VarESCubeDimensionsConfig: New beansscenarioAnalysisHierarchyVaR()andliquidityHorizonHierarchyVaR()usingJoinScenarioHierarchyVaR. The deprecated methodscenarioSetLeftJoinVaR()will be removed in a future release.VarESSummaryCubeDimensionsConfig: Updated to useJoinScenarioHierarchyVaRfor summary cube.SensiCubeDimensionsConfig: Updated to useJoinScenarioHierarchySensi.SensiSummaryCubeDimensionsConfig: Updated to useJoinScenarioHierarchySensifor summary cube.
mr.fx.enable-var-base-currency-dimension=true.
EsVaRMetricLevelsProperties interface extension
The EsVaRMetricLevelsProperties interface has four new default methods:
| Method | Default return |
|---|---|
getRiskFactor() | null |
getRiskClass() | null |
getSensitivityName() | null |
getSensitivityTypeLevel() | null |
DirectQuery incremental refresh
This release introduces support for incremental refresh of DirectQuery data sources. TheMRDirectQueryRestServices class now propagates ChangeDescription objects through to all IRefreshTask instances.
If you have custom refresh tasks or extend the DirectQuery REST services, update your implementations to handle the new ChangeDescription parameter. See the incremental refresh documentation for details.
Dependency version changes
| Dependency | 6.0.5 | 6.0.6 |
|---|---|---|
| Atoti Server | 6.1.13 | 6.1.15 |
| Atoti What-If | 4.0.4-AS6.1 | 4.1.6-AS6.1 |
| Common-lib | 2.1.11-AS6.1 | 2.1.12-AS6.1 |
6.0.4 to 6.0.5
Apply patched Atoti Server 6.1.13 classes.
Atoti Server 6.1.13 has a few issues which require the application of patched classes to every project using DirectQuery features. We provide these patched classes in themr-application module. If you are not using this module as-is, please copy the following classes to the application module of your project:
mr-application/src/main/java/com/activeviam/database/composite/internal/version/CompositeVersionAccessor.java
mr-application/src/main/java/com/activeviam/databasecache/private_/database/SqlVersionAccessorWithCache.java
SensitivityType hierarchy
The new property named mr.sensi.display-taylor-var-by-sensitivity is by default set to true.
If set to false, the Taylor VaR by Sensitivity measures are not displayed in the Sensitivity cube.
The SensitivityType hierarchy is created to replace this set of measures.
Set the property mr.sensi.display-sensitivity-type-hierarchy to false to hide this new hierarchy.
For instance Delta Taylor VaR measure is replaced by Taylor VaR with filter on sensitivityType = Delta.
If the FX effect is categorized as “Delta FX”, it is important to hide the original [Sensitivity] Taylor VaR measures by setting mr.sensi.display-taylor-var-by-sensitivity=false.
The FX effect is only moved on the [Sensitivities].[SensitivityType] hierarchy but not on the sensitivities specific measures.
If the hierarchies used to translate the FX effect must contain the desired location or be virtual.
To do so, the Risk Class hierarchy has ‘N/A’ as default parameter that is used when the ‘FX’ member is absent.
More precisely, when mr.fx.enable-fx-risk-location-shift=true, a location can only be displayed if the respective hierarchies contains the correct members, or are declared as virtual. Otherwise, the FX risk may not be visible in the cube.
To do so, the following analysis hierarchy HierarchyWithFxRiskFactors can be used to add the FX risk factor members to the
Risk Factors@Risk hierarchy. In the event that the member is not present on the hierarchy and this one is not declared as virtual, the default member will be used.
To display the default member, the property AUTO_CONTRIBUTE_UNKNOWN_MEMBER_PROPERTY=AUTO_CONTRIBUTE_UNKNOWN_MEMBER_ALWAYS must be set on the hierarchy.
The translation between the currency pair and the risk factor is done by the IRiskFactorFXPairTranslator bean. It may be customized to fit your risk factor naming convention.
Please see the Relation between RiskFactor and currency pair chapter for more details.
Properties added
Sensitivities module properties:| Property | Default value | Description |
|---|---|---|
| mr.cubes.levels.base-currency | Base Currency@Base Currency@Base Currency | The name of the Base Currency hierarchy. |
| mr.cubes.levels.fx-effect | FX Attribution@FX Effect@Base Currency | The name of the FX Effect hierarchy. |
| mr.cubes.levels.sensitivity-type-level | SensitivityType@SensitivityType@Sensitivities | The name of the SensitivityType hierarchy. |
| mr.fx.enable-fx-risk-location-shift | true | The forex conversion of the VaR generates a specific risk; if true, this risk is classified under Delta/FX, if false, it stays at the current location. |
| mr.fx.enable-var-base-currency-dimension | false | If true, the Base Currency and the FX Effect hierarchies are created. |
| mr.fx.fx-risk-member | FX Effect | Name of the member of FX Effect that holds the forex conversion risk. |
| mr.fx.local-risk-member | Local Risk | Name of the member of FX Effect that holds the local specific risk. |
| mr.fx.risk-disable-member | Local Risk | Name of the member of Base Currency used to turn off the forex risk. |
| mr.fx.risk-display-member | Display Ccy | Name of the member of Base Currency used to link the forex risk with the display currency. |
| mr.fx.sensitivity-name-member | Delta | Name of the Sensitivity member that holds the forex risk. |
| mr.sensi.display-sensitivity-type-hierarchy | true | The SensitivityType hierarchy is visible on the UI. |
| mr.sensi.display-taylor-var-by-sensitivity | true | The Taylor VaR by sensitivity type metrics are displayed, filtering by SensitivityType should replace them. |
| mr.fx.shift-factor | 1.0 | The scale factor applied to FX shift when computing FX Effect of Taylor VaR. |
- The Spring properties
mr.data-load.csvhave been removed, and the default Data Connector properties are now used instead. - The source definition is described in the
application.yamlconfiguration file. For convenience, the content specific to Data Connectors is set in theapplication-dlc-local-csv.yamlandapplication-dlc-azure-csv.yamlfile. - The topics used by Atoti Market Risk are defined via Java beans of type
ILoadingTopicDescriptionorIUnloadTopicDescription. The topics defined asILoadingTopicDescriptionare still using thefile-patternsConfiguration Properties, which you can override in theapplication.yamlconfiguration 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.3.1 . 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:
| Property name |
|---|
directquery.cache.max-slice-count |
directquery.cache.max-slice-count-default |
| Property | Default value | Description |
|---|---|---|
| mr.enable.cubes.combined | true | Enables the MRCombinedCube when set to true. This property has been created to rename and in a future release replace the now deprecated property mr.enable.cubes.common. In this release either property can be used and will have the same effect. |
| mr.enable.dtd-absolute-increase | false | If true, the day to day increase formula uses an abolute value. |
| Property | Description |
|---|---|
| mr.enable.cubes.common | This has been replaced by mr.enable.cubes.combined as this is more consistent with the name of the MRCombinedCube. In this release either property can be used and will have the same effect. |
| Cube | Measure | Details |
|---|---|---|
| PLCube, MRCombinedCube | DTD PnL | This measure has returned to the PnL Values folder. It was unintentionally removed in Atoti Market Risk 6.0.0. |
| PLCube, MRCombinedCube | LTD PnL | This measure has returned to the PnL Values folder. It was unintentionally removed in Atoti Market Risk 6.0.0. |
| PLCube, MRCombinedCube | MTD PnL | This measure has returned to the PnL Values folder. It was unintentionally removed in Atoti Market Risk 6.0.0. |
| PLCube, MRCombinedCube | YTD PnL | This measure has returned to the PnL Values folder. It was unintentionally removed in Atoti Market Risk 6.0.0. |
| Module | Class name |
|---|---|
| mr-application | DataLoadControllerConfig |
| mr-application | DataLoadControllerFileConfig |
| mr-common-config | CSVProperties |
| mr-common-config | ACSVSourceConfig |
| mr-common-config | AdjustmentAzureCsvSourceConfig |
| mr-common-config | AdjustmentCsvSourceConfig |
| mr-common-config | AdjustmentCsvSourceParametersProviderConfig |
| mr-common-config | CommonCsvSourceParametersProviderConfig |
| mr-common-config | CubeMarketDataCsvSourceParametersProviderConfig |
| mr-common-config | CurveMarketDataCsvSourceParametersProviderConfig |
| mr-common-config | FxRateMarketDataCsvSourceParametersProviderConfig |
| mr-common-config | SpotMarketDataCsvSourceParametersProviderConfig |
| mr-common-config | SurfaceMarketDataCsvSourceParametersProviderConfig |
| mr-common-config | AdjustmentLocalCsvSourceConfig |
| mr-common-config | CommonAzureCsvSourceConfig |
| mr-common-config | CommonCsvSourceConfig |
| mr-common-config | CommonLocalCsvSourceConfig |
| mr-common-config | AzureSourceConfig |
| mr-common-config | ChannelParameters |
| mr-common-config | ChannelParametersHolder |
| mr-common-config | ChannelParametersHolderOperator |
| mr-common-config | Glob |
| mr-common-config | LocalSourceConfig |
| mr-common-config | MessageChannelCreator |
| mr-common-config | SimpleCsvSourceConfig |
| mr-common-config | SimpleJdbcSourceConfig |
| mr-common-config | SimpleSourceConfig |
| mr-common-config | TopicConfig |
| mr-common-config | DataLoadControllerConfigurator |
| mr-common-config | IAzureCsvSourceConfig |
| mr-common-config | ICsvSourceConfig |
| mr-common-config | IJdbcSourceConfig |
| mr-common-config | ILocalCsvSourceConfig |
| mr-common-config | ISourceConfig |
| mr-common-config | ISourceConfiguration |
| mr-common-config | ITupleFieldsAware |
| mr-common-config | StoreAndScopeToConditionConverter |
| mr-common-config | TopicAliasDefines |
| mr-common-config | TopicToScopeToLoadConverter |
| mr-common-config | TopicToScopeToRemoveWhereConditionConverter |
| mr-common-config | ACsvSourceParametersProvider |
| mr-common-config | ATopicParameters |
| mr-common-config | CsvColumnsProvider |
| mr-common-config | CsvColumnsProviderFunction |
| mr-common-config | CsvPublisherProvider |
| mr-common-config | CsvPublisherProviderFunction |
| mr-common-config | CsvTopicColumns |
| mr-common-config | CsvTopicPublisher |
| mr-common-config | @ConditionalOnAzureData |
| mr-common-config | @ConditionalOnAzureSource |
| mr-common-config | @ConfigurationDirectQueryWithAzureSource |
| mr-common-config | @ConditionalOnLocalData |
| mr-common-config | @ConditionalOnLocalSource |
| mr-common-config | @ConditionalOnDirectQueryWithLocalSource |
| mr-pnl-config | PnLAzureCsvSourceConfig |
| mr-pnl-config | PnLCsvSourceConfig |
| mr-pnl-config | PnLLocalCsvSourceConfig |
| mr-pnl-config | PnLSummaryAzureCsvSourceConfig |
| mr-pnl-config | PnLSummaryCsvSourceConfig |
| mr-pnl-config | PnLSummaryLocalCsvSourceConfig |
| mr-pnl-config | SignoffSummaryPnlPublisher |
| mr-pnl-config | PnLCsvSourceParametersProviderConfig |
| mr-pnl-config | PnLSummaryCsvSourceParametersProviderConfig |
| mr-sensi-config | ASensiCsvSourceConfig |
| mr-sensi-config | SensiAzureCsvSourceConfig |
| mr-sensi-config | SensiLocalCsvSourceConfig |
| mr-sensi-config | ASensiPnLCsvSourceConfig |
| mr-sensi-config | SensiPnLAzureCsvSourceConfig |
| mr-sensi-config | SensiPnLLocalCsvSourceConfig |
| mr-sensi-config | ASensiImportCsvSourceConfig |
| mr-sensi-config | SensiImportAzureCsvSourceConfig |
| mr-sensi-config | SensiImportLocalCsvSourceConfig |
| mr-sensi-config | ScalarSensiCsvSourceParametersProviderConfig |
| mr-sensi-config | SignoffSummarySensiPublisher |
| mr-sensi-config | BCCubeMarketDataCsvSourceParametersProviderConfig |
| mr-sensi-config | BCCurveMarketDataCsvSourceParametersProviderConfig |
| mr-sensi-config | BCFxRateMarketDataCsvSourceParametersProviderConfig |
| mr-sensi-config | BCSpotMarketDataCsvSourceParametersProviderConfig |
| mr-sensi-config | BCSurfaceMarketDataCsvSourceParametersProviderConfig |
| mr-sensi-config | DirectQuerySensiCsvSourceParametersProviderConfig |
| mr-sensi-config | SensiCsvSourceParametersProviderConfig |
| mr-sensi-config | SensiSummaryCsvSourceParametersProviderConfig |
| mr-sensi-config | SourceParametersProviderConfig |
| mr-sensi-config | SensiSummaryOnMainCsvSourceParametersProviderConfig |
| mr-var-config | VaRAzureCsvSourceConfig |
| mr-var-config | VaRCsvSourceConfig |
| mr-var-config | VaRLocalCsvSourceConfig |
| mr-var-config | VaRSummaryAzureCsvSourceConfig |
| mr-var-config | VaRSummaryLocalCsvSourceConfig |
| mr-var-config | VarSummarySourceConfiguration |
| mr-var-config | SignoffSummaryVarPublisher |
| mr-var-config | VaRCsvSourceParametersProviderConfig |
| mr-var-config | VaRSummaryCsvSourceParametersProviderConfig |
| Module | Old name | New Name |
|---|---|---|
| mr-common-config | AdjustmentSourceConfiguration | AdjustmentCsvSourceConfig |
| mr-common-config | CommonSourceConfiguration | CommonCsvSourceConfig |
| mr-common-config | MarketDataSourceConfig | MarketDataCsvSourceConfig |
| mr-pnl-config | PnLSourceConfiguration | PnLCsvSourceConfig |
| mr-sensi-config | SensiSourceConfiguration | SensiCsvSourceConfig |
| mr-sensi-config | SensiSummarySourceConfiguration | SensiSummaryCsvSourceConfig |
| mr-sensi-config | AllBackwardsCompatibleMarketDataSources | AllBackwardsCompatibleMarketDataCsvLoadConfig |
| mr-sensi-config | SensiCsvSourceParametersProviderConfig | SourceParametersProviderConfig |
| mr-var-config | VarSourceConfiguration | VarCsvSourceConfig |
Refactor of SensiMeasureParameters
With the removal of the vector data model, the SensiMeasureParameters constructor has been refactored to remove the boolean isVector field.
DirectQuery configuration
TheDirectQueryActivePivotConfig 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 theMarketRiskConfig 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 constantERROR_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 themr-common-lib module:
"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 classStartupSpringBeanOrder 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.
Fix for trailing white space incorrectly added with empty string suffix
The methods*Suffix in the class VaRMetricParametersAndNames now trim the generated measure names to avoid the incorrect addition of a trailing white space.
DirectQuery Cache
This release includes a new DirectQuery caching mechanism that dynamically loads slices of data into memory to improve the performance of retrievals from external stores (stores not joined to the base store). Currently, this only supports market data stores - those from Atoti Market Data and the additional stores from themr-sensi-config module. Additionally, this is a preview feature that is disabled by default. To enable the feature, set the property: mr.enable.preview.directquery-cache=true.
When you are using the cache, a “slice” of market data will be stored in memory when it is required for a query. A slice corresponds to all the market data for a given combination of asOfDate and marketDataSet. These slices will be added and removed from the cache based on the maximum number of slices that can be held at any one time. You can configure the maximum number of slices for a particular table with the directquery.cache.max-slice-count property, otherwise the value set in the directquery.cache.max-slice-count-default property will be used.
Scalar reference data
The reference dataset that is provided inmr-application/src/main/resources/data has been updated so that sensitivities are now in a scalar format rather than vectorized. This is primarily for clarity now that the Sensitivities Cube no longer supports a vectorized model. It is still possible to provide sensitivity vectors as input, but be aware that these will be converted and stored as scalar values in the application.
Distribution and measures
Atoti Market Risk cubes and their summary variants (for example theVaR-ES Cube and the VaR-ES Summary Cube) are created as a horizontal distribution. This enables Atoti Market Risk to show a single measure (for example VaR) with some dates coming from the full cube and other date contributions from the summary cube. This is a useful feature, but it comes with a warning. Atoti Server expects that all cubes in a horizontal distribution have exactly identical measure chains. If they do not, this can lead to errors or incorrect results when queries are executed on a query cube with both cubes. The measure chains in Atoti Market Risk are not identical between main and summary cubes but, in this release, we have made changes to avoid these failure scenarios. We strongly recommend that, if you are using summary cubes, you add any new measures both to the main and summary cubes.