Skip to content

Commit d5052b9

Browse files
pcaspersjenkins
authored andcommitted
Merge remote-tracking branch 'origin/1.0.77' into 1.0.77_into_master
1 parent 2153da8 commit d5052b9

1 file changed

Lines changed: 42 additions & 42 deletions

File tree

OREData/ored/portfolio/trs.cpp

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -297,48 +297,6 @@ void TRS::build(const boost::shared_ptr<EngineFactory>& engineFactory) {
297297

298298
reset();
299299

300-
// ISDA taxonomy
301-
bool assetClassIsUnique = true;
302-
std::string assetClass;
303-
for (auto u : underlying_) {
304-
auto it = u->additionalData().find("isdaAssetClass");
305-
if (it != u->additionalData().end()) {
306-
std::string ac = boost::any_cast<std::string>(it->second);
307-
if (assetClass == "")
308-
assetClass = ac;
309-
else if (ac != assetClass)
310-
assetClassIsUnique = false;
311-
}
312-
}
313-
314-
additionalData_["isdaAssetClass"] = string("");
315-
additionalData_["isdaBaseProduct"] = string("");
316-
additionalData_["isdaSubProduct"] = string("");
317-
additionalData_["isdaTransaction"] = string("");
318-
319-
if (assetClass == "") {
320-
ALOG("ISDA asset class not found for TRS " << id() << ", ISDA taxonomy undefined");
321-
} else {
322-
additionalData_["isdaAssetClass"] = assetClass;
323-
if (!assetClassIsUnique) {
324-
WLOG("ISDA asset class not unique in TRS " << id() << " using first hit: " << assetClass);
325-
}
326-
additionalData_["isdaBaseProduct"] = string("Total Return Swap");
327-
if (assetClass == "Equity") {
328-
if (tradeType_ == "ContractForDifference")
329-
additionalData_["isdaBaseProduct"] = string("Contract For Difference");
330-
else
331-
additionalData_["isdaBaseProduct"] = string("Swap");
332-
additionalData_["isdaSubProduct"] = string("Price Return Basic Performance");
333-
} else if (assetClass == "Credit") {
334-
additionalData_["isdaBaseProduct"] = string("Total Return Swap");
335-
additionalData_["isdaSubProduct"] = string("");
336-
} else {
337-
WLOG("ISDA asset class " << assetClass << " not explicitly covered for TRS trade " << id()
338-
<< " using default BaseProduct 'Total Retuen Swap' and leaving sub-product blank");
339-
}
340-
}
341-
342300
creditRiskCurrency_.clear();
343301
creditQualifierMapping_.clear();
344302

@@ -516,6 +474,48 @@ void TRS::build(const boost::shared_ptr<EngineFactory>& engineFactory) {
516474
fxIndices.insert(localFxIndices.begin(), localFxIndices.end());
517475
}
518476

477+
// ISDA taxonomy
478+
bool assetClassIsUnique = true;
479+
std::string assetClass;
480+
for (auto u : underlying_) {
481+
auto it = u->additionalData().find("isdaAssetClass");
482+
if (it != u->additionalData().end()) {
483+
std::string ac = boost::any_cast<std::string>(it->second);
484+
if (assetClass == "")
485+
assetClass = ac;
486+
else if (ac != assetClass)
487+
assetClassIsUnique = false;
488+
}
489+
}
490+
491+
additionalData_["isdaAssetClass"] = string("");
492+
additionalData_["isdaBaseProduct"] = string("");
493+
additionalData_["isdaSubProduct"] = string("");
494+
additionalData_["isdaTransaction"] = string("");
495+
496+
if (assetClass == "") {
497+
ALOG("ISDA asset class not found for TRS " << id() << ", ISDA taxonomy undefined");
498+
} else {
499+
additionalData_["isdaAssetClass"] = assetClass;
500+
if (!assetClassIsUnique) {
501+
WLOG("ISDA asset class not unique in TRS " << id() << " using first hit: " << assetClass);
502+
}
503+
additionalData_["isdaBaseProduct"] = string("Total Return Swap");
504+
if (assetClass == "Equity") {
505+
if (tradeType_ == "ContractForDifference")
506+
additionalData_["isdaBaseProduct"] = string("Contract For Difference");
507+
else
508+
additionalData_["isdaBaseProduct"] = string("Swap");
509+
additionalData_["isdaSubProduct"] = string("Price Return Basic Performance");
510+
} else if (assetClass == "Credit") {
511+
additionalData_["isdaBaseProduct"] = string("Total Return Swap");
512+
additionalData_["isdaSubProduct"] = string("");
513+
} else {
514+
WLOG("ISDA asset class " << assetClass << " not explicitly covered for TRS trade " << id()
515+
<< " using default BaseProduct 'Total Retuen Swap' and leaving sub-product blank");
516+
}
517+
}
518+
519519
// check that we have all fx terms that we needed to build the fx indices
520520

521521
QL_REQUIRE(missingFxIndexPairs.empty(), "TRS::build(): missing FXTerms for the following pairs: "

0 commit comments

Comments
 (0)