Capped or floored inflation coupon. More...
#include <qle/cashflows/nonstandardcapflooredyoyinflationcoupon.hpp>
Public Member Functions | |
NonStandardCappedFlooredYoYInflationCoupon (const ext::shared_ptr< NonStandardYoYInflationCoupon > &underlying, Rate cap=Null< Rate >(), Rate floor=Null< Rate >()) | |
NonStandardCappedFlooredYoYInflationCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, const ext::shared_ptr< ZeroInflationIndex > &index, const Period &observationLag, const DayCounter &dayCounter, Real gearing=1.0, Spread spread=0.0, const Rate cap=Null< Rate >(), const Rate floor=Null< Rate >(), const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), bool addInflationNotional=false, QuantLib::CPI::InterpolationType interpolation=QuantLib::CPI::InterpolationType::Flat) | |
augmented Coupon interface | |
Rate | rate () const override |
swap(let) rate | |
Rate | cap () const |
cap | |
Rate | floor () const |
floor | |
Rate | effectiveCap () const |
effective cap of fixing | |
Rate | effectiveFloor () const |
effective floor of fixing | |
Observer interface | |
void | update () override |
Public Member Functions inherited from NonStandardYoYInflationCoupon | |
NonStandardYoYInflationCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, const ext::shared_ptr< ZeroInflationIndex > &index, const Period &observationLag, const DayCounter &dayCounter, Real gearing=1.0, Spread spread=0.0, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), bool addInflationNotional=false, QuantLib::CPI::InterpolationType interpolation=QuantLib::CPI::InterpolationType::Flat) | |
Real | gearing () const |
index gearing, i.e. multiplicative coefficient for the index | |
Spread | spread () const |
spread paid over the fixing of the underlying index | |
Rate | adjustedFixing () const |
virtual Date | fixingDateNumerator () const |
virtual Date | fixingDateDenumerator () const |
virtual ext::shared_ptr< ZeroInflationIndex > | cpiIndex () const |
virtual Rate | indexFixing () const override |
virtual Date | fixingDate () const override |
bool | addInflationNotional () const |
bool | isInterpolated () const |
QuantLib::CPI::InterpolationType | interpolationType () const |
Visitability | |
ext::shared_ptr< NonStandardYoYInflationCoupon > | underlying_ |
bool | isFloored_ |
bool | isCapped_ |
Rate | cap_ |
Rate | floor_ |
virtual void | accept (AcyclicVisitor &v) override |
bool | isCapped () const |
bool | isFloored () const |
void | setPricer (const ext::shared_ptr< NonStandardYoYInflationCouponPricer > &) |
virtual void | setCommon (Rate cap, Rate floor) |
Additional Inherited Members | |
Protected Member Functions inherited from NonStandardYoYInflationCoupon | |
bool | checkPricerImpl (const ext::shared_ptr< InflationCouponPricer > &) const override |
Protected Attributes inherited from NonStandardYoYInflationCoupon | |
Date | fixingDateNumerator_ |
Date | fixingDateDenumerator_ |
Real | gearing_ |
Spread | spread_ |
bool | addInflationNotional_ |
QuantLib::CPI::InterpolationType | interpolationType_ |
Capped or floored inflation coupon.
Essentially a copy of the nominal version but taking a different index and a set of pricers (not just one).
The payoff \( P \) of a capped inflation-rate coupon with paysWithin = true is:
\[ P = N \times T \times \min(a L + b, C). \]
where \( N \) is the notional, \( T \) is the accrual time, \( L \) is the inflation rate, \( a \) is its gearing, \( b \) is the spread, and \( C \) and \( F \) the strikes.
The payoff of a floored inflation-rate coupon is:
\[ P = N \times T \times \max(a L + b, F). \]
The payoff of a collared inflation-rate coupon is:
\[ P = N \times T \times \min(\max(a L + b, F), C). \]
If paysWithin = false then the inverse is returned (this provides for instrument cap and caplet prices).
They can be decomposed in the following manner. Decomposition of a capped floating rate coupon when paysWithin = true:
\[ R = \min(a L + b, C) = (a L + b) + \min(C - b - \xi |a| L, 0) \]
where \( \xi = sgn(a) \). Then:
\[ R = (a L + b) + |a| \min(\frac{C - b}{|a|} - \xi L, 0) \]