QuantLib
A free/open-source library for quantitative finance
Reference manual - version 1.12
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RiskyBond Class Referenceabstract

#include <ql/experimental/credit/riskybond.hpp>

+ Inheritance diagram for RiskyBond:

Public Member Functions

 RiskyBond (const std::string &name, const Currency &ccy, Real recoveryRate, const Handle< DefaultProbabilityTermStructure > &defaultTS, const Handle< YieldTermStructure > &yieldTS, Natural settlementDays=0, Calendar calendar=Calendar())
 
virtual std::vector< boost::shared_ptr< CashFlow > > cashflows () const =0
 
std::vector< boost::shared_ptr< CashFlow > > expectedCashflows ()
 
virtual Real notional (Date date=Date::minDate()) const =0
 
virtual Date effectiveDate () const =0
 
virtual Date maturityDate () const =0
 
virtual std::vector< boost::shared_ptr< CashFlow > > interestFlows () const =0
 
virtual std::vector< boost::shared_ptr< CashFlow > > notionalFlows () const =0
 
Real riskfreeNPV () const
 
Real totalFutureFlows () const
 
std::string name () const
 
Currency ccy () const
 
Handle< YieldTermStructure > yieldTS () const
 
Handle< DefaultProbabilityTermStructure > defaultTS () const
 
Real recoveryRate () const
 
Instrument interface
bool isExpired () const
 returns whether the instrument might have value greater than zero.
 
- Public Member Functions inherited from Instrument
virtual void setupArguments (PricingEngine::arguments *) const
 
virtual void fetchResults (const PricingEngine::results *) const
 
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

void setupExpired () const
 
void performCalculations () const
 
- Protected Member Functions inherited from Instrument
void calculate () const
 
- Protected Member Functions inherited from LazyObject

Protected Attributes

Natural settlementDays_
 
Calendar calendar_
 
- 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_
 

Additional Inherited Members

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

Detailed Description

Base class for default risky bonds

Constructor & Destructor Documentation

◆ RiskyBond()

RiskyBond ( const std::string &  name,
const Currency &  ccy,
Real  recoveryRate,
const Handle< DefaultProbabilityTermStructure > &  defaultTS,
const Handle< YieldTermStructure > &  yieldTS,
Natural  settlementDays = 0,
Calendar  calendar = Calendar() 
)

The value is contingent to survival, i.e., the knockout probability is considered. To compute the npv given that the issuer has survived, divide the npv by

\[(1-P_{def}(T_{npv}))\]

Member Function Documentation

◆ setupExpired()

void setupExpired ( ) const
protectedvirtual

This method must leave the instrument in a consistent state when the expiration condition is met.

Reimplemented from Instrument.

◆ performCalculations()

void performCalculations ( ) const
protectedvirtual

In case a pricing engine is not used, this method must be overridden to perform the actual calculations and set any needed results. In case a pricing engine is used, the default implementation can be used.

Reimplemented from Instrument.