CPICapFloorTermPriceSurface Class Referenceabstract

Provides cpi cap/floor prices by interpolation and put/call parity (not cap/floor/swap* parity). More...

#include <ql/experimental/inflation/cpicapfloortermpricesurface.hpp>

Inheritance diagram for CPICapFloorTermPriceSurface:

Public Member Functions

 CPICapFloorTermPriceSurface (Real nominal, Real baseRate, const Period &observationLag, const Calendar &cal, const BusinessDayConvention &bdc, const DayCounter &dc, const Handle< ZeroInflationIndex > &zii, const Handle< YieldTermStructure > &yts, const std::vector< Rate > &cStrikes, const std::vector< Rate > &fStrikes, const std::vector< Period > &cfMaturities, const Matrix &cPrice, const Matrix &fPrice)
 
Handle< ZeroInflationIndexzeroInflationIndex () const
 is based on
 
virtual std::vector< Ratestrikes () const
 
virtual std::vector< RatecapStrikes () const
 
virtual std::vector< RatefloorStrikes () const
 
virtual std::vector< Periodmaturities () const
 
virtual const MatrixcapPrices () const
 
virtual const MatrixfloorPrices () const
 
virtual Rate minStrike () const
 
virtual Rate maxStrike () const
 
virtual Date minDate () const
 
virtual Date maxDate () const
 the latest date for which the curve can return values
 
virtual Date cpiOptionDateFromTenor (const Period &p) const
 
InflationTermStructure interface
Period observationLag () const
 
Date baseDate () const
 minimum (base) date More...
 
virtual Real nominal () const
 inspectors More...
 
virtual BusinessDayConvention businessDayConvention () const
 
virtual Real price (const Period &d, Rate k) const
 
virtual Real capPrice (const Period &d, Rate k) const
 
virtual Real floorPrice (const Period &d, Rate k) const
 
virtual Real price (const Date &d, Rate k) const =0
 
virtual Real capPrice (const Date &d, Rate k) const =0
 
virtual Real floorPrice (const Date &d, Rate k) const =0
 
- Public Member Functions inherited from InflationTermStructure
void setSeasonality (const boost::shared_ptr< Seasonality > &seasonality=boost::shared_ptr< Seasonality >())
 Functions to set and get seasonality. More...
 
boost::shared_ptr< Seasonalityseasonality () const
 
bool hasSeasonality () const
 
 InflationTermStructure (Rate baseRate, const Period &observationLag, Frequency frequency, bool indexIsInterpolated, const Handle< YieldTermStructure > &yTS, const DayCounter &dayCounter=DayCounter(), const boost::shared_ptr< Seasonality > &seasonality=boost::shared_ptr< Seasonality >())
 
 InflationTermStructure (const Date &referenceDate, Rate baseRate, const Period &observationLag, Frequency frequency, bool indexIsInterpolated, const Handle< YieldTermStructure > &yTS, const Calendar &calendar=Calendar(), const DayCounter &dayCounter=DayCounter(), const boost::shared_ptr< Seasonality > &seasonality=boost::shared_ptr< Seasonality >())
 
 InflationTermStructure (Natural settlementDays, const Calendar &calendar, Rate baseRate, const Period &observationLag, Frequency frequency, bool indexIsInterpolated, const Handle< YieldTermStructure > &yTS, const DayCounter &dayCounter=DayCounter(), const boost::shared_ptr< Seasonality > &seasonality=boost::shared_ptr< Seasonality >())
 
virtual Frequency frequency () const
 
virtual bool indexIsInterpolated () const
 
virtual Rate baseRate () const
 
virtual Handle
< YieldTermStructure
nominalTermStructure () const
 
- Public Member Functions inherited from TermStructure
 TermStructure (const DayCounter &dc=DayCounter())
 default constructor More...
 
 TermStructure (const Date &referenceDate, const Calendar &calendar=Calendar(), const DayCounter &dc=DayCounter())
 initialize with a fixed reference date
 
 TermStructure (Natural settlementDays, const Calendar &, const DayCounter &dc=DayCounter())
 calculate the reference date based on the global evaluation date
 
