QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
|
Zero-coupon inflation-indexed swap. More...
#include <zerocouponinflationswap.hpp>
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< 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 More... | |
const Leg & | inflationLeg () 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 Leg & | leg (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 Date & | valuationDate () 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 &) | |
Observable & | operator= (const Observable &) |
Observable (Observable &&)=delete | |
Observable & | operator= (Observable &&)=delete |
virtual | ~Observable ()=default |
void | notifyObservers () |
Public Member Functions inherited from Observer | |
Observer ()=default | |
Observer (const Observer &) | |
Observer & | operator= (const Observer &) |
virtual | ~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 () |
virtual void | update ()=0 |
virtual void | deepUpdate () |
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< 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_ |
Protected Attributes inherited from LazyObject | |
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.
Definition at line 68 of file zerocouponinflationswap.hpp.
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.
Type type | ( | ) | const |
"Payer" or "Receiver" refers to the inflation leg
Definition at line 91 of file zerocouponinflationswap.hpp.
Real nominal | ( | ) | const |
Definition at line 92 of file zerocouponinflationswap.hpp.
|
overridevirtual |
Reimplemented from Swap.
Definition at line 93 of file zerocouponinflationswap.hpp.
|
overridevirtual |
Reimplemented from Swap.
Definition at line 94 of file zerocouponinflationswap.hpp.
Calendar fixedCalendar | ( | ) | const |
Definition at line 95 of file zerocouponinflationswap.hpp.
BusinessDayConvention fixedConvention | ( | ) | const |
Definition at line 96 of file zerocouponinflationswap.hpp.
DayCounter dayCounter | ( | ) | const |
Definition at line 99 of file zerocouponinflationswap.hpp.
Rate fixedRate | ( | ) | const |
\( K \) in the above formula.
Definition at line 101 of file zerocouponinflationswap.hpp.
ext::shared_ptr< ZeroInflationIndex > inflationIndex | ( | ) | const |
Definition at line 102 of file zerocouponinflationswap.hpp.
Period observationLag | ( | ) | const |
Definition at line 105 of file zerocouponinflationswap.hpp.
CPI::InterpolationType observationInterpolation | ( | ) | const |
Definition at line 106 of file zerocouponinflationswap.hpp.
bool adjustObservationDates | ( | ) | const |
Definition at line 109 of file zerocouponinflationswap.hpp.
Calendar inflationCalendar | ( | ) | const |
Definition at line 110 of file zerocouponinflationswap.hpp.
BusinessDayConvention inflationConvention | ( | ) | const |
Definition at line 111 of file zerocouponinflationswap.hpp.
const Leg & fixedLeg | ( | ) | const |
just one cashflow (that is not a coupon) in each leg
Definition at line 159 of file zerocouponinflationswap.cpp.
const Leg & inflationLeg | ( | ) | const |
just one cashflow (that is not a coupon) in each leg
Definition at line 163 of file zerocouponinflationswap.cpp.
Real fixedLegNPV | ( | ) | const |
Definition at line 147 of file zerocouponinflationswap.cpp.
Real inflationLegNPV | ( | ) | const |
Definition at line 153 of file zerocouponinflationswap.cpp.
Real fairRate | ( | ) | const |
Definition at line 121 of file zerocouponinflationswap.cpp.
|
protected |
Definition at line 128 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 129 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 130 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 130 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 131 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 132 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 133 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 134 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 135 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 136 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 137 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 138 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 139 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 140 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 141 of file zerocouponinflationswap.hpp.
|
protected |
Definition at line 141 of file zerocouponinflationswap.hpp.