Skip to content

Commit 7c99f14

Browse files
pcaspersjenkins
authored andcommitted
QPR-12031 support USD-SIFMA
1 parent 72c9d93 commit 7c99f14

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

OREData/ored/portfolio/swaption.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ void Swaption::buildBermudan(const boost::shared_ptr<EngineFactory>& engineFacto
286286
// determine strikes for calibration basket (simple approach, a la summit)
287287
// also determine the ibor index (if several, chose the first) to get the engine
288288
std::vector<Real> strikes(exerciseBuilder_->noticeDates().size(), Null<Real>());
289-
boost::shared_ptr<IborIndex> index;
289+
boost::shared_ptr<InterestRateIndex> index;
290290
for (Size i = 0; i < exerciseBuilder_->noticeDates().size(); ++i) {
291291
Real firstFixedRate = Null<Real>();
292292
Real firstFloatSpread = Null<Real>();
@@ -305,6 +305,9 @@ void Swaption::buildBermudan(const boost::shared_ptr<EngineFactory>& engineFacto
305305
DLOG("found cms index " << tmp->name() << ", use key '" << tmp->iborIndex()->name()
306306
<< "' to look up vol");
307307
index = tmp->iborIndex();
308+
} else if (auto tmp = boost::dynamic_pointer_cast<BMAIndex>(cpn->index())) {
309+
DLOG("found bma/sifma index '" << tmp->name() << "'");
310+
index = tmp;
308311
}
309312
}
310313
}
@@ -324,7 +327,7 @@ void Swaption::buildBermudan(const boost::shared_ptr<EngineFactory>& engineFacto
324327
}
325328

326329
if (index == nullptr) {
327-
DLOG("no ibor, ois, cms index found, use ccy key to look up vol");
330+
DLOG("no ibor, ois, bma/sifma, cms index found, use ccy key to look up vol");
328331
}
329332

330333
auto builder = engineFactory->builder("BermudanSwaption");

0 commit comments

Comments
 (0)