|
| 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 |
|
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) |
|
| 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...
|
|
| LazyObject () |
|
| ~LazyObject () override=default |
|
void | update () override |
|
bool | isCalculated () const |
|
void | forwardFirstNotificationOnly () |
|
void | alwaysForwardNotifications () |
|
void | recalculate () |
|
void | freeze () |
|
void | unfreeze () |
|
| Observable ()=default |
|
| Observable (const Observable &) |
|
Observable & | operator= (const Observable &) |
|
| Observable (Observable &&)=delete |
|
Observable & | operator= (Observable &&)=delete |
|
virtual | ~Observable ()=default |
|
void | notifyObservers () |
|
| 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 () |
|
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.
- Warning:
- Setting subtractInflationNominal to true means that the original inflation nominal is subtracted from both nominals before they are exchanged, even if they are different.
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.