|
QuantLib: a free/open-source library for quantitative finance
Reference manual - version 1.40
|
Zero-coupon inflation-indexed swap. More...
#include <ql/instruments/zerocouponinflationswap.hpp>
Public Member Functions | |
| ZeroCouponInflationSwap (Type type, Real nominal, const Date &startDate, const Date &maturity, Calendar fixCalendar, BusinessDayConvention fixConvention, DayCounter dayCounter, Rate fixedRate, const ext::shared_ptr< ZeroInflationIndex > &infIndex, const Period &observationLag, CPI::InterpolationType observationInterpolation, bool adjustInfObsDates=false, Calendar infCalendar=Calendar(), BusinessDayConvention infConvention=BusinessDayConvention()) | |
Inspectors | |
| Type | type () const |
| "Payer" or "Receiver" refers to the inflation leg | |
| Real | nominal () const |
| Date | startDate () const override |
| Date | maturityDate () const override |
| Calendar | fixedCalendar () const |
| BusinessDayConvention | fixedConvention () const |
| DayCounter | dayCounter () const |
| Rate | fixedRate () const |
| \( K \) in the above formula. | |
| ext::shared_ptr< ZeroInflationIndex > | inflationIndex () const |
| Period | observationLag () const |
| CPI::InterpolationType | observationInterpolation () 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 | |
| Public Member Functions inherited from Swap | |
| void | deepUpdate () override |
| Size | numberOfLegs () const |
| const std::vector< Leg > & | legs () const |
| Real | legBPS (Size j) const |
| Real | legNPV (Size j) const |
| DiscountFactor | startDiscounts (Size j) const |
| DiscountFactor | endDiscounts (Size j) const |
| DiscountFactor | npvDateDiscount () const |
| const Leg & | leg (Size j) const |
| bool | payer (Size j) const |
| bool | isExpired () const override |
| returns whether the instrument might have value greater than zero. | |
| void | setupArguments (PricingEngine::arguments *) const override |
| void | fetchResults (const PricingEngine::results *) const override |
| Swap (const Leg &firstLeg, const Leg &secondLeg) | |
| Swap (const std::vector< Leg > &legs, const std::vector< bool > &payer) | |
| Public Member Functions inherited from Instrument | |
| Real | NPV () const |
| returns the net present value of the instrument. | |
| Real | errorEstimate () const |
| returns the error estimate on the NPV when available. | |
| const Date & | valuationDate () const |
| returns the date the net present value refers to. | |
| template<typename T> | |
| T | result (const std::string &tag) const |
| returns any additional result returned by the pricing engine. | |
| const std::map< std::string, ext::any > & | additionalResults () const |
| returns all additional result returned by the pricing engine. | |
| void | setPricingEngine (const ext::shared_ptr< PricingEngine > &) |
| set the pricing engine to be used. | |
| Public Member Functions inherited from LazyObject | |
| void | update () override |
| bool | isCalculated () const |
| void | forwardFirstNotificationOnly () |
| void | alwaysForwardNotifications () |
| void | recalculate () |
| void | freeze () |
| void | unfreeze () |
| Public Member Functions inherited from Observable | |
| Observable (const Observable &) | |
| Observable & | operator= (const Observable &) |
| Observable (Observable &&)=delete | |
| Observable & | operator= (Observable &&)=delete |
| void | notifyObservers () |
| Public Member Functions inherited from Observer | |
| Observer (const Observer &) | |
| Observer & | operator= (const Observer &) |
| std::pair< iterator, bool > | registerWith (const ext::shared_ptr< Observable > &) |
| void | registerWithObservables (const ext::shared_ptr< Observer > &) |
| Size | unregisterWith (const ext::shared_ptr< Observable > &) |
| void | unregisterWithAll () |
Results | |
| Type | type_ |
| Real | nominal_ |
| Date | startDate_ |
| Date | maturityDate_ |
| Calendar | fixCalendar_ |
| BusinessDayConvention | fixConvention_ |
| Rate | fixedRate_ |
| ext::shared_ptr< ZeroInflationIndex > | infIndex_ |
| Period | observationLag_ |
| CPI::InterpolationType | observationInterpolation_ |
| bool | adjustInfObsDates_ |
| Calendar | infCalendar_ |
| BusinessDayConvention | infConvention_ |
| DayCounter | dayCounter_ |
| Date | baseDate_ |
| Date | obsDate_ |
| Real | fixedLegNPV () const |
| Real | inflationLegNPV () const |
| Real | fairRate () const |
Additional Inherited Members | |
| Public Types inherited from Swap | |
| enum | Type { Receiver = -1 , Payer = 1 } |
| Public Types inherited from Observer | |
| typedef set_type::iterator | iterator |
| void | setupExpired () const override |
| Swap (Size legs) | |
| Protected Member Functions inherited from Instrument | |
| void | calculate () const override |
| void | performCalculations () const override |
| std::vector< Leg > | legs_ |
| std::vector< Real > | payer_ |
| std::vector< Real > | legNPV_ |
| std::vector< Real > | legBPS_ |
| std::vector< DiscountFactor > | startDiscounts_ |
| std::vector< DiscountFactor > | endDiscounts_ |
| DiscountFactor | npvDateDiscount_ |
| Protected Attributes inherited from Instrument | |
| Real | NPV_ |
| Real | errorEstimate_ |
| Date | valuationDate_ |
| std::map< std::string, ext::any > | additionalResults_ |
| ext::shared_ptr< PricingEngine > | engine_ |
| bool | calculated_ = false |
| bool | frozen_ = false |
| bool | alwaysForward_ |
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).
In this swap, the passed type (Payer or Receiver) refers to the inflation leg.
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.