Historical Scenario Generator. More...
#include <orea/scenario/historicalscenariogenerator.hpp>
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 ReturnConfiguration & | returnConfiguration () const |
Return configuration. | |
virtual QuantLib::Real | scaling (const RiskFactorKey &key, const QuantLib::Real &keyReturn) |
Scaling. | |
QuantLib::ext::shared_ptr< Scenario > | next (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< Scenario > | next (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< HistoricalScenarioLoader > | historicalScenarioLoader_ |
std::vector< QuantLib::Date > | startDates_ |
std::vector< QuantLib::Date > | endDates_ |
QuantLib::ext::shared_ptr< ScenarioFactory > | scenarioFactory_ |
QuantLib::ext::shared_ptr< Scenario > | baseScenario_ |
std::vector< HistoricalScenarioCalculationDetails > | calculationDetails_ |
QuantLib::Calendar | cal_ |
QuantLib::Size | mporDays_ = 10 |
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.
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.
historicalScenarioLoader | Historical Scenario Loader containing all scenarios |
scenarioFactory | Scenario factory to use |
cal | Calendar to use |
adjFactors | optional adjustment factors for stock splits etc |
mporDays | Mpor days or step size |
overlapping | overlapping scenarios |
returnConfiguration | return configuration |
labelPrefix | string prepended to label of all scenarios generated |
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.
|
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.
|
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.
|
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