Logo
Fully annotated reference manual - version 1.8.13.0
Loading...
Searching...
No Matches
Public Member Functions | List of all members
ScenarioSimMarketParameters Class Reference

ScenarioSimMarket description. More...

#include <orea/scenario/scenariosimmarketparameters.hpp>

+ Inheritance diagram for ScenarioSimMarketParameters:
+ Collaboration diagram for ScenarioSimMarketParameters:

Public Member Functions

 ScenarioSimMarketParameters ()
 Default constructor. More...
 
Inspectors
const string & baseCcy () const
 
const vector< string > & ccys () const
 
vector< string > paramsLookup (RiskFactorKey::KeyType k) const
 
bool hasParamsName (RiskFactorKey::KeyType kt, string name) const
 
void addParamsName (RiskFactorKey::KeyType kt, vector< string > names)
 
bool paramsSimulate (RiskFactorKey::KeyType kt) const
 
void setParamsSimulate (RiskFactorKey::KeyType kt, bool simulate)
 
vector< string > discountCurveNames () const
 
vector< string > yieldCurveNames () const
 
const map< string, string > & yieldCurveCurrencies () const
 
const vector< Period > & yieldCurveTenors (const string &key) const
 
bool hasYieldCurveTenors (const string &key) const
 
vector< string > indices () const
 
const map< string, string > & swapIndices () const
 
const string & interpolation () const
 
const string & extrapolation () const
 
const map< string, vector< Period > > & yieldCurveTenors () const
 
bool simulateFxSpots () const
 
vector< string > fxCcyPairs () const
 
bool simulateSwapVols () const
 
bool swapVolIsCube (const string &key) const
 
bool simulateSwapVolATMOnly () const
 
const vector< Period > & swapVolTerms (const string &key) const
 
const vector< Period > & swapVolExpiries (const string &key) const
 
vector< string > swapVolKeys () const
 
const string & swapVolDecayMode () const
 
const vector< Real > & swapVolStrikeSpreads (const string &key) const
 
const string & swapVolSmileDynamics (const string &key) const
 
bool simulateYieldVols () const
 
const vector< Period > & yieldVolTerms () const
 
const vector< Period > & yieldVolExpiries () const
 
vector< string > yieldVolNames () const
 
const string & yieldVolDecayMode () const
 
const string & yieldVolSmileDynamics (const string &key) const
 
bool simulateCapFloorVols () const
 
vector< string > capFloorVolKeys () const
 
const vector< Period > & capFloorVolExpiries (const string &key) const
 
bool hasCapFloorVolExpiries (const string &key) const
 
const vector< QuantLib::Rate > & capFloorVolStrikes (const std::string &key) const
 
bool capFloorVolIsAtm (const std::string &key) const
 
const string & capFloorVolDecayMode () const
 
bool capFloorVolAdjustOptionletPillars () const
 
bool capFloorVolUseCapAtm () const
 
const string & capFloorVolSmileDynamics (const string &key) const
 
bool simulateYoYInflationCapFloorVols () const
 
vector< string > yoyInflationCapFloorVolNames () const
 
const vector< Period > & yoyInflationCapFloorVolExpiries (const string &key) const
 
bool hasYoYInflationCapFloorVolExpiries (const string &key) const
 
const vector< Real > & yoyInflationCapFloorVolStrikes (const std::string &key) const
 
const string & yoyInflationCapFloorVolDecayMode () const
 
const string & yoyInflationCapFloorVolSmileDynamics (const string &key) const
 
bool simulateZeroInflationCapFloorVols () const
 
vector< string > zeroInflationCapFloorVolNames () const
 
const vector< Period > & zeroInflationCapFloorVolExpiries (const string &key) const
 
bool hasZeroInflationCapFloorVolExpiries (const string &key) const
 
const vector< Real > & zeroInflationCapFloorVolStrikes (const string &key) const
 
const string & zeroInflationCapFloorVolDecayMode () const
 
const string & zeroInflationCapFloorVolSmileDynamics (const string &key) const
 
bool simulateSurvivalProbabilities () const
 
bool simulateRecoveryRates () const
 
vector< string > defaultNames () const
 
const string & defaultCurveCalendar (const string &key) const
 
const vector< Period > & defaultTenors (const string &key) const
 
bool hasDefaultTenors (const string &key) const
 
const string & defaultCurveExtrapolation () const
 
bool simulateCdsVols () const
 
bool simulateCdsVolATMOnly () const
 
const vector< Period > & cdsVolExpiries () const
 
vector< string > cdsVolNames () const
 
const string & cdsVolDecayMode () const
 
const string & cdsVolSmileDynamics (const string &key) const
 
vector< string > equityNames () const
 
const vector< Period > & equityDividendTenors (const string &key) const
 
bool hasEquityDividendTenors (const string &key) const
 
vector< string > equityDividendYields () const
 
bool simulateDividendYield () const
 
bool simulateFXVols () const
 
bool simulateFxVolATMOnly () const
 
bool fxVolIsSurface (const std::string &ccypair) const
 
bool fxUseMoneyness (const std::string &ccypair) const
 
const vector< Period > & fxVolExpiries (const string &key) const
 
const string & fxVolDecayMode () const
 
vector< string > fxVolCcyPairs () const
 
const vector< Real > & fxVolMoneyness (const string &ccypair) const
 
const vector< Real > & fxVolStdDevs (const string &ccypair) const
 
const string & fxVolSmileDynamics (const string &key) const
 
bool simulateEquityVols () const
 
bool simulateEquityVolATMOnly () const
 
bool equityUseMoneyness (const string &key) const
 
bool equityVolIsSurface (const string &key) const
 
const vector< Period > & equityVolExpiries (const string &key) const
 
const string & equityVolDecayMode () const
 
vector< string > equityVolNames () const
 
const vector< Real > & equityVolMoneyness (const string &key) const
 
const vector< Real > & equityVolStandardDevs (const string &key) const
 
const string & equityVolSmileDynamics (const string &key) const
 
const vector< string > & additionalScenarioDataIndices () const
 
const vector< string > & additionalScenarioDataCcys () const
 
const Size additionalScenarioDataNumberOfCreditStates () const
 
const vector< string > & additionalScenarioDataSurvivalWeights () const
 
bool securitySpreadsSimulate () const
 
vector< string > securities () const
 
bool simulateBaseCorrelations () const
 
const vector< Period > & baseCorrelationTerms () const
 
const vector< Real > & baseCorrelationDetachmentPoints () const
 
vector< string > baseCorrelationNames () const
 
vector< string > cpiIndices () const
 
vector< string > zeroInflationIndices () const
 
const vector< Period > & zeroInflationTenors (const string &key) const
 
bool hasZeroInflationTenors (const string &key) const
 
vector< string > yoyInflationIndices () const
 
const vector< Period > & yoyInflationTenors (const string &key) const
 
bool hasYoyInflationTenors (const string &key) const
 
bool commodityCurveSimulate () const
 
std::vector< std::string > commodityNames () const
 
const std::vector< QuantLib::Period > & commodityCurveTenors (const std::string &commodityName) const
 
bool hasCommodityCurveTenors (const std::string &commodityName) const
 
bool commodityVolSimulate () const
 
const std::string & commodityVolDecayMode () const
 
std::vector< std::string > commodityVolNames () const
 
const std::vector< QuantLib::Period > & commodityVolExpiries (const std::string &commodityName) const
 
const std::vector< QuantLib::Real > & commodityVolMoneyness (const std::string &commodityName) const
 
const string & commodityVolSmileDynamics (const string &commodityName) const
 
bool simulateCorrelations () const
 
bool correlationIsSurface () const
 
const vector< Period > & correlationExpiries () const
 
vector< std::string > correlationPairs () const
 
const vector< Real > & correlationStrikes () const
 
Size numberOfCreditStates () const
 
const std::map< RiskFactorKey::KeyType, std::pair< bool, std::set< std::string > > > & parameters () const
 
Setters
string & baseCcy ()
 
vector< string > & ccys ()
 
void setDiscountCurveNames (vector< string > names)
 
void setYieldCurveNames (vector< string > names)
 
map< string, string > & yieldCurveCurrencies ()
 
void setYieldCurveTenors (const string &key, const vector< Period > &p)
 
void setIndices (vector< string > names)
 
map< string, string > & swapIndices ()
 
string & interpolation ()
 
string & extrapolation ()
 
void setSimulateFxSpots (bool simulate)
 
void setFxCcyPairs (vector< string > names)
 
void setSimulateSwapVols (bool simulate)
 
void setSwapVolIsCube (const string &key, bool isCube)
 
boolsimulateSwapVolATMOnly ()
 
void setSwapVolTerms (const string &key, const vector< Period > &p)
 
void setSwapVolKeys (vector< string > names)
 
void setSwapVolExpiries (const string &key, const vector< Period > &p)
 
void setSwapVolStrikeSpreads (const std::string &key, const std::vector< QuantLib::Rate > &strikes)
 
string & swapVolDecayMode ()
 
void setSwapVolSmileDynamics (const string &key, const string &smileDynamics)
 
void setSimulateYieldVols (bool simulate)
 
vector< Period > & yieldVolTerms ()
 
void setYieldVolNames (vector< string > names)
 
vector< Period > & yieldVolExpiries ()
 
string & yieldVolDecayMode ()
 
void setYieldVolSmileDynamics (const string &key, const string &smileDynamics)
 
void setSimulateCapFloorVols (bool simulate)
 
void setCapFloorVolKeys (vector< string > names)
 
void setCapFloorVolExpiries (const string &key, const vector< Period > &p)
 
void setCapFloorVolStrikes (const std::string &key, const std::vector< QuantLib::Rate > &strikes)
 
void setCapFloorVolIsAtm (const std::string &key, bool isAtm)
 
string & capFloorVolDecayMode ()
 
void setCapFloorVolAdjustOptionletPillars (bool capFloorVolAdjustOptionletPillars)
 
void setCapFloorVolUseCapAtm (bool capFloorVolUseCapAtm)
 
void setCapFloorVolSmileDynamics (const string &key, const string &smileDynamics)
 
void setSimulateYoYInflationCapFloorVols (bool simulate)
 
void setYoYInflationCapFloorVolNames (vector< string > names)
 
void setYoYInflationCapFloorVolExpiries (const string &key, const vector< Period > &p)
 
void setYoYInflationCapFloorVolStrikes (const std::string &key, const std::vector< QuantLib::Rate > &strikes)
 
string & yoyInflationCapFloorVolDecayMode ()
 
void setYoYInflationCapFloorVolSmileDynamics (const string &key, const string &smileDynamics)
 
void setSimulateZeroInflationCapFloorVols (bool simulate)
 
void setZeroInflationCapFloorNames (vector< string > names)
 
void setZeroInflationCapFloorVolExpiries (const string &key, const vector< Period > &p)
 
void setZeroInflationCapFloorVolStrikes (const std::string &key, const std::vector< QuantLib::Rate > &strikes)
 
string & zeroInflationCapFloorVolDecayMode ()
 
void setZeroInflationCapFloorVolSmileDynamics (const string &key, const string &smileDynamics)
 
void setSimulateSurvivalProbabilities (bool simulate)
 
void setSimulateRecoveryRates (bool simulate)
 
void setDefaultNames (vector< string > names)
 
void setDefaultTenors (const string &key, const vector< Period > &p)
 
void setDefaultCurveCalendars (const string &key, const string &p)
 
void setDefaultCurveExtrapolation (const std::string &e)
 
void setSimulateCdsVols (bool simulate)
 
void setSimulateCdsVolsATMOnly (bool simulateATMOnly)
 
vector< Period > & cdsVolExpiries ()
 
void setCdsVolNames (vector< string > names)
 
string & cdsVolDecayMode ()
 
void setCdsVolSmileDynamics (const string &key, const string &smileDynamics)
 
void setEquityNames (vector< string > names)
 
void setEquityDividendCurves (vector< string > names)
 
void setEquityDividendTenors (const string &key, const vector< Period > &p)
 
void setSimulateDividendYield (bool simulate)
 
void setSimulateFXVols (bool simulate)
 
void setSimulateFxVolATMOnly (bool simulateATMOnly)
 
void setFxVolIsSurface (const string &ccypair, bool val)
 
void setFxVolIsSurface (bool val)
 
void setFxVolExpiries (const string &name, const vector< Period > &expiries)
 
void setFxVolDecayMode (const string &val)
 
void setFxVolCcyPairs (vector< string > names)
 
void setFxVolMoneyness (const string &ccypair, const vector< Real > &moneyness)
 
void setFxVolMoneyness (const vector< Real > &moneyness)
 
void setFxVolStdDevs (const string &ccypair, const vector< Real > &stdDevs)
 
void setFxVolStdDevs (const vector< Real > &stdDevs)
 
void setFxVolSmileDynamics (const string &name, const string &smileDynamics)
 
void setSimulateEquityVols (bool simulate)
 
void setSimulateEquityVolATMOnly (bool simulateATMOnly)
 
void setEquityVolIsSurface (const string &name, bool isSurface)
 
void setEquityVolExpiries (const string &name, const vector< Period > &expiries)
 
void setEquityVolDecayMode (const string &val)
 
void setEquityVolNames (vector< string > names)
 
void setEquityVolMoneyness (const string &name, const vector< Real > &moneyness)
 
void setEquityVolStandardDevs (const string &name, const vector< Real > &standardDevs)
 
void setEquityVolSmileDynamics (const string &name, const string &smileDynamics)
 
vector< string > & additionalScenarioDataIndices ()
 
void setAdditionalScenarioDataIndices (const vector< string > &asdi)
 
vector< string > & additionalScenarioDataCcys ()
 
void setAdditionalScenarioDataCcys (const vector< string > &ccys)
 
void setSecuritySpreadsSimulate (bool simulate)
 
void setSecurities (vector< string > names)
 
void setRecoveryRates (vector< string > names)
 
void setCprs (const vector< string > &names)
 
void setSimulateCprs (bool simulate)
 
bool simulateCprs () const
 
const vector< string > & cprs () const
 
void setSimulateBaseCorrelations (bool simulate)
 
vector< Period > & baseCorrelationTerms ()
 
vector< Real > & baseCorrelationDetachmentPoints ()
 
void setBaseCorrelationNames (vector< string > names)
 
void setCpiIndices (vector< string > names)
 
void setZeroInflationIndices (vector< string > names)
 
void setZeroInflationTenors (const string &key, const vector< Period > &p)
 
void setYoyInflationIndices (vector< string > names)
 
void setYoyInflationTenors (const string &key, const vector< Period > &p)
 
void setCommodityCurveSimulate (bool simulate)
 
void setCommodityNames (vector< string > names)
 
void setCommodityCurves (vector< string > names)
 
void setCommodityCurveTenors (const std::string &commodityName, const std::vector< QuantLib::Period > &p)
 
void setCommodityVolSimulate (bool simulate)
 
std::string & commodityVolDecayMode ()
 
void setCommodityVolNames (vector< string > names)
 
std::vector< QuantLib::Period > & commodityVolExpiries (const std::string &commodityName)
 
std::vector< QuantLib::Real > & commodityVolMoneyness (const std::string &commodityName)
 
void setCommodityVolSmileDynamics (const string &key, const string &smileDynamics)
 
void setSimulateCorrelations (bool simulate)
 
boolcorrelationIsSurface ()
 
vector< Period > & correlationExpiries ()
 
void setCorrelationPairs (vector< string > names)
 
vector< Real > & correlationStrikes ()
 
void setNumberOfCreditStates (Size numberOfCreditStates)
 
Serialisation
virtual void fromXML (XMLNode *node) override
 
virtual XMLNodetoXML (ore::data::XMLDocument &doc) const override
 
- Public Member Functions inherited from XMLSerializable
virtual ~XMLSerializable ()
 
virtual void fromXML (XMLNode *node)=0
 
virtual XMLNodetoXML (XMLDocument &doc) const=0
 
void fromFile (const std::string &filename)
 
void toFile (const std::string &filename) const
 
void fromXMLString (const std::string &xml)
 
std::string toXMLString () const
 

Equality Operators

string baseCcy_
 
vector< string > ccys_
 
map< string, string > yieldCurveCurrencies_
 
map< string, vector< Period > > yieldCurveTenors_
 
map< string, string > swapIndices_
 
string interpolation_
 
string extrapolation_
 
map< string, boolswapVolIsCube_
 
bool swapVolSimulateATMOnly_ = false
 
map< string, vector< Period > > swapVolTerms_
 
map< string, vector< Period > > swapVolExpiries_
 
map< string, vector< Real > > swapVolStrikeSpreads_
 
string swapVolDecayMode_
 
map< string, string > swapVolSmileDynamics_
 
vector< Period > yieldVolTerms_
 
vector< Period > yieldVolExpiries_
 
string yieldVolDecayMode_
 
map< string, string > yieldVolSmileDynamics_
 
map< string, vector< Period > > capFloorVolExpiries_
 
map< std::string, std::vector< QuantLib::Rate > > capFloorVolStrikes_
 
map< std::string, boolcapFloorVolIsAtm_
 
string capFloorVolDecayMode_
 
bool capFloorVolAdjustOptionletPillars_
 
bool capFloorVolUseCapAtm_
 
map< string, string > capFloorVolSmileDynamics_
 
map< string, vector< Period > > yoyInflationCapFloorVolExpiries_
 
map< std::string, std::vector< QuantLib::Rate > > yoyInflationCapFloorVolStrikes_
 
string yoyInflationCapFloorVolDecayMode_
 
map< string, string > yoyInflationCapFloorVolSmileDynamics_
 
map< string, vector< Period > > zeroInflationCapFloorVolExpiries_
 
map< std::string, std::vector< QuantLib::Rate > > zeroInflationCapFloorVolStrikes_
 
string zeroInflationCapFloorVolDecayMode_
 
map< string, string > zeroInflationCapFloorVolSmileDynamics_
 
map< string, string > defaultCurveCalendars_
 
map< string, vector< Period > > defaultTenors_
 
string defaultCurveExtrapolation_
 
bool cdsVolSimulateATMOnly_ = false
 
vector< Period > cdsVolExpiries_
 
string cdsVolDecayMode_
 
map< string, string > cdsVolSmileDynamics_
 
map< string, vector< Period > > equityDividendTenors_
 
bool fxVolSimulateATMOnly_ = false
 
map< std::string, boolfxVolIsSurface_
 
map< string, vector< Period > > fxVolExpiries_
 
string fxVolDecayMode_
 
map< string, vector< Real > > fxMoneyness_
 
map< string, vector< Real > > fxStandardDevs_
 
map< string, string > fxVolSmileDynamics_
 
bool equityVolSimulateATMOnly_ = false
 
map< string, boolequityVolIsSurface_
 
map< string, vector< Period > > equityVolExpiries_
 
string equityVolDecayMode_
 
map< string, vector< Real > > equityMoneyness_
 
map< string, vector< Real > > equityStandardDevs_
 
map< string, string > equityVolSmileDynamics_
 
vector< string > additionalScenarioDataIndices_
 
vector< string > additionalScenarioDataCcys_
 
Size additionalScenarioDataNumberOfCreditStates_ = 0
 
vector< string > additionalScenarioDataSurvivalWeights_
 
bool cprSimulate_
 
vector< string > cprs_
 
vector< Period > baseCorrelationTerms_
 
vector< Real > baseCorrelationDetachmentPoints_
 
map< string, vector< Period > > zeroInflationTenors_
 
map< string, vector< Period > > yoyInflationTenors_
 
std::map< std::string, std::vector< QuantLib::Period > > commodityCurveTenors_
 
std::string commodityVolDecayMode_
 
std::map< std::string, std::vector< QuantLib::Period > > commodityVolExpiries_
 
std::map< std::string, std::vector< QuantLib::Real > > commodityVolMoneyness_
 
map< string, string > commodityVolSmileDynamics_
 
bool correlationIsSurface_
 
vector< Period > correlationExpiries_
 
vector< Real > correlationStrikes_
 
Size numberOfCreditStates_ = 0
 
std::map< RiskFactorKey::KeyType, std::pair< bool, std::set< std::string > > > params_
 
bool operator== (const ScenarioSimMarketParameters &rhs)
 
bool operator!= (const ScenarioSimMarketParameters &rhs)
 
void setDefaults ()
 
void reset ()
 A method used to reset the object to its default state before fromXML is called. More...
 

Detailed Description

ScenarioSimMarket description.

Definition at line 47 of file scenariosimmarketparameters.hpp.

Constructor & Destructor Documentation

◆ ScenarioSimMarketParameters()

Member Function Documentation

◆ baseCcy() [1/2]

const string & baseCcy ( ) const

◆ ccys() [1/2]

