Skip to content

Commit dcb0dfc

Browse files
author
O'Brien
committed
QPR-13735: added FRA notional flows and commentary
1 parent 00b29ab commit dcb0dfc

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

OREData/ored/marketdata/yieldcurve.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2153,6 +2153,8 @@ void YieldCurve::addFutures(const std::size_t index, const QuantLib::ext::shared
21532153
{helper, "Short OI Future", marketQuote->name(), marketQuote->quote()->value(),
21542154
std::function<std::vector<TradeCashflowReportData>()>{[helper, index,
21552155
r = marketQuote->quote()->value(), this]() {
2156+
// Add notional cashflows for benchmarking purposes. These are not actual paid flows
2157+
// in real trades, but help with reconciliation in calibration reports.
21562158
Leg l{QuantLib::ext::make_shared<FixedRateCoupon>(
21572159
helper->future()->maturityDate(), 1.0, 1.0 - helper->impliedQuote() / 100.0,
21582160
helper->future()->overnightIndex()->dayCounter(), helper->future()->valueDate(),
@@ -2204,6 +2206,8 @@ void YieldCurve::addFutures(const std::size_t index, const QuantLib::ext::shared
22042206
{helper, "Short MM Future", marketQuote->name(), marketQuote->quote()->value(),
22052207
std::function<std::vector<TradeCashflowReportData>()>{[helper, index,
22062208
r = marketQuote->quote()->value(), this]() {
2209+
// Add notional cashflows for benchmarking purposes. These are not actual paid flows
2210+
// in real trades, but help with reconciliation in calibration reports.
22072211
Leg l{QuantLib::ext::make_shared<FixedRateCoupon>(
22082212
helper->maturityDate(), 1.0, 1.0 - helper->impliedQuote() / 100.0, helper->dayCounter(),
22092213
helper->earliestDate(), helper->maturityDate()),
@@ -2277,14 +2281,20 @@ void YieldCurve::addFras(const std::size_t index, const QuantLib::ext::shared_pt
22772281
r = marketQuote->quote()->value(), this]() {
22782282
QL_REQUIRE(!helper->iborCoupon()->iborIndex()->forwardingTermStructure().empty(),
22792283
"YieldCurve::addFras(): ibor index has empty forwarding term structure");
2284+
// Add notional cashflows for benchmarking purposes. These are not actual paid flows
2285+
// in real trades, but help with reconciliation in calibration reports.
22802286
return getCashflowReportData(
2281-
{QuantLib::Leg{helper->iborCoupon()},
2287+
{QuantLib::Leg{helper->iborCoupon(),
2288+
QuantLib::ext::make_shared<SimpleCashFlow>(1.0, helper->iborCoupon()->date()),
2289+
QuantLib::ext::make_shared<SimpleCashFlow>(-1.0, helper->iborCoupon()->accrualStartDate())},
22822290
QuantLib::Leg{
22832291
QuantLib::ext::make_shared<FixedRateCoupon>(
22842292
helper->iborCoupon()->date(), 1.0, r, helper->iborCoupon()->dayCounter(),
22852293
helper->iborCoupon()->accrualStartDate(), helper->iborCoupon()->accrualEndDate(),
22862294
helper->iborCoupon()->referencePeriodStart(),
22872295
helper->iborCoupon()->referencePeriodEnd()),
2296+
QuantLib::ext::make_shared<SimpleCashFlow>(1.0, helper->iborCoupon()->date()),
2297+
QuantLib::ext::make_shared<SimpleCashFlow>(-1.0, helper->iborCoupon()->accrualStartDate())
22882298
}},
22892299
{false, true}, {1.0E6, 1.0E6}, currency_[index].code(),
22902300
{currency_[index].code(), currency_[index].code()}, asofDate_,

0 commit comments

Comments
 (0)