DigitalCoupon Class Reference
[Financial instruments]
#include <ql/cashflows/digitalcoupon.hpp>
Inheritance diagram for DigitalCoupon:

Detailed Description
Digital-payoff coupon.Implementation of a floating-rate coupon with digital call/put option. Payoffs:
- Coupon with cash-or-nothing Digital Call rate + csi * payoffRate * Heaviside(rate-strike)
- Coupon with cash-or-nothing Digital Put rate + csi * payoffRate * Heaviside(strike-rate) where csi=+1 or csi=-1.
- Coupon with asset-or-nothing Digital Call rate + csi * rate * Heaviside(rate-strike)
- Coupon with asset-or-nothing Digital Put rate + csi * rate * Heaviside(strike-rate) where csi=+1 or csi=-1. The evaluation of the coupon is made using the call/put spread replication method.
- Tests:
- the correctness of the returned value in case of Asset-or-nothing embedded option is tested by pricing the digital option with Cox-Rubinstein formula.
- the correctness of the returned value in case of deep-in-the-money Asset-or-nothing embedded option is tested vs the expected values of coupon and option.
- the correctness of the returned value in case of deep-out-of-the-money Asset-or-nothing embedded option is tested vs the expected values of coupon and option.
- the correctness of the returned value in case of Cash-or-nothing embedded option is tested by pricing the digital option with Reiner-Rubinstein formula.
- the correctness of the returned value in case of deep-in-the-money Cash-or-nothing embedded option is tested vs the expected values of coupon and option.
- the correctness of the returned value in case of deep-out-of-the-money Cash-or-nothing embedded option is tested vs the expected values of coupon and option.
- the correctness of the returned value is tested checking the correctness of the call-put parity relation.
- the correctness of the returned value is tested by the relationship between prices in case of different replication types.
Public Member Functions | |
Constructors | |
| DigitalCoupon (const boost::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 >(), const boost::shared_ptr< DigitalReplication > &replication=boost::shared_ptr< DigitalReplication >()) | |
| general constructor | |
Coupon interface | |
| Rate | rate () const |
| accrued rate | |
| Rate | convexityAdjustment () const |
| convexity adjustment | |
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 |
|
boost::shared_ptr < FloatingRateCoupon > | underlying () const |
| Rate | callOptionRate () const |
| Rate | putOptionRate () const |
Observer interface | |
| void | update () |
Visitability | |
| virtual void | accept (AcyclicVisitor &) |
| void | setPricer (const boost::shared_ptr< FloatingRateCouponPricer > &pricer) |
Protected Attributes | |
Data members | |
|
boost::shared_ptr < FloatingRateCoupon > | underlying_ |
| Rate | callStrike_ |
| strike rate for the the call option | |
| Rate | putStrike_ |
| strike rate for the the put option | |
| Real | callCsi_ |
| multiplicative factor of call payoff | |
| Real | putCsi_ |
| multiplicative factor of put payoff | |
| bool | isCallATMIncluded_ |
| inclusion flag og the call payoff if the call option ends at-the-money | |
| bool | isPutATMIncluded_ |
| inclusion flag og the put payoff if the put option ends at-the-money | |
| bool | isCallCashOrNothing_ |
| digital call option type: if true, cash-or-nothing, if false asset-or-nothing | |
| bool | isPutCashOrNothing_ |
| digital put option type: if true, cash-or-nothing, if false asset-or-nothing | |
| Rate | callDigitalPayoff_ |
| digital call option payoff rate, if any | |
| Rate | putDigitalPayoff_ |
| digital put option payoff rate, if any | |
| Real | callLeftEps_ |
| the left and right gaps applied in payoff replication for call | |
| Real | callRightEps_ |
| Real | putLeftEps_ |
| the left and right gaps applied in payoff replication for puf | |
| Real | putRightEps_ |
| bool | hasPutStrike_ |
| bool | hasCallStrike_ |
| Replication::Type | replicationType_ |
| Type of replication. | |
Member Function Documentation
| Rate callOptionRate | ( | ) | const |
Returns the call option rate (multiplied by: nominal*accrualperiod*discount is the NPV of the option)
| Rate putOptionRate | ( | ) | const |
Returns the put option rate (multiplied by: nominal*accrualperiod*discount is the NPV of the option)
| void update | ( | ) | [virtual] |
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.
Reimplemented from FloatingRateCoupon.