A zero-coupon bond is a bond that does not pay any periodic interest except on maturity, where the principal or face value is repaid. Zero-coupon bonds are also called pure discount bonds.
A zero-coupon bond can be valued as follows:
![](https://static.packt-cdn.com/products/9781789346466/graphics/assets/42054011-f33e-4833-b888-b6402dc75f24.png)
Here, y is the annually-compounded yield or rate of the bond, and t is the time remaining to the maturity of the bond.
Let's take a look at an example of a five-year zero-coupon bond with a face value of $100. The yield is 5%, compounded annually. The price can be calculated as follows:
![](https://static.packt-cdn.com/products/9781789346466/graphics/assets/a72bb02c-3690-47ee-81ab-c702d8a0dc15.png)
A simple Python zero-coupon bond calculator can be used to illustrate this example:
In [ ]:
def zero_coupon_bond(par, y, t):
"""
Price a zero coupon bond.
:param par: face value of the bond.
:param y: annual yield or rate of the bond.
:param t: time to maturity, in years.
...