Skip to content

Commit 8602578

Browse files
pcaspersjenkins
authored andcommitted
QPR-12205 turn off model recalibration in multi-threaded engine in xva analytic
1 parent e005a7d commit 8602578

5 files changed

Lines changed: 18 additions & 12 deletions

File tree

OREAnalytics/orea/app/analytics/xvaanalytic.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -354,11 +354,12 @@ void XvaAnalyticImpl::buildClassicCube(const boost::shared_ptr<Portfolio>& portf
354354
}
355355

356356
MultiThreadedValuationEngine engine(
357-
inputs_->nThreads(), inputs_->asof(), grid_, samples_, analytic()->loader(), scenarioGenerator_,
358-
inputs_->simulationPricingEngine(), inputs_->curveConfigs().get(), analytic()->configurations().todaysMarketParams,
359-
inputs_->marketConfig("simulation"), analytic()->configurations().simMarketParams, false, false,
360-
boost::make_shared<ScenarioFilter>(), inputs_->refDataManager(),
361-
*inputs_->iborFallbackConfig(), true, false, cubeFactory, {}, cptyCubeFactory, "xva-simulation");
357+
inputs_->nThreads(), inputs_->asof(), grid_, samples_, analytic()->loader(), scenarioGenerator_,
358+
inputs_->simulationPricingEngine(), inputs_->curveConfigs().get(),
359+
analytic()->configurations().todaysMarketParams, inputs_->marketConfig("simulation"),
360+
analytic()->configurations().simMarketParams, false, false, boost::make_shared<ScenarioFilter>(),
361+
inputs_->refDataManager(), *inputs_->iborFallbackConfig(), true, false, false, cubeFactory, {},
362+
cptyCubeFactory, "xva-simulation");
362363

363364
engine.registerProgressIndicator(progressBar);
364365
engine.registerProgressIndicator(progressLog);

