Skip to content

Commit c7bf462

Browse files
pcaspersGitlab CI
authored andcommitted
Merge branch 'feature/QPR-13657_refactoring' into 'master'
QPR-13657 refactoring mcmultilegbaseengine Closes QPR-13657 See merge request qs/oreplus!3135
1 parent 7246661 commit c7bf462

26 files changed

Lines changed: 1905 additions & 1723 deletions

OREAnalytics/orea/app/cleanupsingletons.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <ored/utilities/calendaradjustmentconfig.hpp>
2727
#include <ored/utilities/indexnametranslator.hpp>
2828
#include <ored/utilities/log.hpp>
29+
#include <qle/utilities/mcstats.hpp>
2930

3031
#include <qle/math/computeenvironment.hpp>
3132
#include <qle/math/randomvariable.hpp>

OREData/ored/utilities/parsers.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1454,27 +1454,27 @@ QuantLib::Pillar::Choice parsePillarChoice(const std::string& s) {
14541454
}
14551455
}
14561456

1457-
QuantExt::McMultiLegBaseEngine::RegressorModel parseRegressorModel(const std::string& s) {
1457+
QuantExt::McRegressionModel::RegressorModel parseRegressorModel(const std::string& s) {
14581458
if (s == "Simple")
1459-
return McMultiLegBaseEngine::RegressorModel::Simple;
1459+
return McRegressionModel::RegressorModel::Simple;
14601460
else if (s == "Lagged")
1461-
return McMultiLegBaseEngine::RegressorModel::Lagged;
1461+
return McRegressionModel::RegressorModel::Lagged;
14621462
else if (s == "LaggedIR")
1463-
return McMultiLegBaseEngine::RegressorModel::LaggedIR;
1463+
return McRegressionModel::RegressorModel::LaggedIR;
14641464
else if (s == "LaggedFX")
1465-
return McMultiLegBaseEngine::RegressorModel::LaggedFX;
1465+
return McRegressionModel::RegressorModel::LaggedFX;
14661466
else if (s == "LaggedEQ")
1467-
return McMultiLegBaseEngine::RegressorModel::LaggedEQ;
1467+
return McRegressionModel::RegressorModel::LaggedEQ;
14681468
else {
14691469
QL_FAIL("RegressorModel '" << s << "' not recognized, expected Simple, Lagged, LaggedIR, LaggedFX, LaggedEQ");
14701470
}
14711471
}
14721472

1473-
QuantExt::McMultiLegBaseEngine::VarGroupMode parseVarGroupMode(const std::string& s) {
1473+
QuantExt::McRegressionModel::VarGroupMode parseVarGroupMode(const std::string& s) {
14741474
if (s == "Global")
1475-
return McMultiLegBaseEngine::VarGroupMode::Global;
1475+
return McRegressionModel::VarGroupMode::Global;
14761476
else if (s == "Trivial")
1477-
return McMultiLegBaseEngine::VarGroupMode::Trivial;
1477+
return McRegressionModel::VarGroupMode::Trivial;
14781478
else {
14791479
QL_FAIL("VarGroupMode '" << s << "' not recognized, expected Global, Trivial");
14801480
}

OREData/ored/utilities/parsers.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
#include <qle/instruments/cdsoption.hpp>
3636
#include <qle/methods/multipathgeneratorbase.hpp>
3737
#include <qle/models/crossassetmodel.hpp>
38-
#include <qle/pricingengines/mcmultilegbaseengine.hpp>
38+
#include <qle/pricingengines/mcregressionmodel.hpp>
3939
#include <qle/termstructures/sabrparametricvolatility.hpp>
4040
#include <qle/termstructures/scenario.hpp>
4141

@@ -595,13 +595,13 @@ QuantLib::Pillar::Choice parsePillarChoice(const std::string& s);
595595
/*!
596596
\ingroup utilities
597597
*/
598-
QuantExt::McMultiLegBaseEngine::RegressorModel parseRegressorModel(const std::string& s);
598+
QuantExt::McRegressionModel::RegressorModel parseRegressorModel(const std::string& s);
599599

600600
//! Convert text to QuantExt::McMultiLegBaseEngine::VarGroupMode
601601
/*!
602602
\ingroup utilities
603603
*/
604-
QuantExt::McMultiLegBaseEngine::VarGroupMode parseVarGroupMode(const std::string& s);
604+
QuantExt::McRegressionModel::VarGroupMode parseVarGroupMode(const std::string& s);
605605

606606
enum MporCashFlowMode { Unspecified, NonePay, BothPay, WePay, TheyPay };
607607

QuantExt/qle/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,14 @@ pricingengines/mccamcurrencyswapengine.cpp
315315
pricingengines/mccamequityforwardengine.cpp
316316
pricingengines/mccamfxforwardengine.cpp
317317
pricingengines/mccamfxoptionengine.cpp
318+
pricingengines/mccashflowinfo.cpp
318319
pricingengines/mclgmbondengine.cpp
319320
pricingengines/mclgmfwdbondengine.cpp
320321
pricingengines/mclgmswapengine.cpp
321322
pricingengines/mclgmswaptionengine.cpp
322323
pricingengines/mcmultilegbaseengine.cpp
323324
pricingengines/mcmultilegoptionengine.cpp
325+
pricingengines/mcregressionmodel.cpp
324326
pricingengines/midpointcdoengine.cpp
325327
pricingengines/midpointcdsenginemultistate.cpp
326328
pricingengines/midpointindexcdsengine.cpp
@@ -887,12 +889,14 @@ pricingengines/mccamcurrencyswapengine.hpp
887889
pricingengines/mccamequityforwardengine.hpp
888890
pricingengines/mccamfxforwardengine.hpp
889891
pricingengines/mccamfxoptionengine.hpp
892+
pricingengines/mccashflowinfo.hpp
890893
pricingengines/mclgmbondengine.hpp
891894
pricingengines/mclgmfwdbondengine.hpp
892895
pricingengines/mclgmswapengine.hpp
893896
pricingengines/mclgmswaptionengine.hpp
894897
pricingengines/mcmultilegbaseengine.hpp
895898
pricingengines/mcmultilegoptionengine.hpp
899+
pricingengines/mcregressionmodel.hpp
896900
pricingengines/midpointcdoengine.hpp
897901
pricingengines/midpointcdsenginemultistate.hpp
898902
pricingengines/midpointindexcdsengine.hpp
@@ -1076,6 +1080,7 @@ utilities/creditcurves.hpp
10761080
utilities/creditindexconstituentcurvecalibration.hpp
10771081
utilities/inflation.hpp
10781082
utilities/interpolation.hpp
1083+
utilities/mcstats.hpp
10791084
utilities/ratehelpers.hpp
10801085
utilities/savedobservablesettings.hpp
10811086
utilities/scenarioinformation.hpp

QuantExt/qle/pricingengines/mccamcurrencyswapengine.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ McCamCurrencySwapEngine::McCamCurrencySwapEngine(
2929
const LsmBasisSystem::PolynomialType polynomType, const SobolBrownianGenerator::Ordering ordering,
3030
const SobolRsg::DirectionIntegers directionIntegers, const std::vector<Handle<YieldTermStructure>>& discountCurves,
3131
const std::vector<Date>& simulationDates, const std::vector<Date>& stickyCloseOutDates,
32-
const std::vector<Size>& externalModelIndices, const bool minimalObsDate, const RegressorModel regressorModel,
32+
const std::vector<Size>& externalModelIndices, const bool minimalObsDate, const McRegressionModel::RegressorModel regressorModel,
3333
const Real regressionVarianceCutoff, const bool recalibrateOnStickyCloseOutDates,
3434
const bool reevaluateExerciseInStickyRun, const Size cfOnCpnMaxSimTimes, const Period& cfOnCpnAddSimTimesCutoff,
3535
const Size regressionMaxSimTimesIr, const Size regressionMaxSimTimesFx, const Size regressionMaxSimTimesEq,
36-
const VarGroupMode regressionVarGroupMode)
36+
const McRegressionModel::VarGroupMode regressionVarGroupMode)
3737
: McMultiLegBaseEngine(model, calibrationPathGenerator, pricingPathGenerator, calibrationSamples, pricingSamples,
3838
calibrationSeed, pricingSeed, polynomOrder, polynomType, ordering, directionIntegers,
3939
discountCurves, simulationDates, stickyCloseOutDates, externalModelIndices, minimalObsDate,

QuantExt/qle/pricingengines/mccamcurrencyswapengine.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ class McCamCurrencySwapEngine : public McMultiLegBaseEngine, public CurrencySwap
4343
const std::vector<Date>& simulationDates = std::vector<Date>(),
4444
const std::vector<Date>& stickyCloseOutDates = std::vector<Date>(),
4545
const std::vector<Size>& externalModelIndices = std::vector<Size>(), const bool minimalObsDate = true,
46-
const RegressorModel regressorModel = RegressorModel::Simple,
46+
const McRegressionModel::RegressorModel regressorModel = McRegressionModel::RegressorModel::Simple,
4747
const Real regressionVarianceCutoff = Null<Real>(), const bool recalibrateOnStickyCloseOutDates = false,
4848
const bool reevaluateExerciseInStickyRun = false,
4949
const Size cfOnCpnMaxSimTimes = 1,
5050
const Period& cfOnCpnAddSimTimesCutoff = Period(),
5151
const Size regressionMaxSimTimesIr = 0,
5252
const Size regressionMaxSimTimesFx = 0,
5353
const Size regressionMaxSimTimesEq = 0,
54-
const VarGroupMode regressionVarGroupMode = VarGroupMode::Global);
54+
const McRegressionModel::VarGroupMode regressionVarGroupMode = McRegressionModel::VarGroupMode::Global);
5555

5656
void calculate() const override;
5757
const Handle<CrossAssetModel>& model() const { return model_; }

QuantExt/qle/pricingengines/mccamequityforwardengine.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ McCamEquityForwardEngine::McCamEquityForwardEngine(
3131
const LsmBasisSystem::PolynomialType polynomType, const SobolBrownianGenerator::Ordering ordering,
3232
const SobolRsg::DirectionIntegers directionIntegers, const std::vector<Date>& simulationDates,
3333
const std::vector<Date>& stickyCloseOutDates, const std::vector<Size>& externalModelIndices,
34-
const bool minimalObsDate, const RegressorModel regressorModel, const Real regressionVarianceCutoff,
34+
const bool minimalObsDate, const McRegressionModel::RegressorModel regressorModel, const Real regressionVarianceCutoff,
3535
const bool recalibrateOnStickyCloseOutDates, const bool reevaluateExerciseInStickyRun,
3636
const Size cfOnCpnMaxSimTimes, const Period& cfOnCpnAddSimTimesCutoff,
3737
const Size regressionMaxSimTimesIr, const Size regressionMaxSimTimesFx, const Size regressionMaxSimTimesEq,
38-
const VarGroupMode regressionVarGroupMode)
38+
const McRegressionModel::VarGroupMode regressionVarGroupMode)
3939
: McMultiLegBaseEngine(model, calibrationPathGenerator, pricingPathGenerator, calibrationSamples, pricingSamples,
4040
calibrationSeed, pricingSeed, polynomOrder, polynomType, ordering, directionIntegers, {},
4141
simulationDates, stickyCloseOutDates, externalModelIndices, minimalObsDate, regressorModel,

QuantExt/qle/pricingengines/mccamequityforwardengine.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class McCamEquityForwardEngine : public McMultiLegBaseEngine, public EquityForwa
4646
const std::vector<Date>& stickyCloseOutDates = std::vector<Date>(),
4747
const std::vector<Size>& externalModelIndices = std::vector<Size>(),
4848
const bool minimalObsDate = true,
49-
const RegressorModel regressorModel = RegressorModel::Simple,
49+
const McRegressionModel::RegressorModel regressorModel = McRegressionModel::RegressorModel::Simple,
5050
const Real regressionVarianceCutoff = Null<Real>(),
5151
const bool recalibrateOnStickyCloseOutDates = false,
5252
const bool reevaluateExerciseInStickyRun = false,
@@ -55,7 +55,7 @@ class McCamEquityForwardEngine : public McMultiLegBaseEngine, public EquityForwa
5555
const Size regressionMaxSimTimesIr = 0,
5656
const Size regressionMaxSimTimesFx = 0,
5757
const Size regressionMaxSimTimesEq = 0,
58-
const VarGroupMode regressionVarGroupMode = VarGroupMode::Global);
58+
const McRegressionModel::VarGroupMode regressionVarGroupMode = McRegressionModel::VarGroupMode::Global);
5959

