Skip to content

Commit 78d1a04

Browse files
pcaspersjenkins
authored andcommitted
Merge branch '1.0.69' into tmp
1 parent c25768a commit 78d1a04

12 files changed

Lines changed: 61 additions & 16 deletions

File tree

Docker/.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
TAG=latest
2-
DEBIAN_TAG=12.0
2+
DEBIAN_TAG=11.7
33
QL_TAG=1.30_9921a4d7
44
BOOST_TAG=1.78.0
55
BOOST_DIR=1_78_0

Docker/Dockerfile-Test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ RUN apt-get update \
55
&& DEBIAN_FRONTEND=noninteractive apt-get install -y dos2unix python3 python3-pip libxml2-utils xsltproc \
66
&& apt-get clean \
77
&& rm -rf /var/lib/apt/lists/* \
8-
&& pip3 install --break-system-packages matplotlib pandas nose nose_xunitmp datacompy
8+
&& pip3 install matplotlib pandas nose nose_xunitmp datacompy
99

1010
CMD bash
1111

Examples/run_examples_testsuite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from pathlib import Path
77
import nose
88
import collections
9-
collections.Callable = collections.abc.Callable
9+
#collections.Callable = collections.abc.Callable
1010

1111
# Pull in some shared utilities
1212
script_dir = Path(__file__).parents[0]

OREAnalytics/orea/app/analytic.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ Analytic::Analytic(std::unique_ptr<Impl> impl,
5858
: impl_(std::move(impl)), types_(analyticTypes), inputs_(inputs) {
5959

6060
// set these here, can be overwritten in setUpConfigurations
61-
if (inputs->curveConfigs().size() > 0)
62-
configurations().curveConfig = inputs->curveConfigs()[0];
61+
if (inputs->curveConfigs().has())
62+
configurations().curveConfig = inputs->curveConfigs().get();
6363
if (inputs->pricingEngine())
6464
configurations().engineData = inputs->pricingEngine();
6565

OREAnalytics/orea/app/analytics/xvaanalytic.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ void XvaAnalyticImpl::buildScenarioSimMarket() {
119119
analytic()->configurations().simMarketParams,
120120
boost::make_shared<FixingManager>(inputs_->asof()),
121121
configuration,
122-
*inputs_->curveConfigs()[0],
122+
*inputs_->curveConfigs().get(),
123123
*analytic()->configurations().todaysMarketParams,
124124
inputs_->continueOnError(),
125125
false, true, false,
@@ -347,7 +347,7 @@ void XvaAnalyticImpl::buildClassicCube(const boost::shared_ptr<Portfolio>& portf
347347

348348
MultiThreadedValuationEngine engine(
349349
inputs_->nThreads(), inputs_->asof(), grid_, samples_, analytic()->loader(), scenarioGenerator_,
350-
inputs_->simulationPricingEngine(), inputs_->curveConfigs()[0], analytic()->configurations().todaysMarketParams,
350+
inputs_->simulationPricingEngine(), inputs_->curveConfigs().get(), analytic()->configurations().todaysMarketParams,
351351
inputs_->marketConfig("simulation"), analytic()->configurations().simMarketParams, false, false,
352352
boost::make_shared<ScenarioFilter>(), inputs_->refDataManager(),
353353
*inputs_->iborFallbackConfig(), true, false, cubeFactory, {}, cptyCubeFactory, "xva-simulation");
@@ -471,7 +471,7 @@ void XvaAnalyticImpl::amcRun(bool doClassicRun) {
471471
inputs_->nThreads(), inputs_->asof(), samples_, analytic()->loader(), inputs_->scenarioGeneratorData(),
472472
inputs_->exposureSimMarketParams()->additionalScenarioDataIndices(),
473473
inputs_->exposureSimMarketParams()->additionalScenarioDataCcys(), inputs_->crossAssetModelData(),
474-
inputs_->amcPricingEngine(), inputs_->curveConfigs()[0], analytic()->configurations().todaysMarketParams,
474+
inputs_->amcPricingEngine(), inputs_->curveConfigs().get(), analytic()->configurations().todaysMarketParams,
475475
inputs_->marketConfig("lgmcalibration"), inputs_->marketConfig("fxcalibration"),
476476
inputs_->marketConfig("eqcalibration"), inputs_->marketConfig("infcalibration"),
477477
inputs_->marketConfig("crcalibration"), inputs_->marketConfig("simulation"), inputs_->refDataManager(),

OREAnalytics/orea/app/inputparameters.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@ void InputParameters::setConventionsFromFile(const std::string& fileName) {
8080
void InputParameters::setCurveConfigs(const std::string& xml) {
8181
auto curveConfig = boost::make_shared<CurveConfigurations>();
8282
curveConfig->fromXMLString(xml);
83-
curveConfigs_.push_back(curveConfig);
83+
curveConfigs_.add(curveConfig);
8484
}
8585

8686
void InputParameters::setCurveConfigsFromFile(const std::string& fileName) {
8787
auto curveConfig = boost::make_shared<CurveConfigurations>();
8888
curveConfig->fromFile(fileName);
89-
curveConfigs_.push_back(curveConfig);
89+
curveConfigs_.add(curveConfig);
9090
}
9191

9292
void InputParameters::setIborFallbackConfig(const std::string& xml) {

OREAnalytics/orea/app/inputparameters.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ class InputParameters {
300300
const boost::shared_ptr<ore::data::BasicReferenceDataManager>& refDataManager() { return refDataManager_; }
301301
const boost::shared_ptr<ore::data::Conventions>& conventions() { return conventions_; }
302302
const boost::shared_ptr<ore::data::IborFallbackConfig>& iborFallbackConfig() const { return iborFallbackConfig_; }
303-
const std::vector<boost::shared_ptr<ore::data::CurveConfigurations>>& curveConfigs() { return curveConfigs_; }
303+
CurveConfigurationsManager& curveConfigs() { return curveConfigs_; }
304304
const boost::shared_ptr<ore::data::EngineData>& pricingEngine() { return pricingEngine_; }
305305
const boost::shared_ptr<ore::data::TodaysMarketParameters>& todaysMarketParams() { return todaysMarketParams_; }
306306
const boost::shared_ptr<ore::data::Portfolio>& portfolio() { return portfolio_; }
@@ -536,7 +536,7 @@ class InputParameters {
536536
boost::shared_ptr<ore::data::BasicReferenceDataManager> refDataManager_;
537537
boost::shared_ptr<ore::data::Conventions> conventions_;
538538
boost::shared_ptr<ore::data::IborFallbackConfig> iborFallbackConfig_;
539-
std::vector<boost::shared_ptr<ore::data::CurveConfigurations>> curveConfigs_;
539+
CurveConfigurationsManager curveConfigs_;
540540
boost::shared_ptr<ore::data::EngineData> pricingEngine_;
541541
boost::shared_ptr<ore::data::TodaysMarketParameters> todaysMarketParams_;
542542
boost::shared_ptr<ore::data::Portfolio> portfolio_;

OREAnalytics/orea/app/marketdataloader.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ void MarketDataLoader::populateFixings(
185185
addMarketFixingDates(d, fixings_, *tmp);
186186
LOG("Add fixing possibly required for equity index delta risk decomposition")
187187
additional_equity_fixings(fixings_, *tmp, inputs_->refDataManager(),
188-
inputs_->curveConfigs().front());
188+
inputs_->curveConfigs().get());
189189
}
190190

191191
if (inputs_->eomInflationFixings()) {
@@ -273,7 +273,7 @@ void MarketDataLoader::populateLoader(
273273
for (auto c : tmp->configurations())
274274
configurations.insert(c.first);
275275

276-
for (const auto& curveConfig : inputs_->curveConfigs()) {
276+
for (const auto& [_,curveConfig] : inputs_->curveConfigs().curveConfigurations()) {
277277
auto qs = curveConfig->quotes(tmp, configurations);
278278
quotes.insert(qs.begin(), qs.end());
279279
}

OREData/ored/configuration/curveconfigurations.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,5 +589,29 @@ XMLNode* CurveConfigurations::toXML(XMLDocument& doc) {
589589

590590
return parent;
591591
}
592+
593+
void CurveConfigurationsManager::add(const QuantLib::ext::shared_ptr<CurveConfigurations>& config, std::string id) {
594+
configs_[id] = config;
595+
}
596+
597+
const QuantLib::ext::shared_ptr<CurveConfigurations>& CurveConfigurationsManager::get(std::string id) const {
598+
auto it = configs_.find(id);
599+
QL_REQUIRE(it != configs_.end(), "CurveConfigurationsManager: could not find CurveConfiguration for id " << id);
600+
return it->second;
601+
}
602+
603+
604+
const bool CurveConfigurationsManager::has(std::string id) const {
605+
auto it = configs_.find(id);
606+
return it != configs_.end();
607+
}
608+
609+
const std::map<std::string, QuantLib::ext::shared_ptr<CurveConfigurations>>& CurveConfigurationsManager::curveConfigurations() const {
610+
return configs_;
611+
}
612+
613+
const bool CurveConfigurationsManager::empty() const {
614+
return configs_.size() == 0;
615+
}
592616
} // namespace data
593617
} // namespace ore

OREData/ored/configuration/curveconfigurations.hpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,5 +177,20 @@ class CurveConfigurations : public XMLSerializable {
177177
void addNodes(XMLDocument& doc, XMLNode* parent, const char* nodeName);
178178
};
179179

180+
class CurveConfigurationsManager {
181+
public:
182+
CurveConfigurationsManager() {}
183+
184+
// add a curve config, if no id provided it gets added as a default
185+
void add(const QuantLib::ext::shared_ptr<CurveConfigurations>& config, std::string id = std::string());
186+
const QuantLib::ext::shared_ptr<CurveConfigurations>& get(std::string id = std::string()) const;
187+
const bool has(std::string id = std::string()) const;
188+
const std::map<std::string, QuantLib::ext::shared_ptr<CurveConfigurations>>& curveConfigurations() const;
189+
const bool empty() const;
190+
191+
private:
192+
std::map<std::string, QuantLib::ext::shared_ptr<CurveConfigurations>> configs_;
193+
};
194+
180195
} // namespace data
181196
} // namespace ore

0 commit comments

Comments
 (0)