- QuantLib
- CPISwap
zero-inflation-indexed swap, More...
#include <ql/instruments/cpiswap.hpp>
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 |
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.
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.
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.