Logo
Reference manual - version orea_version
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
HistoricalScenarioGenerator Class Reference

Historical Scenario Generator. More...

#include <orea/scenario/historicalscenariogenerator.hpp>

+ Inheritance diagram for HistoricalScenarioGenerator:

Classes

struct  HistoricalScenarioCalculationDetails
 

Public Member Functions

 HistoricalScenarioGenerator (const QuantLib::ext::shared_ptr< HistoricalScenarioLoader > &historicalScenarioLoader, const QuantLib::ext::shared_ptr< ScenarioFactory > &scenarioFactory, const QuantLib::Calendar &cal, const QuantLib::ext::shared_ptr< ore::data::AdjustmentFactors > &adjFactors=nullptr, const Size mporDays=10, const bool overlapping=true, const ReturnConfiguration &returnConfiguration=ReturnConfiguration(), const std::string &labelPrefix="")
 Default constructor. More...
 
 HistoricalScenarioGenerator (const boost::shared_ptr< HistoricalScenarioLoader > &historicalScenarioLoader, const boost::shared_ptr< ScenarioFactory > &scenarioFactory, const boost::shared_ptr< ore::data::AdjustmentFactors > &adjFactors=nullptr, const ReturnConfiguration &returnConfiguration=ReturnConfiguration(), const std::string &labelPrefix="")
 Constructor with no mporDays/Calendar, construct historical shift scenario between each scneario. More...
 
QuantLib::ext::shared_ptr< Scenario > & baseScenario ()
 Set base scenario, this also defines the asof date.
 
const QuantLib::ext::shared_ptr< Scenario > & baseScenario () const
 Get base scenario.
 
const QuantLib::Calendar & cal () const
 Get calendar.
 
QuantLib::Size mporDays () const
 Get mpor days.
 
bool overlapping () const
 Are scenarios overlapping.
 
const ReturnConfigurationreturnConfiguration () const
 Return configuration.
 
virtual QuantLib::Real scaling (const RiskFactorKey &key, const QuantLib::Real &keyReturn)
 Scaling.
 
QuantLib::ext::shared_ptr< Scenarionext (const QuantLib::Date &d) override
 Return the next scenario for the given date. More...
 
const std::vector< HistoricalScenarioCalculationDetails > & lastHistoricalScenarioCalculationDetails () const
 Return the calculation details of the last generated scenario *‍/.
 
void reset () override
 Reset the generator so calls to next() return the first scenario. More...
 
virtual QuantLib::Size numScenarios () const
 Number of scenarios this generator can generate.
 
virtual void setDates ()
 set the start and end dates, can be overwritten in derived class
 
const std::vector< QuantLib::Date > & startDates () const
 start dates from which the scenarios were generated from
 
const std::vector< QuantLib::Date > & endDates () const
 end dates from which the scenarios were generated from
 
const QuantLib::ext::shared_ptr< HistoricalScenarioLoader > & scenarioLoader () const
 Get the HistoricalScenarioLoader.
 
const QuantLib::ext::shared_ptr< ScenarioFactory > & scenarioFactory () const
 Get the ScenarioFactory.
 
const QuantLib::ext::shared_ptr< ore::data::AdjustmentFactors > & adjFactors () const
 Get the adj factors.
 
std::vector< std::pair< QuantLib::Date, QuantLib::Date > > filteredScenarioDates (const ore::data::TimePeriod &period) const
 Get (start, end) scenario date pairs filtered on the given period.
 
const std::string & labelPrefix () const
 Get the scenario label prefix.
 
- Public Member Functions inherited from ScenarioGenerator
virtual ~ScenarioGenerator ()
 Default destructor.
 
virtual QuantLib::ext::shared_ptr< Scenarionext (const Date &d)=0
 Return the next scenario for the given date.
 

Protected Member Functions

std::pair< QuantLib::ext::shared_ptr< Scenario >, QuantLib::ext::shared_ptr< Scenario > > scenarioPair ()
 The Scenario Pairs for a given index.
 
QuantLib::Real adjustedPrice (RiskFactorKey key, QuantLib::Date d, QuantLib::Real price)
 Returns the adjusted price. More...
 

