Questions regarding amortizing bonds
Posted by snovik on Mar 17, 2009; 5:28pm
URL: http://quantlib.414.s1.nabble.com/Questions-regarding-amortizing-bonds-tp12691.html
First of all, sorry for the long post. I might be looking at the problem from my own castle and therefore miss some points.
I can not understand why implementation of amortiting bonds is so complex and unfriendly.
All bond constructors use some leg helper to produce coupon cashflows of some arbitrary notional schedule plus again some arbitrary final redemption. I see it being as flexbile as it could be. However if I want to have an amortizing bond I used to use a single original (not current) notional to produce "full" coupon cash flows which where then wrapped and adjusted for factor on each given factor date. Here factor is the bond paydown schedule, starting from 1 at issue and going to 0 at maturity or final paydown date.
Current implementation of amortizing bond requires me to pre-calculate already amortized (current) notionals and then send them to the bond constructor which then uses a leg helper and so on... and at the end still extracts amortized amounts from provided notionals.
My questions are:
First, I do not understand why I have to pre-calculate current notionals. Factors allow for basic bond comparision and if I need to model amortisation of bonds I am modelling factors which means that I am going to stick with my wrapper and avoid pre-calculation currently required. If I am using historic information to construct an amortizing bond, then factor information of much more readily available than current notionals which again leaves me with the wrapper.
Second, when I am looking into the code, I fail to "wrap" ;) my head around it. Calculation of amortisation cash-flows is very straightforward if one uses factors that there is no need to store notionals, cashflows, schedules and redemptions and do any magic with them. I know memory if cheap these days and should be a low concern but only if it makes code easier or faster, not more complex ;)
Finally, I do not understand why notionals are not allowed to increase (or be greater than final payment). There are plenty of in general amortizing instruments which are PIK-able, i.e. when interest can be capitalized (CLOs are like this to start with).
I hope I am not missing some major point here and would be happy to get clarifications. Most of bonds I work with are amortizing and I find current implementation in general useless or at minimum overly complex and unfriendly.