QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
|
zero-inflation-indexed swap, More...
#include <cpiswap.hpp>
Classes | |
class | arguments |
Arguments for swap calculation More... | |
class | engine |
class | results |
Results from swap calculation More... | |
Public Member Functions | |
CPISwap (Type type, Real nominal, bool subtractInflationNominal, Spread spread, DayCounter floatDayCount, Schedule floatSchedule, const BusinessDayConvention &floatRoll, Natural fixingDays, ext::shared_ptr< IborIndex > floatIndex, Rate fixedRate, Real baseCPI, DayCounter fixedDayCount, Schedule fixedSchedule, const BusinessDayConvention &fixedRoll, const Period &observationLag, ext::shared_ptr< ZeroInflationIndex > fixedIndex, CPI::InterpolationType observationInterpolation=CPI::AsIndex, Real inflationNominal=Null< Real >()) | |
virtual Real | floatLegNPV () const |
virtual Spread | fairSpread () const |
virtual Real | fixedLegNPV () const |
virtual Rate | fairRate () const |
virtual Type | type () const |
virtual Real | nominal () const |
virtual bool | subtractInflationNominal () const |
virtual Spread | spread () const |
virtual const DayCounter & | floatDayCount () const |
virtual const Schedule & | floatSchedule () const |
virtual const BusinessDayConvention & | floatPaymentRoll () const |
virtual Natural | fixingDays () const |
virtual const ext::shared_ptr< IborIndex > & | floatIndex () const |
virtual Rate | fixedRate () const |
virtual Real | baseCPI () const |
virtual const DayCounter & | fixedDayCount () const |
virtual const Schedule & | fixedSchedule () const |
virtual const BusinessDayConvention & | fixedPaymentRoll () const |
virtual Period | observationLag () const |
virtual const ext::shared_ptr< ZeroInflationIndex > & | fixedIndex () const |
virtual CPI::InterpolationType | observationInterpolation () const |
virtual Real | inflationNominal () const |
virtual const Leg & | cpiLeg () const |
virtual const Leg & | floatLeg () const |
void | setupArguments (PricingEngine::arguments *args) const override |
for simple case sufficient to copy base class More... | |
void | fetchResults (const PricingEngine::results *) const override |
Public Member Functions inherited from Swap | |
void | deepUpdate () override |
Size | numberOfLegs () const |
const std::vector< Leg > & | legs () const |
virtual Date | startDate () const |
virtual Date | maturityDate () 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 () |
Private Member Functions | |
void | setupExpired () const override |
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-inflation-indexed swap,
fixed x zero-inflation, i.e. fixed x CPI(i'th fixing)/CPI(base) versus floating + spread
Note that this does ony the inflation-vs-floating-leg. Extension to inflation-vs-fixed-leg. is simple - just replace the floating leg with a fixed leg.
Typically there are notional exchanges at the end: either inflated-notional vs notional; or just (inflated-notional - notional) vs zero. The latter is perhaphs more typical.
This swap can mimic a ZCIIS where [(1+q)^n - 1] is exchanged against (cpi ratio - 1), by using differnt nominals on each leg and setting subtractInflationNominal to true. ALSO - there must be just one date in each schedule.
The two legs can have different schedules, fixing (days vs lag), settlement, and roll conventions. N.B. accrual adjustment periods are already in the schedules. Trade date and swap settlement date are outside the scope of the instrument.
Definition at line 66 of file cpiswap.hpp.
CPISwap | ( | Type | type, |
Real | nominal, | ||
bool | subtractInflationNominal, | ||
Spread | spread, | ||
DayCounter | floatDayCount, | ||
Schedule | floatSchedule, | ||
const BusinessDayConvention & | floatRoll, | ||
Natural | fixingDays, | ||
ext::shared_ptr< IborIndex > | floatIndex, | ||
Rate | fixedRate, | ||
Real | baseCPI, | ||
DayCounter | fixedDayCount, | ||
Schedule | fixedSchedule, | ||
const BusinessDayConvention & | fixedRoll, | ||
const Period & | observationLag, | ||
ext::shared_ptr< ZeroInflationIndex > | fixedIndex, | ||
CPI::InterpolationType | observationInterpolation = CPI::AsIndex , |
||
Real | inflationNominal = Null<Real>() |
||
) |
In this swap, the type (Payer or Receiver) refers to the floating leg.
Definition at line 37 of file cpiswap.cpp.
|
virtual |
|
virtual |
Definition at line 151 of file cpiswap.cpp.
|
virtual |
|
virtual |
Definition at line 145 of file cpiswap.cpp.
|
virtual |
Definition at line 191 of file cpiswap.hpp.
|
virtual |
Definition at line 192 of file cpiswap.hpp.
|
virtual |
|
virtual |
Definition at line 196 of file cpiswap.hpp.
|
virtual |
Definition at line 197 of file cpiswap.hpp.
|
virtual |
Definition at line 198 of file cpiswap.hpp.
|
virtual |
Definition at line 199 of file cpiswap.hpp.
|
virtual |
Definition at line 200 of file cpiswap.hpp.
|
virtual |
Definition at line 201 of file cpiswap.hpp.
|
virtual |
Definition at line 204 of file cpiswap.hpp.
|
virtual |
Definition at line 205 of file cpiswap.hpp.
|
virtual |
Definition at line 206 of file cpiswap.hpp.
|
virtual |
Definition at line 207 of file cpiswap.hpp.
|
virtual |
Definition at line 208 of file cpiswap.hpp.
|
virtual |
Definition at line 209 of file cpiswap.hpp.
|
virtual |
Definition at line 210 of file cpiswap.hpp.
|
virtual |
Definition at line 211 of file cpiswap.hpp.
|
virtual |
|
virtual |
|
virtual |
Definition at line 218 of file cpiswap.hpp.
|
overridevirtual |
for simple case sufficient to copy base class
Reimplemented from Instrument.
Definition at line 134 of file cpiswap.cpp.
|
overridevirtual |
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 Instrument.
Definition at line 177 of file cpiswap.cpp.
|
overrideprivatevirtual |
This method must leave the instrument in a consistent state when the expiration condition is met.
Reimplemented from Instrument.
Definition at line 170 of file cpiswap.cpp.
|
private |
Definition at line 137 of file cpiswap.hpp.
|
private |
Definition at line 138 of file cpiswap.hpp.
|
private |
Definition at line 139 of file cpiswap.hpp.
|
private |
Definition at line 142 of file cpiswap.hpp.
|
private |
Definition at line 143 of file cpiswap.hpp.
|
private |
Definition at line 144 of file cpiswap.hpp.
|
private |
Definition at line 145 of file cpiswap.hpp.
|
private |
Definition at line 146 of file cpiswap.hpp.
|
private |
Definition at line 147 of file cpiswap.hpp.
|
private |
Definition at line 150 of file cpiswap.hpp.
|
private |
Definition at line 151 of file cpiswap.hpp.
|
private |
Definition at line 152 of file cpiswap.hpp.
|
private |
Definition at line 153 of file cpiswap.hpp.
|
private |
Definition at line 154 of file cpiswap.hpp.
|
private |
Definition at line 155 of file cpiswap.hpp.
|
private |
Definition at line 156 of file cpiswap.hpp.
|
private |
Definition at line 157 of file cpiswap.hpp.
|
private |
Definition at line 158 of file cpiswap.hpp.
|
mutableprivate |
Definition at line 160 of file cpiswap.hpp.
|
mutableprivate |
Definition at line 161 of file cpiswap.hpp.