Quant from Scratch by QuantWright

Introduction to Quant Finance · Lesson 15

Time value, interest rates and bonds

Why €100 next year is worth less than €100 today, how that sets a bond's price, and why bond prices fall when interest rates rise.

Know the basics? Read the lesson notes

€100 today, or €100 in a year?

Someone offers you a choice: €100 today, or €100 exactly one year from now. One word first. Interest is what a borrower pays for the use of someone else's money. The interest rate is that payment for one year, as a percent of the amount.

Picture a made-up bank that pays 5% a year on savings: leave €100 with it for a year and it pays you €5 on top. Which choice is worth more to you today?

€100 today. Put in the bank, it is €105 in a year, which beats the €100 you would get then.
€100 today is worth more. Put in the bank at 5%, it is €105 a year from now, more than the €100 you would get then.
Same number of euros, different dates. €100 today can be in the bank at 5% and be €105 in a year, so it is worth more.

Interest on interest

Today's €100 wins because it can earn interest while you wait. A euro now is worth more than a euro later: this is the time value of money.

Now leave the €100 in the made-up bank for ten years at 5%. Each year's interest is 5% of what the account holds at the start of that year, so last year's interest earns interest too. Press Next year, then play the rest.

€100 at a made-up 5% a year

The account at the end of each year. Grey: the €100 you put in. Colour: the interest added so far.

Year0 of 10
Interest this year–
Account€100.00

Year one adds €5 (to €105.00), year two €5.25 (to €110.25), year three €5.51 (to €115.76). Each year multiplies the account by 1.05, so ten years multiply it by 1.05 ten times over, which is 1.6289: the €100 ends at €162.89.

This is compounding: each year's return multiplies the account, so returns multiply rather than add up. What €100 grows to is its future value.

Run it backwards

Now turn the question round. How much would you need in the bank today to have exactly €100 in three years, at 5%? Drag the amount until it grows to €100.

Today's amount, grown for three years at 5% (made up)

Dashed: the €100 you want in three years.

Today€75.00
In 3 years€86.82
Away from €100−€13.18

€86.50 grows to €100.13, close. The exact amount comes from undoing the growth. Three years multiply by 1.05 × 1.05 × 1.05 = 1.157625, so divide instead: €100 ÷ 1.157625 = €86.38.

€86.38 is the present value of €100 paid in three years at 5%: what that later €100 is worth today. Working back like this is called discounting.

Further away, worth less

The curve shows what €100 is worth today if it arrives after 1 year, 2 years, and so on up to 30, at the rate you set. It starts at 5%. Slide the rate up to 10%.

Today's value of €100 paid later (made-up rates)

Across: years until the €100 arrives. Up: what it is worth today. Dots: 10 and 30 years.

€100 in 10 years€61.39
€100 in 30 years€23.14

At 5%, €100 paid in 10 years is worth €61.39 today, and €100 in 30 years only €23.14. At 10%, the 30-year €100 is worth €5.73.

Two things shrink a payment's present value: a longer wait, because it is divided by (1 + rate) once for every year; and a higher rate, because each of those divisions is bigger.

Theory

Present value: bring every amount to today

Amounts paid on different dates can only be compared once they are moved to the same date. Growing an amount forward at the interest rate gives its future value; dividing a later amount back gives its present value. Both are compounding, one year at a time.

FV = PV × (1 + r)t
PV = FV ÷ (1 + r)t
PV
the present value: the amount today
FV
the future value: the amount at the later date
r
the interest rate per year, as a decimal: 5% is 0.05
t
the number of years between today and the later date
(1 + r)t
(1 + r) multiplied by itself t times: 1.053 = 1.05 × 1.05 × 1.05 = 1.157625 (on a calculator, the x^y key)
Worked example: your amounts

Growing: €100 × 1.0510 = €100 × 1.6289 = €162.89.

Discounting: €100 ÷ 1.053 = €100 ÷ 1.157625 = €86.38. Check: €86.38 × 1.157625 = €100.00. The 30-year payment: €100 ÷ 1.0530 = €100 ÷ 4.3219 = €23.14.

