Sensitivities Cube
The Sensitivities cube provides the “greeks” functionality of the Accelerator and comprises:
- A default data model for sensitivities
- Dynamic bucketing
- Real-time and trade events
- PnL Explain analysis
Default data model
Key points at a glance:
- The sensitivies have their own cube
- Each sensitivity is in a separate store
- Each store is fed by the relevant sensitivity input file
Input Files
Out of the box, the Market Risk Accelerator works with a predefined file format, CSV. If you produce your data in this format, you can load and use the Accelerator with no customizations needed. However, you can edit and configure the Accelerator to work with any format or file, database, source, and so on, that Atoti+ is compatible with.
Sample CSV input files are included in the source distribution. These files are loaded when testing the MR application and provide examples of each of the file types.
- Risk data: A separate file for each sensitivity. Contains snapshots
of portfolio sensitivities, JtD, and other risk metrics on the trade
(position) level.
note
For parallel loading, each measure (identified by the RiskType field) is in a separate file.
- Trade attributes: Contains reference data for all trades and positions for each date in the cube.
- Risk factors catalog: Contains reference data for risk factors. For example, source, whether modellable/non-modellable, etc.
- Tenors and maturities: Contains time points and labels to use for static and dynamic bucketing.
- Market data: Contains sensitivities either in native currency or in a reference currency. If the sensitivities have been converted to a reference currency by the risk engine, the data can be used directly in the calculations. If the sensitivities are in native currency, the Market Risk Accelerator can convert them to a reference currency
- The reference currency is controlled by a context value that the user can set at query time. The Market Risk Accelerator must be supplied with FX rates, which can be either explicit for every currency pair or expressed via a cross-currency.
- A set of FX rates must be supplied to the Market Risk Accelerator for every business date where there are sensitivities to be converted.
For full details of the input files, see Input file formats in the Cube Reference Guide
Datastore definitions
The datastore schema contains the following stores arranged in a star schema centered on the TradeSensitivities store as the base store.
This is detailed in
/mr-application/com/activeviam/mr/sensi/datastore/description/complete/SensiDatastoreDescriptionConfig.java
- Each sensitivity has its own datastore. The sensitivities comprise: Delta, Vega, Gamma, Vanna, and Volga.
- From this, we populate a “Trade Sensitivities” store, which is the base store. There is no file for this store, it is populated from a tuple publisher.
- The RiskFactorsCatalog store contains reference data for risk factors.
- Tenors and maturities stores: Provide details of static tenors and maturities respectively
- Dynamic tenors and maturities stores: Provide details of dynamic and tenors and maturities respectively
- Market data store
Cube dimensions and measures
The sensitivities have their own cube. For a full description of the dimensions and measures provided in the Sensitivities cube, see the Cube Reference Guide.
Dynamic bucketing
By default, the Accelerator aggregates sensitivities along the tenor ladders provided in the sensitivities input files. Additionally, you can select from a set of pre-configured time buckets that are defined as context values in the Accelerator to linearly allocate sensitivities to arbitrary vertices on the fly.
For more information, see the Context values in the Cube Reference Guide.
Vertices
The term vertex refers to a tenor or expiry/maturity point along which a risk factor sensitivity is mapped or projected.
Examples
- Interest rate delta: the vertices represent points along a risk-free yield curve
- Credit spread delta: the vertices represent points along a credit spread curve
- Commodity delta: the vertices represent time to maturity for a traded commodity
Linear interpolation to tenor ladders
A source bucket may not correspond to one distinct destination bucket, its value may have to be distributed (interpolated) over two destination buckets. For example, if sensitivities of hedges are produced by a risk system on a more granular level. Linear interpolation to prescribed points has been implemented in the MR libraries based on a 30/360 day count convention.
Other interpolation methods and day count conventions can be implemented as needed in the client project by implementing the respective configuration classes.
Real-time and trade events
By default, the MR application publishes snapshots of the sensitivities.
Alternatively, the supports incremental real-time updates of individual sensitivities if available from risk engine. Updates of the sensitivities records need to be coupled with trade termination events, setting the existing trade sensitivities to zero.
P&L Explain
The P&L Explain process aims to quantify the changes in the P&L from one business day to the next, based on the closing prices for each day and show the impact of each input (each change in the quote) in terms of P&L.
For example, the portion of P&L due solely to the change of one particular quote (for example, the EUR SWAP LIBOR 3Y)
The process begins with aggregation of the greeks and then uses those values in a Taylor expansion to predict the expected one-day change in P&L using the actual market data shift over one day.
Methodology
In the decomposition of P&L, the market data impact represents the change in the portfolio value from market data shifts during the day.
To calculate the market data impact on the P&L, the source of the P&L is further decomposed using Greeks and a Taylor expansion approach, which aims at allocating a P&L number to each individual quote.
Shifts and shift factors
The Accelerator supports both relative and absolute market data shifts (for more information, see the P&L impact table below). This is configurable and extendable.
The shift factor default is 1, but is configurable.
The following table shows the P&L impact calculations for each risk class, where qn is the market data quote for a given day n.
Risk class | How sensitivities are represented | 1st order Taylor approximation | 2nd order Taylor approximation |
---|---|---|---|
Equity, FX | Cash equivalent positions | $(q2/q1-1) * sens$ | 1/2(q2/q1-1) 2*sens |
IR, credit, repo curves | Provided in $/bp | (q2-q1) * sens | 1/2 (q2-q1) 2 * sens |
Vega | $/vol point | (q2-q1) * sens | 1/2 (q2-q1) 2 * sens |
DHS computation
For negative interest rates, the Accelerator uses the following DHS (Displaced Historical Simulation) computations, where a is a shift value that can be configured per risk class.
1st order Taylor approximation | 2nd order Taylor approximation |
---|---|
sens*[( q2+ a)/(q1 + a) -1] | ([( q2+ a)/(q1 + a) -1]) 2*sens |
Customizing the methodology
In the Market Risk Accelerator, you can configure the methodology to use in the greek-based-pl-formula-rules.properties file. For more information, see greek-based-pl-formula-rules.properties.