Skip to content

Commit ba5bae5

Browse files
pcaspersjenkins
authored andcommitted
QPR-12014 fix setting sensi template
1 parent 5767462 commit ba5bae5

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

OREData/ored/portfolio/trs.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,6 @@ void TRS::fromXML(XMLNode* node) {
187187
boost::shared_ptr<Trade> u;
188188
try {
189189
u = TradeFactory::instance().build(tradeType);
190-
if(sensitivityTemplate().empty())
191-
setSensitivityTemplate(u->sensitivityTemplate());
192190
} catch (const std::exception& e) {
193191
QL_FAIL("Failed for build TRS underlying trade # " << underlyingCounter + 1 << ": " << e.what());
194192
}
@@ -204,8 +202,6 @@ void TRS::fromXML(XMLNode* node) {
204202
QL_REQUIRE(t != nullptr, "expected 'Trade' node under 'Derivative' node");
205203
std::string tradeType = XMLUtils::getChildValue(t, "TradeType", true);
206204
auto u = TradeFactory::instance().build(tradeType);
207-
if(sensitivityTemplate().empty())
208-
setSensitivityTemplate(u->sensitivityTemplate());
209205
QL_REQUIRE(u, "No trade builder found for TRS derivative trade type '"
210206
<< tradeType << "' when processing underlying trade #" << (underlyingCounter + 1));
211207
u->id() = this->id() + "_underlying" +
@@ -337,6 +333,10 @@ void TRS::build(const boost::shared_ptr<EngineFactory>& engineFactory) {
337333
underlying_[i]->reset();
338334
underlying_[i]->build(engineFactory);
339335
requiredFixings_.addData(underlying_[i]->requiredFixings());
336+
// populate sensi template from first underlying, we have to make _some_ assumption here!
337+
if (sensitivityTemplate_.empty()) {
338+
setSensitivityTemplate(underlying_[i]->sensitivityTemplate());
339+
}
340340
}
341341

342342
// we use dirty prices, so we need accrued amounts in the past

0 commit comments

Comments
 (0)