Logo
Reference manual - version orea_version
ScenarioSimMarket Class Reference

Simulation Market updated with discrete scenarios. More...

#include <orea/scenario/scenariosimmarket.hpp>

Inheritance diagram for ScenarioSimMarket:

Public Member Functions

 ScenarioSimMarket (const bool handlePseudoCurrencies)
 Constructor.
 ScenarioSimMarket (const QuantLib::ext::shared_ptr< Market > &initMarket, const QuantLib::ext::shared_ptr< ScenarioSimMarketParameters > &parameters, const std::string &configuration=Market::defaultConfiguration, const ore::data::CurveConfigurations &curveConfigs=ore::data::CurveConfigurations(), const ore::data::TodaysMarketParameters &todaysMarketParams=ore::data::TodaysMarketParameters(), const bool continueOnError=false, const bool useSpreadedTermStructures=false, const bool cacheSimData=false, const bool allowPartialScenarios=false, const QuantLib::ext::shared_ptr< IborFallbackConfig > &iborFallbackConfig=QuantLib::ext::make_shared< IborFallbackConfig >(IborFallbackConfig::defaultConfig()), const bool handlePseudoCurrencies=true, const QuantLib::ext::shared_ptr< Scenario > &offSetScenario=nullptr)
 ScenarioSimMarket (const QuantLib::ext::shared_ptr< Market > &initMarket, const QuantLib::ext::shared_ptr< ScenarioSimMarketParameters > &parameters, const QuantLib::ext::shared_ptr< FixingManager > &fixingManager, const std::string &configuration=Market::defaultConfiguration, const ore::data::CurveConfigurations &curveConfigs=ore::data::CurveConfigurations(), const ore::data::TodaysMarketParameters &todaysMarketParams=ore::data::TodaysMarketParameters(), const bool continueOnError=false, const bool useSpreadedTermStructures=false, const bool cacheSimData=false, const bool allowPartialScenarios=false, const QuantLib::ext::shared_ptr< IborFallbackConfig > &iborFallbackConfig=QuantLib::ext::make_shared< IborFallbackConfig >(IborFallbackConfig::defaultConfig()), const bool handlePseudoCurrencies=true, const QuantLib::ext::shared_ptr< Scenario > &offSetScenario=nullptr)
virtual QuantLib::ext::shared_ptr< ScenarioGenerator > & scenarioGenerator ()
 Set scenario generator.
virtual const QuantLib::ext::shared_ptr< ScenarioGenerator > & scenarioGenerator () const
 Get scenario generator.
virtual QuantLib::ext::shared_ptr< AggregationScenarioData > & aggregationScenarioData ()
 Set aggregation data.
virtual const QuantLib::ext::shared_ptr< AggregationScenarioData > & aggregationScenarioData () const
 Get aggregation data.
virtual QuantLib::ext::shared_ptr< ScenarioFilter > & filter ()
 Set scenarioFilter.
virtual const QuantLib::ext::shared_ptr< ScenarioFilter > & filter () const
 Get scenarioFilter.
virtual void preUpdate () override
 Update.
virtual void updateScenario (const Date &) override
 Retrieve next market scenario and apply this, but don't update date.
virtual void updateDate (const Date &) override
 Update to the given date.
virtual void postUpdate (const Date &d, bool withFixings) override
 Observable reset depending on selected mode, instrument updates.
virtual void updateAsd (const Date &) override
 Update aggregation scenario data.
virtual void reset () override
 Reset sim market to initial state.
virtual QuantLib::ext::shared_ptr< ScenariobaseScenario () const
virtual QuantLib::ext::shared_ptr< ScenariobaseScenarioAbsolute () const
QuantLib::ext::shared_ptr< ScenariooffsetScenario () const
bool useSpreadedTermStructures () const
const QuantLib::ext::shared_ptr< FixingManager > & fixingManager () const override
 Return the fixing manager.
virtual bool isSimulated (const RiskFactorKey::KeyType &factor) const
 is risk factor key simulated by this sim market instance?
void applyScenario (const QuantLib::ext::shared_ptr< Scenario > &scenario)
Public Member Functions inherited from SimMarket
 SimMarket (const bool handlePseudoCurrencies)
virtual void update (const Date &d)
 Generate or retrieve market scenario, update market, notify termstructures and update fixings.
Real numeraire ()
 Return current numeraire value.
const std::string & label ()
 Return current scenario label, if any.

Protected Member Functions

void writeSimData (std::map< RiskFactorKey, QuantLib::ext::shared_ptr< SimpleQuote > > &simDataTmp, std::map< RiskFactorKey, Real > &absoluteSimDataTmp, const RiskFactorKey::KeyType keyType, const std::string &name, const std::vector< std::vector< Real > > &coordinates)
void addYieldCurve (const QuantLib::ext::shared_ptr< Market > &initMarket, const std::string &configuration, const RiskFactorKey::KeyType rf, const string &key, const vector< Period > &tenors, bool &simDataWritten, bool simulate=true, bool spreaded=false)
QuantLib::Handle< QuantLib::YieldTermStructure > getYieldCurve (const std::string &key) const
void applyCurveAlgebra ()
void applyCurveAlgebraSpreadedYieldCurve (const Handle< YieldTermStructure > &target, const std::vector< Handle< YieldTermStructure > > &bases, const std::vector< double > &multiplier)
QuantLib::Handle< QuantLib::YieldTermStructure > getYieldCurve (const std::string &yieldSpecId, const ore::data::TodaysMarketParameters &todaysMarketParams, const std::string &configuration, const QuantLib::ext::shared_ptr< ore::data::Market > &market=nullptr) const
void addSwapIndexToSsm (const std::string &indexName)

