Bond Premium and Discount¶
The bond notation can be used to rearrange the basic price formula to arrive at the premium-discount formula:
A bond is said to sell at a premium if the price exceeds the redemption amount . Equivalently this is also the case when the modified coupon rate exceeds the yield rate per coupon period, when :
A bond is said to sell at a discount if the price is less than the redemption amount . Equivalently, this is also the case when the yield rate per coupon period exceeds the modified coupon rate, when :
Examples¶
Suppose we have a 5-year, 1,000 5% par value bond with annual coupons, priced to yield 8% compounded annually. Find out if the bond sells at a premium or discount, and compute the magnitude of premium or discount.
TmVal’s Bond
class has an attribute called premium
that represents the magnitude of the premium or discount. It is positive if the bond sells at a premium and negative if it sells at a discount. Since for this example, we would expect it to sell at a discount:
In [1]: from tmval import Bond
In [2]: bd = Bond(
...: face=1000,
...: red=1000,
...: alpha=.05,
...: cfreq=1,
...: term=5,
...: gr=.08
...: )
...:
In [3]: print(bd.price)
880.2186988876571
In [4]: print(bd.price < bd.red)
True
In [5]: print(bd.premium)
-119.78130111234293
Now, to see that the bond sells at a premium when , let’s switch the yield and coupon percentages:
In [6]: from tmval import Bond
In [7]: bd = Bond(
...: face=1000,
...: red=1000,
...: alpha=.08,
...: cfreq=1,
...: term=5,
...: gr=.05
...: )
...:
In [8]: print(bd.price)
1129.8843001189243
In [9]: print(bd.price > bd.red)
True
In [10]: print(bd.premium)
129.88430011892433