QuantLib: a free/open-source library for quantitative finance
Fully annotated sources - version 1.32
|
Capped or floored inflation coupon. More...
#include <ql/cashflows/capflooredinflationcoupon.hpp>
Public Member Functions | |
CappedFlooredYoYInflationCoupon (const ext::shared_ptr< YoYInflationCoupon > &underlying, Rate cap=Null< Rate >(), Rate floor=Null< Rate >()) | |
CappedFlooredYoYInflationCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, const ext::shared_ptr< YoYInflationIndex > &index, const Period &observationLag, const DayCounter &dayCounter, Real gearing=1.0, Spread spread=0.0, const Rate cap=Null< Rate >(), const Rate floor=Null< Rate >(), const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date()) | |
augmented Coupon interface | |
Rate | rate () const override |
swap(let) rate More... | |
Rate | cap () const |
cap More... | |
Rate | floor () const |
floor More... | |
Rate | effectiveCap () const |
effective cap of fixing More... | |
Rate | effectiveFloor () const |
effective floor of fixing More... | |
Observer interface | |
void | update () override |
Public Member Functions inherited from YoYInflationCoupon | |
YoYInflationCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, const ext::shared_ptr< YoYInflationIndex > &index, const Period &observationLag, const DayCounter &dayCounter, Real gearing=1.0, Spread spread=0.0, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date()) | |
Real | gearing () const |
index gearing, i.e. multiplicative coefficient for the index More... | |
Spread | spread () const |
spread paid over the fixing of the underlying index More... | |
Rate | adjustedFixing () const |
const ext::shared_ptr< YoYInflationIndex > & | yoyIndex () const |
void | accept (AcyclicVisitor &) override |
Public Member Functions inherited from InflationCoupon | |
InflationCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, ext::shared_ptr< InflationIndex > index, const Period &observationLag, DayCounter dayCounter, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date()) | |
Real | amount () const override |
returns the amount of the cash flow More... | |
Real | price (const Handle< YieldTermStructure > &discountingCurve) const |
DayCounter | dayCounter () const override |
day counter for accrual calculation More... | |
Real | accruedAmount (const Date &) const override |
accrued amount at the given date More... | |
Rate | rate () const override |
accrued rate More... | |
const ext::shared_ptr< InflationIndex > & | index () const |
yoy inflation index More... | |
Period | observationLag () const |
how the coupon observes the index More... | |
Natural | fixingDays () const |
fixing days More... | |
virtual Date | fixingDate () const |
fixing date More... | |
virtual Rate | indexFixing () const |
fixing of the underlying index, as observed by the coupon More... | |
void | performCalculations () const override |
void | setPricer (const ext::shared_ptr< InflationCouponPricer > &) |
ext::shared_ptr< InflationCouponPricer > | pricer () const |
Public Member Functions inherited from Coupon | |
Coupon (const Date &paymentDate, Real nominal, const Date &accrualStartDate, const Date &accrualEndDate, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), const Date &exCouponDate=Date()) | |
Date | date () const override |
Date | exCouponDate () const override |
returns the date that the cash flow trades exCoupon More... | |
virtual Real | nominal () const |
const Date & | accrualStartDate () const |
start of the accrual period More... | |
const Date & | accrualEndDate () const |
end of the accrual period More... | |
const Date & | referencePeriodStart () const |
start date of the reference period More... | |
const Date & | referencePeriodEnd () const |
end date of the reference period More... | |
Time | accrualPeriod () const |
accrual period as fraction of year More... | |
Date::serial_type | accrualDays () const |
accrual period in days More... | |
Time | accruedPeriod (const Date &) const |
accrued period as fraction of year at the given date More... | |
Date::serial_type | accruedDays (const Date &) const |
accrued days at the given date More... | |
Public Member Functions inherited from CashFlow | |
~CashFlow () override=default | |
bool | hasOccurred (const Date &refDate=Date(), ext::optional< bool > includeRefDate=ext::nullopt) const override |
returns true if an event has already occurred before a date More... | |
bool | tradingExCoupon (const Date &refDate=Date()) const |
returns true if the cashflow is trading ex-coupon on the refDate More... | |
Public Member Functions inherited from Event | |
~Event () override=default | |
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 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 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 () |
Visitability | |
ext::shared_ptr< YoYInflationCoupon > | underlying_ |
bool | isFloored_ |
bool | isCapped_ |
Rate | cap_ |
Rate | floor_ |
void | accept (AcyclicVisitor &v) override |
Rate | underlyingRate () const |
this returns the expected rate before cap and floor are applied More... | |
bool | isCapped () const |
bool | isFloored () const |
void | setPricer (const ext::shared_ptr< YoYInflationCouponPricer > &) |
virtual QL_DEPRECATED void | setCommon (Rate cap, Rate floor) |
Additional Inherited Members | |
Public Types inherited from Observer | |
typedef set_type::iterator | iterator |
Protected Member Functions inherited from YoYInflationCoupon | |
bool | checkPricerImpl (const ext::shared_ptr< InflationCouponPricer > &) const override |
makes sure you were given the correct type of pricer More... | |
Protected Member Functions inherited from InflationCoupon | |
Protected Member Functions inherited from LazyObject | |
virtual void | calculate () const |
Protected Attributes inherited from YoYInflationCoupon | |
Real | gearing_ |
Spread | spread_ |
Protected Attributes inherited from InflationCoupon | |
ext::shared_ptr< InflationCouponPricer > | pricer_ |
ext::shared_ptr< InflationIndex > | index_ |
Period | observationLag_ |
DayCounter | dayCounter_ |
Natural | fixingDays_ |
Real | rate_ |
Protected Attributes inherited from Coupon | |
Date | paymentDate_ |
Real | nominal_ |
Date | accrualStartDate_ |
Date | accrualEndDate_ |
Date | refPeriodStart_ |
Date | refPeriodEnd_ |
Date | exCouponDate_ |
Real | accrualPeriod_ |
Protected Attributes inherited from LazyObject | |
bool | calculated_ = false |
bool | frozen_ = false |
bool | alwaysForward_ |
Capped or floored inflation coupon.
Essentially a copy of the nominal version but taking a different index and a set of pricers (not just one).
The payoff \( P \) of a capped inflation-rate coupon with paysWithin = true is:
\[ P = N \times T \times \min(a L + b, C). \]
where \( N \) is the notional, \( T \) is the accrual time, \( L \) is the inflation rate, \( a \) is its gearing, \( b \) is the spread, and \( C \) and \( F \) the strikes.
The payoff of a floored inflation-rate coupon is:
\[ P = N \times T \times \max(a L + b, F). \]
The payoff of a collared inflation-rate coupon is:
\[ P = N \times T \times \min(\max(a L + b, F), C). \]
If paysWithin = false then the inverse is returned (this provides for instrument cap and caplet prices).
They can be decomposed in the following manner. Decomposition of a capped floating rate coupon when paysWithin = true:
\[ R = \min(a L + b, C) = (a L + b) + \min(C - b - \xi |a| L, 0) \]
where \( \xi = sgn(a) \). Then:
\[ R = (a L + b) + |a| \min(\frac{C - b}{|a|} - \xi L, 0) \]
Definition at line 66 of file capflooredinflationcoupon.hpp.
CappedFlooredYoYInflationCoupon | ( | const ext::shared_ptr< YoYInflationCoupon > & | underlying, |
Rate | cap = Null<Rate>() , |
||
Rate | floor = Null<Rate>() |
||
) |
Definition at line 57 of file capflooredinflationcoupon.cpp.
CappedFlooredYoYInflationCoupon | ( | const Date & | paymentDate, |
Real | nominal, | ||
const Date & | startDate, | ||
const Date & | endDate, | ||
Natural | fixingDays, | ||
const ext::shared_ptr< YoYInflationIndex > & | index, | ||
const Period & | observationLag, | ||
const DayCounter & | dayCounter, | ||
Real | gearing = 1.0 , |
||
Spread | spread = 0.0 , |
||
const Rate | cap = Null<Rate>() , |
||
const Rate | floor = Null<Rate>() , |
||
const Date & | refPeriodStart = Date() , |
||
const Date & | refPeriodEnd = Date() |
||
) |
Definition at line 75 of file capflooredinflationcoupon.hpp.
|
overridevirtual |
swap(let) rate
Implements Coupon.
Definition at line 93 of file capflooredinflationcoupon.cpp.
Rate cap | ( | ) | const |
cap
Definition at line 109 of file capflooredinflationcoupon.cpp.
Rate floor | ( | ) | const |
floor
Definition at line 118 of file capflooredinflationcoupon.cpp.
Rate effectiveCap | ( | ) | const |
effective cap of fixing
Definition at line 127 of file capflooredinflationcoupon.cpp.
Rate effectiveFloor | ( | ) | const |
effective floor of fixing
Definition at line 132 of file capflooredinflationcoupon.cpp.
|
overridevirtual |
This method must be implemented in derived classes. An instance of Observer does not call this method directly: instead, it will be called by the observables the instance registered with when they need to notify any changes.
Implements Observer.
Definition at line 137 of file capflooredinflationcoupon.cpp.
|
overridevirtual |
Reimplemented from CashFlow.
Definition at line 142 of file capflooredinflationcoupon.cpp.
Rate underlyingRate | ( | ) | const |
this returns the expected rate before cap and floor are applied
Definition at line 89 of file capflooredinflationcoupon.cpp.
bool isCapped | ( | ) | const |
Definition at line 125 of file capflooredinflationcoupon.hpp.
bool isFloored | ( | ) | const |
Definition at line 126 of file capflooredinflationcoupon.hpp.
void setPricer | ( | const ext::shared_ptr< YoYInflationCouponPricer > & | pricer | ) |
Definition at line 80 of file capflooredinflationcoupon.cpp.
Definition at line 25 of file capflooredinflationcoupon.cpp.
|
protected |
Definition at line 143 of file capflooredinflationcoupon.hpp.
|
protected |
Definition at line 144 of file capflooredinflationcoupon.hpp.
|
protected |
Definition at line 144 of file capflooredinflationcoupon.hpp.
|
protected |
Definition at line 145 of file capflooredinflationcoupon.hpp.
|
protected |
Definition at line 145 of file capflooredinflationcoupon.hpp.