From: Ashish K. <ash...@3i...> - 2005-04-27 04:28:59
|
Yep, using policy-based class design does make a lot of sense in this case. I've been reading the relevant chapters in "Modern C++ Design", and I'd say that this is a perfect case where they'd be useful. > Given the variaties of bonds and bond-like instruments, building a class > hierarchy via inheritance is one way: conventional, often leading to a > big tree of classes which eventually becomes hard to manage. Consider > Bond, FloatingBond, FixedCouponBond, StepupCouponBond, > StepupFloatingBond, FixedCashFlowBond,...; > Now add callable feature to each of them by subclassing (CallableBond, > CallableFloatingBond, ...); > and make them all putable; > and make them all convertible; > and add sinking fund to them all; > ... Any other features bankers may come along with; > > You got an idea how the class tree will look like. > > Another way is to adopt a generic concept of bond: a generic bond thinks > a bond-like instrument of some composing policies: > a coupon policy including Fixed, Floating, Stepup, Custom; > a principal policy including Fixed, Amortized, Prepayed; > a callable policy with European, American, Bermudan; > a putable policy; > a conversion policy; > a credit enhancement policy like sinking fund, collateralization; > ... > So your convertible bond might look like this: > FixedCouponPolicy fixedCpn; > ConvertiblePolicy conv; > GenericBond myPlainConverts(fixedCpn, conv); > > This generic view might be more fitting for non-commercial, > experimentory analysis package like QuantLib. > > Best, > -wujiang -- Greetings! ICICI Infotech is now 3i Infotech. The e-mail addresses of the company's employees have been changed to <existing name>@3i-infotech.com. You are requested to take note of this new e-mail ID and make use of the same in future "This e-mail message may contain confidential, proprietary or legally privileged information. It should not be used by anyone who is not the original intended recipient. If you have erroneously received this message, please delete it immediately and notify the sender. The recipient acknowledges that 3i Infotech or its subsidiaries and associated companies, (collectively "3i Infotech"), are unable to exercise control or ensure or guarantee the integrity of/over the contents of the information contained in e-mail transmissions and further acknowledges that any views expressed in this message are those of the individual sender and no binding nature of the message shall be implied or assumed unless the sender does so expressly with due authority of 3i Infotech. Before opening any attachments please check them for viruses and defects." |