Skip to content

Commit d134688

Browse files
pcaspersjenkins
authored andcommitted
Merge remote-tracking branch 'origin/master' into QPR-11548
1 parent 4ba1495 commit d134688

294 files changed

Lines changed: 1851 additions & 1033 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

OREAnalytics/orea/aggregation/dimcalculator.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
#include <orea/aggregation/dimcalculator.hpp>
2020
#include <ored/utilities/log.hpp>
2121
#include <ored/utilities/vectorutils.hpp>
22+
#include <ored/portfolio/trade.hpp>
23+
2224
#include <ql/errors.hpp>
2325
#include <ql/time/calendars/weekendsonly.hpp>
2426
#include <ql/version.hpp>
25-
2627
#include <ql/math/distributions/normaldistribution.hpp>
2728
#include <ql/math/generallinearleastsquares.hpp>
2829
#include <ql/math/kernelfunctions.hpp>

OREAnalytics/orea/aggregation/exposureallocator.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#include <orea/aggregation/exposureallocator.hpp>
2020
#include <orea/cube/inmemorycube.hpp>
2121

22+
#include <ored/portfolio/trade.hpp>
23+
2224
using namespace std;
2325
using namespace QuantLib;
2426

OREAnalytics/orea/aggregation/exposurecalculator.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#include <orea/aggregation/exposurecalculator.hpp>
2020
#include <orea/cube/inmemorycube.hpp>
2121

22+
#include <ored/portfolio/trade.hpp>
23+
2224
#include <ql/time/date.hpp>
2325
#include <ql/time/calendars/weekendsonly.hpp>
2426

OREAnalytics/orea/aggregation/nettedexposurecalculator.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
#include <orea/aggregation/nettedexposurecalculator.hpp>
2020

21+
#include <ored/portfolio/trade.hpp>
22+
2123
#include <ql/time/date.hpp>
2224
#include <ql/time/calendars/weekendsonly.hpp>
2325

OREAnalytics/orea/aggregation/xvacalculator.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@
1717
*/
1818

1919
#include <orea/aggregation/xvacalculator.hpp>
20+
21+
#include <ored/portfolio/trade.hpp>
2022
#include <ored/utilities/log.hpp>
2123
#include <ored/utilities/vectorutils.hpp>
24+
2225
#include <ql/errors.hpp>
2326
#include <ql/version.hpp>
2427

OREAnalytics/orea/app/analytic.cpp

Lines changed: 25 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ boost::shared_ptr<EngineFactory> Analytic::engineFactory() {
100100
configurations[MarketContext::pricing] = inputs_->marketConfig("pricing");
101101
LOG("MarketContext::pricing = " << inputs_->marketConfig("pricing"));
102102
//configurations[MarketContext::simulation] = inputs_->marketConfig("simulation");
103-
return boost::make_shared<EngineFactory>(edCopy, market_, configurations, extraEngineBuilders, extraLegBuilders,
104-
inputs_->refDataManager(), *inputs_->iborFallbackConfig());
103+
return boost::make_shared<EngineFactory>(edCopy, market_, configurations, inputs_->refDataManager(),
104+
*inputs_->iborFallbackConfig());
105105
}
106106

