CallableBond Class Reference
Financial instruments

Callable bond base class. More...

`#include <ql/experimental/callablebonds/callablebond.hpp>`

Inheritance diagram for CallableBond:
[legend]

## Classes

class | engine
| base class for callable fixed rate bond engine More...
class | results
| results for a callable bond calculation More...

## Public Member Functions

virtual void | setupArguments (PricingEngine::arguments *) const
Inspectors
const CallabilitySchedule & | callability () const
| return the bond's put/call schedule
Calculations
Volatility | impliedVolatility (Real targetValue, const Handle< YieldTermStructure > &discountCurve, Real accuracy, Size maxEvaluations, Volatility minVol, Volatility maxVol) const
| returns the Black implied forward yield volatility More...
Spread | OAS (Real cleanPrice, const Handle< YieldTermStructure > &engineTS, const DayCounter &dayCounter, Compounding compounding, Frequency frequency, Date settlementDate=Date(), Real accuracy=1.0e-10, Size maxIterations=100, Rate guess=0.0)
| Calculate the Option Adjusted Spread (OAS) More...
Real | cleanPriceOAS (Real oas, const Handle< YieldTermStructure > &engineTS, const DayCounter &dayCounter, Compounding compounding, Frequency frequency, Date settlementDate=Date())
Real | effectiveDuration (Real oas, const Handle< YieldTermStructure > &engineTS, const DayCounter &dayCounter, Compounding compounding, Frequency frequency, Real bump=2e-4)
Real | effectiveConvexity (Real oas, const Handle< YieldTermStructure > &engineTS, const DayCounter &dayCounter, Compounding compounding, Frequency frequency, Real bump=2e-4)
Public Member Functions inherited from Bond
| Bond (Natural settlementDays, const Calendar &calendar, const Date &issueDate=Date(), const Leg &coupons=Leg())
| constructor for amortizing or non-amortizing bonds. More...
| Bond (Natural settlementDays, const Calendar &calendar, Real faceAmount, const Date &maturityDate, const Date &issueDate=Date(), const Leg &cashflows=Leg())
| old constructor for non amortizing bonds. More...
virtual Rate | nextCouponRate (Date d=Date()) const
Rate | previousCouponRate (Date d=Date()) const
| Previous coupon already paid at a given date. More...
Date | nextCashFlowDate (Date d=Date()) const
Date | previousCashFlowDate (Date d=Date()) const
bool | isExpired () const
| returns whether the instrument might have value greater than zero.
Natural | settlementDays () const
const Calendar & | calendar () const
const std::vector< Real > & | notionals () const
virtual Real | notional (Date d=Date()) const
const Leg & | cashflows () const
const Leg & | redemptions () const
const boost::shared_ptr< CashFlow > & | redemption () const
Date | startDate () const
Date | maturityDate () const
Date | issueDate () const
bool | isTradable (Date d=Date()) const
Date | settlementDate (Date d=Date()) const
Real | cleanPrice () const
| theoretical clean price More...
Real | dirtyPrice () const
| theoretical dirty price More...
Real | settlementValue () const
| theoretical settlement value More...
Rate | yield (const DayCounter &dc, Compounding comp, Frequency freq, Real accuracy=1.0e-8, Size maxEvaluations=100) const
| theoretical bond yield More...
Real | cleanPrice (Rate yield, const DayCounter &dc, Compounding comp, Frequency freq, Date settlementDate=Date()) const
| clean price given a yield and settlement date More...
Real | dirtyPrice (Rate yield, const DayCounter &dc, Compounding comp, Frequency freq, Date settlementDate=Date()) const
| dirty price given a yield and settlement date More...
Real | settlementValue (Real cleanPrice) const
| settlement value as a function of the clean price More...
Rate | yield (Real cleanPrice, const DayCounter &dc, Compounding comp, Frequency freq, Date settlementDate=Date(), Real accuracy=1.0e-8, Size maxEvaluations=100) const
| yield given a (clean) price and settlement date More...
virtual Real | accruedAmount (Date d=Date()) const
| accrued amount at a given date More...
Public Member Functions inherited from Instrument
Real | NPV () const
| returns the net present value of the instrument.
Real | errorEstimate () const
| returns the error estimate on the NPV when available.
const Date & | valuationDate () const
| returns the date the net present value refers to.
template<typename T >
T | result (const std::string &tag) const
| returns any additional result returned by the pricing engine.
const std::map< std::string, boost::any > & | additionalResults () const
| returns all additional result returned by the pricing engine.
void | setPricingEngine (const boost::shared_ptr< PricingEngine > &)
| set the pricing engine to be used. More...
Public Member Functions inherited from LazyObject
void | update ()
void | recalculate ()
void | freeze ()
void | unfreeze ()
void | alwaysForwardNotifications ()
Public Member Functions inherited from Observable
| Observable (const Observable &)
Observable & | operator= (const Observable &)
void | notifyObservers ()
Public Member Functions inherited from Observer
| Observer (const Observer &)
Observer & | operator= (const Observer &)
std::pair< iterator, bool > | registerWith (const boost::shared_ptr< Observable > &)
void | registerWithObservables (const boost::shared_ptr< Observer > &)
Size | unregisterWith (const boost::shared_ptr< Observable > &)
void | unregisterWithAll ()
virtual void | deepUpdate ()

