Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

bond.h

Go to the documentation of this file.
00001 #pragma once
00002 #ifndef bond_h
00003 #define bond_h
00004 
00005 #include "../common/types.h"
00006 #include "../common/date.h"
00007 #include <valarray>
00008 #include "../PartB/yieldCurve.h"
00009 #include "../PartF/creditCurve.h"
00010 
00011 
00012 using namespace std;
00013 
00014 class cashflow{
00015 private:
00016         valarray<Date> _dates;
00017         valarray<Real> _cashflows;
00018 
00019 public:
00020         cashflow(valarray<Date> dates, valarray<Real> cashflows);
00021         ~cashflow(){};
00022 
00023         valarray<Date> getDates();
00024         valarray<Real> getCashflows();
00025 
00026 
00027 };
00028 
00029 class bond{
00030 
00031 protected:
00032         Date _issue;
00033         Date _maturity;
00034         Date _firstcoupondate;
00035         Real _coupon;
00036         Frequency _freq;
00037         Real _faceamount;
00038         yieldCurve _yc;
00039 protected:
00040         DayCountConvention _daycount;
00041 public:
00052         bond(Date issue, Date maturity, Date firstcoupondate, Real coupon, Frequency freq, Real faceamount,DayCountConvention daycount, yieldCurve yc);
00053         
00055         ~bond(void){};
00056 
00057         cashflow getCashflow();
00058         
00059         virtual Real quotedPrice(Date today);
00060         virtual Real fairvalue(Date today);
00061         virtual Real yieldToMaturity(Date today);
00062         virtual Real duration(Date today);
00063         virtual Real convexity(Date today);
00064         
00065         virtual Real quotedPrice(){return quotedPrice(_issue);};
00066         virtual Real fairvalue(){return fairvalue(_issue);};
00067         virtual Real yieldToMaturity(){return yieldToMaturity(_issue);};
00068         virtual Real duration(){return duration(_issue);};
00069         virtual Real convexity(){return convexity(_issue);};
00070 
00071         virtual Date getMaturity(){return _maturity;};
00072         virtual Date getIssue(){return _issue;};
00073         virtual Real getMaturityInYears(){return getMaturityInYears(_issue);};
00074         virtual Real getMaturityInYears(Date today){return today.dayCount(_maturity);};
00075         virtual Real getFaceAmount() const {return _faceamount;};
00076 };
00077 
00078 class treasurybond : public bond{
00079 private :
00080         
00081 public :
00092         treasurybond(Date issue, Date maturity, Date firstcoupondate, Real coupon, Frequency freq, Real faceamount, DayCountConvention daycount, yieldCurve yc);
00093         
00095         treasurybond(Date issue, Date maturity, Date firstcoupondate, Real coupon, yieldCurve yc);
00096         
00098         treasurybond(Date issue, Date maturity, Real faceamount, DayCountConvention daycount, yieldCurve yc);
00099         
00101         ~treasurybond(void){};
00102 
00104         treasurybond shiftedbond(Real shift);
00105 
00107         Real rho(Date today);
00108         Real rho(){return rho(_issue);};
00109 };
00110 
00111 class riskybond : public bond{
00112 
00113 private :
00114         creditCurve _cc;
00115 
00116 public :
00128         riskybond(Date issue, Date maturity, Date firstcoupondate, Real coupon, Frequency freq, Real faceamount,DayCountConvention daycount, yieldCurve yc,  creditCurve cc);
00129 
00131         riskybond(Date issue, Date maturity, Real faceamount, DayCountConvention daycount, yieldCurve yc,  creditCurve cc);
00132 
00133 
00135         ~riskybond(void){};
00136 
00137         virtual Real quotedPrice(Date today);
00138         
00140         virtual riskybond shiftedbond(Real shift);
00141 
00143         virtual Real rho(Date today);
00144         virtual Real rho(){return rho(_issue);};
00145 };
00146 
00147 #endif
00148 

Note: Generated nightly - reload for latest version
Generated on Thu Dec 22 23:12:35 2005 for terreneuve by doxygen 1.3.6