Coupon paying the performance of a CPI (zero inflation) index More...
#include <ql/cashflows/cpicoupon.hpp>
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(), const Date &exCouponDate=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 &) |
![]() | |
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 | |
void | update () |
![]() | |
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 | |
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... | |
bool | tradingExCoupon (const Date &refDate=Date()) const |
returns true if the cashflow is trading ex-coupon on the refDate | |
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 > &) |
void | registerWithObservables (const boost::shared_ptr< Observer > &) |
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_ |
![]() | |
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_ |
Date | exCouponDate_ |
Real | accrualPeriod_ |
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.