QuantLib
A free/open-source library for quantitative finance
Reference manual - version 1.12
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
CappedFlooredYoYInflationCoupon Class Reference

Capped or floored inflation coupon. More...

#include <ql/cashflows/capflooredinflationcoupon.hpp>

+ Inheritance diagram for CappedFlooredYoYInflationCoupon:

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< InflationCouponPricerpricer () 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 DateaccrualStartDate () const
 start of the accrual period
 
const DateaccrualEndDate () const
 end of the accrual period
 
const DatereferencePeriodStart () const
 start date of the reference period
 
const DatereferencePeriodEnd () 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 &)
 
Observableoperator= (const Observable &)
 
void notifyObservers ()
 
- Public Member Functions inherited from Observer
 Observer (const Observer &)
 
Observeroperator= (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< YoYInflationCouponunderlying_
 
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< InflationCouponPricerpricer_
 
boost::shared_ptr< InflationIndexindex_
 
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.