Holds when
  • the rate stays the same in every year;
  • interest is added once a year and left in to earn interest;
  • the later amount is certain to be paid, in full.
Breaks when

The payment might not come, or rates differ by how long you lend for. The end of this lesson shows the second; the first is left for a later course.

Try it on new numbers. You are promised €500 in 4 years. At a made-up 6% a year, what is that worth today? Type euros.

1.064 = 1.06 × 1.06 × 1.06 × 1.06 ≈ 1.2625, and €500 ÷ 1.2625 ≈ €396.05. Check: €396.05 × 1.2625 ≈ €500.
Divide by 1.06 once for each of the 4 years: 1.064 ≈ 1.2625, and €500 ÷ 1.2625 ≈ €396.05. Dividing by 1.06 only once gives €471.70, the value of €500 paid in one year.

A bond is a list of payments

A bond is a loan you can buy and sell. The borrower, a government or a company, promises fixed payments: a yearly interest payment called the coupon, and at the end the amount borrowed, called the face value.

Take a made-up 3-year bond with a face value of €100 and a €5 coupon. It pays €5 after one year, €5 after two, and €5 + €100 = €105 after three. Say loans like this one pay a made-up 6% a year today. We call this the going rate. Bring each payment to today: press each year.

One made-up bond, discounted at 6%

Outlines: what each year pays. Colour: what it is worth today. The bar on the left adds up what you have brought to today.

Year 1–
Year 2–
Year 3–
Worth today€0.00

€5 ÷ 1.06 = €4.72, €5 ÷ 1.062 = €4.45 and €105 ÷ 1.063 = €88.16, which add up to €97.33. That is the bond's price at 6%: what its payments are worth today.

It pays €115 in all, but most of that comes late and is discounted. The price is below €100 because the coupon, 5% of the face value, is less than the 6% a lender could get on loans like it.

Find the yield

In a market it usually goes the other way round: you see the price and want the rate. The same bond now sells for €94.75. Which single rate makes its three present values add up to exactly €94.75? There is no simple formula for the rate, so try rates: drag until the sum matches the price.

The made-up bond at the rate you try

Colour: each payment's present value, and their sum on the left. Dashed: the €94.75 price.

Sum of present values€100.00
Price€94.75
Sum minus price+€5.25

At 7.0% the present values are €4.67, €4.37 and €85.71, which add up to €94.75. That rate is the bond's yield (in full, its yield to maturity): the one rate at which its payments are worth exactly its price. Roughly, it is the yearly return from buying at €94.75 and holding to the end, if every payment arrives.

As you dragged, a higher rate gave a lower sum, because the payments stay fixed while each division grows. So a bond's price and its yield move in opposite directions.

Theory

A bond's price is the sum of its present values

Each payment is discounted for its own number of years, and the price is the sum. Written for any bond that pays once a year, this is the bond pricing formula. Given the going rate, it gives the price. Given the price, the rate that makes it true is the yield, found by trying rates as you just did.

P = C ÷ (1 + y) + C ÷ (1 + y)2 + … + (C + N) ÷ (1 + y)T
P
the bond's price today
C
the coupon, paid at the end of each year
N
the face value: the amount repaid at the end, with the last coupon
T
the number of years left, so the number of payments
y
the yearly rate: the going rate when you work out a price; the yield when the price is given
Worked example: your bond (C = €5, N = €100, T = 3)

At 6%: 5 ÷ 1.06 + 5 ÷ 1.1236 + 105 ÷ 1.1910 = 4.72 + 4.45 + 88.16 = €97.33.

At 7%: 5 ÷ 1.07 + 5 ÷ 1.1449 + 105 ÷ 1.2250 = 4.67 + 4.37 + 85.71 = €94.75, so a price of €94.75 means a yield of 7.0%.

At 5%: 4.76 + 4.54 + 90.70 = €100.00. When the rate equals the coupon as a percent of the face value (the coupon rate), the price equals the face value.

