Bond Duration Calculator (Macaulay + Modified)
Bond duration calculator. Macaulay + modified duration from face value, coupon, maturity, and YTM. Measures interest-rate sensitivity.
Bond Duration Calculator
Computes a bond's Macaulay duration (the weighted-average time to receive its cash flows, in years) and modified duration (the approximate % price change for a one-percentage-point move in yield) from its coupon, maturity, and yield to maturity, and reprices the bond exactly at a yield one point higher so you can see how far the estimate is off. Duration is the standard first-order measure of a bond's interest-rate risk.
How to Use the Bond Duration Calculator
Enter the bond's terms
Face value, the annual coupon rate, and years to maturity. These define the cash flows the bond will pay. A term that is not a whole number of coupon periods (say 10.3 years) is priced with the part-period to the next coupon and its accrued interest, not rounded. Amounts like 1,000,000 can be typed with commas.
Enter the yield to maturity
YTM is the market discount rate — the return a buyer earns holding to maturity. It drives both price and duration. Use the current market yield, not the coupon.
Set coupon frequency
Most US corporate and Treasury bonds pay semi-annually; some pay annually or quarterly. Frequency affects the period count and the per-period discounting.
Read duration as risk
Modified duration tells you the approximate % the price moves for a one-point yield change. A duration of 8 means a one-point yield rise costs roughly 8% of price. The exact reprice beside it shows how much that straight-line estimate overstates the loss.
Understanding Bond Duration
Macaulay vs Modified Duration
Macaulay duration, introduced by Frederick Macaulay in 1938, is the weighted-average time (in years) until a bondholder receives the bond's cash flows, weighting each payment by its present value. Modified duration rescales it into a price-sensitivity measure: divide Macaulay duration by (1 + yield/frequency) and you get the approximate percentage change in price for a 1-percentage-point change in yield. A modified duration of 8 means roughly an 8% price drop if yields rise 1% — and an 8% gain if they fall 1%.
Why Duration Matters
Duration lets a portfolio manager compare the interest-rate risk of bonds with very different coupons and maturities on one scale, immunize a portfolio against rate moves, and estimate gains and losses before they happen. A lower coupon and a lower yield both push duration up. A longer maturity usually does too, but not without limit: a deep-discount bond's duration peaks and then falls back towards the perpetuity value, (1 + y/f) ÷ y. A 2% semi-annual coupon priced at a 10% yield has a Macaulay duration of 12.99 years at 20 years to maturity, 13.48 at 30 and 10.52 at 100.
A zero-coupon bond's Macaulay duration equals its maturity exactly — there is only one cash flow. Every coupon paid before maturity pulls duration below maturity.
The Limits of Duration
Duration is a first-order (linear) approximation. For small yield moves it's accurate; for large moves it overstates losses and understates gains, because the price-yield relationship is curved, not straight. On the default bond (10-year, 5% coupon, 6% yield, semi-annual) duration predicts −7.67% for a one-point rise; repricing at 7% gives −7.32%. That curvature is convexity — the second-order correction. For big rate scenarios, pair this calculator with our Bond Convexity Calculator to refine the estimate.
A zero-coupon bond's duration is exactly its maturity
Macaulay duration was defined by Frederick Macaulay in a 1938 National Bureau of Economic Research study of US interest rates and bond yields since 1856.
A zero-coupon bond's duration equals its maturity exactly.
Modified duration ≈ the % price move for a 1% yield change.
Lower coupon → higher duration → more interest-rate risk.
Longer maturity usually means higher duration — but a deep-discount bond's duration peaks and then falls back towards the perpetuity value.
Higher yield → lower duration (near-term cash flows weigh more).
DV01 ("dollar value of 1 basis point") is duration expressed in dollars per 0.01% yield move.
Duration immunization matches asset and liability durations to neutralize rate risk.
Duration is a linear approximation; convexity is the second-order correction.
A bond fund's quoted "duration" is the weighted average of its holdings' durations.
Frequently Asked Questions
- Macaulay duration is the weighted-average time (in years) to receive a bond's cash flows. Modified duration rescales it into price sensitivity: Macaulay ÷ (1 + yield/frequency). Modified duration tells you the approximate percentage price change for a 1-percentage-point change in yield, so it's the number traders use for risk.
- Use the current market yield for a bond of similar credit quality and maturity — not the coupon rate. YTM is the discount rate that makes the present value of the cash flows equal the market price. If you only know the price, the Bond Yield Calculator solves for the yield; here, enter the prevailing market yield.
- Duration weights each cash flow by its present value and timing. A low-coupon bond pays less along the way, so more of its value comes from the distant face-value payment — pushing the weighted-average time (and rate sensitivity) up. A zero-coupon bond is the extreme: its duration equals its full maturity.
- DV01 — "dollar value of 1 basis point" — is the dollar change in a bond's price for a 0.01% (1 basis point) change in yield. It's duration expressed in money rather than percent, which is how desks size and hedge positions. This tool reports it for the face value you enter, as modified duration × price × 0.0001 — $0.71 on the default $1,000 bond.
- Close for small yield moves and increasingly off for large ones: duration alone overstates losses and understates gains because the true price-yield curve bends. The tool prints the exact reprice one point higher beside the estimate so you can see the gap — on the default bond, −7.67% estimated against −7.32% exact. Add convexity (our companion calculator) to model bigger moves.
- Yes. Frequency sets how many periods exist and how the yield is compounded per period. Most US Treasury and corporate bonds pay semi-annually — the default here. Switching to annual or quarterly shifts both price and duration slightly because the timing of cash flows changes.
- A bond trades at a premium when its price is above par (face) — which happens when its coupon exceeds the market yield. It trades at a discount when the price is below par (coupon below market yield), and at par when coupon equals yield. The tool labels the case from the coupon and the yield. Between coupon dates the Treasury formula discounts the part-period at simple interest, so a bond whose coupon equals its yield can show a clean price a few cents under par; it is still a par bond.
- This calculator models a single bond. A fund's duration is the value-weighted average of its holdings' durations — the figure the fund publishes in its fact sheet. You can sanity-check a fund's reported duration against a representative bond here, but for the fund's exact number use its disclosed duration.
- No — except for a zero-coupon bond, where they're equal. For a coupon bond, duration is always less than maturity because some value is returned along the way via coupons. The bigger the coupon, the more duration falls below maturity.
- Managers use duration to position for rate views and to immunize liabilities. If you expect rates to rise, you shorten duration to cut losses; if you expect them to fall, you extend it to capture gains. Pension funds match the duration of assets to liabilities so that a rate move changes both by the same amount, neutralizing the impact. Duration is the dial they turn to set interest-rate exposure.
Method & sources
How it computes
Price by the 31 CFR 356 Appendix B yield-to-price formula (a part-period to the next coupon priced with its accrued interest, never rounded). Modified duration = −(1/P)·dP/dy of that price; Macaulay = modified × (1 + y/f), on a coupon date exactly the PV-weighted average time in years. DV01 = modified × full price × 0.0001. The +1 point duration estimate is shown beside an exact reprice (BondKernel.analyseDuration).
What this tool implements
- Macaulay duration is reported in YEARS, not coupon periods, and modified duration divides by (1 + y/f), the periodic yield — dividing by (1 + y) understates the sensitivity of any bond paying more than once a year.
- Duration is the exact first derivative of the same price function the bond yield and convexity calculators use, so the three pages agree on the same inputs; on a coupon date it equals Macaulay's present-value-weighted average time divided by (1 + y/f).
- Checked by the zero-coupon identity (a 10-year zero returns 10.000000 years) and against an independent Python sum: the default bond (USD 1,000, 5% coupon, 10 years, 6% yield, semi-annual) prices at 925.61 with Macaulay 7.895 years, modified 7.665 and DV01 0.71; a one-point rise is −7.67% by duration against −7.32% repriced exactly.
- Premium, discount or par is read from the coupon against the yield, because between coupon dates Appendix B's simple-interest stub leaves a par-coupon bond a few cents under par.
- Option-free bond on a flat yield curve. For a callable, putable or mortgage-backed bond, effective duration is the right measure and this is not it.
- Corrected 2026-10-17: the term was rounded to whole coupon periods (10.3 years at 2 a year became 10.5); a blank box read as 0; error messages were never visible (shown with display '' on a box the stylesheet hides); "par" required the float price to equal face exactly; the pull-quote was set as an unattributed quotation; "the formula hasn't changed since" 1938 and "longer maturity → higher duration" were stated without their limits.
Sources
- Macaulay FR. 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. https://www.nber.org/books/maca38-1
- 31 CFR Part 356, Appendix B — Formulas for Determining Prices, Yields and Accrued Interest on Treasury Notes and Bonds (the price function differentiated here; its worked examples P = 99.057893 and 99.730918 are reproduced in the kernel suite). https://www.govinfo.gov/content/pkg/CFR-2024-title31-vol2/pdf/CFR…
What can make this go out of date
- None at runtime — the output depends entirely on the bond terms and yield the user enters, so it is only as current as that yield.
Pick up where you left off
Stored only in this browser — never sent to our servers.