Skip to content

Commit 21b5e32

Browse files
pcaspersjenkins
authored andcommitted
Merge branch 'master' of gitlab.acadiasoft.net:qs/oreplus into QPR-12376
1 parent a122ad8 commit 21b5e32

37 files changed

Lines changed: 754 additions & 261 deletions

OREAnalytics/orea/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ scenario/scenariogeneratortransform.cpp
9595
scenario/scenarioshiftcalculator.cpp
9696
scenario/scenariosimmarket.cpp
9797
scenario/scenariosimmarketparameters.cpp
98+
scenario/scenarioutilities.cpp
9899
scenario/scenariowriter.cpp
99100
scenario/sensitivityscenariodata.cpp
100101
scenario/sensitivityscenariogenerator.cpp
@@ -255,6 +256,7 @@ scenario/scenariogeneratortransform.hpp
255256
scenario/scenarioshiftcalculator.hpp
256257
scenario/scenariosimmarket.hpp
257258
scenario/scenariosimmarketparameters.hpp
259+
scenario/scenarioutilities.hpp
258260
scenario/scenariowriter.hpp
259261
scenario/sensitivityscenariodata.hpp
260262
scenario/sensitivityscenariogenerator.hpp

OREAnalytics/orea/app/analytics/scenariostatisticsanalytic.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ void ScenarioStatisticsAnalyticImpl::buildScenarioGenerator(const bool continueO
6666
if (!model_)
6767
buildCrossAssetModel(continueOnCalibrationError);
6868
ScenarioGeneratorBuilder sgb(analytic()->configurations().scenarioGeneratorData);
69-
QuantLib::ext::shared_ptr<ScenarioFactory> sf = QuantLib::ext::make_shared<SimpleScenarioFactory>();
69+
QuantLib::ext::shared_ptr<ScenarioFactory> sf = QuantLib::ext::make_shared<SimpleScenarioFactory>(true);
7070
string config = inputs_->marketConfig("simulation");
7171
scenarioGenerator_ = sgb.build(model_, sf, analytic()->configurations().simMarketParams, inputs_->asof(), analytic()->market(), config);
7272
QL_REQUIRE(scenarioGenerator_, "failed to build the scenario generator");

OREAnalytics/orea/app/analytics/xvaanalytic.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ void XvaAnalyticImpl::buildScenarioGenerator(const bool continueOnCalibrationErr
136136
if (!model_)
137137
buildCrossAssetModel(continueOnCalibrationError);
138138
ScenarioGeneratorBuilder sgb(analytic()->configurations().scenarioGeneratorData);
139-
QuantLib::ext::shared_ptr<ScenarioFactory> sf = QuantLib::ext::make_shared<SimpleScenarioFactory>();
139+
QuantLib::ext::shared_ptr<ScenarioFactory> sf = QuantLib::ext::make_shared<SimpleScenarioFactory>(true);
140140
string config = inputs_->marketConfig("simulation");
141141
scenarioGenerator_ = sgb.build(model_, sf, analytic()->configurations().simMarketParams, inputs_->asof(), analytic()->market(), config);
142142
QL_REQUIRE(scenarioGenerator_, "failed to build the scenario generator");

OREAnalytics/orea/app/inputparameters.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,8 @@ void InputParameters::setHistoricalScenarioReader(const std::string& fileName) {
387387
QL_REQUIRE(exists(baseScenarioPath), "The provided base scenario file, " << baseScenarioPath << ", does not exist");
388388
QL_REQUIRE(is_regular_file(baseScenarioPath),
389389
"The provided base scenario file, " << baseScenarioPath << ", is not a file");
390-
historicalScenarioReader_ =
391-
QuantLib::ext::make_shared<HistoricalScenarioFileReader>(fileName, QuantLib::ext::make_shared<SimpleScenarioFactory>());
390+
historicalScenarioReader_ = QuantLib::ext::make_shared<HistoricalScenarioFileReader>(
391+
fileName, QuantLib::ext::make_shared<SimpleScenarioFactory>(false));
392392
}
393393

394394
void InputParameters::setAmcTradeTypes(const std::string& s) {

OREAnalytics/orea/app/xvarunner.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ void XvaRunner::buildSimMarket(const QuantLib::ext::shared_ptr<ore::data::Market
133133
projectedSsmData = simMarketData_;
134134
}
135135

136-
QuantLib::ext::shared_ptr<ScenarioFactory> sf = QuantLib::ext::make_shared<SimpleScenarioFactory>();
136+
QuantLib::ext::shared_ptr<ScenarioFactory> sf = QuantLib::ext::make_shared<SimpleScenarioFactory>(true);
137137
QuantLib::ext::shared_ptr<ScenarioGenerator> sg =
138138
getProjectedScenarioGenerator(currencyFilter, market, projectedSsmData, sf, continueOnErr);
139139
simMarket_ = QuantLib::ext::make_shared<ScenarioSimMarket>(market, projectedSsmData, Market::defaultConfiguration,

OREAnalytics/orea/orea.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
#include <orea/scenario/scenarioshiftcalculator.hpp>
115115
#include <orea/scenario/scenariosimmarket.hpp>
116116
#include <orea/scenario/scenariosimmarketparameters.hpp>
117+
#include <orea/scenario/scenarioutilities.hpp>
117118
#include <orea/scenario/scenariowriter.hpp>
118119
#include <orea/scenario/sensitivityscenariodata.hpp>
119120
#include <orea/scenario/sensitivityscenariogenerator.hpp>

OREAnalytics/orea/scenario/clonescenariofactory.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,16 @@ CloneScenarioFactory::CloneScenarioFactory(const QuantLib::ext::shared_ptr<Scena
2828
QL_REQUIRE(baseScenario_ != NULL, "base scenario pointer must not be NULL");
2929
}
3030

31-
const QuantLib::ext::shared_ptr<Scenario> CloneScenarioFactory::buildScenario(Date asof, const std::string& label,
32-
Real numeraire) const {
31+
const QuantLib::ext::shared_ptr<Scenario>
32+
CloneScenarioFactory::buildScenario(Date asof, bool isAbsolute, const std::string& label, Real numeraire) const {
3333
QuantLib::ext::shared_ptr<Scenario> newScen = baseScenario_->clone();
3434
QL_REQUIRE(asof == newScen->asof(),
3535
"unexpected asof date (" << asof << "), does not match base - " << baseScenario_->asof());
3636
newScen->label(label);
3737
QL_REQUIRE((label == newScen->label()) || (label == ""), "CloneScenarioFactory has not updated scenario label");
3838
if (numeraire != 0.0)
3939
newScen->setNumeraire(numeraire);
40+
newScen->setAbsolute(isAbsolute);
4041
return newScen;
4142
}
4243
} // namespace analytics

OREAnalytics/orea/scenario/clonescenariofactory.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ class CloneScenarioFactory : public ScenarioFactory {
3636
//! Constructor
3737
CloneScenarioFactory(const QuantLib::ext::shared_ptr<Scenario>& baseScenario);
3838
//! returns a new scenario, using the base scenario as a starting point
39-
const QuantLib::ext::shared_ptr<Scenario> buildScenario(Date asof, const std::string& label = "",
40-
Real numeraire = 0.0) const override;
39+
const QuantLib::ext::shared_ptr<Scenario> buildScenario(Date asof, bool isAbsolute, const std::string& label = "",
40+
Real numeraire = 0.0) const override;
4141

4242
private:
4343
QuantLib::ext::shared_ptr<Scenario> baseScenario_;

OREAnalytics/orea/scenario/crossassetmodelscenariogenerator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ std::vector<QuantLib::ext::shared_ptr<Scenario>> CrossAssetModelScenarioGenerato
343343
for (Size i = 0; i < dates_.size(); i++) {
344344
Real t = timeGrid_[i + 1]; // recall: time grid has inserted t=0
345345

346-
scenarios[i] = scenarioFactory_->buildScenario(dates_[i]);
346+
scenarios[i] = scenarioFactory_->buildScenario(dates_[i], true);
347347

348348
// populate IR states
349349
copyPathToArray(sample.value, i + 1, model_->pIdx(CrossAssetModel::AssetType::IR, 0), ir_state[0]);

OREAnalytics/orea/scenario/csvscenariogenerator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ QuantLib::ext::shared_ptr<Scenario> CSVScenarioGenerator::next(const Date& d) {
6969
QL_REQUIRE(to_string(d) == tokens[0], "Incompatible date " << tokens[0] << " in " << filename_);
7070

7171
// Build scenario
72-
const QuantLib::ext::shared_ptr<Scenario> scenario = scenarioFactory_->buildScenario(d);
72+
const QuantLib::ext::shared_ptr<Scenario> scenario = scenarioFactory_->buildScenario(d, true);
7373

7474
// Fill scenario with RiskFactorKeys
7575
QL_REQUIRE(keys_.size() == tokens.size() - 3, "Erroneus line in " << filename_);

0 commit comments

Comments
 (0)