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