Logo Search packages:      
Sourcecode: quantlib version File versions

QuantLib::FixedCouponBondForward Class Reference

#include <fixedcouponbondforward.hpp>

Inheritance diagram for QuantLib::FixedCouponBondForward:

QuantLib::Forward QuantLib::Instrument QuantLib::LazyObject QuantLib::Observable QuantLib::Observer

List of all members.


Detailed Description

forward contract on a fixed-coupon bond

1. valueDate refers to the settlement date of the bond forward contract. maturityDate is the delivery (or repurchase) date for the underlying bond (not the bond's maturity date).

2. Relevant formulas used in the calculations ($P$ refers to a price):

a. $ P_{CleanFwd}(t) = P_{DirtyFwd}(t) - AI(t=deliveryDate) $ where $ AI $ refers to the accrued interest on the underlying bond.

b. $ P_{DirtyFwd}(t) = \frac{P_{DirtySpot}(t) - SpotIncome(t)} {discountCurve->discount(t=deliveryDate)} $

c. $ SpotIncome(t) = \sum_i \left( CF_i \times incomeDiscountCurve->discount(t_i) \right) $ where $ CF_i $ represents the ith bond cash flow (coupon payment) associated with the underlying bond falling between the settlementDate and the deliveryDate. (Note the two different discount curves used in b. and c.)

Example: valuation of a repo on a fixed-coupon bond

Todo:
Add preconditions and tests
Todo:
Create switch- if coupon goes to seller is toggled on, don't consider income in the $ P_{DirtyFwd}(t) $ calculation.
Todo:
Verify this works when the underlying is paper (in which case ignore all AI.)
Warning:
This class still needs to be rigorously tested

Definition at line 73 of file fixedcouponbondforward.hpp.


Public Member Functions

virtual void fetchResults (const Results *) const
void notifyObservers ()
void registerWith (const boost::shared_ptr< Observable > &)
virtual void setupArguments (Arguments *) const
void unregisterWith (const boost::shared_ptr< Observable > &)
Inspectors
BusinessDayConvention businessDayConvention () const
const Calendarcalendar () const
const DayCounterdayCounter () const
boost::shared_ptr
< YieldTermStructure
discountCurve () const
 term structure relevant to the contract (e.g. repo curve)
boost::shared_ptr
< YieldTermStructure
incomeDiscountCurve () const
 term structure that discounts the underlying's income cash flows
bool isExpired () const
 returns whether the instrument is still tradable.
virtual Date settlementDate () const
Calculations
Real cleanForwardPrice () const
 (dirty) forward bond price minus accrued on bond at delivery
Real forwardPrice () const
 (dirty) forward bond price
Real spotIncome (const Handle< YieldTermStructure > &incomeDiscountCurve) const
 NPV of bond coupons discounted using incomeDiscountCurve.
Real spotValue () const
 NPV of underlying bond.
Inspectors
Real errorEstimate () const
 returns the error estimate on the NPV when available.
Real NPV () const
 returns the net present value of the instrument.
Constructors
 FixedCouponBondForward (const Date &valueDate, const Date &maturityDate, Position::Type type, Real strike, Integer settlementDays, const DayCounter &dayCount, const Calendar &calendar, BusinessDayConvention businessDayConvention, const boost::shared_ptr< FixedCouponBond > &fixedCouponBond, const Handle< YieldTermStructure > &discountCurve=Handle< YieldTermStructure >(), const Handle< YieldTermStructure > &incomeDiscountCurve=Handle< YieldTermStructure >())
Calculations
virtual Real forwardValue () const
 forward value/price of underlying, discounting income/dividends
InterestRate impliedYield (Real underlyingSpotValue, Real forwardValue, Date settlementDate, Compounding compoundingConvention, DayCounter dayCount)
Calculations
These methods do not modify the structure of the object and are therefore declared as const. Data members which will be calculated on demand need to be declared as mutable.

void freeze ()
void recalculate ()
void unfreeze ()
Modifiers
void setPricingEngine (const boost::shared_ptr< PricingEngine > &)
 set the pricing engine to be used.
Observer interface
void update ()

Protected Member Functions

void performCalculations () const
Calculations
void calculate () const
virtual void setupExpired () const

Protected Attributes

BusinessDayConvention businessDayConvention_
bool calculated_
Calendar calendar_
DayCounter dayCount_
Handle< YieldTermStructurediscountCurve_
boost::shared_ptr< PricingEngineengine_
boost::shared_ptr
< FixedCouponBond
fixedCouponBond_
bool frozen_
Handle< YieldTermStructureincomeDiscountCurve_
Date maturityDate_
 maturityDate of the forward contract or delivery date of underlying
boost::shared_ptr< Payoffpayoff_
Integer settlementDays_
Real underlyingIncome_
Real underlyingSpotValue_
Date valueDate_
Results
The value of this attribute and any other that derived classes might declare must be set during calculation.

Real errorEstimate_
Real NPV_

The documentation for this class was generated from the following files:

Generated by  Doxygen 1.6.0   Back to index