Holds when
  • the payments are fixed in advance and paid in full and on time;
  • one rate fits every year;
  • the next payment is exactly one year away (a bond bought between payment dates needs an extra step, left out here).

The yield is your yearly return only if you hold to the end and each coupon, when it arrives, earns that same yield until the end.

Breaks when

The borrower may not pay: then the yield overstates what you get (a later course). Or rates differ by how far away a payment is: the yield curve, at the end of this lesson.

New numbers. A made-up 2-year bond has a €4 coupon and a €100 face value. Loans like it pay 5% a year. What is its price? Type euros.

€4 ÷ 1.05 = €3.81, and €104 ÷ 1.052 = €104 ÷ 1.1025 = €94.33. Price: 3.81 + 94.33 = €98.14, below €100 because its 4% coupon is below the 5% rate.
Two payments: €4 after one year and €4 + €100 = €104 after two. €4 ÷ 1.05 = €3.81, €104 ÷ 1.1025 = €94.33, so the price is €98.14.

Guess first: rates rise

The time left until a bond's last payment is its maturity. Take two made-up bonds, each with a €5 coupon and a €100 face value: one has a maturity of 1 year, the other 10 years. Loans like them pay 5%, so both are priced at €100. Then the going rate rises to 7%. Their payments don't change. Which price falls more?

Keep your guess in mind. On the next screen you move the rate yourself.

Move the rate

Three made-up bonds, each with a €5 coupon and a €100 face value, with maturities of 1, 3 and 10 years. The 3-year one is the bond from before. Each curve is one bond's price at every rate from 1% to 10%. Slide the rate from 5% down to 3%, then up to 7%.

Price against the going rate, three made-up bonds

Across: the rate. Up: the price. Dashed line: the 1-year bond. Dashed grid line: €100, where all three sit at 5%.

1-year bond€100.00
3-year bond€100.00
10-year bond€100.00

Each payment is divided by 1.07 instead of 1.05 once for every year it is away. A payment 1 year away keeps 1.05 ÷ 1.07 = 0.981 of its present value, so it loses 1.9%; one 10 years away keeps (1.05 ÷ 1.07)10 = 0.828 of it and loses 17.2%. The 10-year bond falls less, 14.0%, because its €5 coupons come sooner and lose less. So a bond whose money comes later moves more. At 3% it works the other way: all three rise, the 10-year one most, to €117.06.

This sensitivity to rates is measured by a bond's duration, which is longer when its payments come later.

