Makeham’s Formula¶
Makeham’s formula can also be derived via bond notation and can be useful for obtaining the price of a bond when we do not know the number of coupons:
where is the present value of the redemption amount.
Examples¶
Suppose we have a 1,000 bond that pays 5% annual coupons. The redemption amount is 1,250 and the present value of the redemption amount is 776.1516538. If it is priced to yield 10% compounded annually, what is the price of the bond? Also, find the term and number of coupons.
TmVal’s Bond
class has a method called makeham()
which it calls internally when the term and price are missing, and when the present value of the redemption amount is provided via the k
argument. Because it is called internally, we do not have to explicitly call this method to get the bond price.
In [1]: from tmval import Bond
In [2]: bd = Bond(
...: face=1000,
...: red=1250,
...: k=776.1516538,
...: alpha=.05,
...: cfreq=1,
...: gr=.10
...: )
...:
In [3]: print(bd.term)
5.0
In [4]: print(bd.n_coupons)
5.0
In [5]: print(bd.price)
965.690992294366
We could call makeham()
anyway, just to verify:
In [6]: print(bd.makeham())
965.690992294366