CPICapFloor − CPI cap or floor.

`#include <ql/instruments/cpicapfloor.hpp>`

Inherits **Instrument**.

**Public Member Functions**

**CPICapFloor** (Option::Type type, **Real** nominal, const **Date** &startDate, **Real** baseCPI, const **Date** &maturity, const **Calendar** &fixCalendar, **BusinessDayConvention** fixConvention, const **Calendar** &payCalendar, **BusinessDayConvention** payConvention, **Rate strike**, const **Handle**< **ZeroInflationIndex** > &infIndex, const **Period** &observationLag, CPI::InterpolationType observationInterpolation=CPI::AsIndex)

**Inspectors**

Option::Type **type** () const **
Real nominal** () const

Rate strike

$ K $ in the above formula.

Date fixingDate

Date payDate

Handle

Period observationLag

**Instrument interface**

bool **isExpired** () const

returns whether the instrument might have value greater than zero.

void **setupArguments** (PricingEngine::arguments *) const

void **fetchResults** (const PricingEngine::results *r) const

**Protected Attributes**

Option::Type **type_
Real nominal_
Date startDate_
Date fixDate_
Date payDate_
Real baseCPI_
Date maturity_
Calendar fixCalendar_
BusinessDayConvention fixConvention_
Calendar payCalendar_
BusinessDayConvention payConvention_
Rate strike_
Handle**<

Period observationLag_

CPI::InterpolationType

**Additional Inherited Members**

CPI cap or floor.

Quoted as a fixed strike rate $ K $. **Payoff**: P_n(0,T) x(y (Night]), 0) ] where $ T $ is the [(1+K)^{T}-1] - N t[ ac{I(T)}{I(0)} -1 maturity time, $ P_n(0,t) $ is the nominal discount factor at time $ t $, $ N $ is the notional, and $ I(t) $ is the inflation index value at time $ t $.

Inflation is generally available on every day, including holidays and weekends. Hence there is a variable to state whether the observe/fix dates for inflation are adjusted or not. The default is not to adjust.

N.B. a cpi cap or floor is an option, not a cap or floor on a coupon. Thus this is very similar to a ZCIIS and has a single flow, this is as usual for cpi because it is cumulative up to option maturity from base date.

We do not inherit from **Option**, although this would be reasonable, because we do not have that degree of generality.

**void setupArguments (PricingEngine::arguments *) const** `[virtual]`

When a derived argument structure is defined for an instrument, this method should be overridden to fill it. This is mandatory in case a pricing engine is used.

Reimplemented from **Instrument**.

**void fetchResults (const PricingEngine::results * r) const** `[virtual]`

When a derived result structure is defined for an instrument, this method should be overridden to read from it. This is mandatory in case a pricing engine is used.

Reimplemented from **Instrument**.

Generated automatically by Doxygen for QuantLib from the source code.