Skip to content

Commit 2b0a32b

Browse files
pcaspersjenkins
authored andcommitted
QPR-12398 populate comm configs
1 parent c8d54d1 commit 2b0a32b

1 file changed

Lines changed: 21 additions & 3 deletions

File tree

OREData/ored/portfolio/builders/scriptedtrade.cpp

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,7 +1378,6 @@ void ScriptedTradeEngineBuilder::buildGaussianCam(const std::string& id, const I
13781378
std::vector<QuantLib::ext::shared_ptr<FxBsData>> fxConfigs;
13791379
std::vector<QuantLib::ext::shared_ptr<EqBsData>> eqConfigs;
13801380
std::vector<QuantLib::ext::shared_ptr<CommoditySchwartzData>> comConfigs;
1381-
// TODO: populate comConfigs
13821381

13831382
// calibration expiries and terms for IR, INF, FX, EQ parametrisations (this will only work for a fixed reference
13841383
// date, due to the way the cam builder and nested builders work, see ticket #940)
@@ -1597,8 +1596,27 @@ void ScriptedTradeEngineBuilder::buildGaussianCam(const std::string& id, const I
15971596
std::vector<QuantLib::ext::shared_ptr<CrLgmData>> crLgmConfigs;
15981597
std::vector<QuantLib::ext::shared_ptr<CrCirData>> crCirConfigs;
15991598

1600-
// COMM configs, not supported at this point
1601-
QL_REQUIRE(commIndices_.empty(), "GaussianCam model does not support commodity underlyings currently");
1599+
// COMM configs
1600+
for (auto const& comm : commIndices_) {
1601+
auto config = QuantLib::ext::make_shared<CommoditySchwartzData>();
1602+
config->currency() = getCommCcy(comm);
1603+
config->name() = comm.commName();
1604+
if (calibrationExpiries.empty() || zeroVolatility_) {
1605+
config->calibrationType() = CalibrationType::None;
1606+
config->calibrateSigma() = false;
1607+
config->sigmaParamType() = ParamType::Constant;
1608+
config->sigmaValue() = 0.0;
1609+
} else {
1610+
config->calibrationType() = CalibrationType::BestFit;
1611+
config->calibrateSigma() = true;
1612+
config->sigmaParamType() = ParamType::Constant;
1613+
config->sigmaValue() = 0.10; // start value for optimizer
1614+
config->optionExpiries() = calibrationExpiries;
1615+
config->optionStrikes() =
1616+
std::vector<std::string>(calibrationExpiries.size(), "ATMF"); // hardcoded ATMF calibration strike
1617+
}
1618+
comConfigs.push_back(config);
1619+
}
16021620

16031621
std::string configurationInCcy = configuration(MarketContext::irCalibration);
16041622
std::string configurationXois = configuration(MarketContext::pricing);

0 commit comments

Comments
 (0)