The Discount Curve, ZCBs and the Time Value of Money

This is a foundational piece about the time value of money. It will feel a bit more like accountancy rather than mathematical finance, but it’s the absolute bedrock of what we do so definitely worth spending a bit of time on!

$100 today is worth more than $100 in a year’s time. This should be obvious – if I have $100 today, I can put it into a bank account and earn (back in the good old days!) perhaps 3% on it – so in a year’s time I have $103.

For the rest of this post (and in much of finance), I will assume that I can put money on deposit at a risk-free rate r(t), and that it will grow according to the following p.d.e.:

dB = r(t) B dt

note that this has no stochastic component – it’s solution is risk-free, exponential growth so that if I start with \inline B(0) at time 0, by time T it has grown to \inline B(T) = B(0)\exp {\int^T_0 r(t) dt} – compound interest with ‘short rate’ r(t).

Time varying interest rates can be troublesome to work with, a more convenient – but closely related – concept is the Zero Coupon Bond (ZCB). This is a bond that I buy today with a specific maturity date, at which I will get paid exactly $1. It doesn’t pay any interest in between, and since I’ve said that money is more valuable now than later, I expect to pay less than $1 for the coupon now to reflect this. How much less? Well, thinking about the bank account example above, I locked away my $100 to receive $103 a year later – this is just the same as buying 103 ZCBs maturing in a year – so the price of each bond must be 100/103 = $97.09 or there is an arbitrage opportunity. As we can see, there is a 1-to-1 correspondence between interest rate curves and ZCB prices over a period, knowing one allows us to calculate the other in a rather straightforward way,

\delta(0,T) = e^{-\int^T_0 r(t)dt}

where \inline \delta is the price of a ZCB bought now with maturity at T [the above formula is only strictly true in the context of deterministic rates – more on this later]. I’ve added a little doodle here to allow conversion between a (constant) interest rate and time period and a discount factor and also on the PRICERS page – I’ll add functionality for time-varying rates another time.

Rate: %; Time: Years


The collection of all of the ZCB prices over a period is called a discount curve. This tells us how much a payment at a particular time is worth in today’s money. As a bank, if a customer comes to me and asks to borrow $10,000 for five years at 8\% interest, the payments I will receive from him will be $800 per year for the next five years and then the return of the principle. Assuming he doesn’t default on the loan [this is another problem all together… another day!] then I can work out the ‘Net Present Value’ of this loan by taking the price for a ZCB expiring at each of the five payment dates from the discount curve, multiplying by the payment amount, and summing them together. As long as this is over $10,000 I should make a profit – if this profit is enough to compensate me for the credit risk that I’m taking, I will probably go ahead and give him the loan. By way of example, the discount curve for several different constant interest rates over 20 years is shown here:

Example Discount Curves
Examples of discount curves generated by constant interest rates of 3%, 5% and 10% over a 20 year period. Any pre-determined future cash flow can be hedged precisely by using zero coupon bonds at the same times, giving the Net Present Value (NPV) of the cash flow

One of the reasons that these rates are so important is that as I said in Risk Free Valuation, to price derivatives we assume that they grow at the risk-free rate r(t) in the RN measure. This is just the r(t) that we’ve worked with above, and we can back it out from the discount curve:

\delta(0,T) = e^{-\int^T_0 r(t)dt}

-\ln[\delta(0,T)] = \int^T_0 r(t)dt

-{\partial \ln[\delta(0,T)] \over \partial T} = r(T)

-{1 \over \delta(0,T)}{\partial \delta(0,T) \over \partial T} = r(T)

so we can calculate the instantaneous risk-free rate given a discount curve fairly straight-forwardly by taking the local gradient and dividing by the megative of the local value (in general the gradient will be negative, so this should be a positive quantity).

