Arte SheetsLearn. Try. Understand.

Financial

Bond Convexity & Duration-Convexity second-order price change formula

Estimate a bond’s full-price sensitivity with modified duration and convexity. The second-order calculation remains an approximation, especially for large yield changes.

Add curvature to a local price-change approximation

For a fixed-cash-flow bond, use duration and convexity measured at the starting yield with consistent annual yield units and compounding conventions. Enter a 200-basis-point shock as 0.02, not 2. The formula estimates an instantaneous full (dirty) price change; it does not include elapsed-time carry, coupon receipts or changes in accrued interest.

With modified duration 7.5 and convexity 72, the linear term is ±15% for a ±0.02 shock and the curvature term adds 1.44 percentage points. The estimated full prices are 864.40 and 1164.40 from 1000. These are Taylor approximations, not exact repricing or guaranteed bounds. For large shocks or option-dependent cash flows, use a suitable full pricing model.

Bond Risk Input / ScenarioCellValuePrice Impact
Full (dirty) price & modified durationB2 = $1,000, B3 = 7.5Linear slope = -7.5x-$150.00 linear drop at +200 bps
Convexity & Yield Shock dyB4 = 72, B5 = +0.020.5 * 72 * (0.02)^2+1.44% (+$14.40 cushion!)
+200 bps Selloff (+0.02)-0.15 + 0.0144-13.56% (-0.1356)New Price = $864.40
-200 bps Rally (-0.02)+0.15 + 0.0144+16.44% (+0.1644)New Price = $1,164.40 (Asymmetric!)

Duration + Convexity percentage price change formula

The squared shock is nonnegative and zero at a zero shock. Its price contribution also depends on the sign of convexity. This exercise assumes nonnegative duration and convexity for a conventional fixed-cash-flow bond.

=IF(OR(COUNT(B2:B5)<>4,B2<=0,B3<0,B4<0),"Invalid inputs",ROUND(-B3 * B5 + 0.5 * B4 * (B5 ^ 2), 4))

Estimated post-shock bond price P * (1 + dP/P)

Applies the second-order Taylor percentage change to starting bond price B2.

=IF(OR(COUNT(B2:B5)<>4,B2<=0,B3<0,B4<0),"Invalid inputs",ROUND(B2 * (1 + (-B3 * B5 + 0.5 * B4 * (B5 ^ 2))), 2))

Try the example

Use the original values or change them to test your understanding.

Further reading