Skip to content

Commit 66c4caf

Browse files
damienbarkerfarahkhashman
authored andcommitted
Merge branch 'feature/QPR-13645' into 'master'
QPR-12983 engine data updates to swig Closes QPR-13645 See merge request qs/oreplus!3019
1 parent b59761c commit 66c4caf

4 files changed

Lines changed: 108 additions & 26 deletions

File tree

ORE-SWIG/OREAnalytics-SWIG/SWIG/orea_app.i

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public:
198198
void setSensiScenarioDataFromFile(const std::string& fileName);
199199
void setSensiPricingEngine(const std::string& xml);
200200
void setSensiPricingEngineFromFile(const std::string& fileName);
201-
void setSensiPricingEngine(const QuantLib::ext::shared_ptr<EngineData>& engineData);
201+
void setSensiPricingEngine(const ext::shared_ptr<EngineData>& engineData);
202202
// Setters for scenario
203203
void setScenarioSimMarketParams(const std::string& xml);
204204
void setScenarioSimMarketParamsFromFile(const std::string& fileName);
@@ -208,6 +208,7 @@ public:
208208
void setStressSimMarketParams(const std::string& xml);
209209
void setStressScenarioData(const std::string& xml);
210210
void setStressPricingEngine(const std::string& xml);
211+
void setStressPricingEngine(const ext::shared_ptr<EngineData>& engineData);
211212
// Setters for VaR
212213
void setVarQuantiles(const std::string& s); // parse to vector<Real>
213214
void setVarBreakDown(bool b);

ORE-SWIG/OREData-SWIG/SWIG/ored_conventions.i

Lines changed: 86 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
%include indexes.i
2323
%include inflation.i
24+
%include ored_xmlutils.i
2425

2526
%{
2627
// put c++ declarations here
@@ -52,6 +53,7 @@ using ore::data::FxOptionConvention;
5253
using ore::data::FxOptionTimeWeightingConvention;
5354
using ore::data::ZeroInflationIndexConvention;
5455
using ore::data::BondYieldConvention;
56+
using ore::data::XMLSerializable;
5557

5658
using QuantLib::DayCounter;
5759
using QuantLib::Calendar;
@@ -68,20 +70,23 @@ using QuantExt::FutureExpiryCalculator;
6870
%}
6971

