PostProcessors

Atoti Server includes a key feature called post-processing, which provides the ability to evaluate business logic for each request to aggregated data . It is defined on the server side using Java code.

It is extremely flexible and can use the following types of data to compute its value:

  • Pre-aggregated data

  • Custom aggregations

  • Other PostProcessor results

  • External resources (eg share prices, FOREX)

User-defined aggregation functions and PostProcessors allow users to configure the exact data sets to be visualized for their business goals. Post-processor advantages include the following:

  • The user does not need to know if a measure is post-processed or pre-processed.

  • Written in Java, this allows PostProcessors to use many external systems and provides a lot more flexibility over MDX calculated measures.

  • Post-processing offers infinite possibilities for aggregation. It is very easy for Atoti Server’s PostProcessor to accurately compute the PnL of a trade, using real-time data streams (e.g. share prices and FOREX).

  • The results of any such computations can be aggregated across any dimension.

  • Post-processors are more flexible than traditional database stored procedures.

  • They always have a value and this value can depend on the query context.

Post-procesed measures

Some of the common business cases dealt with using PostProcessors are:

  • Simple arithmetic operations (e.g. calculating a ratio between levels)

  • Currency conversions (e.g. using external data to convert a trade’s currency to a common currency)

  • Presentation effects (e.g. hiding meaningless values from users)

  • Displays of market data (e.g. show the market data used in a currency conversion)

  • Running totals (e.g. showing how cash flows accumulate over a time)

  • Computing non-aggregating values (e.g.VaR)

  • Real-time market data updates (e.g. FX and P&L)

Postprocessors in Atoti Market Risk

The available PostProcessors are found in the *-lib modules, calculations packages. The resulting folders follow the pattern: /mr-*-lib/src/main/java/com/activeviam/mr/*/calculations/postprocessors/

The following table describes the PostProcessors available in Atoti Market Risk.

Postprocessor Description
DynamicTenorsAndMaturitiesPostProcessor Dynamically buckets from an input tenor and maturity to the appropriate destination tenors and maturities. Can be configured to bucket on a single dimension (either tenors or maturities).
AppendD2DDiffPostProcessor Appends the day-to-day difference value to a measure.
AsOfDateNeighbourValuePostProcessor Extension of the NeighborValuePostProcessor, which uses a day-to-day analysis hierarchy to select the AsOfDate to shift to. By default, it removes the cube filtering.
CoPPerPostProcessors Helper class containing definitions of CoPPer API measures to be wired into the Cube definition by the Starter module.
ConstantZeroPostProcessor Returns zero at any location, to allow usage as an underlying measure for analysis hierarchy PostProcessors.
DoubleDifferencePostProcessor Computes the difference between two double values. Used over a basic FormulaPostProcessor to allow for null checks.
DynamicTenorsAndMaturitiesPostProcessor Postprocessor that dynamically buckets from an input tenor and maturity to the appropriate destination tenors and maturities. Can be configured to bucket on a single dimension (either tenors or maturities).
ESIndicesPostProcessor Computes expected shortfall, the average of losses greater than the VaR of a given position.
FXPostProcessor Provides dynamic aggregation of values in multiple currencies, with conversion into a contextual reference currency.
FXVectorPostProcessor Provides dynamic aggregation of values in multiple currencies, with conversion into a contextual reference currency. Applied to vectors.
IncrementalVaRPostProcessor Computes incremental VaR, a measure of the change in the VaR of a parent portfolio should a sub-portfolio be removed from it.
ScenarioNamePostProcessor Queries the datastore and returns the scenario names for an array of indices.
TenorAndMaturityExpand Add-ons. These are Var and ES Sign-off adjustments applied at predefined levels in the hierarchies, for example, book / risk.
TenorExpand Expands a sensitivity measure along the tenor hierarchy.
UnderlyingMeasureSelectorPostProcessor Returns the valid Delta at the given location, between the aggregated vector, the tenor expansion, or the dynamically bucketed value.
VaRIndicesPostProcessor Computes the VaR index (or indices if we are interpolating) for a given PnL vector and confidence level.
VaRPostProcessor Computes the VaR for a given PnL vector and confidence level.
VectorAggregationPostProcessor Aggregates a vector.