Skip to content

Commit 9b9def8

Browse files
pcaspersjenkins
authored andcommitted
fix, provide reasonable defaults
1 parent ec223f2 commit 9b9def8

1 file changed

Lines changed: 21 additions & 17 deletions

File tree

OREData/ored/portfolio/builders/swaption.cpp

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,23 @@ using namespace std;
3737
using namespace ore::data;
3838

3939
namespace {
40-
boost::shared_ptr<PricingEngine> buildMcEngine(const std::function<string(string)>& engineParameters,
41-
const boost::shared_ptr<LGM>& lgm,
42-
const Handle<YieldTermStructure>& discountCurve,
43-
const std::vector<Date>& simulationDates,
44-
const std::vector<Size>& externalModelIndices) {
40+
boost::shared_ptr<PricingEngine> buildMcEngine(
41+
const std::function<string(string, const std::vector<std::string>&, const bool, const string&)>& engineParameter,
42+
const boost::shared_ptr<LGM>& lgm, const Handle<YieldTermStructure>& discountCurve,
43+
const std::vector<Date>& simulationDates, const std::vector<Size>& externalModelIndices) {
4544

4645
return boost::make_shared<QuantExt::McMultiLegOptionEngine>(
47-
lgm, parseSequenceType(engineParameters("Training.Sequence")),
48-
parseSequenceType(engineParameters("Pricing.Sequence")), parseInteger(engineParameters("Training.Samples")),
49-
parseInteger(engineParameters("Pricing.Samples")), parseInteger(engineParameters("Training.Seed")),
50-
parseInteger(engineParameters("Pricing.Seed")), parseInteger(engineParameters("Training.BasisFunctionOrder")),
51-
parsePolynomType(engineParameters("Training.BasisFunction")),
52-
parseSobolBrownianGeneratorOrdering(engineParameters("BrownianBridgeOrdering")),
53-
parseSobolRsgDirectionIntegers(engineParameters("SobolDirectionIntegers")), discountCurve, simulationDates,
54-
externalModelIndices, parseBool(engineParameters("MinObsDate")),
46+
lgm, parseSequenceType(engineParameter("Training.Sequence", {}, false, "SobolBrownianBridge")),
47+
parseSequenceType(engineParameter("Pricing.Sequence", {}, false, "SobolBrownianBridge")),
48+
parseInteger(engineParameter("Training.Samples", {}, true, std::string())),
49+
parseInteger(engineParameter("Pricing.Samples", {}, false, "0")),
50+
parseInteger(engineParameter("Training.Seed", {}, true, std::string())),
51+
parseInteger(engineParameter("Pricing.Seed", {}, false, "42")),
52+
parseInteger(engineParameter("Training.BasisFunctionOrder", {}, true, std::string())),
53+
parsePolynomType(engineParameter("Training.BasisFunction", {}, true, std::string())),
54+
parseSobolBrownianGeneratorOrdering(engineParameter("BrownianBridgeOrdering", {}, false, "Steps")),
55+
parseSobolRsgDirectionIntegers(engineParameter("SobolDirectionIntegers", {}, false, "JoeKuoD7")), discountCurve,
56+
simulationDates, externalModelIndices, parseBool(engineParameter("MinObsDate", {}, false, "true")),
5557
parseRegressorModel(engineParameter("RegressorModel", {}, false, "Simple")));
5658
}
5759
} // namespace
@@ -292,8 +294,9 @@ LgmMcBermudanAmericanSwaptionEngineBuilder::engineImpl(const string& id, const s
292294
boost::shared_ptr<IborIndex> index;
293295
std::string ccy = tryParseIborIndex(key, index) ? index->currency().code() : key;
294296
auto discountCurve = market_->discountCurve(ccy, configuration(MarketContext::pricing));
295-
return buildMcEngine([this](const std::string& p) { return this->engineParameter(p); }, lgm, discountCurve,
296-
std::vector<Date>(), std::vector<Size>());
297+
return buildMcEngine([this](const std::string& p, const std::vector<std::string>& q, const bool m,
298+
const std::string& d) { return this->engineParameter(p, q, m, d); },
299+
lgm, discountCurve, std::vector<Date>(), std::vector<Size>());
297300
} // LgmMc engineImpl()
298301

299302
boost::shared_ptr<PricingEngine>
@@ -315,8 +318,9 @@ LgmAmcBermudanAmericanSwaptionEngineBuilder::engineImpl(const string& id, const
315318
DLOG("Build engine (configuration " << configuration(MarketContext::pricing) << ")");
316319
// we assume that the given cam has pricing discount curves attached already
317320
Handle<YieldTermStructure> discountCurve;
318-
return buildMcEngine([this](const std::string& p) { return this->engineParameter(p); }, lgm, discountCurve,
319-
simulationDates_, modelIndex);
321+
return buildMcEngine([this](const std::string& p, const std::vector<std::string>& q, const bool m,
322+
const std::string& d) { return this->engineParameter(p, q, m, d); },
323+
lgm, discountCurve, simulationDates_, modelIndex);
320324
} // LgmCam engineImpl
321325

322326
} // namespace data

0 commit comments

Comments
 (0)