CappedFlooredYoYInflationCoupon Class Reference

Capped or floored inflation coupon. More...

`#include <ql/cashflows/capflooredinflationcoupon.hpp>`

Inheritance diagram for CappedFlooredYoYInflationCoupon:
[legend]

## 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)
Public Member Functions inherited from YoYInflationCoupon
| 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
Public Member Functions inherited from InflationCoupon
| 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(), const Date &exCouponDate=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 ()
Public Member Functions inherited from Coupon
| Coupon (const Date &paymentDate, Real nominal, const Date &accrualStartDate, const Date &accrualEndDate, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date())
Date | date () const
Date | exCouponDate () const
| returns the date that the cash flow trades exCoupon
virtual 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
Date::serial_type | accrualDays () const
| accrual period in days
Time | accruedPeriod (const Date &) const
| accrued period as fraction of year at the given date
Date::serial_type | accruedDays (const Date &) const
| accrued days at the given date
Public Member Functions inherited from CashFlow
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...
bool | tradingExCoupon (const Date &refDate=Date()) const
| returns true if the cashflow is trading ex-coupon on the refDate
Event interface
Visitability
Public Member Functions inherited from Observable
| Observable (const Observable &)
Observable & | operator= (const Observable &)
void | notifyObservers ()
Public Member Functions inherited from Observer
| Observer (const Observer &)
Observer & | operator= (const Observer &)
std::pair< iterator, bool > | registerWith (const boost::shared_ptr< Observable > &)
void | registerWithObservables (const boost::shared_ptr< Observer > &)
Size | unregisterWith (const boost::shared_ptr< Observable > &)
void | unregisterWithAll ()
virtual void | deepUpdate ()

## Protected Member Functions

virtual void | setCommon (Rate cap, Rate floor)
Protected Member Functions inherited from YoYInflationCoupon
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_
Protected Attributes inherited from YoYInflationCoupon
Real | gearing_
Spread | spread_
Protected Attributes inherited from InflationCoupon
boost::shared_ptr< InflationCouponPricer > | pricer_
boost::shared_ptr< InflationIndex > | index_
Period | observationLag_
DayCounter | dayCounter_
Natural | fixingDays_
Protected Attributes inherited from Coupon
Date | paymentDate_
Real | nominal_
Date | accrualStartDate_
Date | accrualEndDate_
Date | refPeriodStart_
Date | refPeriodEnd_
Date | exCouponDate_
Real | accrualPeriod_

## Additional Inherited Members

Public Types inherited from Observer
typedef std::set< boost::shared_ptr< Observable > > | set_type
typedef set_type::iterator | iterator

## Detailed Description

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) \]

## Member Function Documentation

## update()

void update | ( |  | ) |

virtual

This method must be implemented in derived classes. An instance of Observer does not call this method directly: instead, it will be called by the observables the instance registered with when they need to notify any changes.

Implements Observer.