Logo
Reference manual - version orea_version
MarketRiskBacktest Class Referenceabstract
Inheritance diagram for MarketRiskBacktest:

Classes

class  BacktestReports
struct  BacktestArgs
struct  Data
 Used to pass information. More...
struct  SummaryResults
 Used to store results for writing rows in the summary report. More...
struct  VarBenchmark

Public Types

enum class  VarType { HistSim , HistSimTaylor , Parametric , Lch }
 VAR types used as a benchmark against which SIMM can be compared.

Public Member Functions

 MarketRiskBacktest (const std::string &calculationCurrency, const QuantLib::ext::shared_ptr< ore::data::Portfolio > &portfolio, const std::string &portfolioFilter, std::unique_ptr< BacktestArgs > btArgs, std::unique_ptr< SensiRunArgs > sensiArgs=nullptr, std::unique_ptr< FullRevalArgs > revalArgs=nullptr, std::unique_ptr< MultiThreadArgs > mtArgs=nullptr, const QuantLib::ext::shared_ptr< ore::analytics::HistoricalScenarioGenerator > &hisScenGen=nullptr, const bool breakdown=false, const bool requireTradePnl=false)
bool disablesAll (const QuantLib::ext::shared_ptr< ore::analytics::ScenarioFilter > &filter) const override
virtual void addPnlRow (const QuantLib::ext::shared_ptr< BacktestReports > &reports, QuantLib::Size scenarioIdx, bool isCall, const ore::analytics::RiskFactorKey &key_1, QuantLib::Real shift_1, QuantLib::Real delta, QuantLib::Real gamma, QuantLib::Real deltaPnl, QuantLib::Real gammaPnl, const ore::analytics::RiskFactorKey &key_2=ore::analytics::RiskFactorKey(), QuantLib::Real shift_2=0.0, const std::string &tradeId="", const std::string &currency="", QuantLib::Real fxSpot=1.0)
 Add a row to the P&L contribution report.
Public Member Functions inherited from MarketRiskReport
 MarketRiskReport (const std::string &calculationCurrency, const QuantLib::ext::shared_ptr< Portfolio > &portfolio, const std::string &portfolioFilter, QuantLib::ext::optional< ore::data::TimePeriod > period, const QuantLib::ext::shared_ptr< HistoricalScenarioGenerator > &hisScenGen=nullptr, std::unique_ptr< SensiRunArgs > sensiArgs=nullptr, std::unique_ptr< FullRevalArgs > fullRevalArgs=nullptr, std::unique_ptr< MultiThreadArgs > multiThreadArgs=nullptr, const bool breakdown=false, const bool requireTradePnl=false, const bool requireRiskFactorPnl=false)
void initSimMarket ()
 Method to init simMarket_ for multi-threaded ctors.
virtual void calculate (const QuantLib::ext::shared_ptr< Reports > &report)
void enableCubeWrite (const std::string &cubeDir, const std::string &cubeFilename)

Protected Types

typedef std::map< VarType, std::pair< QuantLib::ext::shared_ptr< ore::analytics::VarCalculator >, QuantLib::Real > > VarBenchmarks
 pointers to the VAR benchmarks

Protected Member Functions

