M7.03 defined Macaulay duration as "the weighted-average time to receive a bond's cash flows, each weighted by its share of the bond's present value" and used it once, on a single bond pair, to motivate why long bonds move more. Here is the same idea made fully operational so you can build it for any bond from a blank sheet.
For a bond paying cash flows CFₜ at each of n coupon periods (period length 1/freq years, semi-annual, freq = 2, for a UST or a G-Sec), priced at yield y (periodic rate y/freq):
Price = Σ CFₜ / (1 + y/freq)^t (sum over t = 1 .. n)
Macaulay duration (years) = [ Σ (t/freq) × PV(CFₜ) ] / Price
where PV(CFₜ) = CFₜ / (1 + y/freq)^t
In words: discount every cash flow to the present exactly as you already do to get the price, but instead of only summing the present values, weight each one by how far in the future it sits, in years, sum those weighted values, and divide by the price. The result is a single number in years, literally the present-value-weighted average maturity of every rupee or dollar the bond will ever pay you. A zero-coupon bond pays everything at maturity, so all of its weight sits at one point, and its Macaulay duration equals its maturity exactly. Every coupon-paying bond pulls some weight toward the present via its coupons, so its Macaulay duration is always less than its maturity, the more generous the coupon relative to the yield, the more weight sits early, and the shorter the duration for a given maturity. Worked Example 1 builds this full table, 20 rows deep, on a real-scale 10-year G-Sec; Practice P1 builds a miniature 3-row version by hand.
Advertisement
Modified duration: from a time to a price sensitivity
Macaulay duration is a time. To get the number you actually use to estimate a price move, convert it:
Modified duration = Macaulay duration / (1 + y/freq)
%ΔPrice ≈ −(Modified duration) × Δy
A modified duration of 7.13 means: for every 1% (100bp) the yield rises, the price falls by approximately 7.13%; for every 1bp it rises, the price falls by approximately 0.0713%. Fix two things permanently. First, modified duration is always slightly smaller than Macaulay duration, because of the (1 + y/freq) in the denominator, quoting one when you mean the other silently biases every estimate that follows (Common Mistake 1). Second, and far more consequential: this formula assumes the bond's cash flows themselves do not change when the yield does. That assumption is exactly right for a plain G-Sec or a plain UST, and exactly wrong the instant a call, a put, or a prepayment option is attached, the subject of the effective duration section.