- QuantLib
- ZeroCouponInflationSwap
 
Zero-coupon inflation-indexed swap. More...
#include <ql/instruments/zerocouponinflationswap.hpp>

| 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, const 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 | 
| Date | startDate () const | 
| Date | maturityDate () const | 
| Calendar | fixedCalendar () const | 
| BusinessDayConvention | fixedConvention () const | 
| DayCounter | dayCounter () const | 
| Rate | fixedRate () const | 
|  in the above formula. | |
| boost::shared_ptr < ZeroInflationIndex > | inflationIndex () const | 
| Period | observationLag () const | 
| bool | adjustObservationDates () const | 
| Calendar | inflationCalendar () const | 
| BusinessDayConvention | inflationConvention () const | 
| const Leg & | fixedLeg () const | 
| just one cashflow (that is not a coupon) in each leg | |
| const 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_ | 
| Date | startDate_ | 
| Date | maturityDate_ | 
| Calendar | fixCalendar_ | 
| BusinessDayConvention | fixConvention_ | 
| Rate | fixedRate_ | 
| boost::shared_ptr < ZeroInflationIndex > | infIndex_ | 
| Period | observationLag_ | 
| bool | adjustInfObsDates_ | 
| Calendar | infCalendar_ | 
| BusinessDayConvention | infConvention_ | 
| DayCounter | dayCounter_ | 
| Date | baseDate_ | 
| Date | obsDate_ | 
Zero-coupon inflation-indexed swap.
Quoted as a fixed rate  . At start:
. At start: 
![\[ P_n(0,T) N [(1+K)^{T}-1] = P_n(0,T) N \left[ \frac{I(T)}{I(0)} -1 \right] \]](form_160.png) 
 where  is the maturity time,
 is the maturity time,  is the nominal discount factor at time
 is the nominal discount factor at time  ,
,  is the notional, and
 is the notional, and  is the inflation index value at time
 is the inflation index value at time  .
.
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.
| 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.