Logo
Reference manual - version orea_version
DynamicInitialMarginCalculator Class Referenceabstract

Dynamic Initial Margin Calculator base class. More...

#include <orea/aggregation/dimcalculator.hpp>

Inheritance diagram for DynamicInitialMarginCalculator:

Public Member Functions

 DynamicInitialMarginCalculator (const QuantLib::ext::shared_ptr< InputParameters > &inputs, const QuantLib::ext::shared_ptr< Portfolio > &portfolio, const QuantLib::ext::shared_ptr< NPVCube > &cube, const QuantLib::ext::shared_ptr< CubeInterpretation > &cubeInterpretation, const QuantLib::ext::shared_ptr< AggregationScenarioData > &scenarioData, Real quantile=0.99, Size horizonCalendarDays=14, const std::map< std::string, Real > &currentIM=std::map< std::string, Real >(), Size dimCubeDepth=1)
virtual const map< string, Real > & unscaledCurrentDIM () const =0
 Model implied t0 DIM by netting set, does not need a call to build() before.
const map< string, Real > & currentIM () const
 t0 IM by netting set, as provided as an arguments
virtual void build ()=0
 Compute dynamic initial margin along all paths and fill result structures.
virtual void exportDimEvolution (ore::data::Report &dimEvolutionReport) const
 DIM evolution report.
virtual void exportDimDistribution (ore::data::Report &dimDistributionReport, const Size gridSize=50, const Real coveredStdDevs=5.0) const
 DIM distribution report.
virtual void exportDimCube (ore::data::Report &dimCubeReport) const
 DIM cube report.
const QuantLib::ext::shared_ptr< NPVCube > & dimCube () const
 DIM by nettingSet, date, sample returned as a regular NPV cube.
const vector< vector< Real > > & dynamicIM (const string &nettingSet) const
 DIM matrix by date and sample index for the specified netting set.
const vector< vector< Real > > & cashFlow (const string &nettingSet) const
 Cash flow matrix by date and sample index for the specified netting set.
const vector< Real > & expectedIM (const string &nettingSet) const
 Expected DIM vector by date for the specified netting set.
const std::map< std::string, Real > & getInitialMarginScaling () const
 Get the implied netting set specific scaling factors.

Protected Attributes

QuantLib::ext::shared_ptr< InputParametersinputs_
QuantLib::ext::shared_ptr< Portfolio > portfolio_
QuantLib::ext::shared_ptr< NPVCubecube_
QuantLib::ext::shared_ptr< NPVCubedimCube_
QuantLib::ext::shared_ptr< CubeInterpretationcubeInterpretation_
QuantLib::ext::shared_ptr< AggregationScenarioDatascenarioData_
Real quantile_
Size horizonCalendarDays_
map< string, Real > currentIM_
bool cubeIsRegular_
Size datesLoopSize_
std::set< stringnettingSetIds_
map< string, Real > nettingSetScaling_
map< string, vector< vector< Real > > > nettingSetNPV_
map< string, vector< vector< Real > > > nettingSetCloseOutNPV_
map< string, vector< vector< Real > > > nettingSetFLOW_
map< string, vector< vector< Real > > > nettingSetDeltaNPV_
map< string, vector< vector< Real > > > nettingSetDIM_
map< string, vector< Real > > nettingSetExpectedDIM_

Detailed Description

Dynamic Initial Margin Calculator base class.

Derived classes implement a constructor with the relevant additional input data and a build function that performs the DIM calculations for all netting sets and along all paths.

Constructor & Destructor Documentation

◆ DynamicInitialMarginCalculator()

DynamicInitialMarginCalculator ( const QuantLib::ext::shared_ptr< InputParameters > & inputs,
const QuantLib::ext::shared_ptr< Portfolio > & portfolio,
const QuantLib::ext::shared_ptr< NPVCube > & cube,
const QuantLib::ext::shared_ptr< CubeInterpretation > & cubeInterpretation,
const QuantLib::ext::shared_ptr< AggregationScenarioData > & scenarioData,
Real quantile = 0.99,
Size horizonCalendarDays = 14,
const std::map< std::string, Real > & currentIM = std::map< std::string, Real >(),
Size dimCubeDepth = 1 )
Parameters
inputsGlobal input parameters
portfolioDriving portfolio consistent with the cube below
cubeNPV cube resulting from the Monte Carlo simulation loop
cubeInterpretationInterpretation of the cube, regular NPV, MPoR grid etc
scenarioDataAdditional output of the MC simulation loop with numeraires, index fixings, FX spots etc
quantileVaR quantile, e.g. 0.99 for 99%
horizonCalendarDaysVaR holding period in calendar days
currentIMActual t0 IM by netting set used to scale the DIM evolution, no scaling if the argument is omitted

Member Function Documentation

◆ unscaledCurrentDIM()

virtual const map< string, Real > & unscaledCurrentDIM ( ) const
pure virtual

◆ build()

virtual void build ( )
pure virtual

Compute dynamic initial margin along all paths and fill result structures.

Implemented in DirectDynamicInitialMarginCalculator, DynamicDeltaVaRCalculator, DynamicSimmCalculator, FlatDynamicInitialMarginCalculator, and RegressionDynamicInitialMarginCalculator.

◆ exportDimEvolution()

virtual void exportDimEvolution ( ore::data::Report & dimEvolutionReport) const
virtual