Bond Yield, Duration and Convexity Calculator
Calculator help
Hi! Ask me anything about using this calculator: what an input means, where to find a value, or why you got a result.
An AI assistant (Claude) that reads this page. It can make mistakes: check important numbers, and confirm design decisions with a licensed engineer.
Methodology, equations and examples
A bond's price is the present value of its cash flows: a coupon every period and the face value at maturity, each discounted at the yield to maturity. The yield to maturity (YTM) is the single discount rate that makes that present value equal to the price. Duration and convexity measure how much the price moves when the yield changes, which is the main risk in holding a bond.
Price and yield to maturity
For a bond with face value F, annual coupon rate c, m coupons a year and n periods to maturity, each coupon is C = F c / m. At an annual yield y, the rate per period is i = y / m and the price is:
P = Σ C / (1 + i)^t + F / (1 + i)^n, summed over t = 1 to n
- F – Face value, paid at maturity
- c – Annual coupon rate
- m – Coupons a year
- n – Coupon periods to maturity, years × m
- y – Yield to maturity, a nominal annual rate compounded m times a year
- i – Yield per period, y / m
The yield is quoted the way the market quotes it: a nominal annual rate, the per-period yield times m. For a semiannual bond this is the bond-equivalent yield. The effective annual yield, (1 + i)^m − 1, is a little higher because it counts the compounding. The current yield is the annual coupon divided by the price, and ignores the gain or loss at maturity.
There is no closed form for the yield, so it is found numerically. The price falls steadily as the yield rises, so one yield fits any price. The calculator uses Newton's method with dP/dy as the slope, and keeps each step inside a bracket that bisection narrows, so it always converges.
A bond whose coupon rate equals its yield is priced at par, 100 % of face. A coupon below the yield prices it at a discount, and a coupon above the yield prices it at a premium.
Duration and convexity
Macaulay duration D is the average time to the bond's cash flows, weighted by the share of the price each one makes up:
D = [Σ t × PV(CF_t) / P] / m, in years
A zero-coupon bond has a single cash flow, so its Macaulay duration is its maturity. Coupons pull it shorter. Modified duration, D* = D / (1 + i), is the percentage price change per unit change in yield: −(1/P) dP/dy. DV01, the dollar value of a basis point, is D* × P × 0.0001, the price change for a 0.01 % change in yield.
Convexity is the curvature of the price-yield relationship:
Convexity = [Σ t (t + 1) × PV(CF_t) / P] / [m (1 + i)]², in years²
Together they estimate the price change for a change in yield Δy:
ΔP ≈ P × (−D* Δy + ½ × Convexity × Δy²)
Duration alone gives a straight-line estimate, which understates the price after any move. Convexity corrects most of the gap. The calculator shows the estimate for a 1 % rise and a 1 % fall in yield next to the exact change, found by repricing the bond.
Example
A two-year bond with a $1,000 face value pays an 8 % coupon semiannually and yields 10 %. This is the duration example in Bodie, Kane and Marcus, Investments.
Each coupon is $1,000 × 0.08 / 2 = $40, and the yield is 5 % a half year over four periods:
P = $40/1.05 + $40/1.05² + $40/1.05³ + $1,040/1.05⁴ = $38.10 + $36.28 + $34.55 + $855.61 = $964.54
The bond trades at a discount because its 8 % coupon is below the 10 % yield. The cash flows' times, weighted by their share of the price, give a Macaulay duration of
D = (1 × 38.10 + 2 × 36.28 + 3 × 34.55 + 4 × 855.61) / $964.54 / 2 = 1.8852 years
A two-year zero-coupon bond would have a duration of exactly 2 years. Modified duration is 1.8852 / 1.05 = 1.7955 years, and convexity is 4.1895 years². If the yield rises 1 % to 11 %, duration and convexity estimate the price falls $17.12, and repricing the bond gives $17.12 too. The two differ only in the third decimal place. DV01 is $0.1732 per 0.01 % change in yield.