1. What is bond portfolio immunization?
Bond portfolio immunization means building a bond portfolio that will be worth enough to pay a known future obligation, whether interest rates rise or fall. You are not trying to predict rates. You are arranging the portfolio so that a rate move hurts in one way and helps in another, and the two roughly cancel.
Think of a pension fund that must pay $1,000,000 in five years, an insurer that must settle a claim, or a university that has promised a scholarship. Each has the same question: will the money be there on the day it is needed?
By the end of this guide you will be able to:
- Explain price risk and reinvestment risk and why they offset at the duration horizon.
- Calculate Macaulay duration, modified duration, convexity and DV01.
- Build a two-bond portfolio that immunizes a single or multiple liabilities.
- Stress-test the portfolio correctly and explain why a small surplus appears.
- Recognise when immunization fails: curve twists, duration drift, credit and cash-timing risk.
2. The two risks that offset each other
When interest rates change, a bond investor with a fixed horizon faces two effects that pull in opposite directions.
| If yields… | Price risk (bonds you must sell) | Reinvestment risk (coupons you reinvest) |
|---|---|---|
| Rise | Prices fall, so you sell for less. Bad | Coupons earn a higher rate. Good |
| Fall | Prices rise, so you sell for more. Good | Coupons earn a lower rate. Bad |
Which effect wins depends on how long you hold the bond:
Short horizon
You sell soon, before much reinvestment happens. Price risk dominates.
Horizon = duration
The two effects are balanced. They offset.
Long horizon
You reinvest for many years. Reinvestment risk dominates.
Immunization picks the balancing point. The next two sections show how to measure it and why it works.
3. The duration toolkit: Macaulay, modified, convexity and DV01
With annual coupons, let CFt be the cash flow at year t and y the yield. PV(CFt) = CFt / (1 + y)t.
Macaulay duration DMac = Σ t × PV(CFt) / P
Modified duration DMod = DMac / (1 + y)
Convexity C = Σ t(t + 1) × PV(CFt) / [(1 + y)2 × P]
Price change ΔP / P ≈ −DMod × Δy + ½ × C × (Δy)2
DV01 = P × DMod × 0.0001
| Measure | What it tells you | Used for |
|---|---|---|
| Macaulay duration | The present-value-weighted average time to the cash flows, in years. | Matching the investment horizon. |
| Modified duration | Approximate % price change for a 1-percentage-point (100 bp) change in yield. | Price sensitivity. |
| Convexity | How much the price–yield curve bends. | Improving the estimate for large moves. |
| DV01 | Dollar price change for a 1 bp change in yield. | Matching dollar exposure of assets and liabilities. |
A zero-coupon bond’s Macaulay duration equals its maturity. A coupon bond’s duration is shorter than its maturity because some cash arrives earlier.
An 8-year bond paying a 6% annual coupon, priced at par ($1,000) at a 6% yield.
DMac = 6.5824 years · DMod = 6.5824 / 1.06 = 6.2098 · C = 49.15 · DV01 = $0.62 per bond.
If the yield rises by 100 bp: duration alone predicts −6.21%. Adding convexity gives −6.21% + ½ × 49.15 × 0.01² = −5.96%. The exact repriced change is −5.97%.
4. Why holding to the duration horizon works
Suppose the yield moves once, immediately after you buy, from y to a new level q and stays there. Every cash flow can then be carried to the horizon H: cash received before H is reinvested at q, and cash due after H is sold at its price at H.
In words: reprice the bond at the new yield, then grow that value to the horizon at the new yield. Two things move when q rises: P(q) falls (price risk) and (1 + q)H rises (reinvestment). Calculus shows the net effect:
If H is shorter than duration, wealth falls when rates rise (price risk wins). If H is longer than duration, wealth rises when rates rise (reinvestment wins). This matches the three panels in Section 2.
5. Choosing the weights for a two-bond portfolio
Duration of a portfolio is the market-value-weighted average of the bonds’ durations. With two bonds A and B, solve for the weight that hits the target horizon H:
wA = (H − DB) / (DA − DB) wB = 1 − wA
H = 5, DA = 3, DB = 6.5824 → wA = (5 − 6.5824) / (3 − 6.5824) = 44.17%, wB = 55.83%.
Check: 0.4417 × 3 + 0.5583 × 6.5824 = 5.00 years.
Three rules to remember:
- Use market-value weights, not face values.
- The target must lie between the two durations. Otherwise one weight is negative (a short sale) or above 100% (leverage). Choose a different bond instead.
- Use the same yield and compounding convention for every duration in the calculation.
6. The three conditions for immunizing a liability
For a liability (or set of liabilities), immunization against a parallel shift requires three things. They are known as the Redington conditions.
| Condition | Formula | Plain meaning |
|---|---|---|
| 1. Enough money | PVA ≥ PVL | Assets today are worth at least the present value of what you owe. |
| 2. Same rate sensitivity | PVA × DMod,A = PVL × DMod,L | Assets and liabilities gain or lose the same dollars for a small rate move (equal DV01). |
| 3. More curvature in assets | PVA × CA > PVL × CL | For bigger moves, assets gain more or lose less than liabilities. |
When PVA = PVL, conditions 2 and 3 simplify to equal duration and higher asset convexity, which is the version used in most textbooks.
Assets $1,100,000 and liabilities $1,000,000, both with modified duration 4.5. Asset DV01 = 1,100,000 × 4.5 × 0.0001 = $495; liability DV01 = $450. A rate change moves the two by different dollar amounts. Match DV01, not just duration.
7. Caselet 1: Fund a single liability in five years
An institution must pay $1,000,000 in 5 years. The yield curve is flat at 6%. Two bonds are available, each with $1,000 face value:
- Bond A: 3-year zero-coupon bond (duration 3 years).
- Bond B: 8-year bond paying a 6% annual coupon (priced at par).
| Step | Calculation | Result |
|---|---|---|
| 1. Money needed today | 1,000,000 / 1.065 | $747,258.17 |
| 2. Bond A price | 1,000 / 1.063 | $839.62 |
| 3. Bond B duration | Σ t × PV(CFt) / P, from its 8 cash flows | 6.582381 years |
| 4. Weight in A | (5 − 6.582381) / (3 − 6.582381) | 44.1712% |
| 5. Weight in B | 1 − 44.1712% | 55.8288% |
| 6. Invest in A | 747,258.17 × 44.1712% | $330,073.02 (393.12 bonds) |
| 7. Invest in B | 747,258.17 × 55.8288% | $417,185.15 (417.19 bonds) |
| 8. Check portfolio duration | 0.441712 × 3 + 0.558288 × 6.582381 | 5.0000 years |
What happens over the five years: Bond A matures at year 3 and its $1,000 face per bond is reinvested for 2 more years. Bond B pays coupons in years 1–5, which are reinvested, and is sold at year 5 with three payments still to come.
8. Stress test: plus or minus 200 basis points
Now test the Caselet 1 portfolio. Keep the number of bonds bought at 6% fixed. Let the yield jump immediately after purchase to a new level and stay there. Then work out what each bond is worth at year 5.
| Shock (bp) | New yield | Bond A wealth at year 5 | Bond B wealth at year 5 | Total wealth at year 5 | Surplus over $1,000,000 |
|---|---|---|---|---|---|
| −200 | 4.00% | $425,201.02 | $575,916.25 | $1,001,117.27 | $1,117.27 |
| −100 | 5.00% | $433,417.28 | $566,858.82 | $1,000,276.10 | $276.10 |
| 0 | 6.00% | $441,712.16 | $558,287.84 | $1,000,000.00 | $0.00 |
| +100 | 7.00% | $450,085.66 | $550,184.27 | $1,000,269.93 | $269.93 |
| +200 | 8.00% | $458,537.79 | $542,530.15 | $1,001,067.94 | $1,067.94 |
Read across a row to see the offset. When yields rise, Bond A’s principal (received at year 3) is reinvested at a higher rate, so Bond A’s wealth goes up. Bond B has to be sold at year 5 at a lower price, so its wealth goes down. When yields fall, the effects reverse. In every case the two changes almost cancel and the liability is still met.
The result holds for this one-time parallel shift. It does not guarantee the outcome for other rate paths or curve shapes.
9. Caselet 2: Watch price and reinvestment effects cancel
This caselet isolates the two risks using a single bond. Buy a 7-year bond with an 8% annual coupon at an 8% yield (price $1,000). Its Macaulay duration is 5.622880 years, so set the horizon H = 5.622880 years.
By the horizon, five coupons (years 1–5) have been received and reinvested. The remaining two payments (years 6 and 7) are sold at their value at H.
| Yield after purchase | Reinvested coupons at H | Sale value at H | Total wealth | Target wealth |
|---|---|---|---|---|
| 7% | $479.86 | $1,061.90 | $1,541.76 | $1,541.48 |
| 8% (no change) | $492.37 | $1,049.11 | $1,541.48 | $1,541.48 |
| 9% | $505.18 | $1,036.58 | $1,541.76 | $1,541.48 |
Target wealth = $1,000 × 1.085.622880 = $1,541.48.
10. Caselet 3: Immunize multiple liabilities
Payments of $200,000, $400,000 and $500,000 are due in years 2, 4 and 6. The curve is flat at 5%. Treat the three payments as one liability with its own PV and duration.
| Year | Payment | PV at 5% | t × PV |
|---|---|---|---|
| 2 | $200,000.00 | $181,405.90 | 362,811.79 |
| 4 | $400,000.00 | $329,080.99 | 1,316,323.96 |
| 6 | $500,000.00 | $373,107.70 | 2,238,646.19 |
| Total | $1,100,000.00 | $883,594.58 | 3,917,781.94 |
Liability duration = 3,917,781.94 / 883,594.58 = 4.433913 years. Fund it with 3-year and 7-year zeros:
| Weight | Amount invested | |
|---|---|---|
| 3-year zero | (4.433913 − 7) / (3 − 7) = 64.1522% | $566,845.04 |
| 7-year zero | 35.8478% | $316,749.55 |
Check: asset DV01 and liability DV01 both equal $373.12 per basis point, so condition 2 of Section 6 holds.
11. Caselet 4: Bullet versus barbell under a curve twist
Two portfolios have the same duration of 5 years at a flat 5% curve:
- Bullet: 100% in a 5-year zero.
- Barbell: 50% in a 1-year zero and 50% in a 9-year zero.
| Macaulay duration | Modified duration | Convexity | |
|---|---|---|---|
| Bullet | 5.00 | 4.761905 | 27.2109 |
| Barbell | 5.00 | 4.761905 | 41.7234 |
Each zero is repriced at its own new yield. Returns are immediate price changes:
| Scenario | 1-yr yield | 5-yr yield | 9-yr yield | Bullet | Barbell |
|---|---|---|---|---|---|
| Parallel +100 bp | +100 | +100 | +100 | −4.6288% | −4.5603% |
| Parallel −100 bp | −100 | −100 | −100 | +4.9010% | +4.9779% |
| Steepening | −50 | 0 | +50 | 0.0000% | −1.8535% |
| Flattening | +50 | 0 | −50 | 0.0000% | +1.9578% |
12. Caselet 5: Rebalance as the horizon shortens
Duration matching is not “set and forget”. As time passes the horizon shrinks by one year every year, but the portfolio’s duration does not fall at the same pace, and yields change too. This caselet rebalances once a year.
Set-up: $1,000,000 due in 5 years, a 5% flat yield, a 3-year zero and an 8-year zero. Start with 60% / 40% (0.6 × 3 + 0.4 × 8 = 5 years).
Each year: (1) reprice the bonds you hold at the new yield; (2) work out the years left on each bond and on the liability; (3) recompute the short weight = (years to liability − long years left) / (short years left − long years left); (4) sell and buy to reach those weights.
| Review year | Yield | Years to liability | Short / cash weight | Wealth before trade |
|---|---|---|---|---|
| 0 | 5.00% | 5 | 60.00% | $783,526.17 |
| 1 | 5.50% | 4 | 60.00% | $807,271.31 |
| 2 | 6.00% | 3 | 60.00% | $839,732.27 |
| 3 | 5.20% | 2 | 60.00% | $903,861.56 |
| 4 | 4.80% | 1 | 75.00% | $956,702.49 |
| 5 | 4.50% | 0 | 100.00% | $1,004,789.17 |
The short zero matures at year 3; after that the short position is held as cash earning the previous review’s yield, with duration 0. That is why the weight changes to 75% at year 4. At year 5 the long zero is sold and the liability is paid.
13. Failure Modes & Real-World Limitations
1. Non-parallel yield curve shifts
Classical immunization protects against parallel shifts only. If short and long rates move differently, a portfolio with the right total duration can still lose. Caselet 4 showed a 1.85% barbell loss under a steepening with duration exactly matched.
Response: measure key-rate durations and test steepening, flattening and curvature changes.
2. Duration drift over time
The liability gets one year closer every year, but a coupon bond’s duration falls by less than one year. Yield changes and coupon receipts also move the portfolio’s duration. A match made today will not hold next year.
Response: recheck PV, duration and DV01 at regular intervals and after big rate moves; rebalance within set tolerance bands, allowing for costs (Caselet 5).
3. Too much cash-flow dispersion
Cash flows spread far from the liability date raise convexity but also raise curve risk. The closer the asset cash flows sit to the liability date, the less a curve twist can hurt.
Response: for a single fixed payment, a default-free zero maturing on that date is a perfect match. For several payments, consider cash-flow matching or key-rate limits.
| Other limitation | Why it matters |
|---|---|
| Credit and spread risk | A default or spread widening is not hedged by a government-rate duration match. |
| Callable bonds and prepayments | Cash-flow timing, and therefore duration, changes when rates change. |
| Liquidity and trading costs | Rebalancing can be expensive or impossible in a stressed market. |
| Inflation-linked or uncertain liabilities | A fixed nominal hedge may not match payments that can change. |
| Different curves | Discounting, funding and reinvestment at different rates creates basis risk. |
| Lot sizes and limits | Whole-bond quantities and investment rules can prevent an exact match. |
14. Key-rate duration and a practical checklist
Key-rate duration measures how much a portfolio’s value changes when the yield at one maturity moves while the rest of the curve stays put. Two portfolios can have the same total DV01 but very different exposure at the 2-year, 5-year or 10-year point.
Curve twist: Change in surplus ≈ −Σk (KRD01A,k − KRD01L,k) × change in yield at key rate k (bp)
Here DV01 and KRD01 are dollar values per basis point. Close the gap at every key rate, not just in total.
A practical immunization checklist:
- List every liability payment and its date.
- Value assets and liabilities on the same curve.
- Check funding (PVA ≥ PVL), then match DV01 and key-rate exposures.
- Stress test: ±100 and ±200 bp parallel, steepening, flattening and a credit-spread shock.
- Confirm cash is available on every payment date.
- Set rebalancing triggers, rebalance, and record the new hedge after each payment.
15. Interactive two-bond allocation calculator
Enter the target horizon, two bond durations and the liability. The calculator returns the market-value weights, the amounts to invest and a check of portfolio duration. The default inputs reproduce Caselet 1.
16. Excel companion: five practical caselets
Download the six-sheet workbook. Every number in this article is calculated live from the yellow input cells, so you can change a yield, coupon or maturity and see the effect immediately. Text is set at 22 points for classroom projection, and each sheet links back to the contents page.
| Worksheet | What to explore |
|---|---|
| Overview & Concept | Contents with links, colour legend, key formulas, assumptions and sources. |
| Caselet 1 - Single Liability | Dated cash flows, duration from the cash flows, allocation, the ±200 bp stress test (correct and wrong methods) and a surplus chart. |
| Caselet 2 - Rate Shock Dynamics | Each coupon carried to a fractional horizon; reinvestment effect and sale-value effect shown separately. |
| Caselet 3 - Multi-Liability | Composite liability PV and duration, two-zero allocation, DV01 check and a payment-date warning. |
| Caselet 4 - Non-Parallel & Conv | Bullet vs barbell duration and convexity; exact repricing for parallel shifts and curve twists. |
| Caselet 5 - Dynamic Rebalancing | Year-by-year repricing, target weights and funded trades to the final surplus. |
Trace the article to the workbook
| Worksheet and cell | Formula or calculation |
|---|---|
| Caselet 1!B28 | =SUM(G16:G23)/B27 — Bond B Macaulay duration |
| Caselet 1!B29 | =(B6-B28)/(B9-B28) — weight in Bond A |
| Caselet 1!B31 | =B7/(1+B8)^B6 — money needed today |
| Caselet 1!B34 | =B29*B9+B30*B28 — portfolio duration check |
| Caselet 1!C46:G54 | Units × price at new yield × (1 + new yield)^5 — stress test and surplus |
| Caselet 3!B17 | =SUM(E11:E13)/B16 — liability duration |
| Caselet 5!B23 | =B21-B22 — terminal surplus |
17. Questions and answers
Does duration matching guarantee the target amount?
No. It protects against a single small parallel shift. Large moves, repeated moves, curve twists, defaults and cash-timing gaps can still cause a shortfall. A default-free zero that matures on the payment date is the only exact match for a single payment.
If the portfolio is immunized, why does its market value fall when rates rise?
Immunization is about wealth at the horizon, not today’s price. The price falls now, but coupons and maturing bonds are reinvested at the higher rate, which makes up the difference by the horizon (Caselet 2).
Should I use Macaulay or modified duration?
Use Macaulay duration to match a time horizon. Use modified duration (and DV01) to compare price sensitivity of assets and liabilities in dollars.
Assets are larger than liabilities. Can I just match durations?
No. Match DV01 (PV × modified duration × 0.0001). Otherwise the larger portfolio moves by more dollars for the same rate change (Section 6).
The barbell has more convexity. Why does it lose in a steepening?
Convexity measures the benefit from a parallel move. In a steepening, the long end rises while the short end falls, and the barbell’s long bond is hit hard. Key-rate exposure, not convexity, explains the loss.
How often should I rebalance?
At regular reviews and after large rate moves, coupon receipts, liability payments or changes to the liability schedule. Use tolerance bands so that trading costs do not outweigh the benefit.
Is a bullet always better than a barbell?
For one fixed payment, a matching zero-coupon bullet is ideal. For several payments or uncertain amounts, match the whole cash-flow profile or key-rate exposures instead.
18. Further learning and sources
Every figure in this guide was recalculated from the cash flows and can be reproduced in the Excel companion. For deeper study:
- CFA Institute: Liability-Driven and Index-Based Strategies — single and multiple liability immunization, basis-point-value matching and structural risk.
- University of Oxford: Matthias Winkel, Actuarial Science II, Chapter 8 — duration, convexity and local immunization conditions.
Explore the Term Structure of Interest Rates →
Explore the Barbell Strategy of Bonds →
Browse Fixed Income Securities →
Search concepts: bond portfolio immunization · Macaulay duration · modified duration · price risk · reinvestment risk · liability-driven investing · Redington immunization · dollar duration · DV01 · key-rate duration · convexity · cash-flow dispersion · bullet versus barbell · duration drift · rebalancing.