const vector< string > & ccys ( ) const

Definition at line 60 of file scenariosimmarketparameters.hpp.

+ Here is the caller graph for this function:

◆ paramsLookup()

vector< string > paramsLookup ( RiskFactorKey::KeyType  k) const

Definition at line 62 of file scenariosimmarketparameters.cpp.

62 {
63 vector<string> names;
64 auto it = params_.find(kt);
65 if (it != params_.end()) {
66 for (auto n : it->second.second)
67 names.push_back(n);
68 }
69 return names;
70}
std::map< RiskFactorKey::KeyType, std::pair< bool, std::set< std::string > > > params_
+ Here is the caller graph for this function:

◆ hasParamsName()

bool hasParamsName ( RiskFactorKey::KeyType  kt,
string  name 
) const

Definition at line 72 of file scenariosimmarketparameters.cpp.

72 {
73 auto it = params_.find(kt);
74 if (it != params_.end()) {
75 return std::find(it->second.second.begin(), it->second.second.end(), name) == it->second.second.end() ? false
76 : true;
77 }
78 return false;
79}
+ Here is the caller graph for this function:

◆ addParamsName()

void addParamsName ( RiskFactorKey::KeyType  kt,
vector< string >  names 
)

Definition at line 81 of file scenariosimmarketparameters.cpp.

81 {
82 // check if key type exists - if doesn't exist set simulate to true first
83 if (names.size() > 0) {
84 auto it = params_.find(kt);
85 if (it == params_.end())
86 params_[kt].first = true;
87 for (auto name : names) {
88 if (!hasParamsName(kt, name))
89 params_[kt].second.insert(name);
90 }
91 }
92}
bool hasParamsName(RiskFactorKey::KeyType kt, string name) const
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ paramsSimulate()

bool paramsSimulate ( RiskFactorKey::KeyType  kt) const

Definition at line 94 of file scenariosimmarketparameters.cpp.

94 {
95 bool simulate = false;
96 auto it = params_.find(kt);
97 if (it != params_.end())
98 simulate = it->second.first;
99 return simulate;
100}
+ Here is the caller graph for this function:

◆ setParamsSimulate()

void setParamsSimulate ( RiskFactorKey::KeyType  kt,
bool  simulate 
)

Definition at line 102 of file scenariosimmarketparameters.cpp.

102 {
103 params_[kt].first = simulate;
104}
+ Here is the caller graph for this function:

◆ discountCurveNames()

vector< string > discountCurveNames ( ) const

Definition at line 67 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:

◆ yieldCurveNames()

vector< string > yieldCurveNames ( ) const

Definition at line 69 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ yieldCurveCurrencies() [1/2]

const map< string, string > & yieldCurveCurrencies ( ) const

◆ yieldCurveTenors() [1/2]

const vector< Period > & yieldCurveTenors ( const string &  key) const

Definition at line 162 of file scenariosimmarketparameters.cpp.

162 {
163 return lookup(yieldCurveTenors_, key);
164}

◆ hasYieldCurveTenors()

bool hasYieldCurveTenors ( const string &  key) const

Definition at line 72 of file scenariosimmarketparameters.hpp.

72{ return yieldCurveTenors_.count(key) > 0; }

◆ indices()

vector< string > indices ( ) const

Definition at line 73 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ swapIndices() [1/2]

const map< string, string > & swapIndices ( ) const

Definition at line 74 of file scenariosimmarketparameters.hpp.

◆ interpolation() [1/2]

const string & interpolation ( ) const

◆ extrapolation() [1/2]

const string & extrapolation ( ) const

◆ yieldCurveTenors() [2/2]

const map< string, vector< Period > > & yieldCurveTenors ( ) const

Definition at line 77 of file scenariosimmarketparameters.hpp.

77{ return yieldCurveTenors_; }

◆ simulateFxSpots()

bool simulateFxSpots ( ) const

Definition at line 79 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:

◆ fxCcyPairs()

vector< string > fxCcyPairs ( ) const

Definition at line 80 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ simulateSwapVols()

bool simulateSwapVols ( ) const

Definition at line 82 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ swapVolIsCube()

bool swapVolIsCube ( const string &  key) const

Definition at line 192 of file scenariosimmarketparameters.cpp.

192{ return lookup(swapVolIsCube_, key); }

◆ simulateSwapVolATMOnly() [1/2]

bool simulateSwapVolATMOnly ( ) const

Definition at line 84 of file scenariosimmarketparameters.hpp.

+ Here is the caller graph for this function:

◆ swapVolTerms()

const vector< Period > & swapVolTerms ( const string &  key) const

Definition at line 222 of file scenariosimmarketparameters.cpp.

222 {
223 return lookup(swapVolTerms_, key);
224}

◆ swapVolExpiries()

const vector< Period > & swapVolExpiries ( const string &  key) const

Definition at line 226 of file scenariosimmarketparameters.cpp.

226 {
227 return lookup(swapVolExpiries_, key);
228}

◆ swapVolKeys()

vector< string > swapVolKeys ( ) const

Definition at line 87 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ swapVolDecayMode() [1/2]

const string & swapVolDecayMode ( ) const

◆ swapVolStrikeSpreads()

const vector< Real > & swapVolStrikeSpreads ( const string &  key) const

Definition at line 230 of file scenariosimmarketparameters.cpp.

230 {
231 return lookup(swapVolStrikeSpreads_, key);
232}

◆ swapVolSmileDynamics()

const string & swapVolSmileDynamics ( const string &  key) const

Definition at line 194 of file scenariosimmarketparameters.cpp.

194 {
195 return lookup(swapVolSmileDynamics_, key);
196}

◆ simulateYieldVols()

bool simulateYieldVols ( ) const

Definition at line 92 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ yieldVolTerms() [1/2]

const vector< Period > & yieldVolTerms ( ) const

◆ yieldVolExpiries() [1/2]

const vector< Period > & yieldVolExpiries ( ) const

◆ yieldVolNames()

vector< string > yieldVolNames ( ) const

Definition at line 95 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ yieldVolDecayMode() [1/2]

const string & yieldVolDecayMode ( ) const

◆ yieldVolSmileDynamics()

const string & yieldVolSmileDynamics ( const string &  key) const

Definition at line 197 of file scenariosimmarketparameters.cpp.

197 {
198 return lookup(yieldVolSmileDynamics_, key);
199}

◆ simulateCapFloorVols()

bool simulateCapFloorVols ( ) const

Definition at line 99 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ capFloorVolKeys()

vector< string > capFloorVolKeys ( ) const

Definition at line 100 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ capFloorVolExpiries()

const vector< Period > & capFloorVolExpiries ( const string &  key) const

Definition at line 166 of file scenariosimmarketparameters.cpp.

166 {
167 return lookup(capFloorVolExpiries_, key);
168}

◆ hasCapFloorVolExpiries()

bool hasCapFloorVolExpiries ( const string &  key) const

Definition at line 102 of file scenariosimmarketparameters.hpp.

102{ return capFloorVolExpiries_.count(key) > 0; }

◆ capFloorVolStrikes()

const vector< Rate > & capFloorVolStrikes ( const std::string &  key) const

Definition at line 170 of file scenariosimmarketparameters.cpp.

170 {
171 return lookup(capFloorVolStrikes_, key);
172}
map< std::string, std::vector< QuantLib::Rate > > capFloorVolStrikes_

◆ capFloorVolIsAtm()

bool capFloorVolIsAtm ( const std::string &  key) const

Definition at line 174 of file scenariosimmarketparameters.cpp.

174{ return lookup(capFloorVolIsAtm_, key); }

◆ capFloorVolDecayMode() [1/2]

const string & capFloorVolDecayMode ( ) const

◆ capFloorVolAdjustOptionletPillars()

bool capFloorVolAdjustOptionletPillars ( ) const

If true, the capFloorVolExpiries are interpreted as cap maturities and the pillars for the optionlet structure are set equal to the fixing date of the last optionlet on the cap. If false, the capFloorVolExpiries are the pillars for the optionlet structure.

Definition at line 110 of file scenariosimmarketparameters.hpp.

+ Here is the caller graph for this function:

◆ capFloorVolUseCapAtm()

bool capFloorVolUseCapAtm ( ) const

If true, use ATM cap rate when capFloorVolIsAtm is true when querying the todaysmarket optionlet volatility structure at the configured expiries. Otherwise, use the index forward rate.

Definition at line 114 of file scenariosimmarketparameters.hpp.

114{ return capFloorVolUseCapAtm_; }
+ Here is the caller graph for this function:

◆ capFloorVolSmileDynamics()

const string & capFloorVolSmileDynamics ( const string &  key) const

Definition at line 200 of file scenariosimmarketparameters.cpp.

200 {
201 return lookup(capFloorVolSmileDynamics_, key);
202}

◆ simulateYoYInflationCapFloorVols()

bool simulateYoYInflationCapFloorVols ( ) const

Definition at line 117 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ yoyInflationCapFloorVolNames()

vector< string > yoyInflationCapFloorVolNames ( ) const

Definition at line 120 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ yoyInflationCapFloorVolExpiries()

const vector< Period > & yoyInflationCapFloorVolExpiries ( const string &  key) const

Definition at line 176 of file scenariosimmarketparameters.cpp.

176 {
177 return lookup(yoyInflationCapFloorVolExpiries_, key);
178}
map< string, vector< Period > > yoyInflationCapFloorVolExpiries_

◆ hasYoYInflationCapFloorVolExpiries()

bool hasYoYInflationCapFloorVolExpiries ( const string &  key) const

Definition at line 124 of file scenariosimmarketparameters.hpp.

124 {
125 return yoyInflationCapFloorVolExpiries_.count(key) > 0;
126 }

◆ yoyInflationCapFloorVolStrikes()

const vector< Rate > & yoyInflationCapFloorVolStrikes ( const std::string &  key) const

Definition at line 180 of file scenariosimmarketparameters.cpp.

180 {
181 return lookup(yoyInflationCapFloorVolStrikes_, key);
182}
map< std::string, std::vector< QuantLib::Rate > > yoyInflationCapFloorVolStrikes_

◆ yoyInflationCapFloorVolDecayMode() [1/2]

const string & yoyInflationCapFloorVolDecayMode ( ) const

Definition at line 128 of file scenariosimmarketparameters.hpp.

+ Here is the caller graph for this function:

◆ yoyInflationCapFloorVolSmileDynamics()

const string & yoyInflationCapFloorVolSmileDynamics ( const string &  key) const

Definition at line 203 of file scenariosimmarketparameters.cpp.

203 {
204 return lookup(yoyInflationCapFloorVolSmileDynamics_, key);
205}

◆ simulateZeroInflationCapFloorVols()

bool simulateZeroInflationCapFloorVols ( ) const

Definition at line 131 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ zeroInflationCapFloorVolNames()

vector< string > zeroInflationCapFloorVolNames ( ) const

Definition at line 134 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ zeroInflationCapFloorVolExpiries()

const vector< Period > & zeroInflationCapFloorVolExpiries ( const string &  key) const

Definition at line 234 of file scenariosimmarketparameters.cpp.

234 {
235 return lookup(zeroInflationCapFloorVolExpiries_, key);
236}
map< string, vector< Period > > zeroInflationCapFloorVolExpiries_

◆ hasZeroInflationCapFloorVolExpiries()

bool hasZeroInflationCapFloorVolExpiries ( const string &  key) const

Definition at line 138 of file scenariosimmarketparameters.hpp.

138 {
139 return zeroInflationCapFloorVolExpiries_.count(key) > 0;
140 }

◆ zeroInflationCapFloorVolStrikes()

const vector< Rate > & zeroInflationCapFloorVolStrikes ( const string &  key) const

Definition at line 238 of file scenariosimmarketparameters.cpp.

238 {
239 return lookup(zeroInflationCapFloorVolStrikes_, key);
240}
map< std::string, std::vector< QuantLib::Rate > > zeroInflationCapFloorVolStrikes_

◆ zeroInflationCapFloorVolDecayMode() [1/2]

const string & zeroInflationCapFloorVolDecayMode ( ) const

Definition at line 142 of file scenariosimmarketparameters.hpp.

+ Here is the caller graph for this function:

◆ zeroInflationCapFloorVolSmileDynamics()

const string & zeroInflationCapFloorVolSmileDynamics ( const string &  key) const

Definition at line 206 of file scenariosimmarketparameters.cpp.

206 {
207 return lookup(zeroInflationCapFloorVolSmileDynamics_, key);
208}

◆ simulateSurvivalProbabilities()

bool simulateSurvivalProbabilities ( ) const

Definition at line 145 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ simulateRecoveryRates()

bool simulateRecoveryRates ( ) const

Definition at line 146 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ defaultNames()

vector< string > defaultNames ( ) const

Definition at line 147 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ defaultCurveCalendar()

const string & defaultCurveCalendar ( const string &  key) const

Definition at line 188 of file scenariosimmarketparameters.cpp.

188 {
189 return lookup(defaultCurveCalendars_, key);
190}

◆ defaultTenors()

const vector< Period > & defaultTenors ( const string &  key) const

Definition at line 184 of file scenariosimmarketparameters.cpp.

184 {
185 return lookup(defaultTenors_, key);
186}

◆ hasDefaultTenors()

bool hasDefaultTenors ( const string &  key) const

Definition at line 150 of file scenariosimmarketparameters.hpp.

150{ return defaultTenors_.count(key) > 0; }

◆ defaultCurveExtrapolation()

const string & defaultCurveExtrapolation ( ) const

◆ simulateCdsVols()

bool simulateCdsVols ( ) const

Definition at line 153 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ simulateCdsVolATMOnly()

bool simulateCdsVolATMOnly ( ) const

◆ cdsVolExpiries() [1/2]

const vector< Period > & cdsVolExpiries ( ) const

◆ cdsVolNames()

vector< string > cdsVolNames ( ) const

Definition at line 156 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cdsVolDecayMode() [1/2]

const string & cdsVolDecayMode ( ) const

◆ cdsVolSmileDynamics()

const string & cdsVolSmileDynamics ( const string &  key) const

Definition at line 209 of file scenariosimmarketparameters.cpp.

209 {
210 return lookup(cdsVolSmileDynamics_, key);
211}

◆ equityNames()

vector< string > equityNames ( ) const

Definition at line 160 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ equityDividendTenors()

const vector< Period > & equityDividendTenors ( const string &  key) const

Definition at line 242 of file scenariosimmarketparameters.cpp.

242 {
243 return lookup(equityDividendTenors_, key);
244}

◆ hasEquityDividendTenors()

bool hasEquityDividendTenors ( const string &  key) const

Definition at line 162 of file scenariosimmarketparameters.hpp.

162{ return equityDividendTenors_.count(key) > 0; }

◆ equityDividendYields()

vector< string > equityDividendYields ( ) const

Definition at line 163 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:

◆ simulateDividendYield()

bool simulateDividendYield ( ) const

Definition at line 164 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ simulateFXVols()

bool simulateFXVols ( ) const

Definition at line 167 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ simulateFxVolATMOnly()

bool simulateFxVolATMOnly ( ) const

◆ fxVolIsSurface()

bool fxVolIsSurface ( const std::string &  ccypair) const

Definition at line 278 of file scenariosimmarketparameters.cpp.

278 {
279 return lookup(fxVolIsSurface_, ccypair);
280}

◆ fxUseMoneyness()

bool fxUseMoneyness ( const std::string &  ccypair) const

Definition at line 282 of file scenariosimmarketparameters.cpp.

282 {
283 try {
284 const vector<Real> temp = lookup(fxMoneyness_, ccypair);
285 if (temp.size() > 0)
286 return true;
287 } catch (...) {
288 }
289 return false;
290}

◆ fxVolExpiries()

const vector< Period > & fxVolExpiries ( const string &  key) const

Definition at line 389 of file scenariosimmarketparameters.cpp.

389 {
390 return lookup(fxVolExpiries_, key);
391}

◆ fxVolDecayMode()

const string & fxVolDecayMode ( ) const

◆ fxVolCcyPairs()

vector< string > fxVolCcyPairs ( ) const

Definition at line 173 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fxVolMoneyness()

const vector< Real > & fxVolMoneyness ( const string &  ccypair) const

Definition at line 270 of file scenariosimmarketparameters.cpp.

270 {
271 return lookup(fxMoneyness_, ccypair);
272}
+ Here is the caller graph for this function:

◆ fxVolStdDevs()

const vector< Real > & fxVolStdDevs ( const string &  ccypair) const

Definition at line 274 of file scenariosimmarketparameters.cpp.

274 {
275 return lookup(fxStandardDevs_, ccypair);
276}
+ Here is the caller graph for this function:

◆ fxVolSmileDynamics()

const string & fxVolSmileDynamics ( const string &  key) const

Definition at line 212 of file scenariosimmarketparameters.cpp.

212 {
213 return lookup(fxVolSmileDynamics_, key);
214}

◆ simulateEquityVols()

bool simulateEquityVols ( ) const

Definition at line 178 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ simulateEquityVolATMOnly()

bool simulateEquityVolATMOnly ( ) const

◆ equityUseMoneyness()

bool equityUseMoneyness ( const string &  key) const

Definition at line 628 of file scenariosimmarketparameters.cpp.

628 {
629 try {
630 const vector<Real> temp = lookup(equityMoneyness_, key);
631 if (temp.size() > 0)
632 return true;
633 } catch (...) {}
634 return false;
635}

◆ equityVolIsSurface()

bool equityVolIsSurface ( const string &  key) const

Definition at line 637 of file scenariosimmarketparameters.cpp.

637 {
638 return lookup(equityVolIsSurface_, key);
639}

◆ equityVolExpiries()

const vector< Period > & equityVolExpiries ( const string &  key) const

Definition at line 641 of file scenariosimmarketparameters.cpp.

641 {
642 return lookup(equityVolExpiries_, key);
643}

◆ equityVolDecayMode()

const string & equityVolDecayMode ( ) const

◆ equityVolNames()

vector< string > equityVolNames ( ) const

Definition at line 184 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ equityVolMoneyness()

const vector< Real > & equityVolMoneyness ( const string &  key) const

Definition at line 645 of file scenariosimmarketparameters.cpp.

645 {
646 return lookup(equityMoneyness_, key);
647}
+ Here is the caller graph for this function:

◆ equityVolStandardDevs()

const vector< Real > & equityVolStandardDevs ( const string &  key) const

Definition at line 649 of file scenariosimmarketparameters.cpp.

649 {
650 return lookup(equityStandardDevs_, key);
651}
+ Here is the caller graph for this function:

◆ equityVolSmileDynamics()

const string & equityVolSmileDynamics ( const string &  key) const

Definition at line 215 of file scenariosimmarketparameters.cpp.

215 {
216 return lookup(equityVolSmileDynamics_, key);
217}

◆ additionalScenarioDataIndices() [1/2]

const vector< string > & additionalScenarioDataIndices ( ) const

◆ additionalScenarioDataCcys() [1/2]

const vector< string > & additionalScenarioDataCcys ( ) const

◆ additionalScenarioDataNumberOfCreditStates()

const Size additionalScenarioDataNumberOfCreditStates ( ) const

◆ additionalScenarioDataSurvivalWeights()

const vector< string > & additionalScenarioDataSurvivalWeights ( ) const

◆ securitySpreadsSimulate()

bool securitySpreadsSimulate ( ) const

Definition at line 194 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ securities()

vector< string > securities ( ) const

Definition at line 195 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ simulateBaseCorrelations()

bool simulateBaseCorrelations ( ) const

Definition at line 197 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ baseCorrelationTerms() [1/2]

const vector< Period > & baseCorrelationTerms ( ) const

◆ baseCorrelationDetachmentPoints() [1/2]

const vector< Real > & baseCorrelationDetachmentPoints ( ) const

◆ baseCorrelationNames()

vector< string > baseCorrelationNames ( ) const

Definition at line 200 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cpiIndices()

vector< string > cpiIndices ( ) const

Definition at line 202 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ zeroInflationIndices()

vector< string > zeroInflationIndices ( ) const

Definition at line 203 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ zeroInflationTenors()

const vector< Period > & zeroInflationTenors ( const string &  key) const

Definition at line 246 of file scenariosimmarketparameters.cpp.

246 {
247 return lookup(zeroInflationTenors_, key);
248}

◆ hasZeroInflationTenors()

bool hasZeroInflationTenors ( const string &  key) const

Definition at line 205 of file scenariosimmarketparameters.hpp.

205{ return zeroInflationTenors_.count(key) > 0; }

◆ yoyInflationIndices()

vector< string > yoyInflationIndices ( ) const

Definition at line 206 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ yoyInflationTenors()

const vector< Period > & yoyInflationTenors ( const string &  key) const

