- QuantLib
- Bond
Base bond class. More...
#include <ql/instruments/bond.hpp>
Public Member Functions | |
Bond (Natural settlementDays, const Calendar &calendar, const Date &issueDate=Date(), const Leg &coupons=Leg()) | |
constructor for amortizing or non-amortizing bonds. | |
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. | |
virtual Rate | nextCouponRate (Date d=Date()) const |
Rate | previousCouponRate (Date d=Date()) const |
Previous coupon already paid at a given date. | |
Date | nextCashFlowDate (Date d=Date()) const |
Date | previousCashFlowDate (Date d=Date()) const |
Instrument interface | |
bool | isExpired () const |
returns whether the instrument might have value greater than zero. | |
Inspectors | |
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 |
Calculations | |
Real | cleanPrice () const |
theoretical clean price | |
Real | dirtyPrice () const |
theoretical dirty price | |
Real | settlementValue () const |
theoretical settlement value | |
Rate | yield (const DayCounter &dc, Compounding comp, Frequency freq, Real accuracy=1.0e-8, Size maxEvaluations=100) const |
theoretical bond yield | |
Real | cleanPrice (Rate yield, const DayCounter &dc, Compounding comp, Frequency freq, Date settlementDate=Date()) const |
clean price given a yield and settlement date | |
Real | dirtyPrice (Rate yield, const DayCounter &dc, Compounding comp, Frequency freq, Date settlementDate=Date()) const |
dirty price given a yield and settlement date | |
Real | settlementValue (Real cleanPrice) const |
settlement value as a function of the clean price | |
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 | |
virtual Real | accruedAmount (Date d=Date()) const |
accrued amount at a given date | |
Protected Member Functions | |
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 Attributes | |
Natural | settlementDays_ |
Calendar | calendar_ |
std::vector< Date > | notionalSchedule_ |
std::vector< Real > | notionals_ |
Leg | cashflows_ |
Leg | redemptions_ |
Date | maturityDate_ |
Date | issueDate_ |
Real | settlementValue_ |
Base bond class.
Derived classes must fill the uninitialized data members.
Bond | ( | Natural | settlementDays, |
const Calendar & | calendar, | ||
const Date & | issueDate = Date() , |
||
const Leg & | coupons = Leg() |
||
) |
constructor for amortizing or non-amortizing bonds.
Redemptions and maturity are calculated from the coupon data, if available. Therefore, redemptions must not be included in the passed cash flows.
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.
const Leg & cashflows | ( | ) | const |
const Leg & redemptions | ( | ) | const |
returns just the redemption flows (not interest payments)
const boost::shared_ptr<CashFlow>& redemption | ( | ) | const |
returns the redemption, if only one is defined
Real cleanPrice | ( | ) | const |
theoretical clean price
The default bond settlement is used for calculation.
Real dirtyPrice | ( | ) | const |
theoretical dirty price
The default bond settlement is used for calculation.
Real settlementValue | ( | ) | const |
theoretical settlement value
The default bond settlement date is used for calculation.
Rate yield | ( | const DayCounter & | dc, |
Compounding | comp, | ||
Frequency | freq, | ||
Real | accuracy = 1.0e-8 , |
||
Size | maxEvaluations = 100 |
||
) | const |
theoretical bond yield
The default bond settlement and theoretical price are used for calculation.
Real cleanPrice | ( | Rate | yield, |
const DayCounter & | dc, | ||
Compounding | comp, | ||
Frequency | freq, | ||
Date | settlementDate = Date() |
||
) | const |
clean price given a yield and settlement date
The default bond settlement is used if no date is given.
Real dirtyPrice | ( | Rate | yield, |
const DayCounter & | dc, | ||
Compounding | comp, | ||
Frequency | freq, | ||
Date | settlementDate = Date() |
||
) | const |
dirty price given a yield and settlement date
The default bond settlement is used if no date is given.
Real settlementValue | ( | Real | cleanPrice | ) | const |
settlement value as a function of the clean price
The default bond settlement date is used for calculation.
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
The default bond settlement is used if no date is given.
virtual Real accruedAmount | ( | Date | d = Date() | ) | const [virtual] |
accrued amount at a given date
The default bond settlement is used if no date is given.
virtual Rate nextCouponRate | ( | Date | d = Date() | ) | const [virtual] |
Expected next coupon: depending on (the bond and) the given date the coupon can be historic, deterministic or expected in a stochastic sense. When the bond settlement date is used the coupon is the already-fixed not-yet-paid one.
The current bond settlement is used if no date is given.
Rate previousCouponRate | ( | Date | d = Date() | ) | const |
Previous coupon already paid at a given date.
Expected previous coupon: depending on (the bond and) the given date the coupon can be historic, deterministic or expected in a stochastic sense. When the bond settlement date is used the coupon is the last paid one.
The current bond settlement is used if no date is given.
void setupExpired | ( | ) | const [protected, virtual] |
This method must leave the instrument in a consistent state when the expiration condition is met.
Reimplemented from Instrument.
void setupArguments | ( | PricingEngine::arguments * | ) | const [protected, 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, and CallableBond.
void fetchResults | ( | const PricingEngine::results * | r | ) | const [protected, virtual] |
When a derived result structure is defined for an instrument, this method should be overridden to read from it. This is mandatory in case a pricing engine is used.
Reimplemented from Instrument.
void addRedemptionsToCashflows | ( | const std::vector< Real > & | redemptions = std::vector< Real >() | ) | [protected] |
This method can be called by derived classes in order to build redemption payments from the existing cash flows. It must be called after setting up the cashflows_ vector and will fill the notionalSchedule_, notionals_, and redemptions_ data members.
If given, the elements of the redemptions vector will multiply the amount of the redemption cash flow. The elements will be taken in base 100, i.e., a redemption equal to 100 does not modify the amount.
void setSingleRedemption | ( | Real | notional, |
Real | redemption, | ||
const Date & | date | ||
) | [protected] |
This method can be called by derived classes in order to build a bond with a single redemption payment. It will fill the notionalSchedule_, notionals_, and redemptions_ data members.
void setSingleRedemption | ( | Real | notional, |
const boost::shared_ptr< CashFlow > & | redemption | ||
) | [protected] |
This method can be called by derived classes in order to build a bond with a single redemption payment. It will fill the notionalSchedule_, notionals_, and redemptions_ data members.
void calculateNotionalsFromCashflows | ( | ) | [protected] |
used internally to collect notional information from the coupons. It should not be called by derived classes.