CPICoupon Class Reference

Coupon paying the performance of a CPI (zero inflation) index More...

#include <ql/cashflows/cpicoupon.hpp>

Inheritance diagram for CPICoupon:

Public Member Functions

 CPICoupon (Real baseCPI, const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, const boost::shared_ptr< ZeroInflationIndex > &index, const Period &observationLag, CPI::InterpolationType observationInterpolation, const DayCounter &dayCounter, Real fixedRate, Spread spread=0.0, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date())
 
Inspectors
Real fixedRate () const
 fixed rate that will be inflated by the index ratio
 
Spread spread () const
 spread paid over the fixing of the underlying index
 
Rate adjustedFixing () const
 adjusted fixing (already divided by the base fixing)
 
Rate indexFixing () const
 allows for a different interpolation from the index
 
Rate baseCPI () const
 base value for the CPI index More...
 
CPI::InterpolationType observationInterpolation () const
 how do you observe the index? as-is, flat, linear?
 
Rate indexObservation (const Date &onDate) const
 utility method, calls indexFixing
 
boost::shared_ptr
< ZeroInflationIndex
cpiIndex () const
 index used
 
Visitability
virtual void accept (AcyclicVisitor &)
 
- 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())
 
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
 
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())
 
Date date () const
 
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
 
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
 
- 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...
 
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< 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

bool checkPricerImpl (const boost::shared_ptr< InflationCouponPricer > &) const
 makes sure you were given the correct type of pricer
 
Rate indexFixing (const Date &) const
 

Protected Attributes

Real baseCPI_
 
Real fixedRate_
 
Spread spread_
 
CPI::InterpolationType observationInterpolation_
 
- Protected Attributes inherited from InflationCoupon
boost::shared_ptr
< InflationCouponPricer
pricer_
 
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_
 

Detailed Description

Coupon paying the performance of a CPI (zero inflation) index

The performance is relative to the index value on the base date.

The other inflation value is taken from the refPeriodEnd date with observation lag, so any roll/calendar etc. will be built in by the caller. By default this is done in the InflationCoupon which uses ModifiedPreceding with fixing days assumed positive meaning earlier, i.e. always stay in same month (relative to referencePeriodEnd).

This is more sophisticated than an IndexedCashFlow because it does date calculations itself.

Possible enhancements:
we do not do any convexity adjustment for lags different to the natural ZCIIS lag that was used to create the forward inflation curve.

Member Function Documentation

Rate baseCPI ( ) const

base value for the CPI index

Warning:
make sure that the interpolation used to create this is what you are using for the fixing, i.e. the observationInterpolation.