For the preciseDurations at 5% (Frederick Macaulay's definition, 1938): 1-year bond 1.00 year, 3-year bond 2.86 years, 10-year bond 8.11 years. The rise to 3% is a little larger than the fall to 7% for every bond (the 10-year: +17.1% against −14.0%), because the curves bend; that bend, called convexity, is not covered here.

Rates by maturity: the yield curve

So far one rate fitted every year. In a market, the yield on a 1-year loan and on a 30-year loan from the same borrower need not be the same. Plot the yields of one borrower's bonds against their maturities and you get its yield curve. Press each made-up shape.

Three made-up yield curves

Across: maturity in years. Up: the yield. Colour: the shape you pressed. Invented numbers; no market, no date.

1-year yield–
30-year yield–

A curve that rises with maturity is called normal, one that stays level is flat, and one that falls with maturity is inverted. All three here are invented: this lesson says nothing about where rates are at any date.

Only a flat curve matches the one-rate assumption. With any other shape, a careful price uses a rate that fits how long each payment takes to arrive, not one rate for all.

Practice 1 of 3

Now or later?

The situationA friend can take €1,000 today or €1,100 in two years. Money they don't need can earn a made-up 4% a year, with the interest left in.

What is the €1,100 worth today? Type euros.

Hint: divide by 1.04 once for each of the two years: €1,100 ÷ 1.042.

1.042 = 1.0816, and €1,100 ÷ 1.0816 = €1,017.01: at 4%, more than the €1,000 today. The answer depends on the rate: at 6%, €1,100 ÷ 1.1236 = €979.00, less than €1,000.
1.04 × 1.04 = 1.0816, and €1,100 ÷ 1.0816 = €1,017.01. At 4% the later €1,100 is worth a little more than €1,000 today; at 6% it would be worth €979.00, less.
Practice 2 of 3

Two bonds, one rise

The situationYou look at two made-up bonds, each with a €5 coupon and a €100 face value, priced at €100 while loans like them pay 5%. One has a maturity of 2 years, the other 20 years. The going rate for both rises to 6%.

What happens to their prices?

Later payments are divided by 1.06 instead of 1.05 more times. The 2-year bond: 5 ÷ 1.06 + 105 ÷ 1.1236 = €98.17, down 1.8%. The 20-year: €88.53, down 11.5%.
The 2-year: 5 ÷ 1.06 + 105 ÷ 1.1236 = 4.72 + 93.45 = €98.17, down 1.8%. The 20-year: €88.53, down 11.5%, because its payments come later and each is divided by the bigger rate more times.
The other way round. The €100 that comes back sooner is divided by 1.06 only twice, so the 2-year bond falls to €98.17 (−1.8%). The 20-year one, with payments up to 20 years away, falls to €88.53 (−11.5%).
Practice 3 of 3

Coupon or yield?

The situationA seller offers a made-up bond with 3 years left, a €5 coupon and a €100 face value, for €97.33. "It yields 5%," the seller says. "That's the coupon."

What is its yield?

The coupon is 5% of the face value, not of the price. The yield is the rate that makes the payments worth €97.33: at 6%, 4.72 + 4.45 + 88.16 = €97.33, so the yield is 6%.
The other way round: a lower price means a higher yield. At 6%, 4.72 + 4.45 + 88.16 = €97.33, so the yield is 6%, above the coupon.
At 6% the three payments are worth 4.72 + 4.45 + 88.16 = €97.33, the price you worked out earlier, so the yield is 6%. A price below the face value means a yield above the coupon's 5% of the face value. This assumes every payment arrives.
✓

Lesson done

A euro today is worth more than a euro later, because it can earn interest meanwhile: dividing a later amount by (1 + rate) once for every year gives its present value. A bond is a list of fixed payments, and its price is the sum of their present values; its yield is the one rate that makes that sum equal the price. Because the payments are fixed, a bond's price falls when rates rise, and falls more when its payments come later. All of this assumes payments made in full and on time and one rate for every year; default risk (a borrower who doesn't pay), inflation (prices rising, so a later euro buys less) and taxes are left for a later course.

Key ideas

Interest rate
what a borrower pays for one year's use of money, as a percent of the amount
Time value of money
a euro now is worth more than a euro later, because it can earn interest meanwhile (with a positive rate)
Compounding
each year's interest is earned on what the account holds, earlier interest included, so the growth multiplies
Future value
what an amount today grows to by a later date at a given rate
Present value
what an amount paid later is worth today at a given rate
Discounting
working from a later amount back to its present value, by dividing by (1 + rate) once for every year
Bond
a loan that can be bought and sold, with fixed payments promised by the borrower
Coupon
a bond's regular interest payment
Face value
the amount borrowed, paid back with a bond's last coupon
Maturity
the time left until a bond's last payment
Yield
the one rate at which a bond's payments, discounted, add up to its price (in full: yield to maturity)
Duration
a measure of how strongly a bond's price moves when rates change; longer when its payments come later
Yield curve
the yields of one borrower's bonds plotted against their maturities: normal (rising), flat or inverted (falling)

Formulas

FV = PV × (1 + r)t  ·  PV = FV ÷ (1 + r)t

P = C ÷ (1 + y) + C ÷ (1 + y)2 + … + (C + N) ÷ (1 + y)T

At a made-up 5% a year, €100 paid in 3 years is worth €86.38 today, and in 30 years €23.14.

Lesson notes

A euro today is worth more than a euro later, because today's euro can earn interest while you wait (with a positive interest rate). Dividing a later amount by (1 + rate) once for every year gives what it is worth today, its present value. A bond is a list of fixed payments; its price is the sum of their present values, and its yield is the one rate that makes that sum equal the price. Every number in these notes is made up, and everything assumes the payments arrive in full and on time.

