@@ -29,22 +29,18 @@ namespace data {
29
29
30
30
InfJyData::InfJyData () {}
31
31
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)
42
39
: 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) {}
48
44
49
45
const ReversionParameter& InfJyData::realRateReversion () const {
50
46
return realRateReversion_;
@@ -66,6 +62,10 @@ const CalibrationConfiguration& InfJyData::calibrationConfiguration() const {
66
62
return calibrationConfiguration_;
67
63
}
68
64
65
+ bool InfJyData::linkRealRateParamsToNominalRateParams () const { return linkRealToNominalRateParams_; }
66
+
67
+ Real InfJyData::linkedRealRateVolatilityScaling () const { return linkedRealRateVolatilityScaling_; }
68
+
69
69
void InfJyData::fromXML (XMLNode* node) {
70
70
71
71
// 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) {
88
88
indexVolatility_.fromXML (XMLUtils::getChildNode (idxNode, " Volatility" ));
89
89
90
90
// Get the calibration configuration
91
- XMLNode* ccNode = XMLUtils::getChildNode (node, " CalibrationConfiguration" );
92
- if (ccNode)
91
+ if (XMLNode* ccNode = XMLUtils::getChildNode (node, " CalibrationConfiguration" ))
93
92
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
+ }
94
101
}
95
102
96
103
XMLNode* InfJyData::toXML (XMLDocument& doc) {
@@ -110,6 +117,11 @@ XMLNode* InfJyData::toXML(XMLDocument& doc) {
110
117
111
118
XMLUtils::appendNode (node, calibrationConfiguration_.toXML (doc));
112
119
120
+ if (linkRealToNominalRateParams_) {
121
+ XMLUtils::addChild (doc, node, " LinkRealToNominalRateParams" , linkRealToNominalRateParams_);
122
+ XMLUtils::addChild (doc, node, " LinkedRealRateVolatilityScaling" , linkedRealRateVolatilityScaling_);
123
+ }
124
+
113
125
return node;
114
126
}
115
127
0 commit comments