107107
boost::shared_ptr<ore::data::EngineFactory> PricingAnalytic::engineFactory() {
@@ -117,8 +117,8 @@ boost::shared_ptr<ore::data::EngineFactory> PricingAnalytic::engineFactory() {
117117
//configurations[MarketContext::simulation] = inputs_->marketConfig("simulation");
118118
std::vector<boost::shared_ptr<ore::data::EngineBuilder>> extraBuilders;
119119
std::vector<boost::shared_ptr<ore::data::LegBuilder>> extraLegBuilders;
120-
return boost::make_shared<EngineFactory>(edCopy, market_, configurations, extraBuilders, extraLegBuilders,
121-
inputs_->refDataManager(), *inputs_->iborFallbackConfig());
120+
return boost::make_shared<EngineFactory>(edCopy, market_, configurations, inputs_->refDataManager(),
121+
*inputs_->iborFallbackConfig());
122122
}
123123

124124
void Analytic::buildMarket(const boost::shared_ptr<ore::data::InMemoryLoader>& loader,
@@ -299,11 +299,10 @@ void PricingAnalytic::runAnalytic(const boost::shared_ptr<ore::data::InMemoryLoa
299299
std::string marketConfig = inputs_->marketConfig("pricing");
300300
std::vector<boost::shared_ptr<ore::data::EngineBuilder>> extraEngineBuilders;
301301
std::vector<boost::shared_ptr<ore::data::LegBuilder>> extraLegBuilders;
302-
boost::shared_ptr<StressTest> stressTest = boost::make_shared<StressTest>(
303-
portfolio_, market_, marketConfig, inputs_->pricingEngine(), inputs_->stressSimMarketParams(),
304-
inputs_->stressScenarioData(), *inputs_->curveConfigs().at(0),
305-
*configurations_.todaysMarketParams, nullptr, extraEngineBuilders, extraLegBuilders,
306-
inputs_->refDataManager(), *inputs_->iborFallbackConfig(), inputs_->continueOnError());
302+
boost::shared_ptr<StressTest> stressTest = boost::make_shared<StressTest>(
303+
portfolio_, market_, marketConfig, inputs_->pricingEngine(), inputs_->stressSimMarketParams(),
304+
inputs_->stressScenarioData(), *inputs_->curveConfigs().at(0), *configurations_.todaysMarketParams,
305+
nullptr, inputs_->refDataManager(), *inputs_->iborFallbackConfig(), inputs_->continueOnError());
307306
stressTest->writeReport(report, inputs_->stressThreshold());
308307
reports_[analytic]["stress"] = report;
309308
CONSOLE("OK");
@@ -320,11 +319,10 @@ void PricingAnalytic::runAnalytic(const boost::shared_ptr<ore::data::InMemoryLoa
320319
std::vector<boost::shared_ptr<ore::data::EngineBuilder>> extraEngineBuilders;
321320
std::vector<boost::shared_ptr<ore::data::LegBuilder>> extraLegBuilders;
322321
sensiAnalysis = boost::make_shared<SensitivityAnalysisPlus>(
323-
portfolio_, market_, configuration, inputs_->pricingEngine(),
324-
configurations_.simMarketParams, configurations_.sensiScenarioData, recalibrateModels,
325-
inputs_->curveConfigs().at(0), configurations_.todaysMarketParams, ccyConv, extraEngineBuilders,
326-
extraLegBuilders, inputs_->refDataManager(), *inputs_->iborFallbackConfig(), true, false,
327-
inputs_->dryRun());
322+
portfolio_, market_, configuration, inputs_->pricingEngine(), configurations_.simMarketParams,
323+
configurations_.sensiScenarioData, recalibrateModels, inputs_->curveConfigs().at(0),
324+
configurations_.todaysMarketParams, ccyConv, inputs_->refDataManager(),
325+
*inputs_->iborFallbackConfig(), true, false, inputs_->dryRun());
328326
LOG("Single-threaded sensi analysis created");
329327
}
330328
else {
@@ -338,8 +336,7 @@ void PricingAnalytic::runAnalytic(const boost::shared_ptr<ore::data::InMemoryLoa
338336
inputs_->nThreads(), inputs_->asof(), loader, portfolio_, Market::defaultConfiguration,
339337
inputs_->pricingEngine(), configurations_.simMarketParams, configurations_.sensiScenarioData,
340338
recalibrateModels, inputs_->curveConfigs().at(0), configurations_.todaysMarketParams, ccyConv,
341-
extraTradeBuilders, extraEngineBuilders, extraLegBuilders, inputs_->refDataManager(),
342-
*inputs_->iborFallbackConfig(), true, false, inputs_->dryRun());
339+
inputs_->refDataManager(), *inputs_->iborFallbackConfig(), true, false, inputs_->dryRun());
343340
LOG("Multi-threaded sensi analysis created");
344341
}
345342
// FIXME: Why are these disabled?
@@ -512,13 +509,11 @@ boost::shared_ptr<EngineFactory> XvaAnalytic::engineFactory() {
512509
// link to the sim market here
513510
QL_REQUIRE(simMarket_, "Simulaton market not set");
514511
engineFactory_ = boost::make_shared<EngineFactory>(edCopy, simMarket_, configurations,
515-
extraEngineBuilders, extraLegBuilders, inputs_->refDataManager(),
516-
*inputs_->iborFallbackConfig());
512+
inputs_->refDataManager(), *inputs_->iborFallbackConfig());
517513
} else {
518514
// we just link to today's market if simulation is not required
519-
engineFactory_ = boost::make_shared<EngineFactory>(edCopy, market_, configurations,
520-
extraEngineBuilders, extraLegBuilders, inputs_->refDataManager(),
521-
*inputs_->iborFallbackConfig());
515+
engineFactory_ = boost::make_shared<EngineFactory>(edCopy, market_, configurations, inputs_->refDataManager(),
516+
*inputs_->iborFallbackConfig());
522517
}
523518
return engineFactory_;
524519
}
@@ -779,7 +774,7 @@ void XvaAnalytic::buildClassicCube(const boost::shared_ptr<Portfolio>& portfolio
779774
inputs_->nThreads(), inputs_->asof(), grid_, samples_, loader_, scenarioGenerator_,
780775
inputs_->simulationPricingEngine(), inputs_->curveConfigs()[0], configurations_.todaysMarketParams,
781776
inputs_->marketConfig("simulation"), configurations_.simMarketParams, false, false,
782-
boost::make_shared<ore::analytics::ScenarioFilter>(), {}, {}, {}, inputs_->refDataManager(),
777+
boost::make_shared<ore::analytics::ScenarioFilter>(), inputs_->refDataManager(),
783778
*inputs_->iborFallbackConfig(), true, false, cubeFactory, {}, cptyCubeFactory, "xva-simulation");
784779