void initialise () override
virtual const std::vector< std::tuple< std::string, ore::data::Report::ReportType, QuantLib::Size > > summaryColumns ()=0
virtual const std::vector< std::tuple< std::string, ore::data::Report::ReportType, QuantLib::Size, bool > > detailColumns ()=0
virtual const std::vector< std::tuple< std::string, ore::data::Report::ReportType, QuantLib::Size > > pnlColumns ()=0
virtual QuantLib::Real callValue (const Data &data)=0
virtual QuantLib::Real postValue (const Data &data)=0
virtual std::string counterparty (const std::string &tradeId) const =0
virtual void setUpBenchmarks ()=0
virtual void reset (const QuantLib::ext::shared_ptr< ore::analytics::MarketRiskGroupBase > &riskGroup) override
void createReports (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports) override
virtual bool runTradeDetail (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports) override
ore::data::TimePeriod covariancePeriod () const override
void addPnlCalculators (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports) override
void handleSensiResults (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports, const QuantLib::ext::shared_ptr< ore::analytics::MarketRiskGroupBase > &riskGroup, const QuantLib::ext::shared_ptr< ore::analytics::TradeGroupBase > &tradeGroup) override
void handleFullRevalResults (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports, const QuantLib::ext::shared_ptr< ore::analytics::MarketRiskGroupBase > &riskGroup, const QuantLib::ext::shared_ptr< ore::analytics::TradeGroupBase > &tradeGroup) override
virtual void adjustFullRevalPnls (std::vector< QuantLib::Real > &pnls, std::vector< QuantLib::Real > &bmPnls, ore::analytics::TradePnLStore &tradePnls, const std::vector< QuantLib::Real > &foSensiPnls, const std::vector< QuantLib::Real > &bmFoSensiPnls, const ore::analytics::TradePnLStore &foTradePnls, const QuantLib::ext::shared_ptr< ore::analytics::MarketRiskGroupBase > &riskGroup)
virtual void addDetailRow (const QuantLib::ext::shared_ptr< BacktestReports > &reports, const Data &data, bool isCall, QuantLib::Real im, const QuantLib::Date &start, const QuantLib::Date &end, bool isFull, QuantLib::Real pnl, const std::string &result, QuantLib::Real pnlDecoorelated, const std::string &resultDecorrelated, const std::string &tradeId="") const =0
 Add a row to the detail report.
virtual void addSummaryRow (const QuantLib::ext::shared_ptr< BacktestReports > &reports, const Data &data, bool isCall, QuantLib::Real im, QuantLib::Size observations, bool isFull, QuantLib::Size exceptions, const std::vector< QuantLib::Size > &ragBounds, QuantLib::Size exceptionsDecorrelated, const std::vector< QuantLib::Size > &ragBoundsDecorrelated, const VarBenchmarks &sensiBenchmarks, const VarBenchmarks &fullBenchmarks) const =0
 Add a row to the summary report.
virtual void calculateBenchmarks (VarBenchmarks &benchmarks, QuantLib::Real confidence, const bool isCall, const QuantLib::ext::shared_ptr< ore::analytics::MarketRiskGroupBase > &riskGroup, std::set< std::pair< std::string, QuantLib::Size > > &tradeIdIdxPairs)
 Calculate and update the benchmarks.
void writeReports (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports, const QuantLib::ext::shared_ptr< ore::analytics::MarketRiskGroupBase > &riskGroup, const QuantLib::ext::shared_ptr< ore::analytics::TradeGroupBase > &tradeGroup) override
std::vector< ore::data::TimePeriod > timePeriods () override
Protected Member Functions inherited from MarketRiskReport
virtual void initialiseRiskGroups ()
 Method for shared initialisation.
virtual void registerProgressIndicators ()
virtual bool runRiskFactorDetail (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports)
virtual QuantLib::ext::shared_ptr< ScenarioFiltercreateScenarioFilter (const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup)
virtual void reset (const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup)
virtual bool runTradeRiskGroup (const QuantLib::ext::shared_ptr< TradeGroupBase > &tradeGroup, const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup) const
virtual bool disablesAll (const QuantLib::ext::shared_ptr< ScenarioFilter > &filter) const
virtual void updateFilter (const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup, const QuantLib::ext::shared_ptr< ScenarioFilter > &filter)
 update any filters required
virtual std::string portfolioId (const QuantLib::ext::shared_ptr< TradeGroupBase > &tradeGroup) const
virtual std::string tradeGroupKey (const QuantLib::ext::shared_ptr< TradeGroupBase > &tradeGroup) const
virtual void handleSensiResults (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &report, const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup, const QuantLib::ext::shared_ptr< TradeGroupBase > &tradeGroup)
virtual void handleFullRevalResults (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports, const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup, const QuantLib::ext::shared_ptr< TradeGroupBase > &tradeGroup)
virtual bool includeDeltaMargin (const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup) const
virtual bool includeGammaMargin (const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup) const
virtual bool runFullReval (const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup) const
virtual bool generateCube (const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup) const
virtual std::string cubeFilePath (const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup) const
virtual void writeReports (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports, const QuantLib::ext::shared_ptr< MarketRiskGroupBase > &riskGroup, const QuantLib::ext::shared_ptr< TradeGroupBase > &tradeGroup)
virtual void closeReports (const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > &reports)

