Capped or floored inflation coupon. More...
#include <ql/cashflows/capflooredinflationcoupon.hpp>
Public Member Functions | |
CappedFlooredYoYInflationCoupon (const boost::shared_ptr< YoYInflationCoupon > &underlying, Rate cap=Null< Rate >(), Rate floor=Null< Rate >()) | |
CappedFlooredYoYInflationCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, const boost::shared_ptr< YoYInflationIndex > &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 | isCapped () const |
bool | isFloored () const |
void | setPricer (const boost::shared_ptr< YoYInflationCouponPricer > &) |
augmented Coupon interface | |
Rate | rate () const |
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 () |
Visitability | |
virtual void | accept (AcyclicVisitor &v) |
![]() | |
YoYInflationCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, const boost::shared_ptr< YoYInflationIndex > &index, const Period &observationLag, const DayCounter &dayCounter, Real gearing=1.0, Spread spread=0.0, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date()) | |
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 |
const boost::shared_ptr < YoYInflationIndex > & | yoyIndex () const |
![]() | |
InflationCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, const boost::shared_ptr< InflationIndex > &index, const Period &observationLag, const DayCounter &dayCounter, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date()) | |
void | setPricer (const boost::shared_ptr< InflationCouponPricer > &) |
boost::shared_ptr < InflationCouponPricer > | pricer () const |
Real | amount () const |
returns the amount of the cash flow More... | |
Real | price (const Handle< YieldTermStructure > &discountingCurve) const |
DayCounter | dayCounter () const |
day counter for accrual calculation | |
Real | accruedAmount (const Date &) const |
accrued amount at the given date | |
Rate | rate () const |
accrued rate | |
const boost::shared_ptr < InflationIndex > & | index () const |
yoy inflation index | |
Period | observationLag () const |
how the coupon observes the index | |
Natural | fixingDays () const |
fixing days | |
virtual Date | fixingDate () const |
fixing date | |
virtual Rate | indexFixing () const |
fixing of the underlying index, as observed by the coupon | |
void | update () |
![]() | |
Coupon (const Date &paymentDate, Real nominal, const Date &accrualStartDate, const Date &accrualEndDate, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date()) | |
Date | date () const |
Real | nominal () const |
const Date & | accrualStartDate () const |
start of the accrual period | |
const Date & | accrualEndDate () const |
end of the accrual period | |
const Date & | referencePeriodStart () const |
start date of the reference period | |
const Date & | referencePeriodEnd () const |
end date of the reference period | |
Time | accrualPeriod () const |
accrual period as fraction of year | |
BigInteger | accrualDays () const |
accrual period in days | |
Time | accruedPeriod (const Date &) const |
accrued period as fraction of year at the given date | |
BigInteger | accruedDays (const Date &) const |
accrued days at the given date | |
![]() | |
bool | hasOccurred (const Date &refDate=Date(), boost::optional< bool > includeRefDate=boost::none) const |
returns true if an event has already occurred before a date More... | |
Event interface | |
Visitability | |
![]() | |
Observable (const Observable &) | |
Observable & | operator= (const Observable &) |
void | notifyObservers () |
![]() | |
Observer (const Observer &) | |
Observer & | operator= (const Observer &) |
std::pair< std::set < boost::shared_ptr < Observable > >::iterator, bool > | registerWith (const boost::shared_ptr< Observable > &) |
Size | unregisterWith (const boost::shared_ptr< Observable > &) |
void | unregisterWithAll () |
Protected Member Functions | |
virtual void | setCommon (Rate cap, Rate floor) |
![]() | |
bool | checkPricerImpl (const boost::shared_ptr< InflationCouponPricer > &) const |
makes sure you were given the correct type of pricer | |
Protected Attributes | |
boost::shared_ptr < YoYInflationCoupon > | underlying_ |
bool | isFloored_ |
bool | isCapped_ |
Rate | cap_ |
Rate | floor_ |
![]() | |
Real | gearing_ |
Spread | spread_ |
![]() | |
boost::shared_ptr < InflationCouponPricer > | pricer_ |
boost::shared_ptr< InflationIndex > | index_ |
Period | observationLag_ |
DayCounter | dayCounter_ |
Natural | fixingDays_ |
![]() | |
Date | paymentDate_ |
Real | nominal_ |
Date | accrualStartDate_ |
Date | accrualEndDate_ |
Date | refPeriodStart_ |
Date | refPeriodEnd_ |
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 of a capped inflation-rate coupon with paysWithin = true is:
where is the notional,
is the accrual time,
is the inflation rate,
is its gearing,
is the spread, and
and
the strikes.
The payoff of a floored inflation-rate coupon is:
The payoff of a collared inflation-rate coupon is:
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:
where . Then: