QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
List of all members
CPICoupon Class Reference

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

#include <cpicoupon.hpp>

+ Inheritance diagram for CPICoupon:
+ Collaboration diagram for CPICoupon:

Public Member Functions

Constructors
 CPICoupon (Real baseCPI, const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, const ext::shared_ptr< ZeroInflationIndex > &index, const Period &observationLag, CPI::InterpolationType observationInterpolation, const DayCounter &dayCounter, Real fixedRate, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date())
 
 CPICoupon (const Date &baseDate, const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, const ext::shared_ptr< ZeroInflationIndex > &index, const Period &observationLag, CPI::InterpolationType observationInterpolation, const DayCounter &dayCounter, Real fixedRate, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date())
 
 CPICoupon (Real baseCPI, const Date &baseDate, const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, const ext::shared_ptr< ZeroInflationIndex > &index, const Period &observationLag, CPI::InterpolationType observationInterpolation, const DayCounter &dayCounter, Real fixedRate, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date())
 
QL_DEPRECATED CPICoupon (Real baseCPI, const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, const ext::shared_ptr< ZeroInflationIndex > &index, const Period &observationLag, CPI::InterpolationType observationInterpolation, const DayCounter &dayCounter, Real fixedRate, Spread spread, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date())
 
QL_DEPRECATED CPICoupon (const Date &baseDate, const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, const ext::shared_ptr< ZeroInflationIndex > &index, const Period &observationLag, CPI::InterpolationType observationInterpolation, const DayCounter &dayCounter, Real fixedRate, Spread spread, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date())
 
QL_DEPRECATED CPICoupon (Real baseCPI, const Date &baseDate, const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, const ext::shared_ptr< ZeroInflationIndex > &index, const Period &observationLag, CPI::InterpolationType observationInterpolation, const DayCounter &dayCounter, Real fixedRate, Spread spread, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date())
 
QL_DEPRECATED_DISABLE_WARNING ~CPICoupon () override=default
 
Inspectors
Real fixedRate () const
 fixed rate that will be inflated by the index ratio More...
 
Spread spread () const
 
Rate baseCPI () const
 base value for the CPI index More...
 
Date baseDate () const
 base date for the base fixing of the CPI index More...
 
CPI::InterpolationType observationInterpolation () const
 how do you observe the index? as-is, flat, linear? More...
 
ext::shared_ptr< ZeroInflationIndexcpiIndex () const
 index used More...
 
Calculations
Real accruedAmount (const Date &) const override
 accrued amount at the given date More...
 
Rate indexFixing () const override
 the index value observed (with a lag) at the end date More...
 
Rate indexRatio (Date d) const
 the ratio between the index fixing at the passed date and the base CPI More...
 
Rate adjustedIndexGrowth () const
 the ratio between the end index fixing and the base CPI More...
 
- Public Member Functions inherited from InflationCoupon
 InflationCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, ext::shared_ptr< InflationIndex > index, const Period &observationLag, DayCounter dayCounter, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date())
 
Real amount () const override
 returns the amount of the cash flow More...
 
Real price (const Handle< YieldTermStructure > &discountingCurve) const
 
DayCounter dayCounter () const override
 day counter for accrual calculation More...
 
Real accruedAmount (const Date &) const override
 accrued amount at the given date More...
 
Rate rate () const override
 accrued rate More...
 
const ext::shared_ptr< InflationIndex > & index () const
 yoy inflation index More...
 
Period observationLag () const
 how the coupon observes the index More...
 
Natural fixingDays () const
 fixing days More...
 
virtual Date fixingDate () const
 fixing date More...
 
void performCalculations () const override
 
void accept (AcyclicVisitor &) override
 
void setPricer (const ext::shared_ptr< InflationCouponPricer > &)
 
ext::shared_ptr< InflationCouponPricerpricer () const
 
- 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 override
 
Date exCouponDate () const override
 returns the date that the cash flow trades exCoupon More...
 
virtual Real nominal () const
 
const DateaccrualStartDate () const
 start of the accrual period More...
 
const DateaccrualEndDate () const
 end of the accrual period More...
 
const DatereferencePeriodStart () const
 start date of the reference period More...
 
const DatereferencePeriodEnd () const
 end date of the reference period More...
 
Time accrualPeriod () const
 accrual period as fraction of year More...
 
Date::serial_type accrualDays () const
 accrual period in days More...
 
Time accruedPeriod (const Date &) const
 accrued period as fraction of year at the given date More...
 
Date::serial_type accruedDays (const Date &) const
 accrued days at the given date More...
 
- Public Member Functions inherited from CashFlow
 ~CashFlow () override=default
 
bool hasOccurred (const Date &refDate=Date(), ext::optional< bool > includeRefDate=ext::nullopt) const override
 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 More...
 
- Public Member Functions inherited from Event
 ~Event () override=default
 
- Public Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (Observable &&)=delete
 
virtual ~Observable ()=default
 
void notifyObservers ()
 
- Public Member Functions inherited from LazyObject
 LazyObject ()
 
 ~LazyObject () override=default
 
void update () override
 
bool isCalculated () const
 
void forwardFirstNotificationOnly ()
 
void alwaysForwardNotifications ()
 
void recalculate ()
 
void freeze ()
 
void unfreeze ()
 
- Public Member Functions inherited from Observer
 Observer ()=default
 
 Observer (const Observer &)
 
Observeroperator= (const Observer &)
 
virtual ~Observer ()
 
std::pair< iterator, boolregisterWith (const ext::shared_ptr< Observable > &)
 
void registerWithObservables (const ext::shared_ptr< Observer > &)
 
Size unregisterWith (const ext::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 
virtual void update ()=0
 
virtual void deepUpdate ()
 

Visitability

Real baseCPI_
 
Real fixedRate_
 
Spread spread_
 
CPI::InterpolationType observationInterpolation_
 
Date baseDate_
 
void accept (AcyclicVisitor &) override
 
bool checkPricerImpl (const ext::shared_ptr< InflationCouponPricer > &) const override
 makes sure you were given the correct type of pricer More...
 

Additional Inherited Members

- Public Types inherited from Observer
typedef set_type::iterator iterator
 
- Protected Member Functions inherited from InflationCoupon
- Protected Member Functions inherited from LazyObject
virtual void calculate () const
 
- Protected Attributes inherited from InflationCoupon
ext::shared_ptr< InflationCouponPricerpricer_
 
ext::shared_ptr< InflationIndexindex_
 
Period observationLag_
 
DayCounter dayCounter_
 
Natural fixingDays_
 
Real rate_
 
- Protected Attributes inherited from Coupon
Date paymentDate_
 
Real nominal_
 
Date accrualStartDate_
 
Date accrualEndDate_
 
Date refPeriodStart_
 
Date refPeriodEnd_
 
Date exCouponDate_
 
Real accrualPeriod_
 
- Protected Attributes inherited from LazyObject
bool calculated_ = false
 
bool frozen_ = false
 
bool alwaysForward_
 

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.

Definition at line 55 of file cpicoupon.hpp.

Constructor & Destructor Documentation

◆ CPICoupon() [1/6]

QL_DEPRECATED_DISABLE_WARNING CPICoupon ( Real  baseCPI,
const Date paymentDate,
Real  nominal,
const Date startDate,
const Date endDate,
const ext::shared_ptr< ZeroInflationIndex > &  index,
const Period observationLag,
CPI::InterpolationType  observationInterpolation,
const DayCounter dayCounter,
Real  fixedRate,
const Date refPeriodStart = Date(),
const Date refPeriodEnd = Date(),
const Date exCouponDate = Date() 
)

Definition at line 34 of file cpicoupon.cpp.

◆ CPICoupon() [2/6]

CPICoupon ( const Date baseDate,
const Date paymentDate,
Real  nominal,
const Date startDate,
const Date endDate,
const ext::shared_ptr< ZeroInflationIndex > &  index,
const Period observationLag,
CPI::InterpolationType  observationInterpolation,
const DayCounter dayCounter,
Real  fixedRate,
const Date refPeriodStart = Date(),
const Date refPeriodEnd = Date(),
const Date exCouponDate = Date() 
)

Definition at line 51 of file cpicoupon.cpp.

◆ CPICoupon() [3/6]

CPICoupon ( Real  baseCPI,
const Date baseDate,
const Date paymentDate,
Real  nominal,
const Date startDate,
const Date endDate,
const ext::shared_ptr< ZeroInflationIndex > &  index,
const Period observationLag,
CPI::InterpolationType  observationInterpolation,
const DayCounter dayCounter,
Real  fixedRate,
const Date refPeriodStart = Date(),
const Date refPeriodEnd = Date(),
const Date exCouponDate = Date() 
)

Definition at line 68 of file cpicoupon.cpp.

◆ CPICoupon() [4/6]

CPICoupon ( Real  baseCPI,
const Date paymentDate,
Real  nominal,
const Date startDate,
const Date endDate,
const ext::shared_ptr< ZeroInflationIndex > &  index,
const Period observationLag,
CPI::InterpolationType  observationInterpolation,
const DayCounter dayCounter,
Real  fixedRate,
Spread  spread,
const Date refPeriodStart = Date(),
const Date refPeriodEnd = Date(),
const Date exCouponDate = Date() 
)
Deprecated:
Use one of the constructors without spread. Deprecated in version 1.31.

Definition at line 86 of file cpicoupon.cpp.

◆ CPICoupon() [5/6]

CPICoupon ( const Date baseDate,
const Date paymentDate,
Real  nominal,
const Date startDate,
const Date endDate,
const ext::shared_ptr< ZeroInflationIndex > &  index,
const Period observationLag,
CPI::InterpolationType  observationInterpolation,
const DayCounter dayCounter,
Real  fixedRate,
Spread  spread,
const Date refPeriodStart = Date(),
const Date refPeriodEnd = Date(),
const Date exCouponDate = Date() 
)
Deprecated:
Use one of the constructors without spread. Deprecated in version 1.31.

Definition at line 104 of file cpicoupon.cpp.

◆ CPICoupon() [6/6]

CPICoupon ( Real  baseCPI,
const Date baseDate,
const Date paymentDate,
Real  nominal,
const Date startDate,
const Date endDate,
const ext::shared_ptr< ZeroInflationIndex > &  index,
const Period observationLag,
CPI::InterpolationType  observationInterpolation,
const DayCounter dayCounter,
Real  fixedRate,
Spread  spread,
const Date refPeriodStart = Date(),
const Date refPeriodEnd = Date(),
const Date exCouponDate = Date() 
)
Deprecated:
Use one of the constructors without spread. Deprecated in version 1.31.

Definition at line 122 of file cpicoupon.cpp.

+ Here is the call graph for this function:

◆ ~CPICoupon()

Member Function Documentation

◆ fixedRate()

Real fixedRate ( ) const

fixed rate that will be inflated by the index ratio

Definition at line 338 of file cpicoupon.hpp.

+ Here is the caller graph for this function:

◆ spread()

Real spread ( ) const
Deprecated:
Do not use this method. A spread doesn't make sense for this coupon. Deprecated in version 1.31.

Definition at line 342 of file cpicoupon.hpp.

+ Here is the caller graph for this function:

◆ baseCPI()

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.

Definition at line 358 of file cpicoupon.hpp.

+ Here is the caller graph for this function:

◆ baseDate()

Date baseDate ( ) const

base date for the base fixing of the CPI index

Definition at line 362 of file cpicoupon.hpp.

+ Here is the caller graph for this function:

◆ observationInterpolation()

CPI::InterpolationType observationInterpolation ( ) const

how do you observe the index? as-is, flat, linear?

Definition at line 366 of file cpicoupon.hpp.

+ Here is the caller graph for this function:

◆ cpiIndex()

ext::shared_ptr< ZeroInflationIndex > cpiIndex ( ) const

index used

Definition at line 370 of file cpicoupon.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ accruedAmount()

Real accruedAmount ( const Date ) const
overridevirtual

accrued amount at the given date

Implements Coupon.

Definition at line 161 of file cpicoupon.cpp.

+ Here is the call graph for this function:

◆ indexFixing()

Rate indexFixing ( ) const
overridevirtual

the index value observed (with a lag) at the end date

Reimplemented from InflationCoupon.

Definition at line 354 of file cpicoupon.hpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ indexRatio()

Rate indexRatio ( Date  d) const

the ratio between the index fixing at the passed date and the base CPI

No adjustments are applied

Definition at line 172 of file cpicoupon.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adjustedIndexGrowth()

Rate adjustedIndexGrowth ( ) const

the ratio between the end index fixing and the base CPI

This might include adjustments calculated by the pricer

Definition at line 348 of file cpicoupon.hpp.

+ Here is the call graph for this function:

◆ accept()

QL_DEPRECATED_ENABLE_WARNING void accept ( AcyclicVisitor v)
overridevirtual

Reimplemented from Coupon.

Definition at line 153 of file cpicoupon.cpp.

+ Here is the call graph for this function:

◆ checkPricerImpl()

bool checkPricerImpl ( const ext::shared_ptr< InflationCouponPricer > &  ) const
overrideprotectedvirtual

makes sure you were given the correct type of pricer

Implements InflationCoupon.

Definition at line 191 of file cpicoupon.cpp.

+ Here is the call graph for this function:

Member Data Documentation

◆ baseCPI_

Real baseCPI_
protected

Definition at line 214 of file cpicoupon.hpp.

◆ fixedRate_

Real fixedRate_
protected

Definition at line 215 of file cpicoupon.hpp.

◆ spread_

Spread spread_
protected
Deprecated:
Don't use this data member. A spread doesn't make sense for this coupon. Deprecated in version 1.31.

Definition at line 220 of file cpicoupon.hpp.

◆ observationInterpolation_

CPI::InterpolationType observationInterpolation_
protected

Definition at line 221 of file cpicoupon.hpp.

◆ baseDate_

Date baseDate_
protected

Definition at line 222 of file cpicoupon.hpp.