Bond Premium and Discount

The bond notation can be used to rearrange the basic price formula to arrive at the premium-discount formula:

P = C(g-j)\ax{\angln j} + C

A bond is said to sell at a premium if the price P exceeds the redemption amount C. Equivalently this is also the case when the modified coupon rate exceeds the yield rate per coupon period, when g > j:

\text{premium} = P - C = C(g - j)\ax{\angln j}.

A bond is said to sell at a discount if the price P is less than the redemption amount C. Equivalently, this is also the case when the yield rate per coupon period exceeds the modified coupon rate, when j > g:

\text{discount} = C - P = C(j - g)\ax{\angln j}.

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 j > g 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 g > j, 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