Why Duration Calculations Need an Audit
Macaulay duration is a present-value-weighted average payment time. The phrase present-value-weighted matters: the weights are not the cash-flow amounts themselves, and they are not percentages of face value. They are each cash flow’s present value divided by the bond’s full price. A small mistake in the weights can produce a plausible-looking duration that is nevertheless wrong.
This tutorial focuses on three frequent calculation errors: using undiscounted cash flows as weights, dividing by an amount other than the bond price, and leaving redemption out of the final payment. The calculations below assume a bond with known, fixed payments at annual times and a single annual effective yield. This setup isolates the weight calculation; a different payment frequency or yield convention requires consistent time units and discounting.
For a conventional fixed-rate bond, each coupon is one cash flow. The final cash flow is usually the final coupon plus the redemption payment. If the bond has face amount \(F\), annual coupon rate \(c\), and redemption at face amount, the final payment is \(cF+F\), not merely \(cF\).
The weights \(w_t\) are nonnegative when the cash flows are nonnegative, and they sum to one. This gives a useful audit: if a calculation’s weights do not sum to one, check the price, discounting, and included payments before accepting its duration.
Why Present-Value Weights Are the Right Weights
Each payment contributes to the bond’s price according to its present value, not its nominal amount. A dollar payable later is worth less at the valuation date than a dollar payable sooner when the yield is positive. The duration calculation uses the proportion of total price attributable to each payment, then averages the payment times using those proportions.
This identity also justifies the weighted-average interpretation. The numerator of each weight is one payment’s contribution to price; dividing by the sum of all those contributions turns it into a share of price. Multiplying each share by its payment time and adding gives the average time, with larger price contributions receiving more weight.
The audit therefore has two linked parts: calculate the price from the same complete cash-flow list used for the duration numerator, then divide each discounted payment by that price. A calculation can have correct discounted cash flows but still be wrong if it normalizes them by face amount or by an incomplete price.
Write the amount and payment time for every cash flow. Combine the final coupon and redemption in the last entry.
For annual effective yield \(i\), calculate \(C_t/(1+i)^t\) for each time \(t\).
Add the present values to obtain \(P\), then divide each present value by \(P\). Verify that the weights total one.
Multiply each weight by its time and add. Keep full precision until the final reported result.
Worked Examples: Finding the Source of an Error
Worked Example: Undiscounted Payments Used as Weights
A hypothetical bond pays $80 at the end of year 1, $80 at the end of year 2, and $1,080 at the end of year 3. Its annual effective yield is 4%. An analyst weights payment times by the nominal payments and reports a duration. Find the correct Macaulay duration and explain the analyst’s error.
Method. Discount every payment at the stated annual effective yield, use their sum as the price, and then normalize each present value by that price. This avoids treating a dollar payable in three years as if it had the same value today as a dollar payable in one year.
The discount factors for years 1, 2, and 3 are \(1/1.04\), \(1/(1.04)^2\), and \(1/(1.04)^3\). The discounted payments are:
The bond price is the sum of those present values:
The corresponding weights are \(76.923077/1{,}111.003641=0.069238\), \(73.964497/1{,}111.003641=0.066576\), and \(960.116067/1{,}111.003641=0.864186\). They total 1.000000, subject to displayed rounding. Thus:
Rounded to four decimal places, the correct duration is 2.7950 years. The analyst’s undiscounted calculation is \([1(80)+2(80)+3(1{,}080)]/(80+80+1{,}080)=3{,}480/1{,}240=2.8065\) years. The denominator is 1,240, but even with that sum correctly calculated, the method is wrong: those nominal amounts are not the present-value weights. The discounted calculation is the correction.
Check. The largest present-value weight belongs to the year-3 payment, so the result should be closer to year 3 than to year 1. The value 2.7950 years is consistent with that pattern.
Worked Example: Dividing by Face Amount Instead of Price
A hypothetical two-year bond has face amount $1,000, pays an annual coupon of $80, and redeems at face amount at the end of year 2. The annual effective yield is 5%. A calculation correctly discounts the payments but divides the duration numerator by $1,000. Diagnose the error and calculate the correct duration.
Method. First calculate the price from the discounted payments. That price, rather than face amount, is the sum that normalizes present-value weights to one.
The payment at year 1 is $80. The payment at year 2 includes the $80 coupon and $1,000 redemption, for a total of $1,080. Their present values are:
Therefore the bond price is \(P=76.190476+979.591837=1{,}055.782313\). The duration numerator is the sum of time multiplied by present value:
Divide this numerator by the price:
The incorrect denominator gives \(2{,}035.374150/1{,}000=2.0354\), which is not a weighted average of payment times using weights that sum to one. In fact, the discounted payments sum to $1,055.782313, not $1,000. Face amount is the redemption basis here; it is not the market price at a 5% yield.
Check. The year-2 payment accounts for most of the price, so duration should be close to two years. The correct result, 1.9278 years, lies between the payment times of one and two years.
Worked Example: Redemption Omitted from the Final Payment
A hypothetical three-year bond has face amount $1,000, annual coupons at 6% of face, redemption at face value, and an annual effective yield of 4%. Calculate its price and Macaulay duration, ensuring the final payment includes redemption. Then compare with a calculation that leaves redemption out.
Method. List the actual contractual cash flows before discounting. The payments are $60, $60, and $1,060: the third amount combines the $60 final coupon with $1,000 redemption. This prevents the common mistake of treating the final coupon as the entire maturity payment.
Discount each payment at 4%:
The full price is \(57.692308+55.473373+942.336141=1{,}055.501822\), which rounds to $1,055.50. The duration numerator is:
Thus \(D=2{,}995.647477/1{,}055.501822=2.838126\), or 2.8381 years to four decimal places.
If the analyst omits redemption, the year-3 payment is incorrectly set to $60. Its present value becomes \(60/1.124864=53.339782\). The resulting incomplete total is \(57.692308+55.473373+53.339782=166.505463\); its incomplete duration numerator is \(57.692308+2(55.473373)+3(53.339782)=328.658399\). The ratio is about 1.9739 years, but it is the duration of a different and incomplete cash-flow stream, not the bond. Omitting redemption also makes the calculated price dramatically too small.
Check. Redemption is the largest part of the final payment and therefore a substantial part of the bond’s price. A price based only on three coupons cannot represent this bond’s promised payments.
Common Mistakes and Practical Checks
Duration errors are often detectable without repeating the entire calculation. Apply these checks after computing the result:
- Check the cash-flow list. For a bullet bond redeemed at face, the last entry should include both the final coupon and redemption. Do not add redemption twice if it is already included.
- Check the price denominator. The sum of the present values in the duration calculation must equal the price used as its denominator. Face amount and coupon rate do not replace that price.
- Check that weights sum to one. Compute each weight as present value divided by the same complete price. A total materially different from one signals an arithmetic or setup error.
- Check the duration range. With positive cash flows at times 1 through \(n\), Macaulay duration must lie between 1 and \(n\) years. A result outside this range usually indicates incorrect weights or times.
- Keep units consistent. If the cash-flow times are recorded in years, report duration in years. The detailed conversion between payment periods and yield conventions is a separate source of error; do not mix annual times with a rate for a different period.
- Round only at the end. Rounding present values or weights too early can alter the final digits. Keep unrounded values in the calculation and state the precision used for the reported duration.
Macaulay duration is not the bond’s maturity: it is an average of payment times, where the contributions are measured by shares of price. A long-dated redemption payment may dominate the price, or substantial earlier coupons may pull the average earlier. Correct present-value weights are therefore essential both for comparing bonds and for subsequent duration-based price sensitivity calculations.
Check Your Understanding
For each problem, audit the payments and weights before settling on the result.
- A hypothetical bond pays $100 at year 1 and $1,210 at year 2. Its annual effective yield is 10%. Find its price and Macaulay duration. (Answer: price $1,090.91; duration 1.9167 years.)
- A zero-coupon bond pays $1,000 once, at the end of year 3. Its annual effective yield is 6%. What is its Macaulay duration? (Answer: 3 years.)
- A two-year bond has face amount $1,000, annual coupons of 4% of face, and redemption at face. The annual effective yield is also 4%. Find its Macaulay duration. (Answer: 1.9615 years.)
- A three-year bond has face amount $1,000, annual coupons of 5% of face, and redemption at face. The annual effective yield is 5%. An analyst uses the three coupons but omits redemption from the final payment. Find the correct duration, and state the incorrect payment amount the analyst used at year 3. (Answer: correct duration 2.8594 years; the analyst used $50 instead of $1,050.)
- A bond’s discounted payments are $90 at year 1 and $1,000 at year 2. A calculation uses these present values in the duration numerator but divides by face amount $1,000. What is the correct duration? (Answer: price $1,090; duration \(2{,}090/1{,}090=1.9174\) years.)