Interest and the time value of money

Interest is what a borrower pays for the use of someone else's money, and the interest rate is that payment for one year as a percent of the amount. A made-up bank pays 5% a year: €100 left with it for a year becomes €105. So €100 today is worth more than €100 a year from now, which is the time value of money.

Interest on interest

Left in the bank, each year's interest is 5% of what the account holds at the start of that year, so earlier interest earns interest too. Year one adds €5 (to €105.00), year two €5.25 (to €110.25), year three €5.51 (to €115.76). Ten years multiply the account by 1.05 ten times over, which is 1.6289, so €100 becomes €162.89. This is compounding: each year's return multiplies the account, so returns multiply rather than add up. What €100 grows to is its future value.

Run it backwards: present value

To have exactly €100 in three years at 5%, you need less than €100 today. Three years multiply by 1.05 × 1.05 × 1.05 = 1.157625, so divide instead: €100 ÷ 1.157625 = €86.38. That is the present value of €100 paid in three years at 5%, and working back like this is discounting. Two things shrink a present value: a longer wait (one more division for every year) and a higher rate (each division is bigger). At 5%, €100 paid in 10 years is worth €61.39 today, and in 30 years €23.14; at 10%, the 30-year €100 is worth €5.73.

A bond is a list of payments

A bond is a loan you can buy and sell. The borrower, a government or a company, promises fixed payments: a yearly interest payment, the coupon, and at the end the amount borrowed, the face value. A made-up 3-year bond with a €5 coupon and a €100 face value pays €5, €5 and €105. If loans like it pay 6% a year (the going rate), its payments are worth €5 ÷ 1.06 = €4.72, €5 ÷ 1.06² = €4.45 and €105 ÷ 1.06³ = €88.16 today, which add up to a price of €97.33. It pays €115 in all, but most of it comes late and is discounted. The price is below €100 because the coupon, 5% of the face value, is less than the 6% going rate.

Yield: the rate that matches the price

In a market you usually see the price and want the rate. If the same bond sells for €94.75, the rate at which its three present values add up to €94.75 is 7.0%: €4.67 + €4.37 + €85.71 = €94.75. That rate is the bond's yield (in full, its yield to maturity). There is no simple formula for the rate, so it is found by trying rates. A higher rate gives a lower sum, so a bond's price and its yield move in opposite directions. Roughly, the yield is the yearly return from buying at that price and holding to the end, if every payment arrives.

Why longer bonds move more

The time left until a bond's last payment is its maturity. Take three made-up bonds with a €5 coupon and a €100 face value, maturing in 1, 3 and 10 years, all priced at €100 while the going rate is 5%. When the rate rises to 7%, their payments stay the same, but each is divided by 1.07 instead of 1.05 once for every year it is away. A payment one year away keeps 1.05 ÷ 1.07 = 0.981 of its present value and loses 1.9%; one ten years away keeps (1.05 ÷ 1.07)10 = 0.828 and loses 17.2%. The 10-year bond falls less, 14.0%, because its €5 coupons come sooner and lose less. So the 1-year bond falls to €98.13 (−1.9%), the 3-year to €94.75 (−5.2%) and the 10-year to €85.95 (−14.0%). At 3% all three rise instead, the 10-year most, to €117.06. This sensitivity to rates is measured by a bond's duration, which is longer when its payments come later.

The yield curve

A 1-year loan and a 30-year loan from the same borrower need not carry the same yield. The yields of one borrower's bonds plotted against their maturities form its yield curve. Rising with maturity is called normal, level is flat, and falling is inverted. Any yield curve shown here is invented: these notes say nothing about where rates are at any date. Only a flat curve matches the one-rate assumption; with any other shape, a careful price uses a rate that fits how long each payment takes to arrive.

Formula: future value and present value

FV = PV × (1 + r)t
PV = FV ÷ (1 + r)t
PV
the present value: the amount today
FV
the future value: the amount at the later date
r
the interest rate per year, as a decimal: 5% is 0.05
t
the number of years between today and the later date
(1 + r)t
(1 + r) multiplied by itself t times: 1.053 = 1.157625 (on a calculator, the x^y key)
Worked example

