Macaulay Duration Calculation Walkthrough

Duration is the single number that separates bond investors who understand their risk from those who discover it the hard way. Silicon Valley Bank held $91 billion in held-to-maturity securities—mostly long-duration government bonds and mortgage-backed securities—and when the Fed hiked rates by 525 basis points, those positions generated $15 billion in unrealized losses that triggered a bank run and collapse in 48 hours. SVB's management understood maturity. They did not respect duration. This walkthrough teaches you to calculate Macaulay duration from scratch, convert it to modified duration for price sensitivity, and—critically—apply it so you never confuse "when my bond matures" with "how much I'll lose if rates move."
What Macaulay Duration Actually Measures (The Center of Gravity)
Duration answers a question that maturity cannot: when do you actually get your money back on a present-value basis?
A 10-year bond paying a 5% coupon doesn't have 10 years of rate exposure. Those interim coupon payments pull cash forward, shortening the bond's effective time horizon. Macaulay duration calculates the weighted-average time across all cash flows, where the weights are each payment's share of the bond's total present value.
Think of it as the balance point on a timeline. If you laid out every future payment along a ruler (weighted by present value), duration is where you'd place the fulcrum to keep the ruler level. A zero-coupon bond's fulcrum sits at maturity (no interim cash flows to pull it forward). A coupon bond's fulcrum always sits left of maturity.
The point is: duration measures your time exposure to interest rate risk. A bond with a Macaulay duration of 4.57 years behaves like a zero-coupon bond maturing in 4.57 years from a rate-sensitivity standpoint. The higher that number, the harder your bond gets hit when yields rise.
The Formula (What Each Piece Does)
MacDur = Sum(t × PV of Cash Flow at t) / Bond Price
Or more precisely:
MacDur = [Σ (t × CF_t / (1 + y)^t)] / P
Where:
- t = time period (year 1, year 2, etc.)
- CF_t = cash flow at time t (coupon, or coupon plus principal at maturity)
- y = yield to maturity per period
- P = bond price (sum of all discounted cash flows)
The unit is years. That's not a coincidence—Macaulay duration literally answers "how many years until the average dollar comes back to you?"
The numerator multiplies each cash flow's present value by when you receive it (giving distant payments more weight). The denominator normalizes by total price. The result: a single number that captures both timing and magnitude.
Full Worked Example: 5-Year 5% Coupon Bond
Setup: You hold a $1,000 face value bond paying a 5% annual coupon, maturing in 5 years, currently trading at $1,100 (a premium bond). The yield to maturity works out to 2.83%.
Step 1: Map Every Cash Flow
| Year | Cash Flow | What It Is |
|---|---|---|
| 1 | $50 | Coupon |
| 2 | $50 | Coupon |
| 3 | $50 | Coupon |
| 4 | $50 | Coupon |
| 5 | $1,050 | Final coupon + principal return |
Nothing complex here—you're just listing what the bond pays and when. The critical detail is year 5: that $1,050 payment dominates the duration calculation because it's the largest cash flow by far.
Step 2: Discount Each Cash Flow to Present Value
Using the 2.83% YTM as your discount rate (not the coupon rate—this is a common mistake):
| Year | Cash Flow | PV Factor (1/1.0283^t) | Present Value |
|---|---|---|---|
| 1 | $50 | 0.9725 | $48.62 |
| 2 | $50 | 0.9457 | $47.29 |
| 3 | $50 | 0.9197 | $45.99 |
| 4 | $50 | 0.8944 | $44.72 |
| 5 | $1,050 | 0.8698 | $913.28 |
Total Present Value: $1,099.90 (approximately your $1,100 market price—confirming the YTM is correct)
Why this matters: if your present values don't sum to roughly the market price, you've used the wrong discount rate. This is your built-in error check.
Step 3: Calculate Each Cash Flow's Weight
Each weight = Present Value / Total Present Value. This tells you what percentage of the bond's value each payment represents.
| Year | Present Value | Weight |
|---|---|---|
| 1 | $48.62 | 4.42% |
| 2 | $47.29 | 4.30% |
| 3 | $45.99 | 4.18% |
| 4 | $44.72 | 4.07% |
| 5 | $913.28 | 83.03% |
Notice the asymmetry. Year 5 represents 83% of the bond's value because it includes the $1,000 principal repayment. The four coupon-only payments combined account for barely 17%. This is why duration for coupon bonds is always less than maturity—those early coupons pull the weighted average forward, but not by much when principal dominates.
Step 4: Multiply Time by Weight and Sum
This is the actual duration calculation—multiply each year number by its weight:
| Year (t) | Weight | t × Weight |
|---|---|---|
| 1 | 0.0442 | 0.0442 |
| 2 | 0.0430 | 0.0860 |
| 3 | 0.0418 | 0.1254 |
| 4 | 0.0407 | 0.1628 |
| 5 | 0.8303 | 4.1515 |
Macaulay Duration = 0.0442 + 0.0860 + 0.1254 + 0.1628 + 4.1515 = 4.57 years
The takeaway: your 5-year bond has a duration of 4.57 years. That 0.43-year gap between maturity and duration exists because the coupon payments accelerate your cash recovery. Higher coupons create larger gaps (more early cash flow). Zero coupons have zero gap (duration equals maturity exactly).
From Macaulay to Modified Duration (The Bridge to Dollar Impact)
Macaulay duration measures time. Useful, but what you really want to know is: how much will my bond price move when rates change? That's modified duration.
The conversion is one step:
Modified Duration = Macaulay Duration / (1 + y)
For your bond:
- Macaulay Duration = 4.57 years
- YTM = 2.83%
- Modified Duration = 4.57 / 1.0283 = 4.44
The interpretation: for every 100 basis points (1%) increase in yield, your bond price drops approximately 4.44%.
Dollar impact: On your $1,100 bond, a 1% rate increase means roughly -$48.84 in price decline. A 2% rate increase? Roughly -$97.68 (with some convexity adjustment for accuracy on larger moves).
Why this matters: during the 2022-2023 Fed hiking cycle, the 10-year Treasury yield rose approximately 236 basis points. The Bloomberg Aggregate Bond Index (duration around 6.2 years) returned -13.01% in 2022. That wasn't random. Modified duration × yield change ≈ price change. The math held. It always holds.
The Duration Chain (How It Actually Destroys Value)
Here's the causal chain that cost US banks $620 billion in unrealized losses during 2022:
Low rates → Reach for yield → Extend duration → Rates spike → Mark-to-market losses → Forced selling or capital impairment
SVB's version was textbook. During 2020-2021, deposits flooded in (pandemic tech boom), and management invested heavily in long-duration MBS and Treasuries yielding around 1.5-1.8%. They had roughly $91 billion in HTM securities, with approximately 65% maturing beyond 5 years. When the Fed started hiking in March 2022, those positions bled value. By year-end 2022, unrealized losses hit $15.2 billion on the HTM portfolio alone.
The duration math was brutal and predictable. A portfolio with an estimated effective duration of 5-6 years, facing 400+ bps of rate increases, should lose roughly 20-30% of market value. It did.
The point is: SVB didn't fail because of exotic instruments or complex derivatives. They failed because of duration mismatch—long-duration assets funded by short-duration liabilities (demand deposits). You can make the same mistake in your own portfolio if you hold long-duration bonds without understanding how much rate exposure you're carrying.
The Three Durations (When to Use Which)
Practitioners work with three duration measures. Use the wrong one and your risk estimate is garbage.
Macaulay Duration — measures the weighted-average time until cash flows arrive. Useful for immunization strategies (matching your investment horizon to duration so reinvestment risk and price risk cancel out). The units are years.
Modified Duration — measures percentage price sensitivity to yield changes. This is your go-to for estimating how much a bond or portfolio will move when rates change. Derived directly from Macaulay duration by dividing by (1 + y).
Effective Duration — measures price sensitivity using actual scenario analysis (bumping rates up and down and observing price changes). Essential for bonds with embedded options—callable bonds, mortgage-backed securities, anything where cash flows change when rates move. Modified duration assumes fixed cash flows; effective duration doesn't.
The test: ask yourself—can my bond's cash flows change if rates move? If yes (callable bonds, MBS with prepayment risk), you need effective duration. If no (plain vanilla Treasuries, bullet corporate bonds), modified duration works fine.
For the UK pension crisis of September 2022, LDI (liability-driven investment) strategies used leveraged derivatives to match the long duration of pension liabilities. When gilt yields spiked dramatically, margin calls forced liquidations that amplified the sell-off. The duration math was correct—the leverage made it lethal.
What Duration Gets Wrong (And How Practitioners Compensate)
Duration is a first-order approximation. It assumes three things that are never perfectly true:
1. Parallel yield curve shifts. Duration assumes the entire curve moves uniformly. In reality, the 2-year and 10-year often diverge (the curve steepens, flattens, or inverts). Practitioners handle this with key rate duration—measuring sensitivity to individual maturity points rather than one aggregate number.
2. Small rate changes. For moves beyond 75-100 bps, the duration-only estimate increasingly understates the true price change. That's because the price-yield relationship is curved (convex), not linear. Practitioners add a convexity adjustment: the larger the move, the more convexity matters. A 20-year bond with duration of 12 and convexity of 180 shows a duration-only error of roughly 0.9% on a 100 bp move.
3. Fixed cash flows. Mortgage-backed securities are the classic violation. When rates drop, homeowners refinance, shortening cash flows. When rates rise, prepayments slow, extending cash flows. This "negative convexity" means MBS duration changes in the worst possible direction—getting longer when rates rise (amplifying losses) and shorter when rates fall (limiting gains). Use effective duration, not Macaulay or modified, for these instruments.
Detection Signals (You're Calculating Wrong If...)
You've made an error somewhere if:
- Your duration exceeds maturity. Impossible for option-free bonds. The weighted average time cannot exceed the final payment date (since all weights must be positive and sum to one).
- Your PV factors increase over time. Each successive year's discount factor must be smaller—compounding pushes present values down for more distant cash flows.
- Your weights don't sum to 100%. Rounding errors aside, the individual weights must add to 1.0. If they don't, you've miscalculated a present value or used inconsistent discount rates.
- Your zero-coupon duration doesn't equal maturity. A zero-coupon bond has exactly one cash flow (at maturity), so the weighted average time must equal the maturity date. If it doesn't, something is broken.
- Duration is negative. Standard option-free bonds always have positive duration. Negative duration means you've inverted a sign somewhere (or you're looking at an interest-only strip, which genuinely has negative duration—but that's an advanced case).
Duration in Today's Market (Why the Numbers Matter Now)
The Bloomberg US Aggregate Bond Index currently sits at approximately 6.2 years of duration, compared to a long-term average of roughly 4.97 years. That's roughly 25% more rate sensitivity than the historical norm. Government bonds now represent nearly 42% of the index (up 68% since 2006), and these tend to carry longer duration than the corporate and mortgage securities they've displaced.
US Treasury yields entered 2025 at their highest levels in over a decade, with the 10-year closing 2024 at 4.45%. After 2022's -13.01% and 2023's partial recovery, the Agg returned 5.53% in 2024. The yield environment has fundamentally shifted from the post-2008 era—and so have duration dynamics.
The practical point: if you own a total bond market fund, you're carrying roughly 6 years of duration exposure. A 100 bp rate increase costs you approximately 6% of your portfolio value. In the pre-2020 world of 1-2% yields, rates couldn't fall much further (limiting upside from duration) but could rise dramatically (maximizing downside). Today's higher yield environment gives duration more balanced risk—but the exposure is still elevated relative to history.
Duration Mitigation Checklist (Tiered)
Essential (prevents 80% of duration surprises)
- Know your portfolio's duration before rate announcements—check your bond fund's effective duration on the fund fact sheet (updated monthly)
- Match duration to your time horizon when possible—if you need money in 3 years, a bond fund with 6-year duration carries unnecessary rate risk
- Never confuse maturity with duration—a 10-year bond with a 7% coupon has meaningfully less rate sensitivity than a 10-year zero
- Verify your calculation by summing PV weights to 1.0 and checking that total PV approximates market price
High-Impact (systematic duration management)
- Use modified duration for rate-change estimates—multiply modified duration by expected yield change for a quick portfolio impact estimate
- Add convexity adjustments for moves beyond 75 bps—duration alone will underestimate price changes on large moves
- Use effective duration for callable bonds and MBS—modified duration assumes fixed cash flows and will mislead you on these securities
Advanced (for portfolio construction)
- Consider key rate duration for non-parallel curve moves—especially relevant when the yield curve is inverting or steepening rapidly
- Implement duration-matching (immunization) for liability-driven portfolios—set portfolio duration equal to your investment horizon to neutralize rate risk
- Monitor portfolio duration drift quarterly—as bonds age and yields change, duration shifts, and your risk profile changes with it
Next Step (Put This Into Practice)
Pull up your largest bond holding (or total bond fund) and calculate the dollar impact of a 100 bp rate increase.
How to do it:
- Find the fund's effective duration on its fact sheet or Morningstar page (look for "effective duration" or "modified duration")
- Multiply: Duration × 0.01 × Portfolio Value = Approximate dollar loss
- Compare that number to your risk tolerance
Example:
- Your bond allocation: $100,000 in a total bond fund
- Fund effective duration: 6.2 years
- Dollar impact of +100 bps: 6.2 × 0.01 × $100,000 = -$6,200
Interpretation:
- If losing $6,200 on a 1% rate move wouldn't change your behavior: your duration exposure is appropriate
- If that number makes you uncomfortable: shorten duration by shifting toward shorter-maturity bonds or bond funds (2-5 year range)
- If you need the money within 3 years: consider matching your holding period to bond maturity directly, eliminating rate sensitivity at your horizon
Action: if your bond fund's duration exceeds your investment time horizon by more than 2 years, you're carrying rate risk you don't need to carry. Consider rebalancing toward shorter-duration alternatives.
Related Articles

Yield to Call and Yield to Worst
Learn why yield to worst is your true planning yield for callable bonds, and how to avoid the costly mistake of chasing headline yields.

Reporting Duration and Convexity in Fact Sheets
Learn to read and interpret duration and convexity metrics in bond fund fact sheets. Decode weighted averages, spot reporting gaps, and translate disclosed numbers into actionable risk estimates.

Sovereign Credit Ratings and Outlooks
Sovereign credit ratings directly impact borrowing costs and market access, making their nuances critical for assessing government debt risk and return.