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 coupon is the interest paid each year. It is fixed as a percentage of the amount lent.
- The face value is the amount repaid on the final day. In this lesson it is always 100.
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.
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%:
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 namex, so later lines can use it.**means "to the power of", so1.06 ** 2is 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.
- Write down the bond: coupon, face value, years, and the market's yield.
- List the cash you will receive, year by year.
- Shrink each payment for the wait. One division per year.
- 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.
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.
1. Set maturity to 30 years. What happens to the gap?
| Maturity (5% coupon, yield 5%) | Modified duration | Convexity | Gap, 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.
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.
| Yield | Duration alone | Duration + convexity | True price | Duration's error |
|---|---|---|---|---|
| Up one point, to 6% | ||||
| Down one point, to 4% |
How the row for 6% is built:
- Duration alone: price change = minus duration times the shift = − × 0.01 = %. So × (1 − ) = .
- Convexity correction: half of convexity times the shift squared = ½ × × 0.01² = +%. Add it: .
- 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
- A bond's payments are fixed. Its price moves because the market's required yield moves. Higher yield, lower price.
- The price is the sum of the present values of the payments. That is the whole formula.
- Duration is the slope of the price-yield curve at today's yield. It is a tangent: exact at one point, wrong everywhere else.
- The curve bends upward, so the tangent sits below it on both sides. Duration overstates losses and understates gains.
- Convexity measures the bend. The gap grows with the square of the shift. Half of convexity times the shift squared closes most of it.
- Long maturity and low coupon mean high duration and high convexity. The straight line is a worse guide for long bonds.
- "Always in your favour" holds for bonds with no embedded option. A callable bond can have negative convexity, so the error can go against you.
Sources
- CFA Institute, CFA Program Level I, 2026 Curriculum, Fixed Income. Readings Fixed-Income Bond Valuation: Prices and Yields, Yield-Based Bond Duration Measures and Properties and Yield-Based Bond Convexity and Portfolio Properties. The links go to the public reading overviews. Used for the price formula, the inverse price-yield relation and the idea of duration risk.
- Macaulay, F. R., Some Theoretical Problems Suggested by the Movements of Interest Rates, Bond Yields and Stock Prices in the United States since 1856, National Bureau of Economic Research, 1938. The book that introduced duration.
- Wikipedia, Bond duration and Bond convexity. Licensed CC BY-SA 4.0. Used for the definitions of modified duration and convexity.
- All numbers on this page are computed in
export_02.pyand in the page itself, with face value 100, annual coupons and annual compounding. Duration and convexity are found by nudging the yield 0.0001 (one basis point) each way and reading the price change. That is the CFA curriculum's approximate modified duration and approximate convexity, so the numbers reconcile with the Schweser formulas.