### A free/open-source library for quantitative finance

DigitalCoupon Class Reference
Financial instruments

Digital-payoff coupon. More...

`#include <ql/cashflows/digitalcoupon.hpp>`

Inheritance diagram for DigitalCoupon:
[legend]

List of all members.

## 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.

## 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.

## 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.