ZeroCouponInflationSwap Class Reference

Zero-coupon inflation-indexed swap. More...

#include <ql/instruments/zerocouponinflationswap.hpp>

Inheritance diagram for ZeroCouponInflationSwap:

List of all members.

Public Types

enum  Type { Receiver = -1, Payer = 1 }

Public Member Functions

 ZeroCouponInflationSwap (Type type, Real nominal, const Date &startDate, const Date &maturity, const Calendar &fixCalendar, BusinessDayConvention fixConvention, const DayCounter &dayCounter, Rate fixedRate, boost::shared_ptr< ZeroInflationIndex > &infIndex, const Period &observationLag, bool adjustInfObsDates=false, Calendar infCalendar=Calendar(), BusinessDayConvention infConvention=BusinessDayConvention())
Inspectors
Type type () const
 "payer" or "receiver" refer to the inflation-indexed leg
Real nominal () const
Rate fixedRate () const
 $ K $ in the above formula.
boost::shared_ptr
< ZeroInflationIndex
inflationIndex () const
Period observationLag () const
DayCounter dayCounter () const
Leg & fixedLeg () const
 just one cashflow (that is not a coupon) in each leg
Leg & inflationLeg () const
 just one cashflow (that is not a coupon) in each leg
Instrument interface
void setupArguments (PricingEngine::arguments *) const
void fetchResults (const PricingEngine::results *r) const
Results
Real fixedLegNPV () const
Real inflationLegNPV () const
Real fairRate () const

Protected Attributes

Type type_
Real nominal_
Rate fixedRate_
boost::shared_ptr
< ZeroInflationIndex
infIndex_
Period observationLag_
DayCounter dayCounter_
Date baseDate_
Date obsDate_


Detailed Description

Zero-coupon inflation-indexed swap.

Quoted as a fixed rate $ K $. At start:

\[ P_n(0,T) N [(1+K)^{T}-1] = P_n(0,T) N \left[ \frac{I(T)}{I(0)} -1 \right] \]

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

This inherits from swap and has two very simple legs: a fixed leg, from the quote (K); and an indexed leg. At maturity the two single cashflows are swapped. These are the notional versus the inflation-indexed notional Because the coupons are zero there are no accruals (and no coupons).

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.

A zero inflation swap is a simple enough instrument that the standard discounting pricing engine that works for a vanilla swap also works.

Note:
we do not need Schedules on the legs because they use one or two dates only per leg.

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.