OREAnalytics/orea/engine/historicalpnlgenerator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ void HistoricalPnlGenerator::generateCube(const boost::shared_ptr<ScenarioFilter
117117
MultiThreadedValuationEngine engine(
118118
nThreads_, today_, boost::make_shared<ore::analytics::DateGrid>(), hisScenGen_->numScenarios(), loader_,
119119
hisScenGen_, engineData_, curveConfigs_, todaysMarketParams_, configuration_, simMarketData_, false, false,
120-
filter, referenceData_, iborFallbackConfig_, true, true, {}, {}, {}, context_);
120+
filter, referenceData_, iborFallbackConfig_, true, true, true, {}, {}, {}, context_);
121121
for (auto const& i : this->progressIndicators()) {
122122
i->reset();
123123
engine.registerProgressIndicator(i);

OREAnalytics/orea/engine/multithreadedvaluationengine.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ MultiThreadedValuationEngine::MultiThreadedValuationEngine(
5151
const boost::shared_ptr<ore::analytics::ScenarioFilter>& scenarioFilter,
5252
const boost::shared_ptr<ore::data::ReferenceDataManager>& referenceData,
5353
const ore::data::IborFallbackConfig& iborFallbackConfig, const bool handlePseudoCurrenciesTodaysMarket,
54-
const bool handlePseudoCurrenciesSimMarket,
54+
const bool handlePseudoCurrenciesSimMarket, const bool recalibrateModels,
5555
const std::function<boost::shared_ptr<ore::analytics::NPVCube>(const QuantLib::Date&, const std::set<std::string>&,
5656
const std::vector<QuantLib::Date>&,
5757
const QuantLib::Size)>& cubeFactory,
@@ -67,8 +67,9 @@ MultiThreadedValuationEngine::MultiThreadedValuationEngine(
6767
useSpreadedTermStructures_(useSpreadedTermStructures), cacheSimData_(cacheSimData),
6868
scenarioFilter_(scenarioFilter), referenceData_(referenceData), iborFallbackConfig_(iborFallbackConfig),
6969
handlePseudoCurrenciesTodaysMarket_(handlePseudoCurrenciesTodaysMarket),
70-
handlePseudoCurrenciesSimMarket_(handlePseudoCurrenciesSimMarket), cubeFactory_(cubeFactory),
71-
nettingSetCubeFactory_(nettingSetCubeFactory), cptyCubeFactory_(cptyCubeFactory), context_(context) {
70+
handlePseudoCurrenciesSimMarket_(handlePseudoCurrenciesSimMarket), recalibrateModels_(recalibrateModels),
71+
cubeFactory_(cubeFactory), nettingSetCubeFactory_(nettingSetCubeFactory), cptyCubeFactory_(cptyCubeFactory),
72+
context_(context) {
7273

7374
QL_REQUIRE(nThreads_ != 0, "MultiThreadedValuationEngine: nThreads must be > 0");
7475

@@ -313,8 +314,10 @@ void MultiThreadedValuationEngine::buildCube(
313314

314315
// build valuation engine
315316

316-
auto valEngine = boost::make_shared<ore::analytics::ValuationEngine>(today_, dateGrid_, simMarket,
317-
engineFactory->modelBuilders());
317+
auto valEngine = boost::make_shared<ore::analytics::ValuationEngine>(
318+
today_, dateGrid_, simMarket,
319+
recalibrateModels_ ? engineFactory->modelBuilders()
320+
: std::set<std::pair<std::string, boost::shared_ptr<QuantExt::ModelBuilder>>>());
318321
valEngine->registerProgressIndicator(progressIndicator);
319322

320323
// build mini-cube

OREAnalytics/orea/engine/multithreadedvaluationengine.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class MultiThreadedValuationEngine : public ore::data::ProgressReporter {
5656
const boost::shared_ptr<ore::data::ReferenceDataManager>& referenceData = nullptr,
5757
const ore::data::IborFallbackConfig& iborFallbackConfig = ore::data::IborFallbackConfig::defaultConfig(),
5858
const bool handlePseudoCurrenciesTodaysMarket = true, const bool handlePseudoCurrenciesSimMarket = true,
59+
const bool recalibrateModels = true,
5960
const std::function<boost::shared_ptr<ore::analytics::NPVCube>(
6061
const QuantLib::Date&, const std::set<std::string>&, const std::vector<QuantLib::Date>&,
6162
const QuantLib::Size)>& cubeFactory = {},
@@ -109,6 +110,7 @@ class MultiThreadedValuationEngine : public ore::data::ProgressReporter {
109110
ore::data::IborFallbackConfig iborFallbackConfig_;
110111
bool handlePseudoCurrenciesTodaysMarket_;
111112
bool handlePseudoCurrenciesSimMarket_;
113+
bool recalibrateModels_;
112114
std::function<boost::shared_ptr<ore::analytics::NPVCube>(const QuantLib::Date&, const std::set<std::string>&,
113115
const std::vector<QuantLib::Date>&, const QuantLib::Size)>
114116
cubeFactory_;

OREAnalytics/orea/engine/sensitivityanalysis.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ void SensitivityAnalysis::generateSensitivities(boost::shared_ptr<NPVSensiCube>
171171
nThreads_, asof_, boost::make_shared<ore::analytics::DateGrid>(), scenarioGenerator_->numScenarios(),
172172
loader_, scenarioGenerator_, ed, curveConfigs_, todaysMarketParams_, marketConfiguration_, simMarketData_,
173173
sensitivityData_->useSpreadedTermStructures(), false, boost::make_shared<ore::analytics::ScenarioFilter>(),
174-
referenceData_, iborFallbackConfig_, true, true,
174+
referenceData_, iborFallbackConfig_, true, true, true,
175175
[](const QuantLib::Date& asof, const std::set<std::string>& ids, const std::vector<QuantLib::Date>&,
176176
const QuantLib::Size samples) {
177177
return boost::make_shared<ore::analytics::DoublePrecisionSensiCube>(ids, asof, samples);

0 commit comments

Comments
 (0)