Skip to content

Commit e6a5843

Browse files
pcaspersjenkins
authored andcommitted
QPR-11568 move bond and ref datum builder
1 parent efb4270 commit e6a5843

6 files changed

Lines changed: 23 additions & 41 deletions

File tree

OREAnalytics/orea/app/initbuilders.cpp

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,13 @@
2323
#include <ored/model/calibrationinstruments/yoycapfloor.hpp>
2424
#include <ored/model/calibrationinstruments/yoyswap.hpp>
2525
#include <ored/portfolio/commoditylegdata.hpp>
26+
#include <ored/portfolio/convertiblebondreferencedata.hpp>
2627
#include <ored/portfolio/durationadjustedcmslegdata.hpp>
2728
#include <ored/portfolio/equityfxlegdata.hpp>
2829
#include <ored/portfolio/legdata.hpp>
2930
#include <ored/portfolio/legdatafactory.hpp>
31+
#include <ored/portfolio/referencedata.hpp>
32+
#include <ored/portfolio/referencedatafactory.hpp>
3033

3134
#include <boost/thread/lock_types.hpp>
3235
#include <boost/thread/shared_mutex.hpp>
@@ -38,6 +41,12 @@
3841
ore::data::CalibrationInstrumentFactory::instance().addBuilder(NAME, \
3942
&ore::data::createCalibrationInstrument<CLASS>);
4043

44+
#define REG_REFDATUM(NAME, CLASS) \
45+
ore::data::ReferenceDatumFactory::instance().addBuilder( \
46+
NAME, &ore::data::createReferenceDatumBuilder<ore::data::ReferenceDatumBuilder<CLASS>>);
47+
48+
#define REG_BONDBUILDER(NAME, CLASS) ore::data::BondFactory::instance().addBuilder(NAME, boost::make_shared<CLASS>());
49+
4150
namespace ore::analytics {
4251

4352
void initBuilders() {
@@ -69,9 +78,20 @@ void initBuilders() {
6978
REG_LEGDATA("DurationAdjustedCMS", ore::data::DurationAdjustedCmsLegData)
7079
REG_LEGDATA("EquityMargin", ore::data::EquityMarginLegData)
7180

72-
REG_CALIBRATION_INSTR("CpiCapFloor", ore::data::CpiCapFloor);
73-
REG_CALIBRATION_INSTR("YoYCapFloor", ore::data::YoYCapFloor);
74-
REG_CALIBRATION_INSTR("YoYSwap", ore::data::YoYSwap);
81+
REG_CALIBRATION_INSTR("CpiCapFloor", ore::data::CpiCapFloor)
82+
REG_CALIBRATION_INSTR("YoYCapFloor", ore::data::YoYCapFloor)
83+
REG_CALIBRATION_INSTR("YoYSwap", ore::data::YoYSwap)
84+
85+
REG_REFDATUM("Bond", ore::data::BondReferenceDatum)
86+
REG_REFDATUM("CreditIndex", ore::data::CreditIndexReferenceDatum)
87+
REG_REFDATUM("EquityIndex", ore::data::EquityIndexReferenceDatum)
88+
REG_REFDATUM("CurrencyHedgedEquityIndex", ore::data::CurrencyHedgedEquityIndexReferenceDatum)
89+
REG_REFDATUM("Credit", ore::data::CreditReferenceDatum)
90+
REG_REFDATUM("Equity", ore::data::EquityReferenceDatum)
91+
REG_REFDATUM("BondBasket", ore::data::BondBasketReferenceDatum)
92+
REG_REFDATUM("ConvertibleBond", ore::data::BondBasketReferenceDatum)
93+
94+
REG_BONDBUILDER("Bond", ore::data::VanillaBondBuilder)
7595
}
7696

7797
} // namespace ore::analytics

OREData/ored/portfolio/convertiblebondreferencedata.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,5 @@ XMLNode* ConvertibleBondReferenceDatum::toXML(ore::data::XMLDocument& doc) {
6464
return node0;
6565
}
6666

67-
ReferenceDatumRegister<ReferenceDatumBuilder<ConvertibleBondReferenceDatum>> ConvertibleBondReferenceDatum::reg_(TYPE);
68-
6967
} // namespace data
7068
} // namespace ore

