QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
List of all members
DigitalCoupon Class Reference

Digital-payoff coupon. More...

#include <digitalcoupon.hpp>

+ Inheritance diagram for DigitalCoupon:
+ Collaboration diagram for DigitalCoupon:

Public Member Functions

Constructors
 DigitalCoupon (const ext::shared_ptr< FloatingRateCoupon > &underlying, Rate callStrike=Null< Rate >(), Position::Type callPosition=Position::Long, bool isCallITMIncluded=false, Rate callDigitalPayoff=Null< Rate >(), Rate putStrike=Null< Rate >(), Position::Type putPosition=Position::Long, bool isPutITMIncluded=false, Rate putDigitalPayoff=Null< Rate >(), ext::shared_ptr< DigitalReplication > replication={}, bool nakedOption=false)
 general constructor More...
 
Obverver interface
void deepUpdate () override
 
LazyObject interface
void performCalculations () const override
 
Coupon interface
Rate rate () const override
 accrued rate More...
 
Rate convexityAdjustment () const override
 convexity adjustment More...
 
Digital inspectors
Rate callStrike () const
 
Rate putStrike () const
 
Rate callDigitalPayoff () const
 
Rate putDigitalPayoff () const
 
bool hasPut () const
 
bool hasCall () const
 
bool hasCollar () const
 
bool isLongPut () const
 
bool isLongCall () const
 
ext::shared_ptr< FloatingRateCouponunderlying () const
 
Rate callOptionRate () const
 
Rate putOptionRate () const
 
Visitability
void accept (AcyclicVisitor &) override
 
void setPricer (const ext::shared_ptr< FloatingRateCouponPricer > &pricer) override
 
- Public Member Functions inherited from FloatingRateCoupon
 FloatingRateCoupon (const Date &paymentDate, Real nominal, const Date &startDate, const Date &endDate, Natural fixingDays, const ext::shared_ptr< InterestRateIndex > &index, Real gearing=1.0, Spread spread=0.0, const Date &refPeriodStart=Date(), const Date &refPeriodEnd=Date(), DayCounter dayCounter=DayCounter(), bool isInArrears=false, const Date &exCouponDate=Date())
 
void performCalculations () const override
 
Real amount () const override
 returns the amount of the cash flow More...
 
Rate rate () const override
 accrued rate 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...
 
const ext::shared_ptr< InterestRateIndex > & index () const
 floating index More...
 
Natural fixingDays () const
 fixing days More...
 
virtual Date fixingDate () const
 fixing date More...
 
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...
 
virtual Rate indexFixing () const
 fixing of the underlying index More...
 
virtual Rate adjustedFixing () const
 convexity-adjusted fixing More...
 
bool isInArrears () const
 whether or not the coupon fixes in arrears More...
 
void accept (AcyclicVisitor &) override
 
ext::shared_ptr< FloatingRateCouponPricerpricer () 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 DateaccrualStartDate () const
 start of the accrual period More...
 
const DateaccrualEndDate () const
 end of the accrual period More...
 
const DatereferencePeriodStart () const
 start date of the reference period More...
 
const DatereferencePeriodEnd () 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 &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (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 &)
 
Observeroperator= (const Observer &)
 
virtual ~Observer ()
 
