|
QuantLib: a free/open-source library for quantitative finance
Reference manual - version 1.40
|
zero-inflation-indexed swap, More...
#include <ql/instruments/cpiswap.hpp>
Classes | |
| class | arguments |
| Arguments for swap calculation More... | |
| 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 |
| 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. | |
| 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 () |
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-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.
| 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.
|
overridevirtual |
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 Instrument.
|
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.