QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
Classes | Public Member Functions | List of all members
ZeroCouponInflationSwap Class Reference

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

#include <zerocouponinflationswap.hpp>

+ Inheritance diagram for ZeroCouponInflationSwap:
+ Collaboration diagram for ZeroCouponInflationSwap:

Classes

class  arguments
 
class  engine
 

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 More...
 
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. More...
 
ext::shared_ptr< ZeroInflationIndexinflationIndex () const
 
Period observationLag () const
 
CPI::InterpolationType observationInterpolation () const
 
bool adjustObservationDates () const
 
Calendar inflationCalendar () const
 
BusinessDayConvention inflationConvention () const
 
const LegfixedLeg () const
 just one cashflow (that is not a coupon) in each leg More...
 
const LeginflationLeg () const
 just one cashflow (that is not a coupon) in each leg More...
 
- 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 Legleg (Size j) const
 
bool payer (Size j) const
 
bool isExpired () const override
 returns whether the instrument might have value greater than zero. More...
 
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
 Instrument ()
 
Real NPV () const
 returns the net present value of the instrument. More...
 
Real errorEstimate () const
 returns the error estimate on the NPV when available. More...
 
const DatevaluationDate () const
 returns the date the net present value refers to. More...
 
template<typename T >
T result (const std::string &tag) const
 returns any additional result returned by the pricing engine. More...
 
const std::map< std::string, ext::any > & additionalResults () const
 returns all additional result returned by the pricing engine. More...
 
void setPricingEngine (const ext::shared_ptr< PricingEngine > &)
 set the pricing engine to be used. More...
 
- Public Member Functions inherited from LazyObject
 LazyObject ()
 
 ~LazyObject () override=default
 
void update () override
 
bool isCalculated () const
 
void forwardFirstNotificationOnly ()
 
void alwaysForwardNotifications ()
 
void recalculate ()
 
void freeze ()
 
void unfreeze ()
 
- Public Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (Observable &&)=delete
 
virtual ~Observable ()=default
 
void notifyObservers ()
 
- Public Member Functions inherited from Observer
 Observer ()=default
 
 Observer (const Observer &)
 
Observeroperator= (const Observer &)
 
virtual ~Observer ()
 
std::pair< iterator, boolregisterWith (const ext::shared_ptr< Observable > &)
 
void registerWithObservables (const ext::shared_ptr< Observer > &)
 
Size unregisterWith (const ext::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 
virtual void update ()=0
 
virtual void deepUpdate ()
 

Results

Type type_
 
Real nominal_
 
Date startDate_
 
Date maturityDate_
 
Calendar fixCalendar_
 
BusinessDayConvention fixConvention_
 
Rate fixedRate_
 
ext::shared_ptr< ZeroInflationIndexinfIndex_
 
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
 
- Protected Member Functions inherited from Swap
void setupExpired () const override
 
 Swap (Size legs)
 
- Protected Member Functions inherited from Instrument
void calculate () const override
 
void performCalculations () const override
 
- Protected Member Functions inherited from LazyObject
- Protected Attributes inherited from Swap
std::vector< Leglegs_
 
std::vector< Realpayer_
 
std::vector< ReallegNPV_
 
std::vector< ReallegBPS_
 
std::vector< DiscountFactorstartDiscounts_
 
std::vector< DiscountFactorendDiscounts_
 
DiscountFactor npvDateDiscount_
 
- Protected Attributes inherited from Instrument
Real NPV_
 
Real errorEstimate_
 
Date valuationDate_
 
std::map< std::string, ext::any > additionalResults_
 
ext::shared_ptr< PricingEngineengine_
 
- Protected Attributes inherited from LazyObject
bool calculated_ = false
 
bool frozen_ = false
 
bool alwaysForward_
 

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

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.

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

Definition at line 68 of file zerocouponinflationswap.hpp.

Constructor & Destructor Documentation

◆ ZeroCouponInflationSwap()

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() 
)

Definition at line 35 of file zerocouponinflationswap.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ type()

Type type ( ) const

"Payer" or "Receiver" refers to the inflation leg

Definition at line 91 of file zerocouponinflationswap.hpp.

◆ nominal()

Real nominal ( ) const

Definition at line 92 of file zerocouponinflationswap.hpp.

+ Here is the caller graph for this function:

◆ startDate()

Date startDate ( ) const
overridevirtual

Reimplemented from Swap.

Definition at line 93 of file zerocouponinflationswap.hpp.

+ Here is the caller graph for this function:

◆ maturityDate()