std::pair< iterator, boolregisterWith (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 ()
 

Data members

ext::shared_ptr< FloatingRateCouponunderlying_
 
Rate callStrike_
 strike rate for the the call option More...
 
Rate putStrike_
 strike rate for the the put option More...
 
Real callCsi_ = 0.
 multiplicative factor of call payoff More...
 
Real putCsi_ = 0.
 multiplicative factor of put payoff More...
 
bool isCallATMIncluded_
 inclusion flag og the call payoff if the call option ends at-the-money More...
 
bool isPutATMIncluded_
 inclusion flag og the put payoff if the put option ends at-the-money More...
 
bool isCallCashOrNothing_ = false
 digital call option type: if true, cash-or-nothing, if false asset-or-nothing More...
 
bool isPutCashOrNothing_ = false
 digital put option type: if true, cash-or-nothing, if false asset-or-nothing More...
 
Rate callDigitalPayoff_
 digital call option payoff rate, if any More...
 
Rate putDigitalPayoff_
 digital put option payoff rate, if any More...
 
Real callLeftEps_
 the left and right gaps applied in payoff replication for call More...
 
Real callRightEps_
 
Real putLeftEps_
 the left and right gaps applied in payoff replication for put More...
 
Real putRightEps_
 
bool hasPutStrike_ = false
 
bool hasCallStrike_ = false
 
Replication::Type replicationType_
 Type of replication. More...
 
bool nakedOption_
 underlying excluded from the payoff More...
 
Rate callPayoff () const
 
Rate putPayoff () const
 

Additional Inherited Members

- Public Types inherited from Observer
typedef set_type::iterator iterator
 
- Protected Member Functions inherited from FloatingRateCoupon
Rate convexityAdjustmentImpl (Rate fixing) const
 convexity adjustment for the given index fixing More...
 
- Protected Member Functions inherited from LazyObject
virtual void calculate () const
 
- Protected Attributes inherited from FloatingRateCoupon
ext::shared_ptr< InterestRateIndexindex_
 
DayCounter dayCounter_
 
Natural fixingDays_
 
Real gearing_
 
Spread spread_
 
bool isInArrears_
 
ext::shared_ptr< FloatingRateCouponPricerpricer_
 
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_
 

Detailed Description

Digital-payoff coupon.

Implementation of a floating-rate coupon with digital call/put option. Payoffs:

Definition at line 79 of file digitalcoupon.hpp.

Constructor & Destructor Documentation

◆ DigitalCoupon()

DigitalCoupon ( const ext::shared_ptr< FloatingRateCoupon > &  underlying,
Rate  callStrike = Null<Rate>(),
Position::Type  callPosition = Position::Long,
bool  isCallITMIncluded = false,
Rate  callDigitalPayoff = Null<Rate>(),
Rate  putStrike = Null<Rate>(),
Position::Type  putPosition = Position::Long,
bool  isPutITMIncluded = false,
Rate  putDigitalPayoff = Null<Rate>(),
ext::shared_ptr< DigitalReplication replication = {},
bool  nakedOption = false 
)

general constructor

Definition at line 28 of file digitalcoupon.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ deepUpdate()

void deepUpdate ( )
overridevirtual

This method allows to explicitly update the instance itself and nested observers. If notifications are disabled a call to this method ensures an update of such nested observers. It should be implemented in derived classes whenever applicable

Reimplemented from Observer.

Definition at line 221 of file digitalcoupon.cpp.

+ Here is the call graph for this function:

◆ performCalculations()

void performCalculations ( ) const
overridevirtual

This method must implement any calculations which must be (re)done in order to calculate the desired results.

Reimplemented from CashFlow.

Definition at line 226 of file digitalcoupon.cpp.

+ Here is the call graph for this function:

◆ rate()

Rate rate ( ) const
overridevirtual

accrued rate

Implements Coupon.

Definition at line 253 of file digitalcoupon.cpp.

+ Here is the call graph for this function:

◆ convexityAdjustment()

Rate convexityAdjustment ( ) const
overridevirtual

convexity adjustment

Reimplemented from FloatingRateCoupon.

Definition at line 258 of file digitalcoupon.cpp.

◆ callStrike()

Rate callStrike ( ) const

Definition at line 262 of file digitalcoupon.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ putStrike()

Rate putStrike ( ) const

Definition at line 269 of file digitalcoupon.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ callDigitalPayoff()

Rate callDigitalPayoff ( ) const

Definition at line 276 of file digitalcoupon.cpp.

+ Here is the caller graph for this function:

◆ putDigitalPayoff()

Rate putDigitalPayoff ( ) const

Definition at line 283 of file digitalcoupon.cpp.

+ Here is the caller graph for this function:

◆ hasPut()

bool hasPut ( ) const

Definition at line 117 of file digitalcoupon.hpp.

+ Here is the caller graph for this function:

◆ hasCall()

bool hasCall ( ) const

Definition at line 118 of file digitalcoupon.hpp.

+ Here is the caller graph for this function:

◆ hasCollar()

bool hasCollar ( ) const

Definition at line 119 of file digitalcoupon.hpp.

◆ isLongPut()

bool isLongPut ( ) const

Definition at line 120 of file digitalcoupon.hpp.

◆ isLongCall()

bool isLongCall ( ) const

Definition at line 121 of file digitalcoupon.hpp.

◆ underlying()

ext::shared_ptr< FloatingRateCoupon > underlying ( ) const

Definition at line 122 of file digitalcoupon.hpp.

+ Here is the caller graph for this function:

◆ callOptionRate()

Rate callOptionRate ( ) const

Returns the call option rate (multiplied by: nominal*accrualperiod*discount is the NPV of the option)

Definition at line 179 of file digitalcoupon.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ putOptionRate()

Rate putOptionRate ( ) const

Returns the put option rate (multiplied by: nominal*accrualperiod*discount is the NPV of the option)

Definition at line 200 of file digitalcoupon.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ accept()

void accept ( AcyclicVisitor v)
overridevirtual

Reimplemented from Coupon.

Reimplemented in DigitalIborCoupon, and DigitalCmsSpreadCoupon.

Definition at line 290 of file digitalcoupon.cpp.

+ Here is the call graph for this function:

◆ setPricer()

void setPricer ( const ext::shared_ptr< FloatingRateCouponPricer > &  pricer)
overridevirtual

Reimplemented from FloatingRateCoupon.

Definition at line 136 of file digitalcoupon.hpp.

+ Here is the call graph for this function:

◆ callPayoff()

Rate callPayoff ( ) const
private

Definition at line 299 of file digitalcoupon.cpp.

+ Here is the caller graph for this function:

◆ putPayoff()

Rate putPayoff ( ) const
private

Definition at line 316 of file digitalcoupon.cpp.

+ Here is the caller graph for this function:

Member Data Documentation

◆ underlying_

ext::shared_ptr<FloatingRateCoupon> underlying_
protected

Definition at line 150 of file digitalcoupon.hpp.

◆ callStrike_

Rate callStrike_
protected

strike rate for the the call option

Definition at line 152 of file digitalcoupon.hpp.

◆ putStrike_

Rate putStrike_
protected

strike rate for the the put option

Definition at line 154 of file digitalcoupon.hpp.

◆ callCsi_

Real callCsi_ = 0.
protected

multiplicative factor of call payoff

Definition at line 156 of file digitalcoupon.hpp.

◆ putCsi_

Real putCsi_ = 0.
protected

multiplicative factor of put payoff

Definition at line 158 of file digitalcoupon.hpp.

◆ isCallATMIncluded_

bool isCallATMIncluded_
protected

inclusion flag og the call payoff if the call option ends at-the-money

Definition at line 160 of file digitalcoupon.hpp.

◆ isPutATMIncluded_

bool isPutATMIncluded_
protected

inclusion flag og the put payoff if the put option ends at-the-money

Definition at line 162 of file digitalcoupon.hpp.

◆ isCallCashOrNothing_

bool isCallCashOrNothing_ = false
protected

digital call option type: if true, cash-or-nothing, if false asset-or-nothing

Definition at line 164 of file digitalcoupon.hpp.

◆ isPutCashOrNothing_

bool isPutCashOrNothing_ = false
protected

digital put option type: if true, cash-or-nothing, if false asset-or-nothing

Definition at line 166 of file digitalcoupon.hpp.

◆ callDigitalPayoff_

Rate callDigitalPayoff_
protected

digital call option payoff rate, if any

Definition at line 168 of file digitalcoupon.hpp.

◆ putDigitalPayoff_

Rate putDigitalPayoff_
protected

digital put option payoff rate, if any

Definition at line 170 of file digitalcoupon.hpp.

◆ callLeftEps_

Real callLeftEps_
protected

the left and right gaps applied in payoff replication for call

Definition at line 172 of file digitalcoupon.hpp.

◆ callRightEps_

Real callRightEps_
protected

Definition at line 172 of file digitalcoupon.hpp.

◆ putLeftEps_

Real putLeftEps_
protected

the left and right gaps applied in payoff replication for put

Definition at line 174 of file digitalcoupon.hpp.

◆ putRightEps_

Real putRightEps_
protected

Definition at line 174 of file digitalcoupon.hpp.

◆ hasPutStrike_

bool hasPutStrike_ = false
protected

Definition at line 176 of file digitalcoupon.hpp.

◆ hasCallStrike_

bool hasCallStrike_ = false
protected

Definition at line 176 of file digitalcoupon.hpp.

◆ replicationType_

Replication::Type replicationType_
protected

Type of replication.

Definition at line 178 of file digitalcoupon.hpp.

◆ nakedOption_

bool nakedOption_
protected

underlying excluded from the payoff

Definition at line 180 of file digitalcoupon.hpp.