Protected Attributes

std::unique_ptr< BacktestArgsbtArgs_
VarBenchmarks sensiCallBenchmarks_
VarBenchmarks sensiPostBenchmarks_
VarBenchmarks fullRevalCallBenchmarks_
VarBenchmarks fullRevalPostBenchmarks_
std::vector< QuantLib::Real > bmSensiPnls_
 variables for benchmark calculations
std::vector< QuantLib::Real > bmFoSensiPnls_
std::vector< QuantLib::Real > pnls_
std::vector< QuantLib::Real > bmPnls_
std::vector< QuantLib::Real > sensiPnls_
std::vector< QuantLib::Real > foSensiPnls_
ore::analytics::TradePnLStore foTradePnls_
ore::analytics::TradePnLStore tradePnls_
ore::analytics::TradePnLStore sensiTradePnls_
std::set< std::string > callTradeIds_
std::set< std::string > postTradeIds_
Protected Attributes inherited from MarketRiskReport
bool sensiBased_ = false
bool fullReval_ = false
std::string calculationCurrency_
QuantLib::ext::shared_ptr< Portfolio > portfolio_
std::string portfolioFilter_
QuantLib::ext::optional< ore::data::TimePeriod > period_
QuantLib::ext::shared_ptr< HistoricalScenarioGeneratorhisScenGen_
std::unique_ptr< SensiRunArgssensiArgs_
std::unique_ptr< FullRevalArgsfullRevalArgs_
std::unique_ptr< MultiThreadArgsmultiThreadArgs_
bool breakdown_ = false
bool requireTradePnl_ = false
bool requireRiskFactorPnl_ = false
QuantLib::ext::shared_ptr< MarketRiskGroupBaseContainerriskGroups_
QuantLib::ext::shared_ptr< TradeGroupBaseContainertradeGroups_
std::map< std::string, std::set< std::pair< std::string, QuantLib::Size > > > tradeIdGroups_
std::set< std::pair< std::string, QuantLib::Size > > tradeIdIdxPairs_
std::vector< std::string > tradeIds_
std::map< RiskFactorKey, QuantLib::Real > deltas_
std::map< std::pair< RiskFactorKey, RiskFactorKey >, QuantLib::Real > gammas_
QuantLib::Matrix covarianceMatrix_
bool writePnl_ = false
std::vector< QuantLib::ext::shared_ptr< PNLCalculator > > pnlCalculators_
QuantLib::ext::shared_ptr< QuantExt::CovarianceSalvage > salvage_
bool includeDeltaMargin_ = true
bool includeGammaMargin_ = true
QuantLib::ext::shared_ptr< ore::data::EngineFactory > factory_
QuantLib::ext::shared_ptr< ore::analytics::HistoricalPnlGeneratorhistPnlGen_
QuantLib::ext::shared_ptr< HistoricalSensiPnlCalculatorsensiPnlCalculator_

Member Function Documentation

◆ disablesAll()

bool disablesAll ( const QuantLib::ext::shared_ptr< ore::analytics::ScenarioFilter > & filter) const
override

Check if the given scenario filter turns off all risk factors in the historical scenario generator

◆ initialise()

void initialise ( )
overrideprotectedvirtual

Reimplemented from MarketRiskReport.

◆ createReports()

void createReports ( const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > & reports)
overrideprotectedvirtual

Implements MarketRiskReport.

◆ runTradeDetail()

virtual bool runTradeDetail ( const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > & reports)
overrideprotectedvirtual

Reimplemented from MarketRiskReport.

◆ covariancePeriod()

ore::data::TimePeriod covariancePeriod ( ) const
overrideprotectedvirtual

Reimplemented from MarketRiskReport.

◆ addPnlCalculators()

void addPnlCalculators ( const QuantLib::ext::shared_ptr< MarketRiskReport::Reports > & reports)
overrideprotectedvirtual

Reimplemented from MarketRiskReport.

◆ timePeriods()

std::vector< ore::data::TimePeriod > timePeriods ( )
overrideprotectedvirtual

Reimplemented from MarketRiskReport.