6060
const Handle<CrossAssetModel>& model() const { return model_; }
6161

QuantExt/qle/pricingengines/mccamfxforwardengine.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ McCamFxForwardEngine::McCamFxForwardEngine(
3232
const SobolBrownianGenerator::Ordering ordering, const SobolRsg::DirectionIntegers directionIntegers,
3333
const std::vector<Handle<YieldTermStructure>>& discountCurves, const std::vector<Date>& simulationDates,
3434
const std::vector<Date>& stickyCloseOutDates, const std::vector<Size>& externalModelIndices,
35-
const bool minimalObsDate, const RegressorModel regressorModel, const Real regressionVarianceCutoff,
35+
const bool minimalObsDate, const McRegressionModel::RegressorModel regressorModel, const Real regressionVarianceCutoff,
3636
const bool recalibrateOnStickyCloseOutDates, const bool reevaluateExerciseInStickyRun,
3737
const Size cfOnCpnMaxSimTimes, const Period& cfOnCpnAddSimTimesCutoff, const Size regressionMaxSimTimesIr,
3838
const Size regressionMaxSimTimesFx, const Size regressionMaxSimTimesEq,
39-
const VarGroupMode regressionVarGroupMode)
39+
const McRegressionModel::VarGroupMode regressionVarGroupMode)
4040
: McMultiLegBaseEngine(model, calibrationPathGenerator, pricingPathGenerator, calibrationSamples, pricingSamples,
4141
calibrationSeed, pricingSeed, polynomOrder, polynomType, ordering, directionIntegers,
4242
discountCurves, simulationDates, stickyCloseOutDates, externalModelIndices, minimalObsDate,

QuantExt/qle/pricingengines/mccamfxforwardengine.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ class McCamFxForwardEngine : public McMultiLegBaseEngine, public FxForward::engi
4343
const std::vector<Date>& simulationDates = std::vector<Date>(),
4444
const std::vector<Date>& stickyCloseOutDates = std::vector<Date>(),
4545
const std::vector<Size>& externalModelIndices = std::vector<Size>(), const bool minimalObsDate = true,
46-
const RegressorModel regressorModel = RegressorModel::Simple,
46+
const McRegressionModel::RegressorModel regressorModel = McRegressionModel::RegressorModel::Simple,
4747
const Real regressionVarianceCutoff = Null<Real>(), const bool recalibrateOnStickyCloseOutDates = false,
4848
const bool reevaluateExerciseInStickyRun = false, const Size cfOnCpnMaxSimTimes = 1,
4949
const Period& cfOnCpnAddSimTimesCutoff = Period(), const Size regressionMaxSimTimesIr = 0,
5050
const Size regressionMaxSimTimesFx = 0, const Size regressionMaxSimTimesEq = 0,
51-
const VarGroupMode regressionVarGroupMode = VarGroupMode::Global);
51+
const McRegressionModel::VarGroupMode regressionVarGroupMode = McRegressionModel::VarGroupMode::Global);
5252

5353
void calculate() const override;
5454
const Handle<CrossAssetModel>& model() const { return model_; }

0 commit comments

Comments
 (0)