Login  Register

callable bonds

Posted by Allen Kuo-2 on Aug 01, 2006; 8:03am
URL: http://quantlib.414.s1.nabble.com/callable-bonds-tp11222.html

Hi:
 
I'm trying to build a callable bond class and was wondering what a QL preferred design would be. Two possibilities are below. I liked the economy of the first method but the ConvertibleBond class is designed the second way, so was not sure how to proceed.

Thanks,
Allen
 

(1)
class CallableBond : public Bond {
 public:
     CallableBond(const boost::shared_ptr<Bond> bond&
                      const boost::shared_ptr<PricingEngine>& engine,
                      const CallabilitySchedule& callability,
                      );
 etc.
 }
 
i.e. first need to construct a FixedCouponBond, FloatingRateBond or ZeroCouponBond and then pass it in to the CallableBond constructor (which then implicitly defines the callable bond). Theoretically, a ConvertibleBond could also be passed into the constructor to make it callable, though some equity/interest rate correlations would have to be handled/modeled within it.
 
(2)
Analogous to the ConvertibleBond class, we would have three explicit constructors for
each of three types of bonds ( CallableZeroCouponBond , CallableFloatingRateBond ,
CallableFixedCouponBond ). Doing it this way, in the future though, we might need three more constructors for convertible bonds: CallableConvertibleFloatingRateBond, 
CallableConvertibleFixedCouponBond, CallableConvertibleZeroCouponBond.
 
Example below, analogous to ConvertibleBond class:

class CallableBond : public Bond {
 public:
     CallableBond( .... ); 
}

class CallableZeroCouponBond : public CallableBond {
 public:
     CallableZeroCouponBond( .... ); 
}

class CallableFloatingRateBond : public CallableBond {
 public:
     CallableFloatingRateBond( .... );
}

class CallableFixedCouponBond : public CallableBond {
 public:
     CallableFixedCouponBond( .... ); 
}


See the all-new, redesigned Yahoo.com. Check it out.