-
Compound Interest Part 1 6
-
Lecture1.1
-
Lecture1.2
-
Lecture1.3
-
Lecture1.4
-
Lecture1.5
-
Lecture1.6
-
-
Compound Interest Part 2 3
-
Lecture2.1
-
Lecture2.2
-
Lecture2.3
-
-
Present Value 4
-
Lecture3.1
-
Lecture3.2
-
Lecture3.3
-
Lecture3.4
-
-
Annuities 6
-
Lecture4.1
-
Lecture4.2
-
Lecture4.3
-
Lecture4.4
-
Lecture4.5
-
Lecture4.6
-
-
Perpetuities 2
-
Lecture5.1
-
Lecture5.2
-
-
Bonds 6
-
Lecture6.1
-
Lecture6.2
-
Lecture6.3
-
Lecture6.4
-
Lecture6.5
-
Lecture6.6
-
-
Dividend Discount Model 3
-
Lecture7.1
-
Lecture7.2
-
Lecture7.3
-
-
Risk 8
-
Lecture8.1
-
Lecture8.2
-
Lecture8.3
-
Lecture8.4
-
Lecture8.5
-
Lecture8.6
-
Lecture8.7
-
Lecture8.8
-
-
Capital Asset Pricing Model 6
-
Lecture9.1
-
Lecture9.2
-
Lecture9.3
-
Lecture9.4
-
Lecture9.5
-
Lecture9.6
-
Par Bond
Par Bonds¶
A bond which is at par value is one which has a present value equal to its face value. This happens when the coupon matches the discount rate. Let’s see some examples of this below.
In [11]:
print(bond_value(1000, .05, 5, .05))
print(bond_value(1000, .07, 5, .07))
print(bond_value(1000, .07, 10, .07))
print(bond_value(5000, .05, 5, .05))
print(bond_value(5000, .1, 10, .1))
999.9999999999999
1000.0
1000.0
5000.0
5000.0
Discount Bonds and Pull to Par¶
When a bond has a coupon rate less than the discount rate, it will result in a present value less than the face value. This is a discount bond because you buy it at a discount! As time passes it will approach par value and appreciate in value. This is pulling to par. Let's see an example with a ten year bond with face value of $1000, coupon rate of 2%, and discount rate of 5%
In [12]:
#Define parameters
n = 10
F = 1000
c = .02
r = .05
We want to track the what time period we are at, and we will also find the number of years left. Then we can find the values in all of these cases and finally graph it.
In [13]:
time = list(range(n))
time_left = [n-x for x in time]
print("Year:")
print(time)
print("Years left:")
print(time_left)
Year:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Years left:
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
In [14]:
#Find the bond values
vals = [bond_value(F, c, t, r) for t in time_left]
print("Bond values:")
print(vals)
Bond values:
[768.3479521244554, 786.7653497306782, 806.1036172172122, 826.4087980780728, 847.7292379819763, 870.1156998810752, 893.6214848751291, 918.3025591188856, 944.21768707483, 971.4285714285713]
In [15]:
plt.plot(time_left, vals)
plt.xlim([10,0])
plt.xlabel("Time to Maturity")
plt.ylabel("Bond Present Value")
plt.title("Bond Present Value vs. Time to Maturity")
plt.show()
Prev
Discount Bond
Next
Premium Bond