Definition at line 250 of file scenariosimmarketparameters.cpp.

250 {
251 return lookup(yoyInflationTenors_, key);
252}

◆ hasYoyInflationTenors()

bool hasYoyInflationTenors ( const string &  key) const

Definition at line 208 of file scenariosimmarketparameters.hpp.

208{ return yoyInflationTenors_.count(key) > 0; }

◆ commodityCurveSimulate()

bool commodityCurveSimulate ( ) const

Definition at line 211 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ commodityNames()

vector< string > commodityNames ( ) const

Definition at line 254 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ commodityCurveTenors()

const vector< Period > & commodityCurveTenors ( const std::string &  commodityName) const

Definition at line 258 of file scenariosimmarketparameters.cpp.

258 {
259 return lookup(commodityCurveTenors_, commodityName);
260}
std::map< std::string, std::vector< QuantLib::Period > > commodityCurveTenors_

◆ hasCommodityCurveTenors()

bool hasCommodityCurveTenors ( const std::string &  commodityName) const

Definition at line 262 of file scenariosimmarketparameters.cpp.

262 {
263 return commodityCurveTenors_.count(commodityName) > 0;
264}

◆ commodityVolSimulate()

bool commodityVolSimulate ( ) const

Definition at line 217 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ commodityVolDecayMode() [1/2]

const std::string & commodityVolDecayMode ( ) const

◆ commodityVolNames()

std::vector< std::string > commodityVolNames ( ) const

Definition at line 219 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ commodityVolExpiries() [1/2]

const vector< Period > & commodityVolExpiries ( const std::string &  commodityName) const

Definition at line 266 of file scenariosimmarketparameters.cpp.

266 {
267 return lookup(commodityVolExpiries_, commodityName);
268}
std::map< std::string, std::vector< QuantLib::Period > > commodityVolExpiries_

◆ commodityVolMoneyness() [1/2]

const vector< Real > & commodityVolMoneyness ( const std::string &  commodityName) const

Definition at line 292 of file scenariosimmarketparameters.cpp.

292 {
293 if (commodityVolMoneyness_.count(commodityName) > 0) {
294 return commodityVolMoneyness_.at(commodityName);
295 } else {
296 QL_FAIL("no moneyness for commodity \"" << commodityName << "\" found.");
297 }
298}
std::map< std::string, std::vector< QuantLib::Real > > commodityVolMoneyness_

◆ commodityVolSmileDynamics()

const string & commodityVolSmileDynamics ( const string &  commodityName) const

Definition at line 218 of file scenariosimmarketparameters.cpp.

218 {
219 return lookup(commodityVolSmileDynamics_, key);
220}

◆ simulateCorrelations()

bool simulateCorrelations ( ) const

Definition at line 226 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ correlationIsSurface() [1/2]

bool correlationIsSurface ( ) const

Definition at line 227 of file scenariosimmarketparameters.hpp.

227{ return correlationIsSurface_; }

◆ correlationExpiries() [1/2]

const vector< Period > & correlationExpiries ( ) const

◆ correlationPairs()

vector< std::string > correlationPairs ( ) const

Definition at line 229 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ correlationStrikes() [1/2]

const vector< Real > & correlationStrikes ( ) const

Definition at line 230 of file scenariosimmarketparameters.hpp.

230{ return correlationStrikes_; }

◆ numberOfCreditStates()

Size numberOfCreditStates ( ) const

Definition at line 232 of file scenariosimmarketparameters.hpp.

+ Here is the caller graph for this function:

◆ parameters()

const std::map< RiskFactorKey::KeyType, std::pair< bool, std::set< std::string > > > & parameters ( ) const

Definition at line 235 of file scenariosimmarketparameters.hpp.

235 {
236 return params_;
237 }

◆ baseCcy() [2/2]

string & baseCcy ( )

Definition at line 242 of file scenariosimmarketparameters.hpp.

242{ return baseCcy_; }

◆ ccys() [2/2]

vector< string > & ccys ( )

Definition at line 243 of file scenariosimmarketparameters.hpp.

243{ return ccys_; }

◆ setDiscountCurveNames()

void setDiscountCurveNames ( vector< string >  names)

Definition at line 421 of file scenariosimmarketparameters.cpp.

421 {
422 ccys_ = names;
424}
void addParamsName(RiskFactorKey::KeyType kt, vector< string > names)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setYieldCurveNames()

void setYieldCurveNames ( vector< string >  names)

Definition at line 426 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ yieldCurveCurrencies() [2/2]

map< string, string > & yieldCurveCurrencies ( )

Definition at line 246 of file scenariosimmarketparameters.hpp.

246{ return yieldCurveCurrencies_; }

◆ setYieldCurveTenors()

void setYieldCurveTenors ( const string &  key,
const vector< Period > &  p 
)

Definition at line 300 of file scenariosimmarketparameters.cpp.

300 {
301 yieldCurveTenors_[key] = p;
302}

◆ setIndices()

void setIndices ( vector< string >  names)

Definition at line 430 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ swapIndices() [2/2]

map< string, string > & swapIndices ( )

Definition at line 249 of file scenariosimmarketparameters.hpp.

249{ return swapIndices_; }

◆ interpolation() [2/2]

string & interpolation ( )

Definition at line 250 of file scenariosimmarketparameters.hpp.

250{ return interpolation_; }

◆ extrapolation() [2/2]

string & extrapolation ( )

Definition at line 251 of file scenariosimmarketparameters.hpp.

251{ return extrapolation_; }

◆ setSimulateFxSpots()

void setSimulateFxSpots ( bool  simulate)

Definition at line 600 of file scenariosimmarketparameters.cpp.

600 {
602}
void setParamsSimulate(RiskFactorKey::KeyType kt, bool simulate)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFxCcyPairs()

void setFxCcyPairs ( vector< string >  names)

Definition at line 434 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSimulateSwapVols()

void setSimulateSwapVols ( bool  simulate)

Definition at line 536 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSwapVolIsCube()

void setSwapVolIsCube ( const string &  key,
bool  isCube 
)

Definition at line 304 of file scenariosimmarketparameters.cpp.

304{ swapVolIsCube_[key] = isCube; }
+ Here is the caller graph for this function:

◆ simulateSwapVolATMOnly() [2/2]

bool & simulateSwapVolATMOnly ( )

Definition at line 258 of file scenariosimmarketparameters.hpp.

258{ return swapVolSimulateATMOnly_; }

◆ setSwapVolTerms()

void setSwapVolTerms ( const string &  key,
const vector< Period > &  p 
)

Definition at line 336 of file scenariosimmarketparameters.cpp.

336 {
337 swapVolTerms_[key] = p;
338}

◆ setSwapVolKeys()

void setSwapVolKeys ( vector< string >  names)

Definition at line 438 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSwapVolExpiries()

void setSwapVolExpiries ( const string &  key,
const vector< Period > &  p 
)

Definition at line 340 of file scenariosimmarketparameters.cpp.

340 {
341 swapVolExpiries_[key] = p;
342}

◆ setSwapVolStrikeSpreads()

void setSwapVolStrikeSpreads ( const std::string &  key,
const std::vector< QuantLib::Rate > &  strikes 
)

Definition at line 344 of file scenariosimmarketparameters.cpp.

345 {
346 setSwapVolIsCube(key, strikes.size() > 1);
348}
void setSwapVolIsCube(const string &key, bool isCube)
vector< Real > strikes
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ swapVolDecayMode() [2/2]

string & swapVolDecayMode ( )

Definition at line 263 of file scenariosimmarketparameters.hpp.

263{ return swapVolDecayMode_; }

◆ setSwapVolSmileDynamics()

void setSwapVolSmileDynamics ( const string &  key,
const string &  smileDynamics 
)

Definition at line 306 of file scenariosimmarketparameters.cpp.

306 {
307 swapVolSmileDynamics_[key] = smileDynamics;
308}
+ Here is the caller graph for this function:

◆ setSimulateYieldVols()

void setSimulateYieldVols ( bool  simulate)

Definition at line 540 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ yieldVolTerms() [2/2]

vector< Period > & yieldVolTerms ( )

Definition at line 267 of file scenariosimmarketparameters.hpp.

267{ return yieldVolTerms_; }

◆ setYieldVolNames()

void setYieldVolNames ( vector< string >  names)

Definition at line 442 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ yieldVolExpiries() [2/2]

vector< Period > & yieldVolExpiries ( )

Definition at line 269 of file scenariosimmarketparameters.hpp.

269{ return yieldVolExpiries_; }

◆ yieldVolDecayMode() [2/2]

string & yieldVolDecayMode ( )

Definition at line 270 of file scenariosimmarketparameters.hpp.

270{ return yieldVolDecayMode_; }

◆ setYieldVolSmileDynamics()

void setYieldVolSmileDynamics ( const string &  key,
const string &  smileDynamics 
)

Definition at line 315 of file scenariosimmarketparameters.cpp.

315 {
316 yieldVolSmileDynamics_[key] = smileDynamics;
317}
+ Here is the caller graph for this function:

◆ setSimulateCapFloorVols()

void setSimulateCapFloorVols ( bool  simulate)

Definition at line 544 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCapFloorVolKeys()

void setCapFloorVolKeys ( vector< string >  names)

Definition at line 446 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCapFloorVolExpiries()

void setCapFloorVolExpiries ( const string &  key,
const vector< Period > &  p 
)

Definition at line 350 of file scenariosimmarketparameters.cpp.

350 {
351 capFloorVolExpiries_[key] = p;
352}

◆ setCapFloorVolStrikes()

void setCapFloorVolStrikes ( const std::string &  key,
const std::vector< QuantLib::Rate > &  strikes 
)

Definition at line 354 of file scenariosimmarketparameters.cpp.

354 {
355 // An empty vector of strikes signifies ATM
356 capFloorVolIsAtm_[key] = strikes.empty();
358}

◆ setCapFloorVolIsAtm()

void setCapFloorVolIsAtm ( const std::string &  key,
bool  isAtm 
)

Definition at line 360 of file scenariosimmarketparameters.cpp.

360 {
361 capFloorVolIsAtm_[key] = isAtm;
362 if (isAtm) {
363 // An empty vector of strikes signifies ATM. If isAtm is false, user is expected to have
364 // provided the strikes by calling setCapFloorVolStrikes.
365 capFloorVolStrikes_[key] = vector<Rate>();
366 }
367}

◆ capFloorVolDecayMode() [2/2]

string & capFloorVolDecayMode ( )

Definition at line 278 of file scenariosimmarketparameters.hpp.

278{ return capFloorVolDecayMode_; }

◆ setCapFloorVolAdjustOptionletPillars()

void setCapFloorVolAdjustOptionletPillars ( bool  capFloorVolAdjustOptionletPillars)

Definition at line 279 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:

◆ setCapFloorVolUseCapAtm()

void setCapFloorVolUseCapAtm ( bool  capFloorVolUseCapAtm)

Definition at line 282 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:

◆ setCapFloorVolSmileDynamics()

void setCapFloorVolSmileDynamics ( const string &  key,
const string &  smileDynamics 
)

Definition at line 312 of file scenariosimmarketparameters.cpp.

312 {
313 capFloorVolSmileDynamics_[key] = smileDynamics;
314}
+ Here is the caller graph for this function:

◆ setSimulateYoYInflationCapFloorVols()

void setSimulateYoYInflationCapFloorVols ( bool  simulate)

Definition at line 548 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setYoYInflationCapFloorVolNames()

void setYoYInflationCapFloorVolNames ( vector< string >  names)

Definition at line 450 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setYoYInflationCapFloorVolExpiries()

void setYoYInflationCapFloorVolExpiries ( const string &  key,
const vector< Period > &  p 
)

Definition at line 552 of file scenariosimmarketparameters.cpp.

552 {
554}

◆ setYoYInflationCapFloorVolStrikes()

void setYoYInflationCapFloorVolStrikes ( const std::string &  key,
const std::vector< QuantLib::Rate > &  strikes 
)

Definition at line 556 of file scenariosimmarketparameters.cpp.

556 {
558}

◆ yoyInflationCapFloorVolDecayMode() [2/2]

string & yoyInflationCapFloorVolDecayMode ( )

Definition at line 291 of file scenariosimmarketparameters.hpp.

◆ setYoYInflationCapFloorVolSmileDynamics()

void setYoYInflationCapFloorVolSmileDynamics ( const string &  key,
const string &  smileDynamics 
)

Definition at line 322 of file scenariosimmarketparameters.cpp.

323 {
324 yoyInflationCapFloorVolSmileDynamics_[key] = smileDynamics;
325}
+ Here is the caller graph for this function:

◆ setSimulateZeroInflationCapFloorVols()

void setSimulateZeroInflationCapFloorVols ( bool  simulate)

Definition at line 560 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setZeroInflationCapFloorNames()

void setZeroInflationCapFloorNames ( vector< string >  names)

Definition at line 454 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setZeroInflationCapFloorVolExpiries()

void setZeroInflationCapFloorVolExpiries ( const string &  key,
const vector< Period > &  p 
)

Definition at line 458 of file scenariosimmarketparameters.cpp.

458 {
460}

◆ setZeroInflationCapFloorVolStrikes()

void setZeroInflationCapFloorVolStrikes ( const std::string &  key,
const std::vector< QuantLib::Rate > &  strikes 
)

Definition at line 462 of file scenariosimmarketparameters.cpp.

462 {
464}

◆ zeroInflationCapFloorVolDecayMode() [2/2]

string & zeroInflationCapFloorVolDecayMode ( )

Definition at line 298 of file scenariosimmarketparameters.hpp.

◆ setZeroInflationCapFloorVolSmileDynamics()

void setZeroInflationCapFloorVolSmileDynamics ( const string &  key,
const string &  smileDynamics 
)

Definition at line 318 of file scenariosimmarketparameters.cpp.

319 {
320 zeroInflationCapFloorVolSmileDynamics_[key] = smileDynamics;
321}
+ Here is the caller graph for this function:

◆ setSimulateSurvivalProbabilities()

void setSimulateSurvivalProbabilities ( bool  simulate)

Definition at line 564 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSimulateRecoveryRates()

void setSimulateRecoveryRates ( bool  simulate)

Definition at line 568 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setDefaultNames()

void setDefaultNames ( vector< string >  names)

Definition at line 466 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setDefaultTenors()

void setDefaultTenors ( const string &  key,
const vector< Period > &  p 
)

Definition at line 369 of file scenariosimmarketparameters.cpp.

369 {
370 defaultTenors_[key] = p;
371}

◆ setDefaultCurveCalendars()

void setDefaultCurveCalendars ( const string &  key,
const string &  p 
)

Definition at line 373 of file scenariosimmarketparameters.cpp.

373 {
374 defaultCurveCalendars_[key] = s;
375}

◆ setDefaultCurveExtrapolation()

void setDefaultCurveExtrapolation ( const std::string &  e)

Definition at line 306 of file scenariosimmarketparameters.hpp.

◆ setSimulateCdsVols()

void setSimulateCdsVols ( bool  simulate)

Definition at line 572 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSimulateCdsVolsATMOnly()

void setSimulateCdsVolsATMOnly ( bool  simulateATMOnly)

Definition at line 309 of file scenariosimmarketparameters.hpp.

309{ cdsVolSimulateATMOnly_ = simulateATMOnly; }
+ Here is the caller graph for this function:

◆ cdsVolExpiries() [2/2]

vector< Period > & cdsVolExpiries ( )

Definition at line 310 of file scenariosimmarketparameters.hpp.

310{ return cdsVolExpiries_; }

◆ setCdsVolNames()

void setCdsVolNames ( vector< string >  names)

Definition at line 471 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cdsVolDecayMode() [2/2]

string & cdsVolDecayMode ( )

Definition at line 312 of file scenariosimmarketparameters.hpp.

312{ return cdsVolDecayMode_; }

◆ setCdsVolSmileDynamics()

void setCdsVolSmileDynamics ( const string &  key,
const string &  smileDynamics 
)

Definition at line 309 of file scenariosimmarketparameters.cpp.

309 {
310 cdsVolSmileDynamics_[key] = smileDynamics;
311}
+ Here is the caller graph for this function:

◆ setEquityNames()

void setEquityNames ( vector< string >  names)

Definition at line 475 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setEquityDividendCurves()

void setEquityDividendCurves ( vector< string >  names)

Definition at line 480 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setEquityDividendTenors()

void setEquityDividendTenors ( const string &  key,
const vector< Period > &  p 
)

Definition at line 377 of file scenariosimmarketparameters.cpp.

377 {
378 equityDividendTenors_[key] = p;
379}

◆ setSimulateDividendYield()

void setSimulateDividendYield ( bool  simulate)

Definition at line 532 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSimulateFXVols()

void setSimulateFXVols ( bool  simulate)

Definition at line 576 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSimulateFxVolATMOnly()

void setSimulateFxVolATMOnly ( bool  simulateATMOnly)

Definition at line 322 of file scenariosimmarketparameters.hpp.

322{ fxVolSimulateATMOnly_ = simulateATMOnly; }
+ Here is the caller graph for this function:

◆ setFxVolIsSurface() [1/2]

void setFxVolIsSurface ( const string &  ccypair,
bool  val 
)

Definition at line 393 of file scenariosimmarketparameters.cpp.

393{ fxVolIsSurface_[key] = val; }
+ Here is the caller graph for this function:

◆ setFxVolIsSurface() [2/2]

void setFxVolIsSurface ( bool  val)

Definition at line 395 of file scenariosimmarketparameters.cpp.

395{ fxVolIsSurface_[""] = val; }

◆ setFxVolExpiries()

void setFxVolExpiries ( const string &  name,
const vector< Period > &  expiries 
)

Definition at line 397 of file scenariosimmarketparameters.cpp.

397 {
398 fxVolExpiries_[key] = expiries;
399}

◆ setFxVolDecayMode()

void setFxVolDecayMode ( const string &  val)

Definition at line 401 of file scenariosimmarketparameters.cpp.

401{ fxVolDecayMode_ = val; }

◆ setFxVolCcyPairs()

void setFxVolCcyPairs ( vector< string >  names)

Definition at line 484 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFxVolMoneyness() [1/2]

void setFxVolMoneyness ( const string &  ccypair,
const vector< Real > &  moneyness 
)

Definition at line 403 of file scenariosimmarketparameters.cpp.

403 {
404 fxMoneyness_[ccypair] = moneyness;
405}
+ Here is the caller graph for this function:

◆ setFxVolMoneyness() [2/2]

void setFxVolMoneyness ( const vector< Real > &  moneyness)

Definition at line 407 of file scenariosimmarketparameters.cpp.

407{ fxMoneyness_[""] = moneyness; }

◆ setFxVolStdDevs() [1/2]

void setFxVolStdDevs ( const string &  ccypair,
const vector< Real > &  stdDevs 
)

Definition at line 409 of file scenariosimmarketparameters.cpp.

409 {
410 fxStandardDevs_[ccypair] = moneyness;
411}
+ Here is the caller graph for this function:

◆ setFxVolStdDevs() [2/2]

void setFxVolStdDevs ( const vector< Real > &  stdDevs)

Definition at line 413 of file scenariosimmarketparameters.cpp.

413{ fxStandardDevs_[""] = moneyness; }

◆ setFxVolSmileDynamics()

void setFxVolSmileDynamics ( const string &  name,
const string &  smileDynamics 
)

Definition at line 329 of file scenariosimmarketparameters.cpp.

329 {
330 fxVolSmileDynamics_[key] = smileDynamics;
331}
+ Here is the caller graph for this function:

◆ setSimulateEquityVols()

void setSimulateEquityVols ( bool  simulate)

Definition at line 580 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSimulateEquityVolATMOnly()

void setSimulateEquityVolATMOnly ( bool  simulateATMOnly)

Definition at line 335 of file scenariosimmarketparameters.hpp.

335{ equityVolSimulateATMOnly_ = simulateATMOnly; }
+ Here is the caller graph for this function:

◆ setEquityVolIsSurface()

void setEquityVolIsSurface ( const string &  name,
bool  isSurface 
)

Definition at line 612 of file scenariosimmarketparameters.cpp.

612 {
613 equityVolIsSurface_[name] = isSurface;
614}
string name
+ Here is the caller graph for this function:

◆ setEquityVolExpiries()

void setEquityVolExpiries ( const string &  name,
const vector< Period > &  expiries 
)

Definition at line 616 of file scenariosimmarketparameters.cpp.

616 {
617 equityVolExpiries_[name] = expiries;
618}

◆ setEquityVolDecayMode()

void setEquityVolDecayMode ( const string &  val)

Definition at line 338 of file scenariosimmarketparameters.hpp.

338{ equityVolDecayMode_ = val; }