In reality, ZCBs don’t exist. In this context all of the above seems a bit academic! However, they can be built up out of a combination of coupon-bearing bonds. Typically, government bonds will pay a fixed interest rate each year, and have a set maturity year in which they pay both an interest payment and the original premium. The rates won’t be the same – typically longer maturity bonds will have higher rates to compensate for the added risk to the principle for locking it away for so long. Further, there is a secondary market for government debt, so we can see the current prices of these bonds for differing maturities on the market. Imagine we see a bond maturing in a year’s time that will pay 5% interest (it doesn’t matter how old it is – it might have been issued 3 or 20 years ago without affecting us), and because it is due for maturity then, it will also return the $1 principle. So it will pay a single payment, in a year’s time, of $1.05. This is already effectively a ZCB because all but one of the payments have already been made. We can see it’s market price P (lets say for concreteness it is $1.03) and from that calculate the market-implied discount factor

\delta(0,1) = {1.03 \over 1.05} = 0.981

So far, so good. But how can we create a ZCB with longer maturities? The trick here is to combine multiple coupon-bearing bonds. Lets say we can see another bond on the market with maturity in 2 years, that pays yearly 4.5% interest and returns its principle at the end. This will make two payments, $0.045 in a year’s time, then $1.045 in two years. The trick is to buy one of these bonds, and simultaneously sell (0.045/1.05 = 0.047) of the original 1 year bonds [I’m assuming we can both buy and sell fractional amounts of bonds, and that we can short sell bonds. The quantities that banks work with mean the first isn’t usually a problem, the second is also probably ok but more on this later]. This fractional bond will exactly match the payout of the second bond in the first year, so we receive an interest payment on that but need to make a payment for the fraction of the first bond. On the second year, we receive our interest and principle on the second bond – so we’ve paid money initially to set up the two-bond portfolio, we receive a payment at the end of the second year, but all of the intermediate cash flows cancel out: we’ve created a synthetic ZCB with two year maturity. To illustrate how to back out the ZCB price, let’s say the second bond price was $1.06. Cash flows are:

  • We paid $1.06 to buy the second bond at t=0
  • We received (0.045/1.05)*$1.03 for shorting the fist bond at t=0
  • Net payment at t=0 is $1.016
  • All cash flows at t=1 cancel out, as discussed above
  • We receive $1.045 in two years from the second bond

Since we paid $1.016 at t=0 and receive $1.045 in two year’s time, we repeat the about calculation for the two-year discount factor

\delta(0,2) = {1.016 \over 1.045} = 0.972

We can see from this how in general you can put together a full discount curve given a sequence of coupon-bearing bonds. We can formalise this process into a matrix equation involving the bond prices, cash flows and discount factors. First define the following quantities

\tilde{P} = \begin{bmatrix} P_1\\ P_2\\ \vdots\\ P_T \end{bmatrix}; \quad \tilde{D} = \begin{bmatrix} \delta_1\\ \delta_2\\ \vdots\\ \delta_T \end{bmatrix}; \quad \tilde{C} = \begin{bmatrix} C_{11} & 0 & \cdots & 0\\ C_{21} & C_{11} & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots\\ C_{T1} & C_{T2} & \cdots & C_{TT} \end{bmatrix}

where \inline \tilde{P} is the price of the bonds expiring at each time, \inline \tilde{D} is the relevant discount factor, and \inline \tilde{C} is the matrix of cash flows for each bond at each time. These must obey

\tilde{C} \circ \tilde{D} = \tilde{P}

and as long as we have matrix inversion code, we can calculate the discount factors via the inverse relationship

\tilde{D} = \tilde{C}^{-1} \circ \tilde{P}

In reality in large institutions these discount curves are formed considering as many bonds as possible, not just those at yearly intervals, in order to minimise the extrapolation required between time points, but this is a mechanical problem rather than a theoretical one which I overlook here for brevity.

1 thought on “The Discount Curve, ZCBs and the Time Value of Money”

Leave a Reply

Your email address will not be published. Required fields are marked *