Introduction

Atoti What-If

Atoti What-If is a solution for running hypothetical simulations on live Atoti data without affecting production data. It is available across Atoti solutions and provides a consistent, governed approach to scenario analysis for both end users and the developers who build and maintain Atoti applications. This page is intended for both audiences: end users who want to understand what What-If can do, and developers who need to integrate or extend it.

Key capabilities include:

  • Isolated simulation environment. Each simulation runs on a dedicated branch of the datastore. Hypothetical changes never affect the master data set and cannot be merged back into it.
  • Incremental recalculation. Only the metrics affected by a change are recalculated. There is no need to reload or reprocess the full data set.
  • Applicable at any level in the hierarchy. Simulations can be run at any point in the in-memory data. The effects propagate up to higher levels automatically.
  • Spring Boot starter integration. From version 5.0.0, a Spring Boot starter provides auto-configuration with sensible defaults, reducing integration effort for developers.

Who is Atoti What-If for?

Atoti What-If is designed for anyone who works with Atoti solutions and needs to model the impact of changes before committing to them.

Typical users include:

  • Risk managers and analysts running scenario simulations within an Atoti application
  • Developers integrating What-If into an existing Atoti application
  • Developers implementing custom simulation use cases on top of the What-If module

Common use cases include:

  • Scaling trade values, sensitivities, or risk parameters by a percentage or absolute amount
  • Substituting trades or data vectors to test alternative portfolio compositions
  • Rolling forward historical data to a new as-of date
  • Modifying hierarchy structures such as desk models or parent-child relationships

How does Atoti What-If work?

When a simulation is created, What-If produces a cloned branch of the master data set. The master is loaded daily from production sources and serves as the baseline from which all simulations evolve. Changes applied within a simulation are reflected only in that branch. The master is never touched.

Users can manage simulations and their branches through the What-If Manager widget. This widget is prebuilt into certain Atoti solutions. It lists all simulations by name, with their branch name, creation details, execution date, and status. Users can manage any branches created by What-If from this view.

Developers can integrate Atoti What-If in two ways:

  • Spring Boot starter (recommended). Available from version 5.0.0. Provides auto-configuration through application.yml with sensible defaults. The application must supply an IDatabaseService bean and an IWhatIfPersistenceProperties bean.
  • Manual configuration. For advanced scenarios or non-Spring Boot applications, all required beans are defined explicitly.

In a clustered setup, components provided within Atoti What‑If can be leveraged for distributed applications. When enabled through properties, Atoti What‑If provides a distributed version of the Atoti Database Service API and wires other components to leverage this implementation.

Custom use cases can be implemented by composing the supported simulation operations. See the What-If Components and What-If Implementation Example documentation for details. Additional customization is possible by implementing simulations from scratch, provided that a list of “actions” (as defined by the database service API) is created within a simulation.

What is the relationship to other Atoti products?

Atoti What-If is built on the Atoti Engine and communicates with it through the Atoti Server Database Service API. The surrounding application is configured using either the Atoti Java SDK or the Atoti Python SDK. What-If features are surfaced to end users through Atoti UI, which hosts the What-If Manager widget.

  • Atoti Java SDK. Primary SDK for Java-based Atoti applications. What-If integrates directly with applications built using this SDK.
  • Atoti Python SDK. Alternative SDK for Python-based applications. What-If can equally be integrated in this context.
  • Atoti UI. The front end through which end users access What-If features, including the What-If Manager widget.
  • Atoti solutions. What-If is available across Atoti solutions, each of which includes prebuilt use cases specific to its domain.