Date maturityDate ( ) const
overridevirtual

Reimplemented from Swap.

Definition at line 94 of file zerocouponinflationswap.hpp.

◆ fixedCalendar()

Calendar fixedCalendar ( ) const

Definition at line 95 of file zerocouponinflationswap.hpp.

◆ fixedConvention()

BusinessDayConvention fixedConvention ( ) const

Definition at line 96 of file zerocouponinflationswap.hpp.

◆ dayCounter()

DayCounter dayCounter ( ) const

Definition at line 99 of file zerocouponinflationswap.hpp.

◆ fixedRate()

Rate fixedRate ( ) const

\( K \) in the above formula.

Definition at line 101 of file zerocouponinflationswap.hpp.

+ Here is the caller graph for this function:

◆ inflationIndex()

ext::shared_ptr< ZeroInflationIndex > inflationIndex ( ) const

Definition at line 102 of file zerocouponinflationswap.hpp.

◆ observationLag()

Period observationLag ( ) const

Definition at line 105 of file zerocouponinflationswap.hpp.

◆ observationInterpolation()

CPI::InterpolationType observationInterpolation ( ) const

Definition at line 106 of file zerocouponinflationswap.hpp.

◆ adjustObservationDates()

bool adjustObservationDates ( ) const

Definition at line 109 of file zerocouponinflationswap.hpp.

◆ inflationCalendar()

Calendar inflationCalendar ( ) const

Definition at line 110 of file zerocouponinflationswap.hpp.

◆ inflationConvention()

BusinessDayConvention inflationConvention ( ) const

Definition at line 111 of file zerocouponinflationswap.hpp.

◆ fixedLeg()

const Leg & fixedLeg ( ) const

just one cashflow (that is not a coupon) in each leg

Definition at line 159 of file zerocouponinflationswap.cpp.

◆ inflationLeg()

const Leg & inflationLeg ( ) const

just one cashflow (that is not a coupon) in each leg

Definition at line 163 of file zerocouponinflationswap.cpp.

◆ fixedLegNPV()

Real fixedLegNPV ( ) const

Definition at line 147 of file zerocouponinflationswap.cpp.

+ Here is the call graph for this function:

◆ inflationLegNPV()

Real inflationLegNPV ( ) const

Definition at line 153 of file zerocouponinflationswap.cpp.

+ Here is the call graph for this function:

◆ fairRate()

Real fairRate ( ) const

Definition at line 121 of file zerocouponinflationswap.cpp.

+ Here is the call graph for this function:

Member Data Documentation

◆ type_

Type type_
protected

Definition at line 128 of file zerocouponinflationswap.hpp.

◆ nominal_

Real nominal_
protected

Definition at line 129 of file zerocouponinflationswap.hpp.

◆ startDate_

Date startDate_
protected

Definition at line 130 of file zerocouponinflationswap.hpp.

◆ maturityDate_

Date maturityDate_
protected

Definition at line 130 of file zerocouponinflationswap.hpp.

◆ fixCalendar_

Calendar fixCalendar_
protected

Definition at line 131 of file zerocouponinflationswap.hpp.

◆ fixConvention_

BusinessDayConvention fixConvention_
protected

Definition at line 132 of file zerocouponinflationswap.hpp.

◆ fixedRate_

Rate fixedRate_
protected

Definition at line 133 of file zerocouponinflationswap.hpp.

◆ infIndex_

ext::shared_ptr<ZeroInflationIndex> infIndex_
protected

Definition at line 134 of file zerocouponinflationswap.hpp.

◆ observationLag_

Period observationLag_
protected

Definition at line 135 of file zerocouponinflationswap.hpp.

◆ observationInterpolation_

CPI::InterpolationType observationInterpolation_
protected

Definition at line 136 of file zerocouponinflationswap.hpp.

◆ adjustInfObsDates_

bool adjustInfObsDates_
protected

Definition at line 137 of file zerocouponinflationswap.hpp.

◆ infCalendar_

Calendar infCalendar_
protected

Definition at line 138 of file zerocouponinflationswap.hpp.

◆ infConvention_

BusinessDayConvention infConvention_
protected

Definition at line 139 of file zerocouponinflationswap.hpp.

◆ dayCounter_

DayCounter dayCounter_
protected

Definition at line 140 of file zerocouponinflationswap.hpp.

◆ baseDate_

Date baseDate_
protected

Definition at line 141 of file zerocouponinflationswap.hpp.

◆ obsDate_

Date obsDate_
protected

Definition at line 141 of file zerocouponinflationswap.hpp.