◆ setEquityVolNames()

void setEquityVolNames ( vector< string >  names)

Definition at line 488 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setEquityVolMoneyness()

void setEquityVolMoneyness ( const string &  name,
const vector< Real > &  moneyness 
)

Definition at line 620 of file scenariosimmarketparameters.cpp.

620 {
621 equityMoneyness_[name] = moneyness;
622}
+ Here is the caller graph for this function:

◆ setEquityVolStandardDevs()

void setEquityVolStandardDevs ( const string &  name,
const vector< Real > &  standardDevs 
)

Definition at line 624 of file scenariosimmarketparameters.cpp.

624 {
625 equityStandardDevs_[name] = standardDevs;
626}
+ Here is the caller graph for this function:

◆ setEquityVolSmileDynamics()

void setEquityVolSmileDynamics ( const string &  name,
const string &  smileDynamics 
)

Definition at line 326 of file scenariosimmarketparameters.cpp.

326 {
327 equityVolSmileDynamics_[key] = smileDynamics;
328}
+ Here is the caller graph for this function:

◆ additionalScenarioDataIndices() [2/2]

vector< string > & additionalScenarioDataIndices ( )

Definition at line 344 of file scenariosimmarketparameters.hpp.

◆ setAdditionalScenarioDataIndices()

void setAdditionalScenarioDataIndices ( const vector< string > &  asdi)

Definition at line 345 of file scenariosimmarketparameters.hpp.

◆ additionalScenarioDataCcys() [2/2]

vector< string > & additionalScenarioDataCcys ( )

Definition at line 346 of file scenariosimmarketparameters.hpp.

◆ setAdditionalScenarioDataCcys()

void setAdditionalScenarioDataCcys ( const vector< string > &  ccys)

Definition at line 347 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:

◆ setSecuritySpreadsSimulate()

void setSecuritySpreadsSimulate ( bool  simulate)

Definition at line 596 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSecurities()

void setSecurities ( vector< string >  names)

Definition at line 492 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setRecoveryRates()

void setRecoveryRates ( vector< string >  names)

Definition at line 496 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCprs()

void setCprs ( const vector< string > &  names)

Definition at line 528 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSimulateCprs()

void setSimulateCprs ( bool  simulate)

Definition at line 608 of file scenariosimmarketparameters.cpp.

608 {
610}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ simulateCprs()

bool simulateCprs ( ) const

Definition at line 354 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cprs()

const vector< string > & cprs ( ) const

Definition at line 355 of file scenariosimmarketparameters.hpp.

+ Here is the caller graph for this function:

◆ setSimulateBaseCorrelations()

void setSimulateBaseCorrelations ( bool  simulate)

Definition at line 584 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ baseCorrelationTerms() [2/2]

vector< Period > & baseCorrelationTerms ( )

Definition at line 358 of file scenariosimmarketparameters.hpp.

358{ return baseCorrelationTerms_; }

◆ baseCorrelationDetachmentPoints() [2/2]

vector< Real > & baseCorrelationDetachmentPoints ( )

Definition at line 359 of file scenariosimmarketparameters.hpp.

◆ setBaseCorrelationNames()

void setBaseCorrelationNames ( vector< string >  names)

Definition at line 500 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCpiIndices()

void setCpiIndices ( vector< string >  names)

Definition at line 504 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setZeroInflationIndices()

void setZeroInflationIndices ( vector< string >  names)

Definition at line 508 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setZeroInflationTenors()

void setZeroInflationTenors ( const string &  key,
const vector< Period > &  p 
)

Definition at line 381 of file scenariosimmarketparameters.cpp.

381 {
382 zeroInflationTenors_[key] = p;
383}

◆ setYoyInflationIndices()

void setYoyInflationIndices ( vector< string >  names)

Definition at line 512 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setYoyInflationTenors()

void setYoyInflationTenors ( const string &  key,
const vector< Period > &  p 
)

Definition at line 385 of file scenariosimmarketparameters.cpp.

385 {
386 yoyInflationTenors_[key] = p;
387}

◆ setCommodityCurveSimulate()

void setCommodityCurveSimulate ( bool  simulate)

Definition at line 588 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCommodityNames()

void setCommodityNames ( vector< string >  names)

Definition at line 415 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCommodityCurves()

void setCommodityCurves ( vector< string >  names)

Definition at line 520 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCommodityCurveTenors()

void setCommodityCurveTenors ( const std::string &  commodityName,
const std::vector< QuantLib::Period > &  p 
)

Definition at line 417 of file scenariosimmarketparameters.cpp.

417 {
418 commodityCurveTenors_[commodityName] = p;
419}

◆ setCommodityVolSimulate()

void setCommodityVolSimulate ( bool  simulate)

Definition at line 592 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ commodityVolDecayMode() [2/2]

std::string & commodityVolDecayMode ( )

Definition at line 376 of file scenariosimmarketparameters.hpp.

376{ return commodityVolDecayMode_; }

◆ setCommodityVolNames()

void setCommodityVolNames ( vector< string >  names)

Definition at line 516 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ commodityVolExpiries() [2/2]

std::vector< QuantLib::Period > & commodityVolExpiries ( const std::string &  commodityName)

Definition at line 378 of file scenariosimmarketparameters.hpp.

378 {
379 return commodityVolExpiries_[commodityName];
380 }

◆ commodityVolMoneyness() [2/2]

std::vector< QuantLib::Real > & commodityVolMoneyness ( const std::string &  commodityName)

Definition at line 381 of file scenariosimmarketparameters.hpp.

381 {
382 return commodityVolMoneyness_[commodityName];
383 }

◆ setCommodityVolSmileDynamics()

void setCommodityVolSmileDynamics ( const string &  key,
const string &  smileDynamics 
)

Definition at line 332 of file scenariosimmarketparameters.cpp.

332 {
333 commodityVolSmileDynamics_[key] = smileDynamics;
334}
+ Here is the caller graph for this function:

◆ setSimulateCorrelations()

void setSimulateCorrelations ( bool  simulate)

Definition at line 604 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ correlationIsSurface() [2/2]

bool & correlationIsSurface ( )

Definition at line 387 of file scenariosimmarketparameters.hpp.

387{ return correlationIsSurface_; }

◆ correlationExpiries() [2/2]

vector< Period > & correlationExpiries ( )

Definition at line 388 of file scenariosimmarketparameters.hpp.

388{ return correlationExpiries_; }

◆ setCorrelationPairs()

void setCorrelationPairs ( vector< string >  names)

Definition at line 524 of file scenariosimmarketparameters.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ correlationStrikes() [2/2]

vector< Real > & correlationStrikes ( )

Definition at line 390 of file scenariosimmarketparameters.hpp.

390{ return correlationStrikes_; }

◆ setNumberOfCreditStates()

void setNumberOfCreditStates ( Size  numberOfCreditStates)

Definition at line 391 of file scenariosimmarketparameters.hpp.

+ Here is the call graph for this function:

◆ fromXML()

void fromXML ( XMLNode node)
overridevirtual

Implements XMLSerializable.

Definition at line 696 of file scenariosimmarketparameters.cpp.