Protected Attributes

Size i_
 
QuantLib::ext::shared_ptr< HistoricalScenarioLoaderhistoricalScenarioLoader_
 
std::vector< QuantLib::Date > startDates_
 
std::vector< QuantLib::Date > endDates_
 
QuantLib::ext::shared_ptr< ScenarioFactoryscenarioFactory_
 
QuantLib::ext::shared_ptr< ScenariobaseScenario_
 
std::vector< HistoricalScenarioCalculationDetailscalculationDetails_
 
QuantLib::Calendar cal_
 
QuantLib::Size mporDays_ = 10
 

Detailed Description

Historical Scenario Generator.

A Scenario Generator that takes historical scenarios and builds new scenarios by applying historical shifts to the base scenario (which typically comes from todays market).

This generator can be used for historical VAR and backtesting calculations, unlike a PRNG based generator it is limited in the number of scenarios it can generate.

The scenarios generated are based on the scenario differences between t and t+mpor, these differences are typically a relative change and this change is then applied to the baseScenario to give a new scenario which is asof Today or Today+mpor.

Constructor & Destructor Documentation

◆ HistoricalScenarioGenerator() [1/2]

HistoricalScenarioGenerator ( const QuantLib::ext::shared_ptr< HistoricalScenarioLoader > &  historicalScenarioLoader,
const QuantLib::ext::shared_ptr< ScenarioFactory > &  scenarioFactory,
const QuantLib::Calendar &  cal,
const QuantLib::ext::shared_ptr< ore::data::AdjustmentFactors > &  adjFactors = nullptr,
const Size  mporDays = 10,
const bool  overlapping = true,
const ReturnConfiguration returnConfiguration = ReturnConfiguration(),
const std::string &  labelPrefix = "" 
)

Default constructor.

Parameters
historicalScenarioLoaderHistorical Scenario Loader containing all scenarios
scenarioFactoryScenario factory to use
calCalendar to use
adjFactorsoptional adjustment factors for stock splits etc
mporDaysMpor days or step size
overlappingoverlapping scenarios
returnConfigurationreturn configuration
labelPrefixstring prepended to label of all scenarios generated

◆ HistoricalScenarioGenerator() [2/2]

HistoricalScenarioGenerator ( const boost::shared_ptr< HistoricalScenarioLoader > &  historicalScenarioLoader,
const boost::shared_ptr< ScenarioFactory > &  scenarioFactory,
const boost::shared_ptr< ore::data::AdjustmentFactors > &  adjFactors = nullptr,
const ReturnConfiguration returnConfiguration = ReturnConfiguration(),
const std::string &  labelPrefix = "" 
)

Constructor with no mporDays/Calendar, construct historical shift scenario between each scneario.

Parameters
historicalScenarioLoaderHistorical Scenario Loader containing all scenarios
scenarioFactoryScenario factory to use
adjFactorsoptional adjustment factors for stock splits etc
returnConfigurationreturn configuration
labelPrefixstring prepended to label of all scenarios generated

Member Function Documentation

◆ next()

QuantLib::ext::shared_ptr<Scenario> next ( const QuantLib::Date &  d)
override

Return the next scenario for the given date.

Date should be asof or asof+mporDays, this class only checks that date is >= the asof date. Whatever you put in here will be in the returned scenario.

Generator returns scenarios in order of shifts and throws if we have run out of historicals

If Mpor > 1 than the scenarios will overlap.

◆ reset()

void reset ( )
overridevirtual

Reset the generator so calls to next() return the first scenario.

This allows re-generation of scenarios if required.

Implements ScenarioGenerator.

Reimplemented in HistoricalScenarioGeneratorWithFilteredDates, and HistoricalScenarioGeneratorRandom.

◆ adjustedPrice()

QuantLib::Real adjustedPrice ( RiskFactorKey  key,
QuantLib::Date  d,
QuantLib::Real  price 
)
protected

Returns the adjusted price.

Scenarios may contian unadjusted market prices e.g equity spot prices, apply adjustment factors to ensure no jumps between 2 scenarios Only handles equity spot adjustments at the moment