Dynamic Initial Margin Calculator using polynomial regression. More...
#include <orea/aggregation/dimregressioncalculator.hpp>
Public Member Functions | |
RegressionDynamicInitialMarginCalculator (const boost::shared_ptr< InputParameters > &inputs, const boost::shared_ptr< Portfolio > &portfolio, const boost::shared_ptr< NPVCube > &cube, const boost::shared_ptr< CubeInterpretation > &cubeInterpretation, const boost::shared_ptr< AggregationScenarioData > &scenarioData, Real quantile, Size horizonCalendarDays, Size regressionOrder, vector< string > regressors, Size localRegressionEvaluations=0, Real localRegressionBandWidth=0, const std::map< std::string, Real > ¤tIM=std::map< std::string, Real >()) | |
map< string, Real > | unscaledCurrentDIM () override |
Model implied t0 DIM by netting set, does not need a call to build() before. | |
void | build () override |
Compute dynamic initial margin along all paths and fill result structures. | |
void | exportDimEvolution (ore::data::Report &dimEvolutionReport) override |
DIM evolution report. | |
void | exportDimRegression (const std::string &nettingSet, const std::vector< Size > &timeSteps, const std::vector< boost::shared_ptr< ore::data::Report >> &dimRegReports) |
const vector< vector< Real > > & | localRegressionResults (const string &nettingSet) |
const vector< Real > & | zeroOrderResults (const string &nettingSet) |
const vector< Real > & | simpleResultsUpper (const string &nettingSet) |
const vector< Real > & | simpleResultsLower (const string &nettingSet) |
Public Member Functions inherited from DynamicInitialMarginCalculator | |
DynamicInitialMarginCalculator (const boost::shared_ptr< InputParameters > &inputs, const boost::shared_ptr< Portfolio > &portfolio, const boost::shared_ptr< NPVCube > &cube, const boost::shared_ptr< CubeInterpretation > &cubeInterpretation, const boost::shared_ptr< AggregationScenarioData > &scenarioData, Real quantile=0.99, Size horizonCalendarDays=14, const std::map< std::string, Real > ¤tIM=std::map< std::string, Real >()) | |
map< string, Real > | currentIM () |
t0 IM by netting set, as provided as an arguments | |
const boost::shared_ptr< NPVCube > & | dimCube () |
DIM by nettingSet, date, sample returned as a regular NPV cube. | |
const vector< vector< Real > > & | dynamicIM (const string &nettingSet) |
DIM matrix by date and sample index for the specified netting set. | |
const vector< vector< Real > > & | cashFlow (const string &nettingSet) |
Cash flow matrix by date and sample index for the specified netting set. | |
const vector< Real > & | expectedIM (const string &nettingSet) |
Expected DIM vector by date for the specified netting set. | |
const std::map< std::string, Real > & | getInitialMarginScaling () |
Get the implied netting set specific scaling factors. | |
Additional Inherited Members | |
Protected Attributes inherited from DynamicInitialMarginCalculator | |
boost::shared_ptr< InputParameters > | inputs_ |
boost::shared_ptr< Portfolio > | portfolio_ |
boost::shared_ptr< NPVCube > | cube_ |
boost::shared_ptr< NPVCube > | dimCube_ |
boost::shared_ptr< CubeInterpretation > | cubeInterpretation_ |
boost::shared_ptr< AggregationScenarioData > | scenarioData_ |
Real | quantile_ |
Size | horizonCalendarDays_ |
map< string, Real > | currentIM_ |
bool | cubeIsRegular_ |
Size | datesLoopSize_ |
std::set< string > | nettingSetIds_ |
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_ |
Dynamic Initial Margin Calculator using polynomial regression.
Dynamic IM is estimated using polynomial and local regression methods applied to the NPV moves over simulation time steps across all paths.
RegressionDynamicInitialMarginCalculator | ( | const boost::shared_ptr< InputParameters > & | inputs, |
const boost::shared_ptr< Portfolio > & | portfolio, | ||
const boost::shared_ptr< NPVCube > & | cube, | ||
const boost::shared_ptr< CubeInterpretation > & | cubeInterpretation, | ||
const boost::shared_ptr< AggregationScenarioData > & | scenarioData, | ||
Real | quantile, | ||
Size | horizonCalendarDays, | ||
Size | regressionOrder, | ||
vector< string > | regressors, | ||
Size | localRegressionEvaluations = 0 , |
||
Real | localRegressionBandWidth = 0 , |
||
const std::map< std::string, Real > & | currentIM = std::map< std::string, Real >() |
||
) |
inputs | Global input parameters |
portfolio | Driving portfolio consistent with the cube below |
cube | NPV cube resulting from the Monte Carlo simulation loop |
cubeInterpretation | Interpretation of the cube, regular NPV, MPoR grid etc |
scenarioData | Additional output of the MC simulation loop with numeraires, index fixings, FX spots etc |
quantile | VaR quantile expressed as a percentage |
horizonCalendarDays | VaR holding period in calendar days |
regressionOrder | Polynom order of the regression |
regressors | Regressors to be used |
localRegressionEvaluations | Number of local regression evaluation windows across all paths, up to number of samples |
localRegressionBandWidth | Local regression band width in standard deviations of the regression variable |
currentIM | Actual t0 IM by netting set used to scale the DIM evolution, no scaling if the argument is omitted |