696 {
697
698 // fromXML always uses a "clean" object
699 reset();
700
701 DLOG("ScenarioSimMarketParameters::fromXML()");
702
703 XMLNode* sim = XMLUtils::locateNode(root, "Simulation");
704 XMLNode* node = XMLUtils::getChildNode(sim, "Market");
705 XMLUtils::checkNode(node, "Market");
706
707 // TODO: add in checks (checkNode or QL_REQUIRE) on mandatory nodes
708 DLOG("Loading Currencies");
709 baseCcy_ = XMLUtils::getChildValue(node, "BaseCurrency");
710 setDiscountCurveNames(XMLUtils::getChildrenValues(node, "Currencies", "Currency"));
711
712 DLOG("Loading BenchmarkCurve");
713 XMLNode* nodeChild = XMLUtils::getChildNode(node, "BenchmarkCurves");
714 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
715 vector<string> yields;
716 for (XMLNode* n = XMLUtils::getChildNode(nodeChild, "BenchmarkCurve"); n != nullptr;
717 n = XMLUtils::getNextSibling(n, "BenchmarkCurve")) {
718 yields.push_back(XMLUtils::getChildValue(n, "Name", true));
720 XMLUtils::getChildValue(n, "Currency", true);
721 }
722 setYieldCurveNames(yields);
723 }
724
725 DLOG("Loading YieldCurves");
726 nodeChild = XMLUtils::getChildNode(node, "YieldCurves");
727 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
728 for (XMLNode* child = XMLUtils::getChildNode(nodeChild, "Configuration"); child;
729 child = XMLUtils::getNextSibling(child)) {
730
731 // If there is no attribute "curve", this returns "" i.e. the default
732 string label = XMLUtils::getAttribute(child, "curve");
733 if (label == "") {
734 yieldCurveTenors_[label] = XMLUtils::getChildrenValuesAsPeriods(child, "Tenors", true);
735 if (auto n = XMLUtils::getChildNode(child, "Interpolation")) {
737 }
738 if (auto n = XMLUtils::getChildNode(child, "Extrapolation")) {
740 }
741 // for backwards compatibility, map an extrapolation value that parses to bool to FlatFwd
742 bool dummy;
743 if (tryParse<bool>(extrapolation_, dummy, &parseBool)) {
744 WLOG("ScenarioSimMarket parameter Extrapolation should be FlatFwd or FlatZero, mapping deprecated "
745 "boolean '"
746 << extrapolation_ << "' to FlatFwd. Please change this in your configuration.");
747 extrapolation_ = "FlatFwd";
748 }
749 } else {
750 if (XMLUtils::getChildNode(child, "Interpolation")) {
751 WLOG("Only one default interpolation value is allowed for yield curves");
752 }
753 if (XMLUtils::getChildNode(child, "Extrapolation")) {
754 WLOG("Only one default extrapolation value is allowed for yield curves");
755 }
756 if (XMLUtils::getChildNode(child, "Tenors")) {
757 yieldCurveTenors_[label] = XMLUtils::getChildrenValuesAsPeriods(child, "Tenors", true);
758 }
759 }
760 }
761 }
762
763 DLOG("Loading Libor indices");
764 setIndices(XMLUtils::getChildrenValues(node, "Indices", "Index"));
765
766 DLOG("Loading swap indices");
767 nodeChild = XMLUtils::getChildNode(node, "SwapIndices");
768 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
769 for (XMLNode* n = XMLUtils::getChildNode(nodeChild, "SwapIndex"); n != nullptr;
770 n = XMLUtils::getNextSibling(n, "SwapIndex")) {
771 string name = XMLUtils::getChildValue(n, "Name");
772 string disc = XMLUtils::getChildValue(n, "DiscountingIndex");
773 swapIndices_[name] = disc;
774 }
775 }
776
777 DLOG("Loading FX Rates");
778 nodeChild = XMLUtils::getChildNode(node, "FxRates");
779 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
780 XMLNode* fxSpotSimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
781 if (fxSpotSimNode)
783 // if currency pairs are specified load these, otherwise infer from currencies list and base currency
784 XMLNode* ccyPairsNode = XMLUtils::getChildNode(nodeChild, "CurrencyPairs");
785 if (ccyPairsNode) {
786 setFxCcyPairs(XMLUtils::getChildrenValues(nodeChild, "CurrencyPairs", "CurrencyPair", true));
787 } else {
788 vector<string> ccys;
789 for (auto ccy : ccys_) {
790 if (ccy != baseCcy_)
791 ccys.push_back(ccy + baseCcy_);
792 }
794 }
795 } else {
796 // spot simulation turned on by default
797 setSimulateFxSpots(true);
798 vector<string> ccys;
799 for (auto ccy : ccys_) {
800 if (ccy != baseCcy_)
801 ccys.push_back(ccy + baseCcy_);
802 }
804 }
805
806 DLOG("Loading SwaptionVolatilities");
807 nodeChild = XMLUtils::getChildNode(node, "SwaptionVolatilities");
808 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
809 XMLNode* swapVolSimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
810 if (swapVolSimNode)
812 swapVolDecayMode_ = XMLUtils::getChildValue(nodeChild, "ReactionToTimeDecay");
813
814 auto ccys = XMLUtils::getChildrenValues(nodeChild, "Currencies", "Currency", false);
815 auto keys = XMLUtils::getChildrenValues(nodeChild, "Keys", "Key", false);
816 if(!ccys.empty()) {
817 keys.insert(keys.end(), ccys.begin(), ccys.end());
818 WLOG("ScenarioSimMarketParameters: SwaptionVolatilities/Currencies is deprecated, use Keys instead.");
819 }
820 setSwapVolKeys(keys);
821 QL_REQUIRE(!keys.empty(), "SwaptionVolatilities needs at least one currency");
822
823 // Get the configured expiries. They are of the form:
824 // - <Expiries ccy="CCY">t_1,...,t_n</Expiries> for currency specific expiries
825 // - <Expiries>t_1,...,t_n</Expiries> or <Expiries ccy="">t_1,...,t_n</Expiries> for default set of expiries
826 // Only need a default expiry set if every currency has not been given an expiry set explicitly
827 vector<XMLNode*> expiryNodes = XMLUtils::getChildrenNodes(nodeChild, "Expiries");
828 QL_REQUIRE(!expiryNodes.empty(), "SwaptionVolatilities needs at least one Expiries node");
829 set<string> keysCheck(keys.begin(),keys.end());
830 bool defaultProvided = false;
831 for (XMLNode* expiryNode : expiryNodes) {
832 // If there is no "key" attribute, getAttribute returns "" which is what we want in any case
833 string key = XMLUtils::getAttribute(expiryNode, "key");
834 if (key.empty()) {
835 string ccyAttr = XMLUtils::getAttribute(expiryNode, "ccy");
836 if (!ccyAttr.empty()) {
837 key = ccyAttr;
838 WLOG("ScenarioSimMarketParameters: SwaptionVolatilities/Expiries: 'ccy' attribute is deprecated, "
839 "use 'key' instead.");
840 }
841 }
842 vector<Period> expiries = parseListOfValues<Period>(XMLUtils::getNodeValue(expiryNode), &parsePeriod);
843 QL_REQUIRE(swapVolExpiries_.insert(make_pair(key, expiries)).second,
844 "SwaptionVolatilities has duplicate expiries for key '" << key << "'");
845 keysCheck.erase(key);
846 defaultProvided = defaultProvided || key.empty();
847 }
848 QL_REQUIRE(defaultProvided || keysCheck.empty(), "SwaptionVolatilities has no expiries for "
849 << "keys '" << join(keysCheck, ",")
850 << "' and no default expiry set has been given");
851
852 // Get the configured terms, similar to expiries above
853 vector<XMLNode*> termNodes = XMLUtils::getChildrenNodes(nodeChild, "Terms");
854 keysCheck = set<string>(keys.begin(), keys.end());
855 defaultProvided = false;
856 for (XMLNode* termNode : termNodes) {
857 // If there is no "key" attribute, getAttribute returns "" which is what we want in any case
858 string key = XMLUtils::getAttribute(termNode, "key");
859 if (key.empty()) {
860 string ccyAttr = XMLUtils::getAttribute(termNode, "ccy");
861 if (!ccyAttr.empty()) {
862 key = ccyAttr;
863 WLOG("ScenarioSimMarketParameters: SwaptionVolatilities/Terms: 'ccy' attribute is deprecated, "
864 "use 'key' instead.");
865 }
866 }
867 vector<Period> terms = parseListOfValues<Period>(XMLUtils::getNodeValue(termNode), &parsePeriod);
868 QL_REQUIRE(swapVolTerms_.insert(make_pair(key, terms)).second,
869 "SwaptionVolatilities has duplicate terms for key '" << key << "'");
870 keysCheck.erase(key);
871 defaultProvided = defaultProvided || key.empty();
872 }
873 QL_REQUIRE(defaultProvided || keysCheck.empty(), "SwaptionVolatilities has no terms for "
874 << "keys '" << join(keysCheck, ",")
875 << "' and no default term set has been given");
876
877 // Get smile dynamics
878 vector<XMLNode*> smileDynamicsNodes = XMLUtils::getChildrenNodes(nodeChild, "SmileDynamics");
879 for (XMLNode* smileDynamicsNode : smileDynamicsNodes) {
880 string key = XMLUtils::getAttribute(smileDynamicsNode, "key");
881 swapVolSmileDynamics_.insert(make_pair(key, XMLUtils::getNodeValue(smileDynamicsNode)));
882 }
883
884 XMLNode* atmOnlyNode = XMLUtils::getChildNode(nodeChild, "SimulateATMOnly");
885 if (atmOnlyNode)
886 swapVolSimulateATMOnly_ = XMLUtils::getChildValueAsBool(nodeChild, "SimulateATMOnly", true);
887
889 vector<XMLNode*> spreadNodes = XMLUtils::getChildrenNodes(nodeChild, "StrikeSpreads");
890 if (spreadNodes.size() > 0) {
891 keysCheck = set<string>(keys.begin(), keys.end());
892 defaultProvided = false;
893 for (XMLNode* spreadNode : spreadNodes) {
894 // If there is no "ccy" attribute, getAttribute returns "" which is what we want in any case
895 string key = XMLUtils::getAttribute(spreadNode, "key");
896 if (key.empty()) {
897 string ccyAttr = XMLUtils::getAttribute(spreadNode, "ccy");
898 if (!ccyAttr.empty()) {
899 key = ccyAttr;
900 ALOG("ScenarioSimMarketParameters: SwaptionVolatilities/StrikeSpreads: 'ccy' attribute is "
901 "deprecated, use 'key' instead.");
902 }
903 }
904 vector<Rate> strikes;
905 string strStrike = XMLUtils::getNodeValue(spreadNode);
906 if (strStrike == "ATM" || strStrike == "0" || strStrike == "0.0") {
907 // Add a '0' to the strike spreads
908 strikes = {0.0};
909 } else {
910 strikes = parseListOfValues<Rate>(strStrike, &parseReal);
911 }
912 setSwapVolStrikeSpreads(key, strikes);
913 keysCheck.erase(key);
914 defaultProvided = defaultProvided || key.empty();
915 }
916 QL_REQUIRE(defaultProvided || keysCheck.empty(),
917 "SwaptionVolatilities has no strike spreads for "
918 << "currencies '" << join(keysCheck, ",")
919 << "' and no default strike spreads set has been given");
920 }
921 }
922 }
923
924 DLOG("Loading YieldVolatilities");
925 nodeChild = XMLUtils::getChildNode(node, "YieldVolatilities");
926 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
927 XMLNode* yieldVolSimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
928 if (yieldVolSimNode) {
930 yieldVolTerms_ = XMLUtils::getChildrenValuesAsPeriods(nodeChild, "Terms", true);
931 yieldVolExpiries_ = XMLUtils::getChildrenValuesAsPeriods(nodeChild, "Expiries", true);
932 setYieldVolNames(XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true));
933 yieldVolDecayMode_ = XMLUtils::getChildValue(nodeChild, "ReactionToTimeDecay");
934 }
935 // Get smile dynamics
936 vector<XMLNode*> smileDynamicsNodes = XMLUtils::getChildrenNodes(nodeChild, "SmileDynamics");
937 for (XMLNode* smileDynamicsNode : smileDynamicsNodes) {
938 string key = XMLUtils::getAttribute(smileDynamicsNode, "key");
939 yieldVolSmileDynamics_.insert(make_pair(key, XMLUtils::getNodeValue(smileDynamicsNode)));
940 }
941 }
942
943 DLOG("Loading Correlations");
944 nodeChild = XMLUtils::getChildNode(node, "Correlations");
945 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
946 XMLNode* pn = XMLUtils::getChildNode(nodeChild, "Pairs");
947 vector<string> pairs;
948 if (pn) {
949 for (XMLNode* child = XMLUtils::getChildNode(pn, "Pair"); child; child = XMLUtils::getNextSibling(child)) {
950 string p = XMLUtils::getNodeValue(child);
951 vector<string> tokens = getCorrelationTokens(p);
952 QL_REQUIRE(tokens.size() == 2, "not a valid correlation pair: " << p);
953 pairs.push_back(p);
954 }
955 }
956 setCorrelationPairs(pairs);
957 XMLNode* correlSimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
958 if (correlSimNode) {
960 correlationExpiries_ = XMLUtils::getChildrenValuesAsPeriods(nodeChild, "Expiries", true);
961
962 XMLNode* surfaceNode = XMLUtils::getChildNode(nodeChild, "Surface");
963 if (surfaceNode) {
966 } else {
967 correlationIsSurface_ = false;
968 }
969 }
970 }
971
972 DLOG("Loading CapFloorVolatilities");
973 nodeChild = XMLUtils::getChildNode(node, "CapFloorVolatilities");
974 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
975
976 // Are we simulating caps
978 XMLNode* capVolSimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
979 if (capVolSimNode)
981
982 // All cap floor keys
983 auto ccys = XMLUtils::getChildrenValues(nodeChild, "Currencies", "Currency", false);
984 auto keys = XMLUtils::getChildrenValues(nodeChild, "Keys", "Key", false);
985 if(!ccys.empty()) {
986 keys.insert(keys.end(), ccys.begin(), ccys.end());
987 WLOG("ScenarioSimMarketParameters: CapFloorVolatilities/Currencies is deprecated, use Keys instead.");
988 }
989 setCapFloorVolKeys(keys);
990 QL_REQUIRE(!keys.empty(), "CapFloorVolatilities needs at least one entry");
991
992 // Get the configured expiries. They are of the form:
993 // - <Expiries key="CCY">t_1,...,t_n</Expiries> for currency specific expiries
994 // - <Expiries>t_1,...,t_n</Expiries> or <Expiries key="">t_1,...,t_n</Expiries> for default set of expiries
995 // Only need a default expiry set if every currency has not been given an expiry set explicitly
996 // instead of key, ccy is supported as an derprecated attribute
997 vector<XMLNode*> expiryNodes = XMLUtils::getChildrenNodes(nodeChild, "Expiries");
998 QL_REQUIRE(expiryNodes.size() > 0, "CapFloorVolatilities needs at least one Expiries node");
999 set<string> keysCheck(keys.begin(), keys.end());
1000 bool defaultProvided = false;
1001 for (XMLNode* expiryNode : expiryNodes) {
1002 // If there is no "key" attribute, getAttribute returns "" which is what we want in any case
1003 string key = XMLUtils::getAttribute(expiryNode, "key");
1004 if (key.empty()) {
1005 string ccyAttr = XMLUtils::getAttribute(expiryNode, "ccy");
1006 if (!ccyAttr.empty()) {
1007 key = ccyAttr;
1008 WLOG("ScenarioSimMarketParameters: CapFloorVolatilities/Expiries: 'ccy' attribute is deprecated, "
1009 "use 'key' instead.");
1010 }
1011 }
1012 vector<Period> expiries = parseListOfValues<Period>(XMLUtils::getNodeValue(expiryNode), &parsePeriod);
1013 QL_REQUIRE(capFloorVolExpiries_.insert(make_pair(key, expiries)).second,
1014 "CapFloorVolatilities has duplicate expiries for key '" << key << "'");
1015 keysCheck.erase(key);
1016 defaultProvided = defaultProvided || key.empty();
1017 }
1018 QL_REQUIRE(defaultProvided || keysCheck.size() == 0, "CapFloorVolatilities has no expiries for "
1019 << "keys '" << join(keysCheck, ",")
1020 << "' and no default expiry set has been given");
1021
1022 // Get the configured strikes. This has the same set up and logic as the Expiries above.
1023 vector<XMLNode*> strikeNodes = XMLUtils::getChildrenNodes(nodeChild, "Strikes");
1024 QL_REQUIRE(strikeNodes.size() > 0, "CapFloorVolatilities needs at least one Strikes node");
1025 keysCheck = std::set<std::string>(keys.begin(), keys.end());
1026 defaultProvided = false;
1027 for (XMLNode* strikeNode : strikeNodes) {
1028 string key = XMLUtils::getAttribute(strikeNode, "key");
1029 if (key.empty()) {
1030 string ccyAttr = XMLUtils::getAttribute(strikeNode, "ccy");
1031 if (!ccyAttr.empty()) {
1032 key = ccyAttr;
1033 WLOG("ScenarioSimMarketParameters: CapFloorVolatilities/Strikes: 'ccy' attribute is deprecated, "
1034 "use 'key' instead.");
1035 }
1036 }
1037 // For the strike value, we allow ATM or a comma separated list of absolute strike values
1038 // If ATM, the stored strikes vector is left as an empty vector
1039 vector<Rate> strikes;
1040 string strStrike = XMLUtils::getNodeValue(strikeNode);
1041 if (strStrike == "ATM") {
1042 QL_REQUIRE(capFloorVolIsAtm_.insert(make_pair(key, true)).second,
1043 "CapFloorVolatilities has duplicate strikes for key '" << key << "'");
1044 } else {
1045 QL_REQUIRE(capFloorVolIsAtm_.insert(make_pair(key, false)).second,
1046 "CapFloorVolatilities has duplicate strikes for key '" << key << "'");
1047 strikes = parseListOfValues<Rate>(strStrike, &parseReal);
1048 }
1049 QL_REQUIRE(capFloorVolStrikes_.insert(make_pair(key, strikes)).second,
1050 "CapFloorVolatilities has duplicate strikes for key '" << key << "'");
1051 keysCheck.erase(key);
1052 defaultProvided = defaultProvided || key.empty();
1053 }
1054 QL_REQUIRE(defaultProvided || keysCheck.empty(), "CapFloorVolatilities has no strikes for "
1055 << "key '" << join(keysCheck, ",")
1056 << "' and no default strike set has been given");
1057
1058 capFloorVolDecayMode_ = XMLUtils::getChildValue(nodeChild, "ReactionToTimeDecay");
1059
1061 if (XMLNode* n = XMLUtils::getChildNode(nodeChild, "AdjustOptionletPillars")) {
1063 }
1064
1065 capFloorVolUseCapAtm_ = false;
1066 if (XMLNode* n = XMLUtils::getChildNode(nodeChild, "UseCapAtm")) {
1068 }
1069
1070 // Get smile dynamics
1071 vector<XMLNode*> smileDynamicsNodes = XMLUtils::getChildrenNodes(nodeChild, "SmileDynamics");
1072 for (XMLNode* smileDynamicsNode : smileDynamicsNodes) {
1073 string key = XMLUtils::getAttribute(smileDynamicsNode, "key");
1074 capFloorVolSmileDynamics_.insert(make_pair(key, XMLUtils::getNodeValue(smileDynamicsNode)));
1075 }
1076 }
1077
1078 DLOG("Loading YYCapFloorVolatilities");
1079 nodeChild = XMLUtils::getChildNode(node, "YYCapFloorVolatilities");
1080 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1081 // Are we simulating yy caps
1083 XMLNode* yoyCapVolSimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
1084 if (yoyCapVolSimNode)
1086
1087 // All yy cap indices
1088 setYoYInflationCapFloorVolNames(XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true));
1089 set<string> yyIndices = params_.find(RiskFactorKey::KeyType::YoYInflationCapFloorVolatility)->second.second;
1090 QL_REQUIRE(yyIndices.size() > 0, "YYCapFloorVolatilities needs at least on index");
1091
1092 // Get configured expiries
1093 vector<XMLNode*> expiryNodes = XMLUtils::getChildrenNodes(nodeChild, "Expiries");
1094 QL_REQUIRE(expiryNodes.size() > 0, "YYCapFloorVolatilities needs at least one Expiries node");
1095 set<string> indicesCheck = yyIndices;
1096 bool defaultProvided = false;
1097 for (XMLNode* expiryNode : expiryNodes) {
1098 string index = XMLUtils::getAttribute(expiryNode, "name");
1099 vector<Period> expiries = parseListOfValues<Period>(XMLUtils::getNodeValue(expiryNode), &parsePeriod);
1100 QL_REQUIRE(yoyInflationCapFloorVolExpiries_.insert(make_pair(index, expiries)).second,
1101 "YYCapFloorVolatlities has duplicate expiries for key '" << index << "'");
1102 indicesCheck.erase(index);
1103 defaultProvided = index == "";
1104 }
1105 QL_REQUIRE(defaultProvided || indicesCheck.size() == 0, "YYCapFloorVolatilites has no expiries for indices '"
1106 << join(indicesCheck, ";")
1107 << "' and no default expiry has been given");
1108
1109 // Get configured strikes
1110 vector<XMLNode*> strikeNodes = XMLUtils::getChildrenNodes(nodeChild, "Strikes");
1111 QL_REQUIRE(strikeNodes.size() > 0, "CapFloorVolatilities needs at least one Strikes node");
1112 indicesCheck = yyIndices;
1113 defaultProvided = false;
1114 for (XMLNode* strikeNode : strikeNodes) {
1115 string index = XMLUtils::getAttribute(strikeNode, "name");
1116 // For the strike value, we allow ATM or a comma separated list of absolute strike values
1117 // If ATM, the stored strikes vector is left as an empty vector
1118 vector<Rate> strikes;
1119 string strStrike = XMLUtils::getNodeValue(strikeNode);
1120 strikes = parseListOfValues<Rate>(strStrike, &parseReal);
1121 QL_REQUIRE(yoyInflationCapFloorVolStrikes_.insert(make_pair(index, strikes)).second,
1122 "YYInflationCapFloorVolatilities has duplicate strikes for key '" << index << "'");
1123 indicesCheck.erase(index);
1124 defaultProvided = index == "";
1125 }
1126 QL_REQUIRE(defaultProvided || indicesCheck.size() == 0, "YYInflationCapFloorVolatilities has no strikes for "
1127 << "currencies '" << join(indicesCheck, ",")
1128 << "' and no default strike set has been given");
1129
1130 yoyInflationCapFloorVolDecayMode_ = XMLUtils::getChildValue(nodeChild, "ReactionToTimeDecay");
1131
1132 // Get smile dynamics
1133 vector<XMLNode*> smileDynamicsNodes = XMLUtils::getChildrenNodes(nodeChild, "SmileDynamics");
1134 for (XMLNode* smileDynamicsNode : smileDynamicsNodes) {
1135 string key = XMLUtils::getAttribute(smileDynamicsNode, "key");
1136 yoyInflationCapFloorVolSmileDynamics_.insert(make_pair(key, XMLUtils::getNodeValue(smileDynamicsNode)));
1137 }
1138 }
1139
1140 DLOG("Loading CPICapFloorVolatilities");
1141 nodeChild = XMLUtils::getChildNode(node, "CPICapFloorVolatilities");
1142 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1144 XMLNode* ziCapVolSimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
1145 if (ziCapVolSimNode)
1147
1148 setZeroInflationCapFloorNames(XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true));
1149
1151 QL_REQUIRE(cpiIndices.size() > 0, "CPICapFloorVolatilities needs at least on index");
1152
1153 // Get configured expiries
1154 // zeroInflationCapFloorVolExpiries_[""] = XMLUtils::getChildrenValuesAsPeriods(nodeChild, "Expiries", true);
1155 vector<XMLNode*> expiryNodes = XMLUtils::getChildrenNodes(nodeChild, "Expiries");
1156 QL_REQUIRE(expiryNodes.size() > 0, "CPICapFloorVolatilities needs at least one Expiries node");
1157 set<string> indicesCheck = cpiIndices;
1158 bool defaultProvided = false;
1159 for (XMLNode* expiryNode : expiryNodes) {
1160 string index = XMLUtils::getAttribute(expiryNode, "name");
1161 vector<Period> expiries = parseListOfValues<Period>(XMLUtils::getNodeValue(expiryNode), &parsePeriod);
1162 QL_REQUIRE(zeroInflationCapFloorVolExpiries_.insert(make_pair(index, expiries)).second,
1163 "CPICapFloorVolatlities has duplicate expiries for key '" << index << "'");
1164 indicesCheck.erase(index);
1165 defaultProvided = index == "";
1166 }
1167 QL_REQUIRE(defaultProvided || indicesCheck.size() == 0, "CPICapFloorVolatilites has no expiries for indices '"
1168 << join(indicesCheck, ";")
1169 << "' and no default expiry has been given");
1170
1171 // Get configured strikes
1172 // zeroInflationCapFloorVolStrikes_ = XMLUtils::getChildrenValuesAsDoublesCompact(nodeChild, "Strikes", true);
1173 vector<XMLNode*> strikeNodes = XMLUtils::getChildrenNodes(nodeChild, "Strikes");
1174 QL_REQUIRE(strikeNodes.size() > 0, "CPICapFloorVolatilities needs at least one Strikes node");
1175 indicesCheck = cpiIndices;
1176 defaultProvided = false;
1177 for (XMLNode* strikeNode : strikeNodes) {
1178 string index = XMLUtils::getAttribute(strikeNode, "name");
1179 // For the strike value, we allow ATM or a comma separated list of absolute strike values
1180 // If ATM, the stored strikes vector is left as an empty vector
1181 vector<Rate> strikes;
1182 string strStrike = XMLUtils::getNodeValue(strikeNode);
1183 strikes = parseListOfValues<Rate>(strStrike, &parseReal);
1184 QL_REQUIRE(zeroInflationCapFloorVolStrikes_.insert(make_pair(index, strikes)).second,
1185 "CPIInflationCapFloorVolatilities has duplicate strikes for key '" << index << "'");
1186 indicesCheck.erase(index);
1187 defaultProvided = index == "";
1188 }
1189 QL_REQUIRE(defaultProvided || indicesCheck.size() == 0, "CPIInflationCapFloorVolatilities has no strikes for "
1190 << "currencies '" << join(indicesCheck, ",")
1191 << "' and no default strike set has been given");
1192
1193 zeroInflationCapFloorVolDecayMode_ = XMLUtils::getChildValue(nodeChild, "ReactionToTimeDecay");
1194
1195 // Get smile dynamics
1196 vector<XMLNode*> smileDynamicsNodes = XMLUtils::getChildrenNodes(nodeChild, "SmileDynamics");
1197 for (XMLNode* smileDynamicsNode : smileDynamicsNodes) {
1198 string key = XMLUtils::getAttribute(smileDynamicsNode, "key");
1199 zeroInflationCapFloorVolSmileDynamics_.insert(make_pair(key, XMLUtils::getNodeValue(smileDynamicsNode)));
1200 }
1201 }
1202
1203 DLOG("Loading DefaultCurves Rates");
1204 nodeChild = XMLUtils::getChildNode(node, "DefaultCurves");
1205 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1206 setDefaultNames(XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true));
1207 defaultTenors_[""] = XMLUtils::getChildrenValuesAsPeriods(nodeChild, "Tenors", true);
1208 // TODO read other keys
1209 XMLNode* survivalProbabilitySimNode = XMLUtils::getChildNode(nodeChild, "SimulateSurvivalProbabilities");
1210 if (survivalProbabilitySimNode)
1212 XMLNode* recoveryRateSimNode = XMLUtils::getChildNode(nodeChild, "SimulateRecoveryRates");
1213 if (recoveryRateSimNode)
1215
1216 XMLNode* cal = XMLUtils::getChildNode(nodeChild, "Calendars");
1217 if (cal) {
1218 for (XMLNode* child = XMLUtils::getChildNode(cal, "Calendar"); child;
1219 child = XMLUtils::getNextSibling(child)) {
1220 string label = XMLUtils::getAttribute(child, "name");
1222 }
1223 }
1224 QL_REQUIRE(defaultCurveCalendars_.find("") != defaultCurveCalendars_.end(),
1225 "default calendar is not set for defaultCurves");
1226 if (auto n = XMLUtils::getChildNode(nodeChild, "Extrapolation")) {
1228 }
1229 }
1230
1231 DLOG("Loading Equities Rates");
1232 nodeChild = XMLUtils::getChildNode(node, "Equities");
1233 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1234 XMLNode* dividendYieldSimNode = XMLUtils::getChildNode(nodeChild, "SimulateDividendYield");
1235 if (dividendYieldSimNode)
1237 else
1239 vector<string> equityNames = XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true);
1241 equityDividendTenors_[""] = XMLUtils::getChildrenValuesAsPeriods(nodeChild, "DividendTenors", true);
1242 }
1243
1244 DLOG("Loading CDSVolatilities Rates");
1245 nodeChild = XMLUtils::getChildNode(node, "CDSVolatilities");
1246 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1247 XMLNode* cdsVolSimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
1248 if (cdsVolSimNode)
1250 cdsVolExpiries_ = XMLUtils::getChildrenValuesAsPeriods(nodeChild, "Expiries", true);
1251 setCdsVolNames(XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true));
1252 cdsVolDecayMode_ = XMLUtils::getChildValue(nodeChild, "ReactionToTimeDecay");
1253
1254 XMLNode* atmOnlyNode = XMLUtils::getChildNode(nodeChild, "SimulateATMOnly");
1255 if (atmOnlyNode) {
1256 cdsVolSimulateATMOnly_ = XMLUtils::getChildValueAsBool(nodeChild, "SimulateATMOnly", true);
1257 }
1258
1259 // Get smile dynamics
1260 vector<XMLNode*> smileDynamicsNodes = XMLUtils::getChildrenNodes(nodeChild, "SmileDynamics");
1261 for (XMLNode* smileDynamicsNode : smileDynamicsNodes) {
1262 string key = XMLUtils::getAttribute(smileDynamicsNode, "key");
1263 cdsVolSmileDynamics_.insert(make_pair(key, XMLUtils::getNodeValue(smileDynamicsNode)));
1264 }
1265 }
1266
1267 DLOG("Loading FXVolatilities");
1268 nodeChild = XMLUtils::getChildNode(node, "FxVolatilities");
1269 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1270 setSimulateFXVols(false);
1271 XMLNode* fxVolSimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
1272 if (fxVolSimNode)
1274 fxVolDecayMode_ = XMLUtils::getChildValue(nodeChild, "ReactionToTimeDecay");
1275 setFxVolCcyPairs(XMLUtils::getChildrenValues(nodeChild, "CurrencyPairs", "CurrencyPair", true));
1276
1277 vector<XMLNode*> expiryNodes = XMLUtils::getChildrenNodes(nodeChild, "Expiries");
1278 set<string> names = params_.find(RiskFactorKey::KeyType::FXVolatility)->second.second;
1279 QL_REQUIRE(names.size() > 0, "FXVolatility needs at least one name");
1280 set<string> namesCheck = names;
1281 bool defaultProvided = false;
1282 for (XMLNode* expiryNode : expiryNodes) {
1283 // If there is no "name" attribute, getAttribute returns "" which is what we want in any case
1284 string name = XMLUtils::getAttribute(expiryNode, "ccyPair");
1285 vector<Period> expiries = parseListOfValues<Period>(XMLUtils::getNodeValue(expiryNode), &parsePeriod);
1286 QL_REQUIRE(fxVolExpiries_.insert(make_pair(name, expiries)).second,
1287 "FXVolatilities has duplicate expiries for key '" << name << "'");
1288 namesCheck.erase(name);
1289 defaultProvided = name == "";
1290 }
1291 QL_REQUIRE(defaultProvided || namesCheck.size() == 0, "FXVolatilities has no expiries for "
1292 << "equities '" << join(namesCheck, ",") << "' and no default expiry set has been given");
1293
1294 XMLNode* fxSurfaceNode = XMLUtils::getChildNode(nodeChild, "Surface");
1295 setFxVolIsSurface("", false);
1296 if (fxSurfaceNode) {
1297 for (XMLNode* child = XMLUtils::getChildNode(fxSurfaceNode, "Moneyness"); child;
1298 child = XMLUtils::getNextSibling(child, "Moneyness")) {
1299 string label = XMLUtils::getAttribute(child, "ccyPair"); // will be "" if no attr
1301 if (fxVolMoneyness(label).size() > 1) {
1302 setFxVolIsSurface(label, true);
1303 }
1304 }
1305 for (XMLNode* child = XMLUtils::getChildNode(fxSurfaceNode, "StandardDeviations"); child;
1306 child = XMLUtils::getNextSibling(child, "StandardDeviations")) {
1307 string label = XMLUtils::getAttribute(child, "ccyPair"); // will be "" if no attr
1308 // We cannot have both moneyness and standard deviations for any label (inclding the default of ""
1309 // Throw error if this occurs
1310 if (fxMoneyness_.find(label) != fxMoneyness_.end()) {
1311 QL_FAIL(
1312 "FX Volatility simulation parameters - both moneyness and standard deviations provided for "
1313 "label " << label);
1314 } else {
1316 if (fxVolStdDevs(label).size() > 1) {
1317 setFxVolIsSurface(label, true);
1318 }
1319 }
1320 }
1321 } else {
1322 XMLNode* atmOnlyNode = XMLUtils::getChildNode(nodeChild, "SimulateATMOnly");
1323 if (atmOnlyNode) {
1324 fxVolSimulateATMOnly_ = XMLUtils::getChildValueAsBool(nodeChild, "SimulateATMOnly", true);
1325 }
1326 }
1327 // Get smile dynamics
1328 vector<XMLNode*> smileDynamicsNodes = XMLUtils::getChildrenNodes(nodeChild, "SmileDynamics");
1329 for (XMLNode* smileDynamicsNode : smileDynamicsNodes) {
1330 string key = XMLUtils::getAttribute(smileDynamicsNode, "key");
1331 fxVolSmileDynamics_.insert(make_pair(key, XMLUtils::getNodeValue(smileDynamicsNode)));
1332 }
1333 }
1334
1335 DLOG("Loading EquityVolatilities");
1336 nodeChild = XMLUtils::getChildNode(node, "EquityVolatilities");
1337 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1338 setSimulateEquityVols(XMLUtils::getChildValueAsBool(nodeChild, "Simulate", true));
1339 equityVolDecayMode_ = XMLUtils::getChildValue(nodeChild, "ReactionToTimeDecay");
1340 setEquityVolNames(XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true));
1341
1342 vector<XMLNode*> expiryNodes = XMLUtils::getChildrenNodes(nodeChild, "Expiries");
1343 set<string> names = params_.find(RiskFactorKey::KeyType::EquityVolatility)->second.second;
1344 QL_REQUIRE(names.size() > 0, "EquityVolatility needs at least one name");
1345 set<string> namesCheck = names;
1346 bool defaultProvided = false;
1347 for (XMLNode* expiryNode : expiryNodes) {
1348 // If there is no "name" attribute, getAttribute returns "" which is what we want in any case
1349 string name = XMLUtils::getAttribute(expiryNode, "name");
1350 vector<Period> expiries = parseListOfValues<Period>(XMLUtils::getNodeValue(expiryNode), &parsePeriod);
1351 QL_REQUIRE(equityVolExpiries_.insert(make_pair(name, expiries)).second,
1352 "EquityVolatilities has duplicate expiries for key '" << name << "'");
1353 namesCheck.erase(name);
1354 defaultProvided = name == "";
1355 }
1356 QL_REQUIRE(defaultProvided || namesCheck.size() == 0, "EquityVolatilities has no expiries for " <<
1357 "equities '" << join(namesCheck, ",") << "' and no default expiry set has been given");
1358
1359 XMLNode* eqSurfaceNode = XMLUtils::getChildNode(nodeChild, "Surface");
1360 setEquityVolIsSurface("", false);
1361 if (eqSurfaceNode) {
1362 for (XMLNode* child = XMLUtils::getChildNode(eqSurfaceNode, "Moneyness"); child;
1363 child = XMLUtils::getNextSibling(child, "Moneyness")) {
1364 string label = XMLUtils::getAttribute(child, "name"); // will be "" if no attr
1366 if (equityVolMoneyness(label).size() > 1) {
1367 setEquityVolIsSurface(label, true);
1368 }
1369 }
1370 for (XMLNode* child = XMLUtils::getChildNode(eqSurfaceNode, "StandardDeviations"); child;
1371 child = XMLUtils::getNextSibling(child, "StandardDeviations")) {
1372 string label = XMLUtils::getAttribute(child, "name"); // will be "" if no attr
1373 // We cannot have both moneyness and standard deviations for any label (including the default of ""
1374 // Throw error if this occurs
1375 if (equityMoneyness_.find(label) != equityMoneyness_.end()){
1376 QL_FAIL("Equity Volatility simulation parameters - both moneyness and standard deviations provided for label " << label);
1377 } else {
1379 if (equityVolStandardDevs(label).size() > 1) {
1380 setEquityVolIsSurface(label, true);
1381 }
1382 }
1383 }
1384 } else {
1385 XMLNode* atmOnlyNode = XMLUtils::getChildNode(nodeChild, "SimulateATMOnly");
1386 if (atmOnlyNode) {
1387 equityVolSimulateATMOnly_ = XMLUtils::getChildValueAsBool(nodeChild, "SimulateATMOnly", true);
1388 }
1389 }
1390 // Get smile dynamics
1391 vector<XMLNode*> smileDynamicsNodes = XMLUtils::getChildrenNodes(nodeChild, "SmileDynamics");
1392 for (XMLNode* smileDynamicsNode : smileDynamicsNodes) {
1393 string key = XMLUtils::getAttribute(smileDynamicsNode, "key");
1394 equityVolSmileDynamics_.insert(make_pair(key, XMLUtils::getNodeValue(smileDynamicsNode)));
1395 }
1396 }
1397
1398 DLOG("Loading CpiInflationIndexCurves");
1399 setCpiIndices(XMLUtils::getChildrenValues(node, "CpiIndices", "Index", false));
1400
1401 DLOG("Loading ZeroInflationIndexCurves");
1402 nodeChild = XMLUtils::getChildNode(node, "ZeroInflationIndexCurves");
1403 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1404 setZeroInflationIndices(XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true));
1405 zeroInflationTenors_[""] = XMLUtils::getChildrenValuesAsPeriods(nodeChild, "Tenors", true);
1406 }
1407
1408 DLOG("Loading YYInflationIndexCurves");
1409
1410 nodeChild = XMLUtils::getChildNode(node, "YYInflationIndexCurves");
1411 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1412 setYoyInflationIndices(XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true));
1413 yoyInflationTenors_[""] = XMLUtils::getChildrenValuesAsPeriods(nodeChild, "Tenors", true);
1414 }
1415
1416 DLOG("Loading AggregationScenarioDataIndices");
1417 if (XMLUtils::getChildNode(node, "AggregationScenarioDataIndices")) {
1418 additionalScenarioDataIndices_ = XMLUtils::getChildrenValues(node, "AggregationScenarioDataIndices", "Index");
1419 }
1420
1421 DLOG("Loading AggregationScenarioDataCurrencies");
1422 if (XMLUtils::getChildNode(node, "AggregationScenarioDataCurrencies")) {
1424 XMLUtils::getChildrenValues(node, "AggregationScenarioDataCurrencies", "Currency", true);
1425 }
1426
1427 DLOG("Loading Securities");
1428 nodeChild = XMLUtils::getChildNode(node, "Securities");
1429 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1430 // TODO 1) this should be renamed to SimulateSpread?
1431 // 2) add security recovery rates here separate from default curves?
1432 setSecuritySpreadsSimulate(XMLUtils::getChildValueAsBool(nodeChild, "Simulate", false));
1433 vector<string> securities = XMLUtils::getChildrenValues(nodeChild, "Names", "Name");
1435 }
1436
1437 DLOG("Loading CPRs");
1438 nodeChild = XMLUtils::getChildNode(node, "CPRs");
1439 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1440 setSimulateCprs(XMLUtils::getChildValueAsBool(nodeChild, "Simulate", false));
1441 setCprs(XMLUtils::getChildrenValues(nodeChild, "Names", "Name"));
1442 }
1443
1444 DLOG("Loading BaseCorrelations");
1445 nodeChild = XMLUtils::getChildNode(node, "BaseCorrelations");
1446 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1447 setSimulateBaseCorrelations(XMLUtils::getChildValueAsBool(nodeChild, "Simulate", true));
1448 setBaseCorrelationNames(XMLUtils::getChildrenValues(nodeChild, "IndexNames", "IndexName", true));
1451 XMLUtils::getChildrenValuesAsDoublesCompact(nodeChild, "DetachmentPoints", true);
1452 }
1453
1454 DLOG("Loading commodities data");
1455 nodeChild = XMLUtils::getChildNode(node, "Commodities");
1456 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1457 XMLNode* commoditySimNode = XMLUtils::getChildNode(nodeChild, "Simulate");
1458 setCommodityCurveSimulate(commoditySimNode ? parseBool(XMLUtils::getNodeValue(commoditySimNode)) : false);
1459
1460 vector<string> commodityNames = XMLUtils::getChildrenValues(nodeChild, "Names", "Name", true);
1462
1463 set<string> names = params_.find(RiskFactorKey::KeyType::CommodityCurve)->second.second;
1464 QL_REQUIRE(names.size() > 0, "Commodities needs at least one name");
1465
1466 // Get the configured tenors. They are of the form:
1467 // - <Tenors name="NAME">t_1,...,t_n</Tenors> for commodity name specific tenors
1468 // - <Tenors>t_1,...,t_n</Tenors> or <Tenors name="">t_1,...,t_n</Tenors> for a default set of tenors
1469 // Only need a default tenor set if every commodity name has not been given a tenor set explicitly
1470 vector<XMLNode*> tenorNodes = XMLUtils::getChildrenNodes(nodeChild, "Tenors");
1471 QL_REQUIRE(tenorNodes.size() > 0, "Commodities needs at least one Tenors node");
1472 set<string> namesCheck = names;
1473 bool defaultProvided = false;
1474 for (XMLNode* tenorNode : tenorNodes) {
1475 // If there is no "name" attribute, getAttribute returns "" which is what we want in any case
1476 string name = XMLUtils::getAttribute(tenorNode, "name");
1477
1478 // An empty tenor list here means that the scenario simulation market should be set up on the
1479 // same pillars as the initial t_0 market from which it is sampling its values
1480 vector<Period> tenors;
1481 string strTenorList = XMLUtils::getNodeValue(tenorNode);
1482 if (!strTenorList.empty()) {
1483 tenors = parseListOfValues<Period>(XMLUtils::getNodeValue(tenorNode), &parsePeriod);
1484 }
1485
1486 QL_REQUIRE(commodityCurveTenors_.insert(make_pair(name, tenors)).second,
1487 "Commodities has duplicate expiries for key '" << name << "'");
1488 namesCheck.erase(name);
1489 defaultProvided = name == "";
1490 }
1491 QL_REQUIRE(defaultProvided || namesCheck.size() == 0, "Commodities has no tenors for "
1492 << "names '" << join(namesCheck, ",")
1493 << "' and no default tenor set has been given");
1494 }
1495
1496 DLOG("Loading commodity volatility data");
1497 nodeChild = XMLUtils::getChildNode(node, "CommodityVolatilities");
1498 if (nodeChild && XMLUtils::getChildNode(nodeChild)) {
1499 setCommodityVolSimulate(XMLUtils::getChildValueAsBool(nodeChild, "Simulate", true));
1500 commodityVolDecayMode_ = XMLUtils::getChildValue(nodeChild, "ReactionToTimeDecay");
1501
1502 vector<string> names;
1503 XMLNode* namesNode = XMLUtils::getChildNode(nodeChild, "Names");
1504 if (namesNode) {
1505 for (XMLNode* child = XMLUtils::getChildNode(namesNode, "Name"); child;
1506 child = XMLUtils::getNextSibling(child)) {
1507 // Get the vol configuration for each commodity name
1508 string name = XMLUtils::getAttribute(child, "id");
1509 names.push_back(name);
1511 vector<Real> moneyness = XMLUtils::getChildrenValuesAsDoublesCompact(child, "Moneyness", false);
1512 if (moneyness.empty())
1513 moneyness = {1.0};
1514 commodityVolMoneyness_[name] = moneyness;
1515 }
1516 }
1517 setCommodityVolNames(names);
1518 // Get smile dynamics
1519 vector<XMLNode*> smileDynamicsNodes = XMLUtils::getChildrenNodes(nodeChild, "SmileDynamics");
1520 for (XMLNode* smileDynamicsNode : smileDynamicsNodes) {
1521 string key = XMLUtils::getAttribute(smileDynamicsNode, "key");
1522 commodityVolSmileDynamics_.insert(make_pair(key, XMLUtils::getNodeValue(smileDynamicsNode)));
1523 }
1524 }
1525
1526 DLOG("Loading credit states data");
1527 nodeChild = XMLUtils::getChildNode(node, "CreditStates");
1529 if (nodeChild) {
1530 numberOfCreditStates_ = XMLUtils::getChildValueAsInt(nodeChild, "NumberOfFactors", true);
1531 }
1532
1533 DLOG("Loading AggregationScenarioDataCreditStates");
1534 nodeChild = XMLUtils::getChildNode(node, "AggregationScenarioDataCreditStates");
1536 if (nodeChild) {
1538 }
1539
1540 DLOG("Loading AggregationScenarioDataSurvivalWeights");
1541 additionalScenarioDataSurvivalWeights_ = XMLUtils::getChildrenValues(node, "AggregationScenarioDataSurvivalWeights", "Name");
1542
1543
1544 DLOG("Loaded ScenarioSimMarketParameters");
1545}
const vector< Real > & fxVolMoneyness(const string &ccypair) const
void setEquityVolIsSurface(const string &name, bool isSurface)
void setEquityVolMoneyness(const string &name, const vector< Real > &moneyness)
void setFxVolStdDevs(const string &ccypair, const vector< Real > &stdDevs)
const vector< Real > & fxVolStdDevs(const string &ccypair) const
const vector< Real > & equityVolMoneyness(const string &key) const
void setSwapVolStrikeSpreads(const std::string &key, const std::vector< QuantLib::Rate > &strikes)
void setFxVolIsSurface(const string &ccypair, bool val)
void reset()
A method used to reset the object to its default state before fromXML is called.
const vector< Real > & equityVolStandardDevs(const string &key) const
void setFxVolMoneyness(const string &ccypair, const vector< Real > &moneyness)
void setEquityVolStandardDevs(const string &name, const vector< Real > &standardDevs)
static string getAttribute(XMLNode *node, const string &attrName)
static void checkNode(XMLNode *n, const string &expectedName)
static vector< XMLNode * > getChildrenNodes(XMLNode *node, const string &name)
static XMLNode * locateNode(XMLNode *n, const string &name="")
static string getChildValue(XMLNode *node, const string &name, bool mandatory=false, const string &defaultValue=string())
static bool getChildValueAsBool(XMLNode *node, const string &name, bool mandatory=false, bool defaultValue=true)
static XMLNode * getChildNode(XMLNode *n, const string &name="")
static string getNodeValue(XMLNode *node)
static int getChildValueAsInt(XMLNode *node, const string &name, bool mandatory=false, int defaultValue=0)
static XMLNode * getNextSibling(XMLNode *node, const string &name="")
static vector< Real > getChildrenValuesAsDoublesCompact(XMLNode *node, const string &name, bool mandatory=false)
static vector< string > getChildrenValues(XMLNode *node, const string &names, const string &name, bool mandatory=false)
static vector< Period > getChildrenValuesAsPeriods(XMLNode *node, const string &name, bool mandatory=false)
static vector< Real > getNodeValueAsDoublesCompact(XMLNode *node)
Period parsePeriod(const string &s)
bool parseBool(const string &s)
#define DLOG(text)
#define ALOG(text)
#define WLOG(text)
std::vector< std::string > getCorrelationTokens(const std::string &name)
Size size(const ValueType &v)
+ Here is the call graph for this function:

◆ toXML()

XMLNode * toXML ( ore::data::XMLDocument doc) const
overridevirtual

Implements XMLSerializable.

Definition at line 1547 of file scenariosimmarketparameters.cpp.

1547 {
1548
1549 XMLNode* simulationNode = doc.allocNode("Simulation");
1550 XMLNode* marketNode = doc.allocNode("Market");
1551
1552 // currencies
1553 XMLUtils::addChild(doc, marketNode, "BaseCurrency", baseCcy_);
1554 XMLUtils::addChildren(doc, marketNode, "Currencies", "Currency", ccys_);
1555
1556 // yield curves
1557 DLOG("Writing yield curves data");
1558 XMLNode* yieldCurvesNode = XMLUtils::addChild(doc, marketNode, "YieldCurves");
1559
1560 // Take the keys from the yieldCurveDayCounters_ and yieldCurveTenors_ maps
1561 set<string> keys;
1562 for (const auto& kv : yieldCurveTenors_) {
1563 keys.insert(kv.first);
1564 }
1565 QL_REQUIRE(keys.count("") > 0, "There is no default yield curve configuration in simulation parameters");
1566
1567 // Add the yield curve configuration nodes
1568 for (const auto& key : keys) {
1569 XMLNode* configNode = doc.allocNode("Configuration");
1570 XMLUtils::addAttribute(doc, configNode, "curve", key);
1571 if (yieldCurveTenors_.count(key) > 0) {
1572 XMLUtils::addGenericChildAsList(doc, configNode, "Tenors", yieldCurveTenors_.at(key));
1573 }
1574 if (key == "") {
1575 XMLUtils::addChild(doc, configNode, "Interpolation", interpolation_);
1576 XMLUtils::addChild(doc, configNode, "Extrapolation", extrapolation_);
1577 }
1578 XMLUtils::appendNode(yieldCurvesNode, configNode);
1579 }
1580
1581 // fx rates
1582 if (fxCcyPairs().size() > 0) {
1583 DLOG("Writing FX rates");
1584 XMLNode* fxRatesNode = XMLUtils::addChild(doc, marketNode, "FxRates");
1585 XMLUtils::addChildren(doc, fxRatesNode, "CurrencyPairs", "CurrencyPair", fxCcyPairs());
1586 }
1587
1588 // indices
1589 if (indices().size() > 0) {
1590 DLOG("Writing libor indices");
1591 XMLUtils::addChildren(doc, marketNode, "Indices", "Index", indices());
1592 }
1593
1594 // swap indices
1595 if (swapIndices_.size() > 0) {
1596 DLOG("Writing swap indices");
1597 XMLNode* swapIndicesNode = XMLUtils::addChild(doc, marketNode, "SwapIndices");
1598 for (auto kv : swapIndices_) {
1599 XMLNode* swapIndexNode = XMLUtils::addChild(doc, swapIndicesNode, "SwapIndex");
1600 XMLUtils::addChild(doc, swapIndexNode, "Name", kv.first);
1601 XMLUtils::addChild(doc, swapIndexNode, "DiscountingIndex", kv.second);
1602 }
1603 }
1604
1605 // default curves
1606 if (!defaultNames().empty()) {
1607 DLOG("Writing default curves");
1608 XMLNode* defaultCurvesNode = XMLUtils::addChild(doc, marketNode, "DefaultCurves");
1609 XMLUtils::addChildren(doc, defaultCurvesNode, "Names", "Name", defaultNames());
1610 XMLUtils::addGenericChildAsList(doc, defaultCurvesNode, "Tenors", lookup(defaultTenors_, ""));
1611 XMLUtils::addChild(doc, defaultCurvesNode, "SimulateSurvivalProbabilities", simulateSurvivalProbabilities());
1612 XMLUtils::addChild(doc, defaultCurvesNode, "SimulateRecoveryRates", simulateRecoveryRates());
1613
1614 if (defaultCurveCalendars_.size() > 0) {
1615 XMLNode* node = XMLUtils::addChild(doc, defaultCurvesNode, "Calendars");
1616 for (auto dc : defaultCurveCalendars_) {
1617 XMLNode* c = doc.allocNode("Calendar", dc.second);
1618 XMLUtils::addAttribute(doc, c, "name", dc.first);
1619 XMLUtils::appendNode(node, c);
1620 }
1621 }
1622
1623 if (!defaultCurveExtrapolation_.empty()) {
1624 XMLUtils::addChild(doc, defaultCurvesNode, "Extrapolation", defaultCurveExtrapolation_);
1625 }
1626 }
1627
1628 // equities
1629 if (!equityNames().empty()) {
1630 DLOG("Writing equities");
1631 XMLNode* equitiesNode = XMLUtils::addChild(doc, marketNode, "Equities");
1632 XMLUtils::addChild(doc, equitiesNode, "SimulateDividendYield", simulateDividendYield());
1633 XMLUtils::addChildren(doc, equitiesNode, "Names", "Name", equityNames());
1634 XMLUtils::addGenericChildAsList(doc, equitiesNode, "DividendTenors", lookup(equityDividendTenors_, ""));
1635 }
1636
1637 // swaption volatilities
1638 if (!swapVolKeys().empty()) {
1639 DLOG("Writing swaption volatilities");
1640 XMLNode* swaptionVolatilitiesNode = XMLUtils::addChild(doc, marketNode, "SwaptionVolatilities");
1641 XMLUtils::addChild(doc, swaptionVolatilitiesNode, "Simulate", simulateSwapVols());
1642 XMLUtils::addChild(doc, swaptionVolatilitiesNode, "ReactionToTimeDecay", swapVolDecayMode_);
1643 XMLUtils::addChildren(doc, swaptionVolatilitiesNode, "Keys", "Key", swapVolKeys());
1644 for (auto it = swapVolExpiries_.begin(); it != swapVolExpiries_.end(); it++) {
1645 XMLUtils::addGenericChildAsList(doc, swaptionVolatilitiesNode, "Expiries", swapVolExpiries_.find(it->first)->second,
1646 "key", it->first);
1647 }
1648 for (auto it = swapVolTerms_.begin(); it != swapVolTerms_.end(); it++) {
1649 XMLUtils::addGenericChildAsList(doc, swaptionVolatilitiesNode, "Terms", swapVolTerms_.find(it->first)->second, "key",
1650 it->first);
1651 }
1652
1654 XMLUtils::addChild(doc, swaptionVolatilitiesNode, "SimulateATMOnly", swapVolSimulateATMOnly_);
1655 } else {
1656 for (auto it = swapVolStrikeSpreads_.begin(); it != swapVolStrikeSpreads_.end(); it++) {
1657 XMLUtils::addGenericChildAsList(doc, swaptionVolatilitiesNode, "StrikeSpreads",
1658 swapVolStrikeSpreads_.find(it->first)->second, "key", it->first);
1659 }
1660 }
1661 for (auto it = swapVolSmileDynamics_.begin(); it != swapVolSmileDynamics_.end(); it++) {
1662 XMLUtils::addChild(doc, swaptionVolatilitiesNode, "SmileDynamics", it->second, "key", it->first);
1663 }
1664 }
1665
1666 // yield volatilities
1667 if (!yieldVolNames().empty()) {
1668 DLOG("Writing yield volatilities");
1669 XMLNode* yieldVolatilitiesNode = XMLUtils::addChild(doc, marketNode, "YieldVolatilities");
1670 XMLUtils::addChild(doc, yieldVolatilitiesNode, "Simulate", simulateYieldVols());
1671 XMLUtils::addChild(doc, yieldVolatilitiesNode, "ReactionToTimeDecay", yieldVolDecayMode_);
1672 XMLUtils::addChildren(doc, yieldVolatilitiesNode, "Names", "Name", yieldVolNames());
1673 XMLUtils::addGenericChildAsList(doc, yieldVolatilitiesNode, "Expiries", yieldVolExpiries_);
1674 XMLUtils::addGenericChildAsList(doc, yieldVolatilitiesNode, "Terms", yieldVolTerms_);
1675 for (auto it = yieldVolSmileDynamics_.begin(); it != yieldVolSmileDynamics_.end(); it++) {
1676 XMLUtils::addChild(doc, yieldVolatilitiesNode, "SmileDynamics", it->second, "key", it->first);
1677 }
1678 }
1679
1680 // cap/floor volatilities
1681 if (!capFloorVolKeys().empty()) {
1682 DLOG("Writing cap/floor volatilities");
1683 XMLNode* capFloorVolatilitiesNode = XMLUtils::addChild(doc, marketNode, "CapFloorVolatilities");
1684 XMLUtils::addChild(doc, capFloorVolatilitiesNode, "Simulate", simulateCapFloorVols());
1685 XMLUtils::addChild(doc, capFloorVolatilitiesNode, "ReactionToTimeDecay", capFloorVolDecayMode_);
1686 XMLUtils::addChildren(doc, capFloorVolatilitiesNode, "Keys", "Key", capFloorVolKeys());
1687
1688 // Write out cap floor expiries node for each key
1689 for (auto kv : capFloorVolExpiries_) {
1690 // If strikes vector is empty, the node value is ATM else it is the comma separated list of strikes
1691 // No checks here on the string repr of each strike value - dangerous but in lots of places.
1692 string nodeValue = join(kv.second | transformed([](Period p) { return ore::data::to_string(p); }), ",");
1693 XMLNode* expiriesNode = doc.allocNode("Expiries", nodeValue);
1694 XMLUtils::addAttribute(doc, expiriesNode, "key", kv.first);
1695 XMLUtils::appendNode(capFloorVolatilitiesNode, expiriesNode);
1696 }
1697
1698 // Write out cap floor strikes for each currency
1699 for (auto kv : capFloorVolStrikes_) {
1700 // If strikes vector is empty, the node value is ATM else it is the comma separated list of strikes
1701 // No checks here on the string repr of each strike value - dangerous but in lots of places.
1702 string nodeValue = kv.second.empty()
1703 ? "ATM"
1704 : join(kv.second | transformed([](Rate s) { return ore::data::to_string(s); }), ",");
1705 XMLNode* strikesNode = doc.allocNode("Strikes", nodeValue);
1706 XMLUtils::addAttribute(doc, strikesNode, "key", kv.first);
1707 XMLUtils::appendNode(capFloorVolatilitiesNode, strikesNode);
1708 }
1709
1710 XMLUtils::addChild(doc, capFloorVolatilitiesNode, "AdjustOptionletPillars",
1712 XMLUtils::addChild(doc, capFloorVolatilitiesNode, "UseCapAtm", capFloorVolUseCapAtm_);
1713 for (auto it = capFloorVolSmileDynamics_.begin(); it != capFloorVolSmileDynamics_.end(); it++) {
1714 XMLUtils::addChild(doc, capFloorVolatilitiesNode, "SmileDynamics", it->second, "key", it->first);
1715 }
1716 }
1717
1718 // zero inflation cap/floor volatilities
1719 if (!zeroInflationCapFloorVolNames().empty()) {
1720 DLOG("Writing zero inflation cap/floor volatilities");
1721 XMLNode* n = XMLUtils::addChild(doc, marketNode, "CPICapFloorVolatilities");
1723 XMLUtils::addChild(doc, n, "ReactionToTimeDecay", zeroInflationCapFloorVolDecayMode());
1724 XMLUtils::addChildren(doc, n, "Names", "Name", zeroInflationCapFloorVolNames());
1725
1726 // Write out cap floor expiries node for each currency
1727 for (auto kv : zeroInflationCapFloorVolExpiries_) {
1728 string nodeValue = join(kv.second | transformed([](Period p) { return ore::data::to_string(p); }), ",");
1729 XMLNode* expiriesNode = doc.allocNode("Expiries", nodeValue);
1730 XMLUtils::addAttribute(doc, expiriesNode, "name", kv.first);
1731 XMLUtils::appendNode(n, expiriesNode);
1732 }
1733
1734 // Write out cap floor strikes for each currency
1735 for (auto kv : zeroInflationCapFloorVolStrikes_) {
1736 string nodeValue = kv.second.empty()
1737 ? "ATM"
1738 : join(kv.second | transformed([](Rate s) { return ore::data::to_string(s); }), ",");
1739 XMLNode* strikesNode = doc.allocNode("Strikes", nodeValue);
1740 XMLUtils::addAttribute(doc, strikesNode, "name", kv.first);
1741 XMLUtils::appendNode(n, strikesNode);
1742 }
1743 for (auto it = zeroInflationCapFloorVolSmileDynamics_.begin();
1744 it != zeroInflationCapFloorVolSmileDynamics_.end(); it++) {
1745 XMLUtils::addChild(doc, n, "SmileDynamics", it->second, "key", it->first);
1746 }
1747 }
1748
1749 if (!cdsVolNames().empty()) {
1750 DLOG("Writing CDS volatilities");
1751 XMLNode* cdsVolatilitiesNode = XMLUtils::addChild(doc, marketNode, "CDSVolatilities");
1752 XMLUtils::addChild(doc, cdsVolatilitiesNode, "Simulate", simulateCdsVols());
1753 XMLUtils::addChild(doc, cdsVolatilitiesNode, "ReactionToTimeDecay", cdsVolDecayMode_);
1754 XMLUtils::addChildren(doc, cdsVolatilitiesNode, "Names", "Name", cdsVolNames());
1755 XMLUtils::addGenericChildAsList(doc, cdsVolatilitiesNode, "Expiries", cdsVolExpiries_);
1757 XMLUtils::addChild(doc, cdsVolatilitiesNode, "SimulateATMOnly", cdsVolSimulateATMOnly_);
1758 }
1759 for (auto it = cdsVolSmileDynamics_.begin(); it != cdsVolSmileDynamics_.end(); it++) {
1760 XMLUtils::addChild(doc, cdsVolatilitiesNode, "SmileDynamics", it->second, "key", it->first);
1761 }
1762 }
1763
1764 // fx volatilities
1765 if (!fxVolCcyPairs().empty()) {
1766 DLOG("Writing FX volatilities");
1767 XMLNode* fxVolatilitiesNode = XMLUtils::addChild(doc, marketNode, "FxVolatilities");
1768 XMLUtils::addChild(doc, fxVolatilitiesNode, "Simulate", simulateFXVols());
1769 XMLUtils::addChild(doc, fxVolatilitiesNode, "ReactionToTimeDecay", fxVolDecayMode_);
1770 XMLUtils::addChildren(doc, fxVolatilitiesNode, "CurrencyPairs", "CurrencyPair", fxVolCcyPairs());
1771 for (auto it = fxVolExpiries_.begin(); it != fxVolExpiries_.end(); it++) {
1772 XMLUtils::addGenericChildAsList(doc, fxVolatilitiesNode, "Expiries", fxVolExpiries_.find(it->first)->second, "ccyPair",
1773 it->first);
1774 }
1776 XMLUtils::addChild(doc, fxVolatilitiesNode, "SimulateATMOnly", fxVolSimulateATMOnly_);
1777 }
1778 if (fxVolSimulateATMOnly_ || fxMoneyness_.size() > 0 || fxStandardDevs_.size() > 0) {
1779 XMLNode* fxSurfaceNode = XMLUtils::addChild(doc, fxVolatilitiesNode, "Surface");
1780 for (auto it = fxMoneyness_.begin(); it != fxMoneyness_.end(); it++) {
1781 XMLUtils::addGenericChildAsList(doc, fxSurfaceNode, "Moneyness", equityMoneyness_.find(it->first)->second, "ccyPair",
1782 it->first);
1783 }
1784 for (auto it = fxStandardDevs_.begin(); it != fxStandardDevs_.end(); it++) {
1785 XMLUtils::addGenericChildAsList(doc, fxSurfaceNode, "StandardDeviations",
1786 fxStandardDevs_.find(it->first)->second, "ccyPair", it->first);
1787 }
1788 }
1789 for (auto it = fxVolSmileDynamics_.begin(); it != fxVolSmileDynamics_.end(); it++) {
1790 XMLUtils::addChild(doc, fxVolatilitiesNode, "SmileDynamics", it->second, "key", it->first);
1791 }
1792 }
1793
1794 // eq volatilities
1795 if (!equityVolNames().empty()) {
1796 DLOG("Writing equity volatilities");
1797 XMLNode* eqVolatilitiesNode = XMLUtils::addChild(doc, marketNode, "EquityVolatilities");
1798 XMLUtils::addChild(doc, eqVolatilitiesNode, "Simulate", simulateEquityVols());
1799 XMLUtils::addChild(doc, eqVolatilitiesNode, "ReactionToTimeDecay", equityVolDecayMode_);
1800 XMLUtils::addChildren(doc, eqVolatilitiesNode, "Names", "Name", equityVolNames());
1801 for (auto it = equityVolExpiries_.begin(); it != equityVolExpiries_.end(); it++) {
1802 XMLUtils::addGenericChildAsList(doc, eqVolatilitiesNode, "Expiries", equityVolExpiries_.find(it->first)->second, "name",
1803 it->first);
1804 }
1806 XMLUtils::addChild(doc, eqVolatilitiesNode, "SimulateATMOnly", equityVolSimulateATMOnly_);
1807 }
1808 if (equityVolSimulateATMOnly_ || equityMoneyness_.size() > 0 || equityStandardDevs_.size() > 0) {
1809 XMLNode* eqSurfaceNode = XMLUtils::addChild(doc, eqVolatilitiesNode, "Surface");
1810 for (auto it = equityMoneyness_.begin(); it != equityMoneyness_.end(); it++) {
1811 XMLUtils::addGenericChildAsList(doc, eqSurfaceNode, "Moneyness", equityMoneyness_.find(it->first)->second, "name",
1812 it->first);
1813 }
1814 for (auto it = equityStandardDevs_.begin(); it != equityStandardDevs_.end(); it++) {
1815 XMLUtils::addGenericChildAsList(doc, eqSurfaceNode, "StandardDeviations", equityStandardDevs_.find(it->first)->second, "name",
1816 it->first);
1817 }
1818 }
1819 for (auto it = equityVolSmileDynamics_.begin(); it != equityVolSmileDynamics_.end(); it++) {
1820 XMLUtils::addChild(doc, eqVolatilitiesNode, "SmileDynamics", it->second, "key", it->first);
1821 }
1822 }
1823
1824 // benchmark yield curves
1825 XMLNode* benchmarkCurvesNode = XMLUtils::addChild(doc, marketNode, "BenchmarkCurves");
1826 for (Size i = 0; i < yieldCurveNames().size(); ++i) {
1827 DLOG("Writing benchmark yield curves data");
1828 XMLNode* benchmarkCurveNode = XMLUtils::addChild(doc, benchmarkCurvesNode, "BenchmarkCurve");
1829 XMLUtils::addChild(doc, benchmarkCurveNode, "Currency", yieldCurveCurrencies_.find(yieldCurveNames()[i])->second);
1830 XMLUtils::addChild(doc, benchmarkCurveNode, "Name", yieldCurveNames()[i]);
1831 }
1832
1833 // securities
1834 if (!securities().empty()) {
1835 DLOG("Writing securities");
1836 XMLNode* secNode = XMLUtils::addChild(doc, marketNode, "Securities");
1837 XMLUtils::addChild(doc, secNode, "Simulate", securitySpreadsSimulate());
1838 XMLUtils::addChildren(doc, secNode, "Names", "Name", securities());
1839 }
1840
1841 // cprs
1842 if (!cprs().empty()) {
1843 DLOG("Writing cprs");
1844 XMLNode* cprNode = XMLUtils::addChild(doc, marketNode, "CPRs");
1845 XMLUtils::addChild(doc, cprNode, "Simulate", simulateCprs());
1846 XMLUtils::addChildren(doc, cprNode, "Names", "Name", cprs());
1847 }
1848
1849 // inflation indices
1850 if (!cpiIndices().empty()) {
1851 DLOG("Writing inflation indices");
1852 XMLUtils::addChildren(doc, marketNode, "CpiIndices", "Index", cpiIndices());
1853 }
1854
1855 // zero inflation
1856 if (!zeroInflationIndices().empty()) {
1857 DLOG("Writing zero inflation");
1858 XMLNode* zeroNode = XMLUtils::addChild(doc, marketNode, "ZeroInflationIndexCurves");
1859 XMLUtils::addChildren(doc, zeroNode, "Names", "Name", zeroInflationIndices());
1860 XMLUtils::addGenericChildAsList(doc, zeroNode, "Tenors", lookup(zeroInflationTenors_, ""));
1861 }
1862
1863 // yoy inflation
1864 if (!yoyInflationIndices().empty()) {
1865 DLOG("Writing year-on-year inflation");
1866 XMLNode* yoyNode = XMLUtils::addChild(doc, marketNode, "YYInflationIndexCurves");
1867 XMLUtils::addChildren(doc, yoyNode, "Names", "Name", yoyInflationIndices());
1868 XMLUtils::addGenericChildAsList(doc, yoyNode, "Tenors", lookup(yoyInflationTenors_, ""));
1869 }
1870
1871 // yoy cap/floor volatilities
1872 if (!yoyInflationCapFloorVolNames().empty()) {
1873 DLOG("Writing inflation cap/floor volatilities");
1874 XMLNode* n = XMLUtils::addChild(doc, marketNode, "YYCapFloorVolatilities");
1876 XMLUtils::addChild(doc, n, "ReactionToTimeDecay", yoyInflationCapFloorVolDecayMode());
1877 XMLUtils::addChildren(doc, n, "Names", "Name", yoyInflationCapFloorVolNames());
1878
1879 // Write out cap floor expiries node for each currency
1880 for (auto kv : yoyInflationCapFloorVolExpiries_) {
1881 string nodeValue = join(kv.second | transformed([](Period p) { return ore::data::to_string(p); }), ",");
1882 XMLNode* expiriesNode = doc.allocNode("Expiries", nodeValue);
1883 XMLUtils::addAttribute(doc, expiriesNode, "name", kv.first);
1884 XMLUtils::appendNode(n, expiriesNode);
1885 }
1886
1887 // Write out cap floor strikes for each currency
1888 for (auto kv : yoyInflationCapFloorVolStrikes_) {
1889 string nodeValue = kv.second.empty()
1890 ? "ATM"
1891 : join(kv.second | transformed([](Rate s) { return ore::data::to_string(s); }), ",");
1892 XMLNode* strikesNode = doc.allocNode("Strikes", nodeValue);
1893 XMLUtils::addAttribute(doc, strikesNode, "name", kv.first);
1894 XMLUtils::appendNode(n, strikesNode);
1895 }
1897 it++) {
1898 XMLUtils::addChild(doc, n, "SmileDynamics", it->second, "key", it->first);
1899 }
1900 }
1901
1902 // Commodity price curves
1903 if (!commodityNames().empty()) {
1904 DLOG("Writing commodity price curves");
1905 XMLNode* commodityPriceNode = XMLUtils::addChild(doc, marketNode, "Commodities");
1906 XMLUtils::addChild(doc, commodityPriceNode, "Simulate", commodityCurveSimulate());
1907 XMLUtils::addChildren(doc, commodityPriceNode, "Names", "Name", commodityNames());
1908
1909 // Write out tenors node for each commodity name
1910 for (auto kv : commodityCurveTenors_) {
1911 // Single bar here is a boost range adaptor. Documented here:
1912 // https://www.boost.org/doc/libs/1_71_0/libs/range/doc/html/range/reference/adaptors/introduction.html
1913 string nodeValue = join(kv.second | transformed([](Period p) { return ore::data::to_string(p); }), ",");
1914 XMLNode* tenorsNode = doc.allocNode("Tenors", nodeValue);
1915 XMLUtils::addAttribute(doc, tenorsNode, "name", kv.first);
1916 XMLUtils::appendNode(commodityPriceNode, tenorsNode);
1917 }
1918 }
1919
1920 // Commodity volatilities
1921 if (!commodityVolNames().empty()) {
1922 DLOG("Writing commodity volatilities");
1923 XMLNode* commodityVolatilitiesNode = XMLUtils::addChild(doc, marketNode, "CommodityVolatilities");
1924 XMLUtils::addChild(doc, commodityVolatilitiesNode, "Simulate", commodityVolSimulate());
1925 XMLUtils::addChild(doc, commodityVolatilitiesNode, "ReactionToTimeDecay", commodityVolDecayMode_);
1926 XMLNode* namesNode = XMLUtils::addChild(doc, commodityVolatilitiesNode, "Names");
1927 for (const auto& name : commodityVolNames()) {
1928 XMLNode* nameNode = doc.allocNode("Name");
1929 XMLUtils::addAttribute(doc, nameNode, "id", name);
1930 XMLUtils::addGenericChildAsList(doc, nameNode, "Expiries", commodityVolExpiries_.find(name)->second);
1931 XMLUtils::addGenericChildAsList(doc, nameNode, "Moneyness", commodityVolMoneyness_.find(name)->second);
1932 XMLUtils::appendNode(namesNode, nameNode);
1933 }
1934 for (auto it = commodityVolSmileDynamics_.begin(); it != commodityVolSmileDynamics_.end(); it++) {
1935 XMLUtils::addChild(doc, commodityVolatilitiesNode, "SmileDynamics", it->second, "key", it->first);
1936 }
1937 }
1938
1939 // additional scenario data currencies
1940 if (!additionalScenarioDataCcys_.empty()) {
1941 DLOG("Writing aggregation scenario data currencies");
1942 XMLUtils::addChildren(doc, marketNode, "AggregationScenarioDataCurrencies", "Currency",
1944 }
1945
1946 // additional scenario data indices
1947 if (!additionalScenarioDataIndices_.empty()) {
1948 DLOG("Writing aggregation scenario data indices");
1949 XMLUtils::addChildren(doc, marketNode, "AggregationScenarioDataIndices", "Index",
1951 }
1952
1953 // Credit States
1954 DLOG("Writing number of credit states");
1955 XMLNode* creditStatesNode = XMLUtils::addChild(doc, marketNode, "CreditStates");
1956 XMLUtils::addChild(doc, creditStatesNode, "NumberOfFactors", int(numberOfCreditStates_));
1957
1958 DLOG("Writing number of credit states, AggregationScenarioDataCreditStates");
1959 XMLNode* aggScenDataCreditStatesNode = XMLUtils::addChild(doc, marketNode, "AggregationScenarioDataCreditStates");
1960 XMLUtils::addChild(doc, aggScenDataCreditStatesNode, "NumberOfFactors",
1962
1963 // Survival Weights
1964 DLOG("Writing names that need tracking of survival weights");
1966 XMLUtils::addChildren(doc, marketNode, "AggregationScenarioDataSurvivalWeights", "Name",
1968 }
1969
1970 // base correlations
1971 if (!baseCorrelationNames().empty()) {
1972 DLOG("Writing base correlations");
1973 XMLNode* bcNode = XMLUtils::addChild(doc, marketNode, "BaseCorrelations");
1974 XMLUtils::addChild(doc, bcNode, "Simulate", simulateBaseCorrelations());
1975 XMLUtils::addChildren(doc, bcNode, "IndexNames", "IndexName", baseCorrelationNames());
1977 XMLUtils::addGenericChildAsList(doc, bcNode, "DetachmentPoints", baseCorrelationDetachmentPoints_);
1978 }
1979
1980 // correlations
1981 if (!correlationPairs().empty()) {
1982 DLOG("Writing correlation");
1983 XMLNode* correlationsNode = XMLUtils::addChild(doc, marketNode, "Correlations");
1984 XMLUtils::addChild(doc, correlationsNode, "Simulate", simulateCorrelations());
1985 XMLUtils::addChildren(doc, correlationsNode, "Pairs", "Pair", correlationPairs());
1986
1987 XMLUtils::addGenericChildAsList(doc, correlationsNode, "Expiries", correlationExpiries_);
1988 }
1989
1990 XMLUtils::appendNode(simulationNode, marketNode);
1991
1992 return simulationNode;
1993}
XMLNode * allocNode(const string &nodeName)
static void addAttribute(XMLDocument &doc, XMLNode *node, const string &attrName, const string &attrValue)
static void addChildren(XMLDocument &doc, XMLNode *n, const string &names, const string &name, const vector< T > &values)
static void addGenericChildAsList(XMLDocument &doc, XMLNode *n, const string &name, const vector< T > &values, const string &attrName="", const string &attr="")
static XMLNode * addChild(XMLDocument &doc, XMLNode *n, const string &name)
static void appendNode(XMLNode *parent, XMLNode *child)
std::string to_string(const LocationInfo &l)
+ Here is the call graph for this function:

◆ operator==()

bool operator== ( const ScenarioSimMarketParameters rhs)

Definition at line 653 of file scenariosimmarketparameters.cpp.

653 {
654
655 if (baseCcy_ != rhs.baseCcy_ || ccys_ != rhs.ccys_ || params_ != rhs.params_ ||
656 yieldCurveCurrencies_ != rhs.yieldCurveCurrencies_ || yieldCurveTenors_ != rhs.yieldCurveTenors_ ||
657 swapIndices_ != rhs.swapIndices_ || interpolation_ != rhs.interpolation_ ||
658 extrapolation_ != rhs.extrapolation_ || swapVolTerms_ != rhs.swapVolTerms_ ||
659 swapVolIsCube_ != rhs.swapVolIsCube_ || swapVolSimulateATMOnly_ != rhs.swapVolSimulateATMOnly_ ||
660 swapVolExpiries_ != rhs.swapVolExpiries_ || swapVolStrikeSpreads_ != rhs.swapVolStrikeSpreads_ ||
661 swapVolDecayMode_ != rhs.swapVolDecayMode_ || capFloorVolExpiries_ != rhs.capFloorVolExpiries_ ||
662 capFloorVolStrikes_ != rhs.capFloorVolStrikes_ ||
663 zeroInflationCapFloorVolExpiries_ != rhs.zeroInflationCapFloorVolExpiries_ ||
664 zeroInflationCapFloorVolStrikes_ != rhs.zeroInflationCapFloorVolStrikes_ ||
665 zeroInflationCapFloorVolDecayMode_ != rhs.zeroInflationCapFloorVolDecayMode_ ||
666 capFloorVolIsAtm_ != rhs.capFloorVolIsAtm_ || capFloorVolDecayMode_ != rhs.capFloorVolDecayMode_ ||
667 defaultCurveCalendars_ != rhs.defaultCurveCalendars_ || defaultTenors_ != rhs.defaultTenors_ ||
668 defaultCurveExtrapolation_ != rhs.defaultCurveExtrapolation_ || cdsVolExpiries_ != rhs.cdsVolExpiries_ ||
669 cdsVolDecayMode_ != rhs.cdsVolDecayMode_ || cdsVolSimulateATMOnly_ != rhs.cdsVolSimulateATMOnly_ ||
670 equityDividendTenors_ != rhs.equityDividendTenors_ || fxVolIsSurface_ != rhs.fxVolIsSurface_ ||
671 fxVolExpiries_ != rhs.fxVolExpiries_ || fxVolDecayMode_ != rhs.fxVolDecayMode_ ||
672 fxVolSimulateATMOnly_ != rhs.fxVolSimulateATMOnly_ || equityVolExpiries_ != rhs.equityVolExpiries_ ||
673 equityVolDecayMode_ != rhs.equityVolDecayMode_ || equityVolSimulateATMOnly_ != rhs.equityVolSimulateATMOnly_ ||
674 equityMoneyness_ != rhs.equityMoneyness_ || equityStandardDevs_ != rhs.equityStandardDevs_ ||
675 additionalScenarioDataIndices_ != rhs.additionalScenarioDataIndices_ ||
676 additionalScenarioDataCcys_ != rhs.additionalScenarioDataCcys_ ||
677 additionalScenarioDataNumberOfCreditStates_ != rhs.additionalScenarioDataNumberOfCreditStates_ ||
678 additionalScenarioDataSurvivalWeights_ != rhs.additionalScenarioDataSurvivalWeights_ ||
679 baseCorrelationTerms_ != rhs.baseCorrelationTerms_ ||
680 baseCorrelationDetachmentPoints_ != rhs.baseCorrelationDetachmentPoints_ ||
681 zeroInflationTenors_ != rhs.zeroInflationTenors_ || yoyInflationTenors_ != rhs.yoyInflationTenors_ ||
682 commodityCurveTenors_ != rhs.commodityCurveTenors_ || commodityVolDecayMode_ != rhs.commodityVolDecayMode_ ||
683 commodityVolExpiries_ != rhs.commodityVolExpiries_ || commodityVolMoneyness_ != rhs.commodityVolMoneyness_ ||
684 correlationIsSurface_ != rhs.correlationIsSurface_ || correlationExpiries_ != rhs.correlationExpiries_ ||
685 correlationStrikes_ != rhs.correlationStrikes_ || cprSimulate_ != rhs.cprSimulate_ || cprs_ != rhs.cprs_ ||
686 yieldVolTerms_ != rhs.yieldVolTerms_ || yieldVolExpiries_ != rhs.yieldVolExpiries_ ||
687 yieldVolDecayMode_ != rhs.yieldVolDecayMode_) {
688 return false;
689 } else {
690 return true;
691 }
692}

◆ operator!=()

Definition at line 694 of file scenariosimmarketparameters.cpp.

694{ return !(*this == rhs); }

◆ setDefaults()

void setDefaults ( )
private

Definition at line 106 of file scenariosimmarketparameters.cpp.

106 {
107 // Set default simulate
109 setSimulateSwapVols(false);
116 setSimulateCdsVols(false);
117 setSimulateFXVols(false);
123 setSimulateFxSpots(true);
125
126 // set default smile dynamics
127 setSwapVolSmileDynamics("", "StickyStrike");
128 setYieldVolSmileDynamics("", "StickyStrike");
129 setCapFloorVolSmileDynamics("", "StickyStrike");
130 setYoYInflationCapFloorVolSmileDynamics("", "StickyStrike");
132 setCdsVolSmileDynamics("", "StickyStrike");
133 setFxVolSmileDynamics("", "StickyStrike");
134 setEquityVolSmileDynamics("", "StickyStrike");
135 setCommodityVolSmileDynamics("", "StickyStrike");
136
137 // Set default tenors
138 defaultTenors_[""] = vector<Period>();
139 equityDividendTenors_[""] = vector<Period>();
140 zeroInflationTenors_[""] = vector<Period>();
141 yoyInflationTenors_[""] = vector<Period>();
142 // Default calendars
143 defaultCurveCalendars_[""] = "TARGET";
144 // Default fxVol params
145 fxVolIsSurface_[""] = false;
146 // Defaults for simulate atm only
149 simulateSwapVolATMOnly() = false;
151 // Default interpolation for yield curves
152 interpolation_ = "LogLinear";
153 extrapolation_ = "FlatFwd";
154 defaultCurveExtrapolation_ = "FlatFwd";
155}
void setSwapVolSmileDynamics(const string &key, const string &smileDynamics)
void setEquityVolSmileDynamics(const string &name, const string &smileDynamics)
void setCommodityVolSmileDynamics(const string &key, const string &smileDynamics)
void setYieldVolSmileDynamics(const string &key, const string &smileDynamics)
void setYoYInflationCapFloorVolSmileDynamics(const string &key, const string &smileDynamics)
void setZeroInflationCapFloorVolSmileDynamics(const string &key, const string &smileDynamics)
void setCapFloorVolSmileDynamics(const string &key, const string &smileDynamics)
void setCdsVolSmileDynamics(const string &key, const string &smileDynamics)
void setFxVolSmileDynamics(const string &name, const string &smileDynamics)
+ Here is the call graph for this function:

◆ reset()

void reset ( )
private

A method used to reset the object to its default state before fromXML is called.

Definition at line 157 of file scenariosimmarketparameters.cpp.

157 {
159 std::swap(*this, ssmp);
160}
+ Here is the caller graph for this function:

Member Data Documentation

◆ baseCcy_

string baseCcy_
private

Definition at line 412 of file scenariosimmarketparameters.hpp.

◆ ccys_

vector<string> ccys_
private

Definition at line 413 of file scenariosimmarketparameters.hpp.

◆ yieldCurveCurrencies_

map<string, string> yieldCurveCurrencies_
private

Definition at line 414 of file scenariosimmarketparameters.hpp.

◆ yieldCurveTenors_

map<string, vector<Period> > yieldCurveTenors_
private

Definition at line 415 of file scenariosimmarketparameters.hpp.

◆ swapIndices_

map<string, string> swapIndices_
private

Definition at line 416 of file scenariosimmarketparameters.hpp.

◆ interpolation_

string interpolation_
private

Definition at line 417 of file scenariosimmarketparameters.hpp.

◆ extrapolation_

string extrapolation_
private

Definition at line 418 of file scenariosimmarketparameters.hpp.

◆ swapVolIsCube_

map<string, bool> swapVolIsCube_
private

Definition at line 420 of file scenariosimmarketparameters.hpp.

◆ swapVolSimulateATMOnly_

bool swapVolSimulateATMOnly_ = false
private

Definition at line 421 of file scenariosimmarketparameters.hpp.

◆ swapVolTerms_

map<string, vector<Period> > swapVolTerms_
private

Definition at line 422 of file scenariosimmarketparameters.hpp.

◆ swapVolExpiries_

map<string, vector<Period> > swapVolExpiries_
private

Definition at line 423 of file scenariosimmarketparameters.hpp.

◆ swapVolStrikeSpreads_

map<string, vector<Real> > swapVolStrikeSpreads_
private

Definition at line 424 of file scenariosimmarketparameters.hpp.

◆ swapVolDecayMode_

string swapVolDecayMode_
private

Definition at line 425 of file scenariosimmarketparameters.hpp.

◆ swapVolSmileDynamics_

map<string, string> swapVolSmileDynamics_
private

Definition at line 426 of file scenariosimmarketparameters.hpp.

◆ yieldVolTerms_

vector<Period> yieldVolTerms_
private

Definition at line 428 of file scenariosimmarketparameters.hpp.

◆ yieldVolExpiries_

vector<Period> yieldVolExpiries_
private

Definition at line 429 of file scenariosimmarketparameters.hpp.

◆ yieldVolDecayMode_

string yieldVolDecayMode_
private

Definition at line 430 of file scenariosimmarketparameters.hpp.

◆ yieldVolSmileDynamics_

map<string, string> yieldVolSmileDynamics_
private

Definition at line 431 of file scenariosimmarketparameters.hpp.

◆ capFloorVolExpiries_

map<string, vector<Period> > capFloorVolExpiries_
private

Definition at line 433 of file scenariosimmarketparameters.hpp.

◆ capFloorVolStrikes_

map<std::string, std::vector<QuantLib::Rate> > capFloorVolStrikes_
private

Definition at line 434 of file scenariosimmarketparameters.hpp.

◆ capFloorVolIsAtm_

map<std::string, bool> capFloorVolIsAtm_
private

Definition at line 435 of file scenariosimmarketparameters.hpp.

◆ capFloorVolDecayMode_

string capFloorVolDecayMode_
private

Definition at line 436 of file scenariosimmarketparameters.hpp.

◆ capFloorVolAdjustOptionletPillars_

bool capFloorVolAdjustOptionletPillars_
private

Definition at line 437 of file scenariosimmarketparameters.hpp.

◆ capFloorVolUseCapAtm_

bool capFloorVolUseCapAtm_
private

Definition at line 438 of file scenariosimmarketparameters.hpp.

◆ capFloorVolSmileDynamics_

map<string, string> capFloorVolSmileDynamics_
private

Definition at line 439 of file scenariosimmarketparameters.hpp.

◆ yoyInflationCapFloorVolExpiries_

map<string, vector<Period> > yoyInflationCapFloorVolExpiries_
private

Definition at line 441 of file scenariosimmarketparameters.hpp.

◆ yoyInflationCapFloorVolStrikes_

map<std::string, std::vector<QuantLib::Rate> > yoyInflationCapFloorVolStrikes_
private

Definition at line 442 of file scenariosimmarketparameters.hpp.

◆ yoyInflationCapFloorVolDecayMode_

string yoyInflationCapFloorVolDecayMode_
private

Definition at line 443 of file scenariosimmarketparameters.hpp.

◆ yoyInflationCapFloorVolSmileDynamics_

map<string, string> yoyInflationCapFloorVolSmileDynamics_
private

Definition at line 444 of file scenariosimmarketparameters.hpp.

◆ zeroInflationCapFloorVolExpiries_

map<string, vector<Period> > zeroInflationCapFloorVolExpiries_
private

Definition at line 446 of file scenariosimmarketparameters.hpp.

◆ zeroInflationCapFloorVolStrikes_

map<std::string, std::vector<QuantLib::Rate> > zeroInflationCapFloorVolStrikes_
private

Definition at line 447 of file scenariosimmarketparameters.hpp.

◆ zeroInflationCapFloorVolDecayMode_

string zeroInflationCapFloorVolDecayMode_
private

Definition at line 448 of file scenariosimmarketparameters.hpp.

◆ zeroInflationCapFloorVolSmileDynamics_

map<string, string> zeroInflationCapFloorVolSmileDynamics_
private

Definition at line 449 of file scenariosimmarketparameters.hpp.

◆ defaultCurveCalendars_

map<string, string> defaultCurveCalendars_
private

Definition at line 451 of file scenariosimmarketparameters.hpp.

◆ defaultTenors_

map<string, vector<Period> > defaultTenors_
private

Definition at line 452 of file scenariosimmarketparameters.hpp.

◆ defaultCurveExtrapolation_

string defaultCurveExtrapolation_
private

Definition at line 453 of file scenariosimmarketparameters.hpp.

◆ cdsVolSimulateATMOnly_

bool cdsVolSimulateATMOnly_ = false
private

Definition at line 455 of file scenariosimmarketparameters.hpp.

◆ cdsVolExpiries_

vector<Period> cdsVolExpiries_
private

Definition at line 456 of file scenariosimmarketparameters.hpp.

◆ cdsVolDecayMode_

string cdsVolDecayMode_
private

Definition at line 457 of file scenariosimmarketparameters.hpp.

◆ cdsVolSmileDynamics_

map<string, string> cdsVolSmileDynamics_
private

Definition at line 458 of file scenariosimmarketparameters.hpp.

◆ equityDividendTenors_

map<string, vector<Period> > equityDividendTenors_
private

Definition at line 460 of file scenariosimmarketparameters.hpp.

◆ fxVolSimulateATMOnly_

bool fxVolSimulateATMOnly_ = false
private

Definition at line 463 of file scenariosimmarketparameters.hpp.

◆ fxVolIsSurface_

map<std::string, bool> fxVolIsSurface_
private

Definition at line 464 of file scenariosimmarketparameters.hpp.

◆ fxVolExpiries_

map<string, vector<Period> > fxVolExpiries_
private

Definition at line 465 of file scenariosimmarketparameters.hpp.

◆ fxVolDecayMode_

string fxVolDecayMode_
private

Definition at line 466 of file scenariosimmarketparameters.hpp.

◆ fxMoneyness_

map<string, vector<Real> > fxMoneyness_
private

Definition at line 467 of file scenariosimmarketparameters.hpp.

◆ fxStandardDevs_

map<string, vector<Real> > fxStandardDevs_
private

Definition at line 468 of file scenariosimmarketparameters.hpp.

◆ fxVolSmileDynamics_

map<string, string> fxVolSmileDynamics_
private

Definition at line 469 of file scenariosimmarketparameters.hpp.

◆ equityVolSimulateATMOnly_

bool equityVolSimulateATMOnly_ = false
private

Definition at line 471 of file scenariosimmarketparameters.hpp.

◆ equityVolIsSurface_

map<string, bool> equityVolIsSurface_
private

Definition at line 472 of file scenariosimmarketparameters.hpp.

◆ equityVolExpiries_

map<string, vector<Period> > equityVolExpiries_
private

Definition at line 473 of file scenariosimmarketparameters.hpp.

◆ equityVolDecayMode_

string equityVolDecayMode_
private

Definition at line 474 of file scenariosimmarketparameters.hpp.

◆ equityMoneyness_

map<string, vector<Real> > equityMoneyness_
private

Definition at line 475 of file scenariosimmarketparameters.hpp.

◆ equityStandardDevs_

map<string, vector<Real> > equityStandardDevs_
private

Definition at line 476 of file scenariosimmarketparameters.hpp.

◆ equityVolSmileDynamics_

map<string, string> equityVolSmileDynamics_
private

Definition at line 477 of file scenariosimmarketparameters.hpp.

◆ additionalScenarioDataIndices_

vector<string> additionalScenarioDataIndices_
private

Definition at line 479 of file scenariosimmarketparameters.hpp.

◆ additionalScenarioDataCcys_

vector<string> additionalScenarioDataCcys_
private

Definition at line 480 of file scenariosimmarketparameters.hpp.

◆ additionalScenarioDataNumberOfCreditStates_

Size additionalScenarioDataNumberOfCreditStates_ = 0
private

Definition at line 481 of file scenariosimmarketparameters.hpp.

◆ additionalScenarioDataSurvivalWeights_

vector<string> additionalScenarioDataSurvivalWeights_
private

Definition at line 482 of file scenariosimmarketparameters.hpp.

◆ cprSimulate_

bool cprSimulate_
private

Definition at line 484 of file scenariosimmarketparameters.hpp.

◆ cprs_

vector<string> cprs_
private

Definition at line 485 of file scenariosimmarketparameters.hpp.

◆ baseCorrelationTerms_

vector<Period> baseCorrelationTerms_
private

Definition at line 487 of file scenariosimmarketparameters.hpp.

◆ baseCorrelationDetachmentPoints_

vector<Real> baseCorrelationDetachmentPoints_
private

Definition at line 488 of file scenariosimmarketparameters.hpp.

◆ zeroInflationTenors_

map<string, vector<Period> > zeroInflationTenors_
private

Definition at line 490 of file scenariosimmarketparameters.hpp.

◆ yoyInflationTenors_

map<string, vector<Period> > yoyInflationTenors_
private

Definition at line 491 of file scenariosimmarketparameters.hpp.

◆ commodityCurveTenors_

std::map<std::string, std::vector<QuantLib::Period> > commodityCurveTenors_
private

Definition at line 494 of file scenariosimmarketparameters.hpp.

◆ commodityVolDecayMode_

std::string commodityVolDecayMode_
private

Definition at line 497 of file scenariosimmarketparameters.hpp.

◆ commodityVolExpiries_

std::map<std::string, std::vector<QuantLib::Period> > commodityVolExpiries_
private

Definition at line 498 of file scenariosimmarketparameters.hpp.

◆ commodityVolMoneyness_

std::map<std::string, std::vector<QuantLib::Real> > commodityVolMoneyness_
private

Definition at line 499 of file scenariosimmarketparameters.hpp.

◆ commodityVolSmileDynamics_

map<string, string> commodityVolSmileDynamics_
private

Definition at line 500 of file scenariosimmarketparameters.hpp.

◆ correlationIsSurface_

bool correlationIsSurface_
private

Definition at line 502 of file scenariosimmarketparameters.hpp.

◆ correlationExpiries_

vector<Period> correlationExpiries_
private

Definition at line 503 of file scenariosimmarketparameters.hpp.

◆ correlationStrikes_

vector<Real> correlationStrikes_
private

Definition at line 504 of file scenariosimmarketparameters.hpp.

◆ numberOfCreditStates_

Size numberOfCreditStates_ = 0
private

Definition at line 505 of file scenariosimmarketparameters.hpp.

◆ params_

std::map<RiskFactorKey::KeyType, std::pair<bool, std::set<std::string> > > params_
private

Definition at line 509 of file scenariosimmarketparameters.hpp.