CPISwap Class Reference

### A free/open-source library for quantitative finance

Classes | Public Types | Public Member Functions
CPISwap Class Reference

zero-inflation-indexed swap, More...

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

Inheritance diagram for CPISwap:
[legend]

List of all members.

## Classes
class | arguments
| Arguments for swap calculation More...
class | results
| Results from swap calculation More...
## Public Types
enum | Type { Receiver = -1, Payer = 1 }
## Public Member Functions
| CPISwap (Type type, Real nominal, bool subtractInflationNominal, Spread spread, const DayCounter &floatDayCount, const Schedule &floatSchedule, const BusinessDayConvention &floatRoll, Natural fixingDays, const boost::shared_ptr< IborIndex > &floatIndex, Rate fixedRate, Real baseCPI, const DayCounter &fixedDayCount, const Schedule &fixedSchedule, const BusinessDayConvention &fixedRoll, const Period &observationLag, const boost::shared_ptr< ZeroInflationIndex > &fixedIndex, CPI::InterpolationType observationInterpolation=CPI::AsIndex, Real inflationNominal=Null< Real >())
virtual Real | floatLegNPV () const
virtual Spread | fairSpread () const
virtual Real | fixedLegNPV () const
virtual Rate | fairRate () const
virtual Type | type () const
virtual Real | nominal () const
virtual bool | subtractInflationNominal () const
virtual Spread | spread () const
virtual const DayCounter & | floatDayCount () const
virtual const Schedule & | floatSchedule () const
virtual const BusinessDayConvention & | floatPaymentRoll () const
virtual Natural | fixingDays () const
virtual const boost::shared_ptr< IborIndex > & | floatIndex () const
virtual Rate | fixedRate () const
virtual Real | baseCPI () const
virtual const DayCounter & | fixedDayCount () const
virtual const Schedule & | fixedSchedule () const
virtual const BusinessDayConvention & | fixedPaymentRoll () const
virtual Period | observationLag () const
virtual const boost::shared_ptr < ZeroInflationIndex > & | fixedIndex () const
virtual CPI::InterpolationType | observationInterpolation () const
virtual Real | inflationNominal () const
virtual const Leg & | cpiLeg () const
virtual const Leg & | floatLeg () const
void | setupArguments (PricingEngine::arguments *args) const
void | fetchResults (const PricingEngine::results *) const

## Detailed Description

zero-inflation-indexed swap,

fixed x zero-inflation, i.e. fixed x CPI(i'th fixing)/CPI(base) versus floating + spread

Note that this does ony the inflation-vs-floating-leg. Extension to inflation-vs-fixed-leg. is simple - just replace the floating leg with a fixed leg.

Typically there are notional exchanges at the end: either inflated-notional vs notional; or just (inflated-notional - notional) vs zero. The latter is perhaphs more typical.

Warning:
  Setting subtractInflationNominal to true means that the original inflation nominal is subtracted from both nominals before they are exchanged, even if they are different.

This swap can mimic a ZCIIS where [(1+q)^n - 1] is exchanged against (cpi ratio - 1), by using differnt nominals on each leg and setting subtractInflationNominal to true. ALSO - there must be just one date in each schedule.

The two legs can have different schedules, fixing (days vs lag), settlement, and roll conventions. N.B. accrual adjustment periods are already in the schedules. Trade date and swap settlement date are outside the scope of the instrument.

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

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 Swap.