Growing: €100 × 1.0510 = €100 × 1.6289 = €162.89. Discounting: €100 ÷ 1.053 = €100 ÷ 1.157625 = €86.38; check: €86.38 × 1.157625 = €100.00. The 30-year payment: €100 ÷ 1.0530 = €100 ÷ 4.3219 = €23.14.

Holds whenBreaks when

The payment might not come (left for a later course), or rates differ by how long you lend for (the yield curve, above).

Formula: the price of a bond

P = C ÷ (1 + y) + C ÷ (1 + y)2 + … + (C + N) ÷ (1 + y)T
P
the bond's price today
C
the coupon, paid at the end of each year
N
the face value: the amount repaid at the end, with the last coupon
T
the number of years left, so the number of payments
y
the yearly rate: the going rate when you work out a price; the yield when the price is given
Worked example: C = €5, N = €100, T = 3

At 6%: 5 ÷ 1.06 + 5 ÷ 1.1236 + 105 ÷ 1.1910 = 4.72 + 4.45 + 88.16 = €97.33. At 7%: 4.67 + 4.37 + 85.71 = €94.75, so a price of €94.75 means a yield of 7.0%. At 5%: 4.76 + 4.54 + 90.70 = €100.00: when the rate equals the coupon as a percent of the face value (the coupon rate), the price equals the face value.

Holds when

The yield is your yearly return only if you hold to the end and each coupon, when it arrives, earns that same yield until the end.

Breaks when

The borrower may not pay: then the yield overstates what you get (a later course). Or rates differ by how far away a payment is: the yield curve, above.

One more worked example

New made-up numbers

A 3-year bond has a €6 coupon and a €100 face value. Loans like it pay 5% a year. Its payments are €6, €6 and €106.

Year 1: €6 ÷ 1.05 = €5.71. Year 2: €6 ÷ 1.1025 = €5.44. Year 3: €106 ÷ 1.157625 = €91.57. Price: 5.71 + 5.44 + 91.57 = €102.72.

The price is above €100 because the coupon, 6% of the face value, is more than the 5% going rate. Read the other way: if this bond sells for €102.72, its yield is 5%, below its coupon of 6% of the face value.

Common mistakes

Check yourself

  1. What is €200 paid in 2 years worth today at 5% a year?
    Answer

    €200 ÷ 1.052 = €200 ÷ 1.1025 = €181.41.

  2. A 2-year bond has a €4 coupon and a €100 face value, and loans like it pay 5%. What is its price?
    Answer

    €4 ÷ 1.05 = €3.81 and €104 ÷ 1.1025 = €94.33, so €98.14.

  3. A bond's price falls. With its payments unchanged, did its yield rise or fall?
    Answer

    It rose: the payments are fixed, so the same payments being worth less today means they are discounted at a higher rate.

  4. Rates rise by the same amount for a 1-year and a 10-year bond with the same coupon. Which price falls more, and why?
    Answer

    The 10-year bond's: its payments are further away, so each is divided by the bigger (1 + rate) more times. From 5% to 7%, with a €5 coupon, the 1-year falls 1.9% and the 10-year 14.0%.

  5. When does a bond priced with one rate for every year match its yield curve?
    Answer

    Only when the curve is flat, with the same yield at every maturity.

Try it yourself

By hand. A calculator is enough: for a present value, type the later amount and divide by (1 + rate) once for every year. For a bond, do that for each payment and add the results.

In a spreadsheet. =100/1.05^3 gives 86.38. Put the payments in a column and the year numbers beside them, and =B1/(1+$E$1)^A1 discounts each at the rate in E1; their sum is the price. Change E1 by hand until the sum equals a price, and E1 is the yield. Most spreadsheets also have a function that finds it for you: =RATE(3, 5, -94.75, 100) gives 7%.

The code behind every number (Python; nothing random, every number is exact arithmetic)
Loading…

Honest notes

Where this comes from