# QuantLib_CPICapFloor man page

CPICapFloor — CPI cap or floor.

## Synopsis

`#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** () const

$ K $ in the above formula. **Date fixingDate** () const**Date payDate** () const**Handle**< **ZeroInflationIndex** > **inflationIndex** () const**Period observationLag** () const

**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**< **ZeroInflationIndex** > **infIndex_****Period observationLag_**

CPI::InterpolationType **observationInterpolation_**

### Additional Inherited Members

## Detailed Description

CPI cap or floor.

Quoted as a fixed strike rate $ K $. **Payoff**: [ P_n(0,T) max(y (N [(1+K)^{T}-1] - N left[ ac{I(T)}{I(0)} -1 right]), 0) ] where $ T $ is the 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.

## Member Function Documentation

### 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**.

## Author

Generated automatically by Doxygen for QuantLib from the source code.

## Referenced By

The man pages CPICapFloor(3), fixCalendar_(3), fixConvention_(3), fixDate_(3), infIndex_(3), inflationIndex(3), maturity_(3), payCalendar_(3), payConvention_(3), payDate(3), payDate_(3), startDate_(3), strike(3) and type_(3) are aliases of QuantLib_CPICapFloor(3).