7072
%shared_ptr(Conventions)
71-
class Conventions {
73+
class Conventions : public XMLSerializable {
7274
public:
7375
Conventions();
7476
ext::shared_ptr<Convention> get(const std::string& id) const;
77+
std::pair<bool, ext::shared_ptr<Convention>> get(const std::string& id, const Convention::Type& type) const;
78+
std::set<ext::shared_ptr<Convention>> get(const Convention::Type& type) const;
79+
ext::shared_ptr<Convention> getFxConvention(const std::string& ccy1, const std::string& ccy2) const;
80+
bool has(const std::string& id) const;
81+
bool has(const std::string& id, const Convention::Type& type) const;
7582
void clear();
7683
void add(const ext::shared_ptr<Convention>& convention);
77-
void fromXMLString(const std::string& xmlString);
78-
void fromFile(const std::string& xmlFileName);
79-
std::string toXMLString() const;
80-
void toFile(const std::string& filename) const;
84+
void fromXML(XMLNode* node) override;
85+
XMLNode* toXML(XMLDocument& doc) const override;
8186
};
8287

8388
%shared_ptr(Convention)
84-
class Convention {
89+
class Convention : public XMLSerializable {
8590
public:
8691
enum class Type {
8792
Zero,
@@ -104,8 +109,6 @@ class Convention {
104109
};
105110
const std::string& id() const;
106111
Convention::Type type() const;
107-
void fromXMLString(const std::string& xmlString);
108-
std::string toXMLString();
109112

110113
%extend {
111114
static const Convention::Type Zero = Convention::Type::Zero;
@@ -149,6 +152,9 @@ class ZeroRateConvention : public Convention {
149152
BusinessDayConvention rollConvention() const;
150153
bool eom();
151154
bool tenorBased();
155+
void fromXML(XMLNode* node) override;
156+
XMLNode* toXML(XMLDocument& doc) const override;
157+
void build() override;
152158
%extend {
153159
static const ext::shared_ptr<ZeroRateConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
154160
return ext::dynamic_pointer_cast<ore::data::ZeroRateConvention>(baseInput);
@@ -171,6 +177,9 @@ class DepositConvention : public Convention {
171177
const DayCounter& dayCounter() const;
172178
const Size settlementDays() const;
173179
bool indexBased();
180+
void fromXML(XMLNode* node) override;
181+
XMLNode* toXML(XMLDocument& doc) const override;
182+
void build() override;
174183
%extend {
175184
static const ext::shared_ptr<DepositConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
176185
return ext::dynamic_pointer_cast<ore::data::DepositConvention>(baseInput);
@@ -184,6 +193,9 @@ class FutureConvention : public Convention {
184193
FutureConvention();
185194
FutureConvention(const std::string& id, const std::string& index);
186195
const ext::shared_ptr<IborIndex> index() const;
196+
void fromXML(XMLNode* node) override;
197+
XMLNode* toXML(XMLDocument& doc) const override;
198+
void build() override;
187199
%extend {
188200
static const ext::shared_ptr<FutureConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
189201
return ext::dynamic_pointer_cast<ore::data::FutureConvention>(baseInput);
@@ -197,6 +209,9 @@ class FraConvention : public Convention {
197209
FraConvention();
198210
FraConvention(const std::string& id,const std::string& index);
199211
const ext::shared_ptr<IborIndex> index() const;
212+
void fromXML(XMLNode* node) override;
213+
XMLNode* toXML(XMLDocument& doc) const override;
214+
void build() override;
200215
%extend {
201216
static const ext::shared_ptr<FraConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
202217
return ext::dynamic_pointer_cast<ore::data::FraConvention>(baseInput);
@@ -223,6 +238,9 @@ class OisConvention : public Convention {
223238
BusinessDayConvention fixedConvention() const;
224239
BusinessDayConvention fixedPaymentConvention() const;
225240
DateGeneration::Rule rule() const;
241+
void fromXML(XMLNode* node) override;
242+
XMLNode* toXML(XMLDocument& doc) const override;
243+
void build() override;
226244
%extend {
227245
static const ext::shared_ptr<OisConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
228246
return ext::dynamic_pointer_cast<ore::data::OisConvention>(baseInput);
@@ -242,7 +260,9 @@ class IborIndexConvention : public Convention {
242260
const QuantLib::Size settlementDays() const;
243261
const std::string& businessDayConvention() const;
244262
const bool endOfMonth() const;
245-
263+
void fromXML(XMLNode* node) override;
264+
XMLNode* toXML(XMLDocument& doc) const override;
265+
void build() override;
246266
%extend {
247267
static const ext::shared_ptr<IborIndexConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
248268
return ext::dynamic_pointer_cast<ore::data::IborIndexConvention>(baseInput);
@@ -260,7 +280,9 @@ class OvernightIndexConvention : public Convention {
260280
const std::string& fixingCalendar() const;
261281
const std::string& dayCounter() const;
262282
const QuantLib::Size settlementDays() const;
263-
283+
void fromXML(XMLNode* node) override;
284+
XMLNode* toXML(XMLDocument& doc) const override;
285+
void build() override;
264286
%extend {
265287
static const ext::shared_ptr<OvernightIndexConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
266288
return ext::dynamic_pointer_cast<ore::data::OvernightIndexConvention>(baseInput);
@@ -274,6 +296,9 @@ class SwapIndexConvention : public Convention {
274296
SwapIndexConvention();
275297
SwapIndexConvention(const std::string& id,const std::string& conventions);
276298
const std::string& conventions() const;
299+
void fromXML(XMLNode* node) override;
300+
XMLNode* toXML(XMLDocument& doc) const override;
301+
void build() override;
277302
%extend {
278303
static const ext::shared_ptr<SwapIndexConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
279304
return ext::dynamic_pointer_cast<ore::data::SwapIndexConvention>(baseInput);
@@ -298,6 +323,9 @@ class IRSwapConvention : public Convention {
298323
bool hasSubPeriod() const;
299324
Frequency floatFrequency() const;
300325
QuantExt::SubPeriodsCoupon1::Type subPeriodsCouponType() const;
326+
void fromXML(XMLNode* node) override;
327+
XMLNode* toXML(XMLDocument& doc) const override;
328+
void build() override;
301329
%extend {
302330
static const ext::shared_ptr<IRSwapConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
303331
return ext::dynamic_pointer_cast<ore::data::IRSwapConvention>(baseInput);
@@ -324,6 +352,9 @@ class AverageOisConvention : public Convention {
324352
const ext::shared_ptr<OvernightIndex> index() const;
325353
const Period& onTenor() const;
326354
Natural rateCutoff() const;
355+
void fromXML(XMLNode* node) override;
356+
XMLNode* toXML(XMLDocument& doc) const override;
357+
void build() override;
327358
%extend {
328359
static const ext::shared_ptr<AverageOisConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
329360
return ext::dynamic_pointer_cast<ore::data::AverageOisConvention>(baseInput);
@@ -347,6 +378,9 @@ class TenorBasisSwapConvention : public Convention {
347378
bool spreadOnRec() const;
348379
bool includeSpread() const;
349380
QuantExt::SubPeriodsCoupon1::Type subPeriodsCouponType() const;
381+
void fromXML(XMLNode* node) override;
382+
XMLNode* toXML(XMLDocument& doc) const override;
383+
void build() override;
350384
%extend {
351385
static const ext::shared_ptr<TenorBasisSwapConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
352386
return ext::dynamic_pointer_cast<ore::data::TenorBasisSwapConvention>(baseInput);
@@ -374,6 +408,9 @@ class TenorBasisTwoSwapConvention : public Convention {
374408
const DayCounter& shortFixedDayCounter() const;
375409
const ext::shared_ptr<IborIndex> shortIndex() const;
376410
bool longMinusShort() const;
411+
void fromXML(XMLNode* node) override;
412+
XMLNode* toXML(XMLDocument& doc) const override;
413+
void build() override;
377414
%extend {
378415
static const ext::shared_ptr<TenorBasisTwoSwapConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
379416
return ext::dynamic_pointer_cast<ore::data::TenorBasisTwoSwapConvention>(baseInput);
@@ -391,6 +428,9 @@ class BMABasisSwapConvention : public Convention {
391428
const ext::shared_ptr<BMAIndexWrapper> bmaIndex() const;
392429
const std::string& indexName() const;
393430
const std::string& bmaIndexName() const;
431+
void fromXML(XMLNode* node) override;
432+
XMLNode* toXML(XMLDocument& doc) const override;
433+
void build() override;
394434
%extend {
395435
static const ext::shared_ptr<BMABasisSwapConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
396436
return ext::dynamic_pointer_cast<ore::data::BMABasisSwapConvention>(baseInput);
@@ -412,6 +452,9 @@ class FXConvention : public Convention {
412452
Real pointsFactor() const;
413453
const Calendar& advanceCalendar() const;
414454
bool spotRelative() const;
455+
void fromXML(XMLNode* node) override;
456+
XMLNode* toXML(XMLDocument& doc) const override;
457+
void build() override;
415458
%extend {
416459
static const ext::shared_ptr<FXConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
417460
return ext::dynamic_pointer_cast<ore::data::FXConvention>(baseInput);
@@ -435,6 +478,9 @@ class CrossCcyBasisSwapConvention : public Convention {
435478
const std::string& flatIndexName() const;
436479
const std::string& spreadIndexName() const;
437480
bool eom() const;
481+
void fromXML(XMLNode* node) override;
482+
XMLNode* toXML(XMLDocument& doc) const override;
483+
void build() override;
438484
%extend {
439485
static const ext::shared_ptr<CrossCcyBasisSwapConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
440486
return ext::dynamic_pointer_cast<ore::data::CrossCcyBasisSwapConvention>(baseInput);
@@ -460,6 +506,9 @@ class CrossCcyFixFloatSwapConvention : public Convention {
460506
const DayCounter& fixedDayCounter() const;
461507
const ext::shared_ptr<IborIndex> index() const;
462508
bool eom() const;
509+
void fromXML(XMLNode* node) override;
510+
XMLNode* toXML(XMLDocument& doc) const override;
511+
void build() override;
463512
%extend {
464513
static const ext::shared_ptr<CrossCcyFixFloatSwapConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
465514
return ext::dynamic_pointer_cast<ore::data::CrossCcyFixFloatSwapConvention>(baseInput);
@@ -484,6 +533,9 @@ class CdsConvention : public Convention {
484533
const DayCounter& dayCounter() const;
485534
bool settlesAccrual() const;
486535
bool paysAtDefaultTime() const;
536+
void fromXML(XMLNode* node) override;
537+
XMLNode* toXML(XMLDocument& doc) const override;
538+
void build() override;
487539
%extend {
488540
static const ext::shared_ptr<CdsConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
489541
return ext::dynamic_pointer_cast<ore::data::CdsConvention>(baseInput);
@@ -510,6 +562,9 @@ class InflationSwapConvention : public Convention {
510562
bool adjustInfObsDates() const;
511563
const Calendar& infCalendar() const;
512564
BusinessDayConvention infConvention() const;
565+
void fromXML(XMLNode* node) override;
566+
XMLNode* toXML(XMLDocument& doc) const override;
567+
void build() override;
513568
%extend {
514569
static const ext::shared_ptr<InflationSwapConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
515570
return ext::dynamic_pointer_cast<ore::data::InflationSwapConvention>(baseInput);
@@ -534,6 +589,9 @@ class SecuritySpreadConvention : public Convention {
534589
const Calendar& spotCalendar() const;
535590
BusinessDayConvention rollConvention() const;
536591
bool eom();
592+
void fromXML(XMLNode* node) override;
593+
XMLNode* toXML(XMLDocument& doc) const override;
594+
void build() override;
537595
%extend {
538596
static const ext::shared_ptr<SecuritySpreadConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
539597
return ext::dynamic_pointer_cast<ore::data::SecuritySpreadConvention>(baseInput);
@@ -556,6 +614,9 @@ class CmsSpreadOptionConvention : public Convention {
556614
const QuantLib::Calendar& calendar() const;
557615
const QuantLib::DayCounter& dayCounter() const;
558616
QuantLib::BusinessDayConvention rollConvention() const;
617+
void fromXML(XMLNode* node) override;
618+
XMLNode* toXML(XMLDocument& doc) const override;
619+
void build() override;
559620
%extend {
560621
static const ext::shared_ptr<CmsSpreadOptionConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
561622
return ext::dynamic_pointer_cast<ore::data::CmsSpreadOptionConvention>(baseInput);
@@ -578,6 +639,9 @@ class CommodityForwardConvention : public Convention {
578639
bool spotRelative() const;
579640
QuantLib::BusinessDayConvention bdc() const;
580641
bool outright() const;
642+
void fromXML(XMLNode* node) override;
643+
XMLNode* toXML(XMLDocument& doc) const override;
644+
void build() override;
581645
%extend {
582646
static const ext::shared_ptr<CommodityForwardConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
583647
return ext::dynamic_pointer_cast<ore::data::CommodityForwardConvention>(baseInput);
@@ -868,6 +932,9 @@ class FxOptionConvention : public Convention {
868932
const QuantLib::DeltaVolQuote::DeltaType& longTermDeltaType() const;
869933
const QuantLib::Option::Type& riskReversalInFavorOf() const;
870934
const bool butterflyIsBrokerStyle() const;
935+
void fromXML(XMLNode* node) override;
936+
XMLNode* toXML(XMLDocument& doc) const override;
937+
void build() override;
871938

872939
%extend {
873940
static const ext::shared_ptr<FxOptionConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
@@ -898,6 +965,9 @@ class FxOptionTimeWeightingConvention : public Convention {
898965
const std::vector<double>& weekdayWeights() const;
899966
const std::vector<TradingCenter>& tradingCenters() const;
900967
const std::vector<Event>& events() const;
968+
void fromXML(XMLNode* node) override;
969+
XMLNode* toXML(XMLDocument& doc) const override;
970+
void build() override;
901971

902972
%extend {
903973
static const ext::shared_ptr<FxOptionTimeWeightingConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
@@ -923,6 +993,9 @@ class ZeroInflationIndexConvention : public Convention {
923993
QuantLib::Frequency frequency() const;
924994
const QuantLib::Period& availabilityLag() const;
925995
const QuantLib::Currency& currency() const;
996+
void fromXML(XMLNode* node) override;
997+
XMLNode* toXML(XMLDocument& doc) const override;
998+
void build() override;
926999

9271000
%extend {
9281001
static const ext::shared_ptr<ZeroInflationIndexConvention> getFullView(ext::shared_ptr<Convention> baseInput) {
@@ -952,6 +1025,9 @@ class BondYieldConvention : public Convention {
9521025
QuantLib::Real accuracy() const;
9531026
QuantLib::Size maxEvaluations() const;
9541027
QuantLib::Real guess() const;
1028+
void fromXML(XMLNode* node) override;
1029+
XMLNode* toXML(XMLDocument& doc) const override;
1030+
void build() override;
9551031

9561032
%extend {
9571033
static const ext::shared_ptr<BondYieldConvention> getFullView(ext::shared_ptr<Convention> baseInput) {

ORE-SWIG/OREData-SWIG/SWIG/ored_portfolio.i

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ public:
6464
const std::map<std::string, std::string>& engineParameters(const std:: string& productName) const;
6565
const std::map<std::string, std::string>& globalParameters() const;
6666
std::vector<std::string> products() const;
67-
std::string& model(const std::string& productName);
68-
std::map<std::string, std::string>& modelParameters(const std::string& productName);
69-
std::string& engine(const std::string& productName);
70-
std::map<std::string, std::string>& engineParameters(const std::string& productName);
71-
std::map<std::string, std::string>& globalParameters();
67+
void setModel(const std::string& productName, const std::string& model) { model_[productName] = model; }
68+
void setModelParameters(const std::string& productName, const std::map<std::string, std::string>& params) { modelParams_[productName] = params; }
69+
void setEngine(const std::string& productName, const std::string& engine) { engine_[productName] = engine; }
70+
void setEngineParameters(const std::string& productName, const std::map<std::string, std::string>& params) { engineParams_[productName] = params; }
71+
void setGlobalParameter(const std::string& name, const std::string& param) { globalParams_[name] = param; }
7272
void clear();
73-
virtual void fromXML(XMLNode* node) override;
74-
virtual XMLNode* toXML(XMLDocument& doc) const override;
73+
void fromXML(XMLNode* node) override;
74+
XMLNode* toXML(XMLDocument& doc) const override;
7575
};
7676

7777
%shared_ptr(LegBuilder)

OREData/ored/portfolio/enginedata.hpp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,16 @@ class EngineData : public XMLSerializable {
6060

6161
//! \name Setters
6262
//@{
63-
string& model(const string& productName) { return model_[productName]; }
64-
map<string, string>& modelParameters(const string& productName) { return modelParams_[productName]; }
65-
string& engine(const string& productName) { return engine_[productName]; }
66-
map<string, string>& engineParameters(const string& productName) { return engineParams_[productName]; }
63+
std::string& model(const std::string& productName) { return model_[productName]; }
64+
void setModel(const std::string& productName, const std::string& model) { model_[productName] = model; }
65+
std::map<std::string, std::string>& modelParameters(const std::string& productName) { return modelParams_[productName]; }
66+
void setModelParameters(const std::string& productName, const std::map<std::string, std::string>& params) { modelParams_[productName] = params; }
67+
std::string& engine(const std::string& productName) { return engine_[productName]; }
68+
void setEngine(const std::string& productName, const std::string& engine) { engine_[productName] = engine; }
69+
std::map<std::string, std::string>& engineParameters(const std::string& productName) { return engineParams_[productName]; }
70+
void setEngineParameters(const std::string& productName, const std::map<std::string, std::string>& params) { engineParams_[productName] = params; }
6771
std::map<std::string, std::string>& globalParameters() { return globalParams_; }
72+
void setGlobalParameter(const std::string& name, const std::string& param) { globalParams_[name] = param; }
6873
//@}
6974

7075
//! Clear all data
@@ -77,10 +82,10 @@ class EngineData : public XMLSerializable {
7782
//@}
7883

7984
private:
80-
map<string, string> model_;
81-
map<string, map<string, string>> modelParams_;
82-
map<string, string> engine_;
83-
map<string, map<string, string>> engineParams_;
85+
std::map<std::string, std::string> model_;
86+
std::map<std::string, std::map<std::string, std::string>> modelParams_;
87+
std::map<std::string, std::string> engine_;
88+
std::map<std::string, std::map<std::string, std::string>> engineParams_;
8489
std::map<std::string, std::string> globalParams_;
8590
};
8691

0 commit comments

Comments
 (0)