OREData/ored/portfolio/convertiblebondreferencedata.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ class ConvertibleBondReferenceDatum : public ReferenceDatum {
8787
ConvertibleBondData::ConversionData conversionData_;
8888
ConvertibleBondData::DividendProtectionData dividendProtectionData_;
8989
std::string detachable_;
90-
91-
static ReferenceDatumRegister<ReferenceDatumBuilder<ConvertibleBondReferenceDatum>> reg_;
9290
};
9391

9492
} // namespace data

OREData/ored/portfolio/referencedata.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ XMLNode* ReferenceDatum::toXML(XMLDocument& doc) {
4040
return node;
4141
}
4242

43-
ReferenceDatumRegister<ReferenceDatumBuilder<BondReferenceDatum>> BondReferenceDatum::reg_(TYPE);
44-
4543
void BondReferenceDatum::BondData::fromXML(XMLNode* node) {
4644
QL_REQUIRE(node, "BondReferenceDatum::BondData::fromXML(): no node given");
4745
issuerId = XMLUtils::getChildValue(node, "IssuerId", true);
@@ -187,8 +185,6 @@ const Date& CreditIndexConstituent::eventDeterminationDate() const { return even
187185

188186
bool operator<(const CreditIndexConstituent& lhs, const CreditIndexConstituent& rhs) { return lhs.name() < rhs.name(); }
189187

190-
ReferenceDatumRegister<ReferenceDatumBuilder<CreditIndexReferenceDatum>> CreditIndexReferenceDatum::reg_(TYPE);
191-
192188
CreditIndexReferenceDatum::CreditIndexReferenceDatum() {}
193189

194190
CreditIndexReferenceDatum::CreditIndexReferenceDatum(const string& name) : ReferenceDatum(TYPE, name) {}
@@ -235,8 +231,6 @@ void CreditIndexReferenceDatum::add(const CreditIndexConstituent& c) {
235231

236232
const set<CreditIndexConstituent>& CreditIndexReferenceDatum::constituents() const { return constituents_; }
237233

238-
ReferenceDatumRegister<ReferenceDatumBuilder<EquityIndexReferenceDatum>> EquityIndexReferenceDatum::reg_(TYPE);
239-
240234
// Index
241235
void IndexReferenceDatum::fromXML(XMLNode* node) {
242236
ReferenceDatum::fromXML(node);
@@ -290,8 +284,6 @@ XMLNode* IndexReferenceDatum::toXML(XMLDocument& doc) {
290284
</CurrencyHedgedEquityIndexReferenceDatum>
291285
</ReferenceDatum>
292286
*/
293-
ReferenceDatumRegister<ReferenceDatumBuilder<CurrencyHedgedEquityIndexReferenceDatum>>
294-
CurrencyHedgedEquityIndexReferenceDatum::reg_(TYPE);
295287

296288
void CurrencyHedgedEquityIndexReferenceDatum::fromXML(XMLNode* node) {
297289
ReferenceDatum::fromXML(node);
@@ -421,8 +413,6 @@ XMLNode* CreditReferenceDatum::toXML(XMLDocument& doc) {
421413
return node;
422414
}
423415

424-
ReferenceDatumRegister<ReferenceDatumBuilder<CreditReferenceDatum>> CreditReferenceDatum::reg_(TYPE);
425-
426416
// Equity
427417
void EquityReferenceDatum::fromXML(XMLNode* node) {
428418
ReferenceDatum::fromXML(node);
@@ -460,8 +450,6 @@ XMLNode* EquityReferenceDatum::toXML(ore::data::XMLDocument& doc) {
460450
return node;
461451
}
462452

463-
ReferenceDatumRegister<ReferenceDatumBuilder<EquityReferenceDatum>> EquityReferenceDatum::reg_(TYPE);
464-
465453
// Bond Basket
466454
void BondBasketReferenceDatum::fromXML(XMLNode* node) {
467455
ReferenceDatum::fromXML(node);
@@ -485,8 +473,6 @@ XMLNode* BondBasketReferenceDatum::toXML(ore::data::XMLDocument& doc) {
485473
return res;
486474
}
487475

488-
ReferenceDatumRegister<ReferenceDatumBuilder<BondBasketReferenceDatum>> BondBasketReferenceDatum::reg_(TYPE);
489-
490476
// BasicReferenceDataManager
491477

492478
void BasicReferenceDataManager::fromXML(XMLNode* node) {

OREData/ored/portfolio/referencedata.hpp

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ class BondReferenceDatum : public ReferenceDatum {
116116

117117
private:
118118
BondData bondData_;
119-
static ReferenceDatumRegister<ReferenceDatumBuilder<BondReferenceDatum>> reg_;
120119
};
121120

122121
/*! Hold reference data on a constituent of a credit index.
@@ -186,8 +185,6 @@ class CreditIndexReferenceDatum : public ReferenceDatum {
186185

187186
private:
188187
std::set<CreditIndexConstituent> constituents_;
189-
190-
static ReferenceDatumRegister<ReferenceDatumBuilder<CreditIndexReferenceDatum>> reg_;
191188
};
192189

193190

@@ -231,9 +228,6 @@ class EquityIndexReferenceDatum : public IndexReferenceDatum {
231228

232229
EquityIndexReferenceDatum() {}
233230
EquityIndexReferenceDatum(const string& name) : IndexReferenceDatum(TYPE, name) {}
234-
235-
private:
236-
static ReferenceDatumRegister<ReferenceDatumBuilder<EquityIndexReferenceDatum>> reg_;
237231
};
238232

239233
/*
@@ -308,7 +302,6 @@ class CurrencyHedgedEquityIndexReferenceDatum : public ReferenceDatum {
308302
QuantLib::Calendar hedgeCalendar_;
309303
std::map<std::string, std::string> fxIndexes_;
310304
vector<pair<string, double>> data_;
311-
static ReferenceDatumRegister<ReferenceDatumBuilder<CurrencyHedgedEquityIndexReferenceDatum>> reg_;
312305
};
313306

314307
//! CreditIndex Reference data, contains the names and weights of a credit index
@@ -339,8 +332,6 @@ class CreditReferenceDatum : public ReferenceDatum {
339332

340333
private:
341334
CreditData creditData_;
342-
343-
static ReferenceDatumRegister<ReferenceDatumBuilder<CreditReferenceDatum>> reg_;
344335
};
345336

346337

@@ -378,9 +369,6 @@ class EquityReferenceDatum : public ReferenceDatum {
378369

379370
protected:
380371
EquityData equityData_;
381-
382-
private:
383-
static ore::data::ReferenceDatumRegister<ore::data::ReferenceDatumBuilder<EquityReferenceDatum>> reg_;
384372
};
385373

386374
//! Bond Basket Reference Data
@@ -402,7 +390,6 @@ class BondBasketReferenceDatum : public ReferenceDatum {
402390

403391
private:
404392
std::vector<BondUnderlying> underlyingData_;
405-
static ore::data::ReferenceDatumRegister<ore::data::ReferenceDatumBuilder<BondBasketReferenceDatum>> reg_;
406393
};
407394

408395
//! Interface for Reference Data lookups

OREData/ored/portfolio/referencedatafactory.hpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,5 @@ template <class T> boost::shared_ptr<AbstractReferenceDatumBuilder> createRefere
7171
return boost::make_shared<T>();
7272
}
7373

74-
template <class T> struct ReferenceDatumRegister {
75-
public:
76-
ReferenceDatumRegister(const std::string& refDatumType) {
77-
ReferenceDatumFactory::instance().addBuilder(refDatumType, &createReferenceDatumBuilder<T>);
78-
}
79-
};
80-
8174
} // namespace data
8275
} // namespace ore

0 commit comments

Comments
 (0)