CFA Level I fixed income · Lesson 4 of 12

Why duration is only a tangent

Duration tells you how much a bond's price moves when yields move. It is a straight-line estimate of a curved thing. This lesson shows where the line goes wrong, and why, for a bond with no embedded option, the error is always in your favour.

An example lesson built by Chalkwork Labs from public sources, to show the shapes. Your course is drafted from your material and checked by you.

1. What a bond price is, and why it moves

A bond is a loan. You hand over money today. In return you get a fixed calendar of payments.

The chart shows a three-year bond with a 5% coupon. The grey bars are the payments: 5, 5, then 105. The coloured bars are what each payment is worth today. We come to those in a moment.

payment promisedworth today at a yield of %
A three-year, 5% coupon bond. Every payment is fixed. Only what people will pay for them today can change.

The payments never change. So what moves? The price. The price is what the market will pay today for that fixed calendar.

The price moves because interest rates move. Suppose new bonds start paying 6% a year. Nobody will pay 100 for your old 5% bond when a new one pays more. Your bond's price must fall until it offers 6% too.

That rate is the yield to maturity: the yearly return you earn if you buy at today's price and hold to the end. Price and yield are two views of the same thing. When one goes up, the other goes down.

The one idea this lesson needs: a bond's payments are fixed, so its price must move when the market's required yield moves. Higher yield, lower price. Lower yield, higher price.

2. How the price is computed

Each payment is shrunk for the wait. A payment of 5 due in one year, at a yield of 6%, is worth 5 ÷ 1.06 today. Two years away, it is divided by 1.06 twice. That shrunken amount is the payment's present value.

The price is the sum of the present values of every payment. For the three-year bond at 6%:

price = 5 ÷ 1.06 + 5 ÷ 1.06² + 105 ÷ 1.06³ = =

That is the whole formula. Everything else in this lesson comes from it.

Show the working in code

Optional. The same calculation as Python you can step through.

Trace it step by step below. The block holds real Python that runs in this page. You do not write or edit any of it. Press Next step and watch the variables appear.

Three bits of Python you will see:

  • x = ... stores a result under the name x, so later lines can use it.
  • ** means "to the power of", so 1.06 ** 2 is 1.06 squared.
  • print(...) shows a result in the output box.

Block 1: Price a three-year bond, one step at a time

Press Next step four times. After each step, the panel shows the variables that step made. Check the final price against the formula above.

  1. Write down the bond: coupon, face value, years, and the market's yield.
  2. List the cash you will receive, year by year.
  3. Shrink each payment for the wait. One division per year.
  4. Add them up. The sum is the price.

Interpret the output. The price printed is , below the face value of 100. Why?

Change the yield and the price changes. Compute the price at every yield and you get a curve. That curve is the subject of the rest of this lesson.

3. The curve, the tangent and the gap

The chart plots price against yield. This line is the price-yield curve. It slopes down, because a higher yield means a lower price. It also bends. It is steep on the left and flatter on the right.

The dot is today's yield. The dashed line is the tangent: the straight line that touches the curve at the dot and matches its slope there. That slope, divided by the price and with the sign flipped, is the bond's modified duration. A modified duration of 7.72 means: yield up by one point, price down by about 7.72%. This page finds it, and convexity, by nudging the yield 0.0001 each way and reading the price change. That is the CFA curriculum's approximate modified duration and approximate convexity, so the numbers match the formulas in your notes.

Move the sliders. Watch the three numbers and watch the dashed line.

–
price per 100 face value
–
modified duration
–
convexity
–
gap, 2 points up / down, % of price
Price against yield to maturity. Solid: the true price. Dashed: the tangent at today's yield, which is what duration predicts. The thin vertical lines mark the gap two points either side.

The dashed line sits below the curve on both sides. The straight line undershoots the true price whether yields rise or fall. That gap is convexity: the bend in the curve, measured as one number. For a bond with no embedded option, it is always in the bondholder's favour. When yields rise, the price falls less than duration says. When yields fall, the price rises more. Callable bonds and mortgage-backed bonds are the exception: the issuer's right to repay early caps the price when yields fall, so their convexity turns negative at low yields. CFA Level I tests that.

A learnerWhy does the dashed line sit below the curve on both sides? AI tutorBecause the curve bends upward. A straight tangent cannot follow a bend, so it undershoots in both directions. Try maturity 30 years: the longer the bond, the more the curve bends and the wider the gap.From lesson 4, figure 2.

1. Set maturity to 30 years. What happens to the gap?

Maturity (5% coupon, yield 5%)Modified durationConvexityGap, 2 points up (% of price)Gap, 2 points down (% of price)

Three things to notice. Duration grows with maturity. Convexity grows faster. The gap grows with convexity, and it is bigger when yields fall than when they rise.

4. Duration alone against the truth

Section 3 showed the gap at one shift of two points. This chart shows it at every shift. The horizontal axis is how far the yield moves from today's 5%. The vertical axis is the change in price, in percent.

The dashed line is what duration alone predicts: a straight line through zero, with slope equal to minus the duration. The solid line is the true change. Move the shift slider to read the numbers at one point.

–
duration alone predicts
–
true price change
–
gap (true minus duration)
Percentage change in price against the shift in yield from 5%. Solid: the true change. Dashed: duration alone. The third line adds the convexity correction, half of convexity times the shift squared.

The gap is zero at no shift and grows fast on either side. It grows with the square of the shift: double the shift and the gap roughly quadruples. For the 10-year 5% bond, the gap is points at a one-point rise and points at a two-point rise.

Convexity fixes most of this. The correction is half of convexity times the shift squared. Switch on the third line and see how close it gets.

2. Yields rise by one point. Duration says the 10-year bond's price falls by %. The true fall is %. Why is the true fall smaller?

3. The gap at a one-point rise is points. Roughly what is it at a two-point rise?

Show the working in code

Optional. The same calculation as Python you can step through.

Now try the same idea in code. The slider sets the new yield. The code prices the 10-year bond at that yield and also at the straight-line estimate.

Block 2: Shift the yield and compare the two answers

Move the slider. Watch how far the duration estimate drifts from the true price as the yield moves away from 5%. At 5% the two agree exactly.

5. A worked example

A 10-year bond, 5% coupon, yield 5%. Its price is , its modified duration , its convexity . Yields move by one point.

YieldDuration aloneDuration + convexityTrue priceDuration's error
Up one point, to 6%
Down one point, to 4%

How the row for 6% is built:

  1. Duration alone: price change = minus duration times the shift = − × 0.01 = %. So × (1 − ) = .
  2. Convexity correction: half of convexity times the shift squared = ½ × × 0.01² = +%. Add it: .
  3. True price: sum the present values at 6%, as in Block 1 but with ten payments. Result: .

Duration alone is out by . Add convexity and the estimate is within two cents. Both errors are in the holder's favour: the straight line is too gloomy when yields rise and too modest when they fall.

Simplifications. This lesson uses one coupon a year and whole years to maturity. Most real bonds pay twice a year, and the CFA curriculum uses periodic yields. The shapes are the same. The numbers differ slightly.

6. What to remember

Sources