785780
if (ConsoleLog::instance().enabled())
@@ -804,22 +799,8 @@ void XvaAnalytic::buildClassicCube(const boost::shared_ptr<Portfolio>& portfolio
804799
Settings::instance().evaluationDate() = inputs_->asof();
805800
}
806801

807-
808-
std::vector<boost::shared_ptr<EngineBuilder>>
809-
getAmcEngineBuilders(const boost::shared_ptr<QuantExt::CrossAssetModel>& cam, const std::vector<Date>& grid) {
810-
std::vector<boost::shared_ptr<EngineBuilder>> eb;
811-
eb.push_back(boost::make_shared<data::CamAmcCurrencySwapEngineBuilder>(cam, grid));
812-
eb.push_back(boost::make_shared<data::CamAmcFxOptionEngineBuilder>(cam, grid));
813-
eb.push_back(boost::make_shared<data::CamAmcMultiLegOptionEngineBuilder>(cam, grid));
814-
eb.push_back(boost::make_shared<data::CamAmcSwapEngineBuilder>(cam, grid));
815-
eb.push_back(boost::make_shared<data::LgmAmcBermudanSwaptionEngineBuilder>(cam, grid));
816-
// FIXME: Uncomment for release 10
817-
// eb.push_back(boost::make_shared<data::ScriptedTradeEngineBuilder>(ScriptLibraryStorage::scriptLibrary, cam, grid));
818-
return eb;
819-
}
820-
821-
822-
boost::shared_ptr<EngineFactory> XvaAnalytic::amcEngineFactory() {
802+
boost::shared_ptr<EngineFactory> XvaAnalytic::amcEngineFactory(const boost::shared_ptr<QuantExt::CrossAssetModel>& cam,
803+
const std::vector<Date>& grid) {
823804
LOG("XvaAnalytic::engineFactory() called");
824805
boost::shared_ptr<EngineData> edCopy = boost::make_shared<EngineData>(*inputs_->amcPricingEngine());
825806
edCopy->globalParameters()["GenerateAdditionalResults"] = inputs_->outputAdditionalResults() ? "true" : "false";
@@ -830,14 +811,12 @@ boost::shared_ptr<EngineFactory> XvaAnalytic::amcEngineFactory() {
830811
configurations[MarketContext::pricing] = inputs_->marketConfig("pricing");
831812
std::vector<boost::shared_ptr<EngineBuilder>> extraEngineBuilders;
832813
std::vector<boost::shared_ptr<LegBuilder>> extraLegBuilders;
833-
auto factory = boost::make_shared<EngineFactory>(edCopy, market_, configurations,
834-
extraEngineBuilders, extraLegBuilders,
835-
inputs_->refDataManager(),
836-
*inputs_->iborFallbackConfig());
814+
auto factory = boost::make_shared<EngineFactory>(
815+
edCopy, market_, configurations, inputs_->refDataManager(), *inputs_->iborFallbackConfig(),
816+
EngineBuilderFactory::instance().generateAmcEngineBuilders(cam, grid), true);
837817
return factory;
838818
}
839819

840-
841820
void XvaAnalytic::buildAmcPortfolio() {
842821
LOG("XVA: buildAmcPortfolio");
843822
CONSOLEW("XVA: Build AMC portfolio");
@@ -846,14 +825,9 @@ void XvaAnalytic::buildAmcPortfolio() {
846825
std::vector<Date> simDates =
847826
configurations_.scenarioGeneratorData->withCloseOutLag() && !configurations_.scenarioGeneratorData->withMporStickyDate() ?
848827
configurations_.scenarioGeneratorData->getGrid()->dates() : configurations_.scenarioGeneratorData->getGrid()->valuationDates();
849-
850-
LOG("buildAmcPortfolio: Get engine builders");
851-
auto eb = getAmcEngineBuilders(model_, simDates);
852828

853829
LOG("buildAmcPortfolio: Register additional engine builders");
854-
auto factory = amcEngineFactory();
855-
for(auto const& b : eb)
856-
factory->registerBuilder(b);
830+
auto factory = amcEngineFactory(model_, simDates);
857831

858832
LOG("buildAmcPortfolio: Load Portfolio");
859833
boost::shared_ptr<Portfolio> portfolio = inputs_->portfolio();
@@ -928,8 +902,8 @@ void XvaAnalytic::amcRun(bool doClassicRun) {
928902
inputs_->amcPricingEngine(), inputs_->curveConfigs()[0], configurations_.todaysMarketParams,
929903
inputs_->marketConfig("lgmcalibration"), inputs_->marketConfig("fxcalibration"),
930904
inputs_->marketConfig("eqcalibration"), inputs_->marketConfig("infcalibration"),
931-
inputs_->marketConfig("crcalibration"), inputs_->marketConfig("simulation"), getAmcEngineBuilders, {}, {},
932-
inputs_->refDataManager(), *inputs_->iborFallbackConfig(), true, cubeFactory);
905+
inputs_->marketConfig("crcalibration"), inputs_->marketConfig("simulation"), inputs_->refDataManager(),
906+
*inputs_->iborFallbackConfig(), true, cubeFactory);
933907
if (ConsoleLog::instance().enabled())
934908
amcEngine.registerProgressIndicator(progressBar);
935909
amcEngine.registerProgressIndicator(progressLog);

OREAnalytics/orea/app/analytic.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,8 @@ class XvaAnalytic : public virtual Analytic {
225225
void buildClassicCube(const boost::shared_ptr<Portfolio>& portfolio);
226226
boost::shared_ptr<Portfolio> classicRun(const boost::shared_ptr<Portfolio>& portfolio);
227227

228-
boost::shared_ptr<EngineFactory> amcEngineFactory();
228+
boost::shared_ptr<EngineFactory> amcEngineFactory(const boost::shared_ptr<QuantExt::CrossAssetModel>& cam,
229+
const std::vector<Date>& grid);
229230
void buildAmcPortfolio();
230231
void amcRun(bool doClassicRun);
231232

OREAnalytics/orea/app/inputparameters.cpp

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -120,27 +120,15 @@ void InputParameters::setTodaysMarketParamsFromFile(const std::string& fileName)
120120

121121
void InputParameters::setPortfolio(const std::string& xml) {
122122
portfolio_ = boost::make_shared<Portfolio>(buildFailedTrades_);
123-
boost::shared_ptr<TradeFactory> tradeFactory = nullptr;
124-
if (!refDataManager_) {
125-
ALOG("reference data manager not set when loading portfolio");
126-
tradeFactory = boost::make_shared<TradeFactory>();
127-
}
128-
tradeFactory = boost::make_shared<TradeFactory>(refDataManager_);
129-
portfolio_->loadFromXMLString(xml, tradeFactory);
123+
portfolio_->fromXMLString(xml);
130124
}
131125

132126
void InputParameters::setPortfolioFromFile(const std::string& fileNameString, const std::string& inputPath) {
133127
vector<string> files = getFileNames(fileNameString, inputPath);
134128
portfolio_ = boost::make_shared<Portfolio>(buildFailedTrades_);
135-
boost::shared_ptr<TradeFactory> tradeFactory = nullptr;
136-
if (!refDataManager_) {
137-
ALOG("reference data manager not set when loading portfolio");
138-
tradeFactory = boost::make_shared<TradeFactory>();
139-
}
140-
tradeFactory = boost::make_shared<TradeFactory>(refDataManager_);
141129
for (auto file : files) {
142130
LOG("Loading portfolio from file: " << file);
143-
portfolio_->load(file, tradeFactory);
131+
portfolio_->fromFile(file);
144132
}
145133
}
146134

OREAnalytics/orea/app/oreapp.cpp

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.
1717
*/
1818

19-
#include <boost/algorithm/string.hpp>
20-
#include <boost/timer/timer.hpp>
2119

2220
#ifdef BOOST_MSVC
2321
// disable warning C4503: '__LINE__Var': decorated name length exceeded, name was truncated
@@ -27,18 +25,21 @@
2725
#pragma warning(disable : 4503)
2826
#endif
2927

30-
#include <boost/filesystem.hpp>
31-
28+
#include <orea/app/marketdatainmemoryloader.hpp>
29+
#include <orea/app/oreapp.hpp>
3230
#include <orea/orea.hpp>
3331
#include <ored/ored.hpp>
32+
#include <ored/report/inmemoryreport.hpp>
3433
#include <ored/utilities/calendaradjustmentconfig.hpp>
3534
#include <ored/utilities/currencyconfig.hpp>
35+
3636
#include <ql/cashflows/floatingratecoupon.hpp>
3737
#include <ql/time/calendars/all.hpp>
3838
#include <ql/time/daycounters/all.hpp>
39-
#include <ored/report/inmemoryreport.hpp>
4039

41-
#include <orea/app/oreapp.hpp>
40+
#include <boost/algorithm/string.hpp>
41+
#include <boost/filesystem.hpp>
42+
#include <boost/timer/timer.hpp>
4243

4344
#include <iostream>
4445

@@ -1355,10 +1356,10 @@ boost::shared_ptr<XvaRunner> OREApp::getXvaRunner() {
13551356
}
13561357

13571358
boost::shared_ptr<XvaRunner> xva = boost::make_shared<XvaRunner>(
1358-
asof_, baseCcy, portfolio_, nettingSetManager, engineData, curveConfigs_, marketParameters,
1359-
simMarketParameters, scenarioGeneratorData, modelData, getExtraLegBuilders(), getExtraEngineBuilders(),
1360-
referenceData, iborFallbackConfig_, dimQuantile, dimHorizonCalendarDays, analytics, calculationType, dvaName,
1361-
fvaBorrowingCurve, fvaLendingCurve, fullInitialCollateralisation, storeFlows);
1359+
asof_, baseCcy, portfolio_, nettingSetManager, engineData, curveConfigs_, marketParameters, simMarketParameters,
1360+
scenarioGeneratorData, modelData, referenceData, iborFallbackConfig_, dimQuantile, dimHorizonCalendarDays,
1361+
analytics, calculationType, dvaName, fvaBorrowingCurve, fvaLendingCurve, fullInitialCollateralisation,
1362+
storeFlows);
13621363

13631364
return xva;
13641365
}
@@ -1508,21 +1509,14 @@ boost::shared_ptr<EngineFactory> OREApp::buildEngineFactory(const boost::shared_
15081509
configurations[MarketContext::pricing] = params_->get("markets", "pricing");
15091510
LOG("MarketContext::pricing = " << params_->get("markets", "pricing"));
15101511
boost::shared_ptr<EngineFactory> factory =
1511-
boost::make_shared<EngineFactory>(engineData, market, configurations, getExtraEngineBuilders(),
1512-
getExtraLegBuilders(), referenceData_, iborFallbackConfig_);
1512+
boost::make_shared<EngineFactory>(engineData, market, configurations, referenceData_, iborFallbackConfig_);
15131513

15141514
LOG("Engine factory built");
15151515
MEM_LOG;
15161516

15171517
return factory;
15181518
}
15191519

1520-
boost::shared_ptr<TradeFactory> OREApp::buildTradeFactory() const {
1521-
boost::shared_ptr<TradeFactory> tf = boost::make_shared<TradeFactory>(referenceData_);
1522-
tf->addExtraBuilders(getExtraTradeBuilders(tf));
1523-
return tf;
1524-
}
1525-
15261520
boost::shared_ptr<Portfolio> OREApp::buildPortfolio(const boost::shared_ptr<EngineFactory>& factory, bool buildFailedTrades) {
15271521
MEM_LOG;
15281522
LOG("Building portfolio");
@@ -1540,7 +1534,7 @@ boost::shared_ptr<Portfolio> OREApp::loadPortfolio(bool buildFailedTrades) {
15401534
return portfolio;
15411535
vector<string> portfolioFiles = getFileNames(portfoliosString, inputPath_);
15421536
for (auto portfolioFile : portfolioFiles) {
1543-
portfolio->load(portfolioFile, buildTradeFactory());
1537+
portfolio->fromFile(portfolioFile);
15441538
}
15451539
return portfolio;
15461540
}
@@ -1736,9 +1730,7 @@ boost::shared_ptr<ReportWriter> OREApp::getReportWriter() const {
17361730
}
17371731

17381732
boost::shared_ptr<SensitivityRunner> OREApp::getSensitivityRunner() {
1739-
return boost::make_shared<SensitivityRunner>(params_, buildTradeFactory(), getExtraEngineBuilders(),
1740-
getExtraLegBuilders(), referenceData_, iborFallbackConfig_,
1741-
continueOnError_);
1733+
return boost::make_shared<SensitivityRunner>(params_, referenceData_, iborFallbackConfig_, continueOnError_);
17421734
}
17431735

17441736
void OREApp::runStressTest() {
@@ -1772,8 +1764,7 @@ void OREApp::runStressTest() {
17721764
string marketConfiguration = params_->get("markets", "pricing");
17731765
boost::shared_ptr<StressTest> stressTest = boost::make_shared<StressTest>(
17741766
portfolio, market_, marketConfiguration, engineData, simMarketData, stressData, *curveConfigs_,
1775-
*marketParameters_, nullptr, getExtraEngineBuilders(), getExtraLegBuilders(), referenceData_,
1776-
iborFallbackConfig_, continueOnError_);
1767+
*marketParameters_, nullptr, referenceData_, iborFallbackConfig_, continueOnError_);
17771768

17781769
string outputFile = outputPath_ + "/" + params_->get("stress", "scenarioOutputFile");
17791770
Real threshold = parseReal(params_->get("stress", "outputThreshold"));
@@ -2458,8 +2449,7 @@ boost::shared_ptr<EngineFactory> OREApp::buildEngineFactoryFromXMLString(const b
24582449
configurations[MarketContext::fxCalibration] = params_->get("markets", "fxcalibration");
24592450
configurations[MarketContext::pricing] = params_->get("markets", "pricing");
24602451
boost::shared_ptr<EngineFactory> factory =
2461-
boost::make_shared<EngineFactory>(engineData, market, configurations, getExtraEngineBuilders(),
2462-
getExtraLegBuilders(), referenceData_, iborFallbackConfig_);
2452+
boost::make_shared<EngineFactory>(engineData, market, configurations, referenceData_, iborFallbackConfig_);
24632453
return factory;
24642454
}
24652455
}

0 commit comments

Comments
 (0)