## Protected Member Functions

| CallableBond (Natural settlementDays, const Schedule &schedule, const DayCounter &paymentDayCounter, const Date &issueDate=Date(), const CallabilitySchedule &putCallSchedule=CallabilitySchedule())
Protected Member Functions inherited from Bond
void | setupExpired () const
void | setupArguments (PricingEngine::arguments *) const
void | fetchResults (const PricingEngine::results *) const
void | addRedemptionsToCashflows (const std::vector< Real > &redemptions=std::vector< Real >())
void | setSingleRedemption (Real notional, Real redemption, const Date &date)
void | setSingleRedemption (Real notional, const boost::shared_ptr< CashFlow > &redemption)
void | calculateNotionalsFromCashflows ()
Protected Member Functions inherited from Instrument
void | calculate () const
virtual void | performCalculations () const
Protected Member Functions inherited from LazyObject

## Protected Attributes

DayCounter | paymentDayCounter_
Frequency | frequency_
CallabilitySchedule | putCallSchedule_
boost::shared_ptr< PricingEngine > | blackEngine_
| must be set by derived classes for impliedVolatility() to work
RelinkableHandle< Quote > | blackVolQuote_
| Black fwd yield volatility quote handle to internal blackEngine_.
RelinkableHandle< YieldTermStructure > | blackDiscountCurve_
| Black fwd yield volatility quote handle to internal blackEngine_.
Protected Attributes inherited from Bond
Natural | settlementDays_
Calendar | calendar_
std::vector< Date > | notionalSchedule_
std::vector< Real > | notionals_
Leg | cashflows_
Leg | redemptions_
Date | maturityDate_
Date | issueDate_
Real | settlementValue_
Protected Attributes inherited from Instrument
boost::shared_ptr< PricingEngine > | engine_
Real | NPV_
Real | errorEstimate_
Date | valuationDate_
std::map< std::string, boost::any > | additionalResults_
Protected Attributes inherited from LazyObject
bool | calculated_
bool | frozen_
bool | alwaysForward_

## Friends

class | ImpliedVolHelper
class | NPVSpreadHelper

## Additional Inherited Members

Public Types inherited from Observer
typedef std::set< boost::shared_ptr< Observable > > | set_type
typedef set_type::iterator | iterator

## Detailed Description

Callable bond base class.

Base callable bond class for fixed and zero coupon bonds. Defines commonalities between fixed and zero coupon callable bonds. At present, only European and Bermudan put/call schedules supported (no American optionality), as defined by the Callability class.

## Member Function Documentation

## impliedVolatility()

Volatility impliedVolatility | ( | Real | targetValue,
|  | const Handle< YieldTermStructure > & | discountCurve,
|  | Real | accuracy,
|  | Size | maxEvaluations,
|  | Volatility | minVol,
|  | Volatility | maxVol
| ) |  | const

returns the Black implied forward yield volatility

the forward yield volatility, see Hull, Fourth Edition, Chapter 20, pg 536). Relevant only to European put/call schedules

## OAS()

Spread OAS | ( | Real | cleanPrice,
|  | const Handle< YieldTermStructure > & | engineTS,
|  | const DayCounter & | dayCounter,
|  | Compounding | compounding,
|  | Frequency | frequency,
|  | Date | settlementDate = `Date()`,
|  | Real | accuracy = `1.0e-10`,
|  | Size | maxIterations = `100`,
|  | Rate | guess = `0.0`
| ) |  |

Calculate the Option Adjusted Spread (OAS)

Calculates the spread that needs to be added to the the reference curve so that the theoretical model value matches the marketPrice.

## cleanPriceOAS()

Real cleanPriceOAS | ( | Real | oas,
|  | const Handle< YieldTermStructure > & | engineTS,
|  | const DayCounter & | dayCounter,
|  | Compounding | compounding,
|  | Frequency | frequency,
|  | Date | settlementDate = `Date()`
| ) |  |

Calculate the clean price based on the given option-adjust-spread (oas) over the given yield term structure (engineTS)

## effectiveDuration()

Real effectiveDuration | ( | Real | oas,
|  | const Handle< YieldTermStructure > & | engineTS,
|  | const DayCounter & | dayCounter,
|  | Compounding | compounding,
|  | Frequency | frequency,
|  | Real | bump = `2e-4`
| ) |  |

Calculate the effective duration, i.e., the first differential of the dirty price w.r.t. a parallel shift of the yield term structure divided by current dirty price

## effectiveConvexity()

Real effectiveConvexity | ( | Real | oas,
|  | const Handle< YieldTermStructure > & | engineTS,
|  | const DayCounter & | dayCounter,
|  | Compounding | compounding,
|  | Frequency | frequency,
|  | Real | bump = `2e-4`
| ) |  |

Calculate the effective convexity, i.e., the second differential of the dirty price w.r.t. a parallel shift of the yield term structure divided by current dirty price

## setupArguments()

virtual void setupArguments | ( | PricingEngine::arguments * |  | ) | const

virtual

When a derived argument structure is defined for an instrument, this method should be overridden to fill it. This is mandatory in case a pricing engine is used.

Reimplemented from Instrument.

Reimplemented in CallableFixedRateBond.