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.