Protected Attributes

const QuantLib::ext::shared_ptr< ScenarioSimMarketParametersparameters_
QuantLib::ext::shared_ptr< ScenarioGeneratorscenarioGenerator_
QuantLib::ext::shared_ptr< AggregationScenarioDataasd_
QuantLib::ext::shared_ptr< FixingManagerfixingManager_
QuantLib::ext::shared_ptr< ScenarioFilterfilter_
std::map< RiskFactorKey, QuantLib::ext::shared_ptr< SimpleQuote > > simData_
QuantLib::ext::shared_ptr< ScenariobaseScenario_
QuantLib::ext::shared_ptr< ScenariobaseScenarioAbsolute_
std::vector< QuantLib::ext::shared_ptr< SimpleQuote > > cachedSimData_
std::vector< bool > cachedSimDataActive_
std::size_t cachedSimDataKeysHash_ = 0
std::set< RiskFactorKey::KeyType > nonSimulatedFactors_
bool useSpreadedTermStructures_
std::map< RiskFactorKey, Real > absoluteSimData_
std::set< std::tuple< RiskFactorKey::KeyType, std::string, std::vector< std::vector< Real > > > > coordinatesData_
bool cacheSimData_
bool allowPartialScenarios_
QuantLib::ext::shared_ptr< IborFallbackConfig > iborFallbackConfig_
std::set< ore::analytics::RiskFactorKey > diffToBaseKeys_
QuantLib::ext::shared_ptr< ScenariocurrentScenario_
QuantLib::ext::shared_ptr< ScenariooffsetScenario_
QuantLib::ext::shared_ptr< QuantExt::ScenarioInformationSetter > scenarioInformationSetter_
Protected Attributes inherited from SimMarket
Real numeraire_
std::string label_

Detailed Description

Simulation Market updated with discrete scenarios.

If useSpreadedTermStructures is true, spreaded term structures over the initMarket for supported risk factors will be generated. This is used by the SensitivityScenarioGenerator.

If cacheSimData is true, the scenario application is optimised. This requires that all scenarios are SimpleScenario instances with identical key structure in their data.

If allowPartialScenarios is true, the check that all simData_ is touched by a scenario is disabled.

Member Function Documentation

◆ preUpdate()

virtual void preUpdate ( )
overridevirtual

Update.

Implements SimMarket.

◆ updateScenario()

virtual void updateScenario ( const Date & )
overridevirtual

Retrieve next market scenario and apply this, but don't update date.

Implements SimMarket.

◆ updateDate()

virtual void updateDate ( const Date & )
overridevirtual

Update to the given date.

Implements SimMarket.

◆ postUpdate()

virtual void postUpdate ( const Date & d,
bool withFixings )
overridevirtual

Observable reset depending on selected mode, instrument updates.

Implements SimMarket.

◆ updateAsd()

virtual void updateAsd ( const Date & )
overridevirtual

Update aggregation scenario data.

Implements SimMarket.

◆ reset()

virtual void reset ( )
overridevirtual

Reset sim market to initial state.

Implements SimMarket.

◆ baseScenario()

virtual QuantLib::ext::shared_ptr< Scenario > baseScenario ( ) const
virtual

Scenario representing the initial state of the market. If useSpreadedTermStructures = false, this scenario contains absolute values for all risk factor keys. If useSpreadedTermStructures = true, this scenario contains spread values for all risk factor keys which support spreaded term structures and absolute values for the other risk factor keys. The spread values will typically be zero (e.g. for vol risk factors) or 1 (e.g. for rate curve risk factors, since we use discount factors there).

◆ baseScenarioAbsolute()

virtual QuantLib::ext::shared_ptr< Scenario > baseScenarioAbsolute ( ) const
virtual

Scenario representing the initial state of the market. This scenario contains absolute values for all risk factor types, no matter whether useSpreadedTermStructures is true or false.

◆ offsetScenario()

QuantLib::ext::shared_ptr< Scenario > offsetScenario ( ) const

Get offset scenario, or nullptr if none was set

◆ useSpreadedTermStructures()

bool useSpreadedTermStructures ( ) const

Return true if this instance uses spreaded term structures

◆ fixingManager()

const QuantLib::ext::shared_ptr< FixingManager > & fixingManager ( ) const
overridevirtual

Return the fixing manager.

Implements SimMarket.

◆ getYieldCurve()

QuantLib::Handle< QuantLib::YieldTermStructure > getYieldCurve ( const std::string & yieldSpecId,
const ore::data::TodaysMarketParameters & todaysMarketParams,
const std::string & configuration,
const QuantLib::ext::shared_ptr< ore::data::Market > & market = nullptr ) const
protected

Given a yield curve spec ID, yieldSpecId, return the corresponding yield term structure from the market. If market is nullptr, then the yield term structure is taken from this ScenarioSimMarket instance.

◆ addSwapIndexToSsm()

void addSwapIndexToSsm ( const std::string & indexName)
protected

add a single swap index to the market