@@ -29,22 +29,18 @@ namespace data {
2929
3030InfJyData::InfJyData () {}
3131
32- InfJyData::InfJyData (CalibrationType calibrationType,
33- const vector<CalibrationBasket>& calibrationBaskets,
34- const std::string& currency,
35- const std::string& index,
36- const ReversionParameter& realRateReversion,
37- const VolatilityParameter& realRateVolatility,
38- const VolatilityParameter& indexVolatility,
39- const LgmReversionTransformation& reversionTransformation,
40- const CalibrationConfiguration& calibrationConfiguration,
41- const bool ignoreDuplicateCalibrationExpiryTimes)
32+ InfJyData::InfJyData (CalibrationType calibrationType, const vector<CalibrationBasket>& calibrationBaskets,
33+ const std::string& currency, const std::string& index, const ReversionParameter& realRateReversion,
34+ const VolatilityParameter& realRateVolatility, const VolatilityParameter& indexVolatility,
35+ const LgmReversionTransformation& reversionTransformation,
36+ const CalibrationConfiguration& calibrationConfiguration,
37+ const bool ignoreDuplicateCalibrationExpiryTimes, const bool linkRealToNominalRateParams,
38+ const Real linkedRealRateVolatilityScaling)
4239 : InflationModelData(calibrationType, calibrationBaskets, currency, index, ignoreDuplicateCalibrationExpiryTimes),
43- realRateReversion_ (realRateReversion),
44- realRateVolatility_(realRateVolatility),
45- indexVolatility_(indexVolatility),
46- reversionTransformation_(reversionTransformation),
47- calibrationConfiguration_(calibrationConfiguration) {}
40+ realRateReversion_ (realRateReversion), realRateVolatility_(realRateVolatility), indexVolatility_(indexVolatility),
41+ reversionTransformation_(reversionTransformation), calibrationConfiguration_(calibrationConfiguration),
42+ linkRealToNominalRateParams_(linkRealToNominalRateParams),
43+ linkedRealRateVolatilityScaling_(linkedRealRateVolatilityScaling) {}
4844
4945const ReversionParameter& InfJyData::realRateReversion () const {
5046 return realRateReversion_;
@@ -66,6 +62,10 @@ const CalibrationConfiguration& InfJyData::calibrationConfiguration() const {
6662 return calibrationConfiguration_;
6763}
6864
65+ bool InfJyData::linkRealRateParamsToNominalRateParams () const { return linkRealToNominalRateParams_; }
66+
67+ Real InfJyData::linkedRealRateVolatilityScaling () const { return linkedRealRateVolatilityScaling_; }
68+
6969void InfJyData::fromXML (XMLNode* node) {
7070
7171 // Check the node is not null and that name is LGM or DodgsonKainth. LGM is for backward compatibility.
@@ -88,9 +88,16 @@ void InfJyData::fromXML(XMLNode* node) {
8888 indexVolatility_.fromXML (XMLUtils::getChildNode (idxNode, " Volatility" ));
8989
9090 // Get the calibration configuration
91- XMLNode* ccNode = XMLUtils::getChildNode (node, " CalibrationConfiguration" );
92- if (ccNode)
91+ if (XMLNode* ccNode = XMLUtils::getChildNode (node, " CalibrationConfiguration" ))
9392 calibrationConfiguration_.fromXML (ccNode);
93+
94+ // Get the link to nominal param fields
95+ linkRealToNominalRateParams_ =
96+ parseBool (XMLUtils::getChildValue (node, " LinkRealToNominalRateParams" , false , " false" ));
97+ if (linkRealToNominalRateParams_) {
98+ linkedRealRateVolatilityScaling_ =
99+ parseReal (XMLUtils::getChildValue (node, " LinkedRealRateVolatilityScaling" , false , " 1.0" ));
100+ }
94101}
95102
96103XMLNode* InfJyData::toXML (XMLDocument& doc) const {
@@ -110,6 +117,11 @@ XMLNode* InfJyData::toXML(XMLDocument& doc) const {
110117
111118 XMLUtils::appendNode (node, calibrationConfiguration_.toXML (doc));
112119
120+ if (linkRealToNominalRateParams_) {
121+ XMLUtils::addChild (doc, node, " LinkRealToNominalRateParams" , linkRealToNominalRateParams_);
122+ XMLUtils::addChild (doc, node, " LinkedRealRateVolatilityScaling" , linkedRealRateVolatilityScaling_);
123+ }
124+
113125 return node;
114126}
115127
0 commit comments