virtual DayCounter dayCounter () const
 the day counter used for date/time conversion
 
Time timeFromReference (const Date &date) const
 date/time conversion
 
virtual Time maxTime () const
 the latest time for which the curve can return values
 
virtual const DatereferenceDate () const
 the date at which discount = 1.0 and/or variance = 0.0
 
virtual Calendar calendar () const
 the calendar used for reference and/or option date calculation
 
virtual Natural settlementDays () const
 the settlementDays used for reference date calculation
 
void update ()
 
- 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 ()
 
- Public Member Functions inherited from Observable
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
void notifyObservers ()
 
- Public Member Functions inherited from Extrapolator
void enableExtrapolation (bool b=true)
 enable extrapolation in subsequent calls
 
void disableExtrapolation (bool b=true)
 disable extrapolation in subsequent calls
 
bool allowsExtrapolation () const
 tells whether extrapolation is enabled
 

Protected Member Functions

virtual bool checkStrike (Rate K)
 
virtual bool checkMaturity (const Date &d)
 
- Protected Member Functions inherited from InflationTermStructure
virtual void setBaseRate (const Rate &r)
 
void checkRange (const Date &, bool extrapolate) const
 
void checkRange (Time t, bool extrapolate) const
 
- Protected Member Functions inherited from TermStructure
void checkRange (const Date &d, bool extrapolate) const
 date-range check
 
void checkRange (Time t, bool extrapolate) const
 time-range check
 

Protected Attributes

Handle< ZeroInflationIndexzii_
 
std::vector< RatecStrikes_
 
std::vector< RatefStrikes_
 
std::vector< PeriodcfMaturities_
 
std::vector< RealcfMaturityTimes_
 
Matrix cPrice_
 
Matrix fPrice_
 
std::vector< RatecfStrikes_
 
- Protected Attributes inherited from InflationTermStructure
boost::shared_ptr< Seasonalityseasonality_
 
Period observationLag_
 
Frequency frequency_
 
bool indexIsInterpolated_
 
Rate baseRate_
 
Handle< YieldTermStructurenominalTermStructure_
 
- Protected Attributes inherited from TermStructure
bool moving_
 
bool updated_
 
Calendar calendar_
 

Detailed Description

Provides cpi cap/floor prices by interpolation and put/call parity (not cap/floor/swap* parity).

The inflation index MUST contain a ZeroInflationTermStructure as this is used to create ATM. Unlike YoY price surfaces we assume that 1) an ATM ZeroInflationTermStructure is available and 2) that it is safe to use it. This is supported by the fact that no stripping is required for CPI cap/floors as they only give one flow.

cpi cap/floors have a single (one) flow (unlike nominal caps) because they observe cumulative inflation up to their maturity. Options are on CPI(T)/CPI(0) but strikes are quoted for yearly average inflation, so require transformation via (1+quote)^T to obtain actual strikes. These are consistent with ZCIIS quoting conventions.

The observationLag is that for the referenced instrument prices. Strikes are as-quoted not as-used.

Member Function Documentation

Period observationLag ( ) const
virtual

The TS observes with a lag that is usually different from the availability lag of the index. An inflation rate is given, by default, for the maturity requested assuming this lag.

Reimplemented from InflationTermStructure.

Date baseDate ( ) const
virtual

minimum (base) date

Important in inflation since it starts before nominal reference date. Changes depending whether index is interpolated or not. When interpolated the base date is just observation lag before nominal. When not interpolated it is the beginning of the relevant period (hence it is easy to create interpolated fixings from a not-interpolated curve because interpolation, usually, of fixings is forward looking).

Implements InflationTermStructure.

Real nominal ( ) const
virtual

inspectors

Note
you don't know if price() is a cap or a floor without checking the ZeroInflation ATM level.
virtual Real price ( const Period d,
Rate  k 
) const
virtual
Warning:
you MUST remind the compiler in any descendants with the using:: mechanism because you overload the names remember that the strikes use the quoting convention