One portfolio, three answers
Three durations, three questions: Macaulay 5.354 years, modified 5.090, effective 5.083. The first is a time, the second a sensitivity, the third a reprice under a curve shift. Quoting one as another is a 0.26-year error here.
The same seven-bond portfolio has three durations:
| Method | Value | What it measures |
|---|---|---|
| Macaulay | 5.354 years | Weighted average time to cash flows |
| Modified | 5.090 years | Percentage price change per unit yield change |
| Effective | 5.083 years | Repriced under a small parallel curve shift |
They are within about 5.5 percent of each other and they are not interchangeable. The differences are small here because every bond is plain vanilla and the curve is nearly flat; on a callable bond or a steep curve they diverge sharply.
Macaulay: a time
Macaulay duration weights each cash flow's arrival time by its present value share. For a 5-year bond with coupons, it lands near 4.5 years, less than maturity, because coupons arrive earlier.
It is a time, not a sensitivity. Its use is as the input to modified duration and as a rough matching statistic for liability-driven portfolios.

Modified: a sensitivity
Modified duration divides Macaulay by one plus the yield per period. That converts a weighted time into a percentage price change per unit of yield.
At 5.090, a one basis point rise in yield costs about 5.09 × 0.0001 = 0.0509% of value. On a 663.57 portfolio, that is about 0.3378, which the workbook reports as 0.337 per basis point.
The check for each bond is a closed-form duration against a one basis point finite difference. For the first bond, the closed form gives 2.7086 and the bumped price agrees. Seven bonds, seven checks, all within tolerance.
Effective: a reprice
Effective duration does not use a formula for duration at all. It bumps the curve by a small amount, reprices every cash flow, and computes the percentage change.
That matters because it captures whatever the pricing function captures, including embedded options, which modified duration cannot see. Here there are none, so effective duration at 5.083 is close to modified at 5.090.
The small gap between them is the shape of the curve. Modified duration assumes a parallel shift in yield; effective duration shifts the spot curve and lets the discount factors move as they will. On a flat curve the two coincide; on a steep one they do not.
Which one to quote
The answer depends on the question.
For a quick rule of thumb: modified. Multiply by the basis point move and you have the percentage change.
For a risk system: effective. It is the number that survives a curve that is not flat and a bond that is not plain.
For a liability match: Macaulay. It is the one measured in years that can be compared with a liability's weighted average time.
Quoting "duration of 5" without saying which is a small error on this portfolio and a serious one on any book with options. The workbook keeps all three and names them, which is the only way the distinction survives a handover. Naming them is also what makes the output usable in automated financial reporting, where an unlabeled duration becomes a wrong risk number.
The check that catches a wrong definition
Each bond's duration is checked by finite difference, which is a check on the *definition* rather than the arithmetic. A model that computed Macaulay duration and labeled it modified would fail the finite-difference check immediately. The bumped price would produce a number near 5.09 and the formula would report 5.354.
That is the value of computing a quantity two ways when one of the ways is numerical: the numerical one cannot be fooled by a mislabeled formula. The derivatives workbook applies the same bump to option Greeks, where each sensitivity is compared with its closed form.
The convexity article extends the same approach to the second derivative, and the key-rate article decomposes the 5.083 into segments. Where the yield itself comes from is in the yield solve, and the spread that shifts it is in the credit spread.
Duration is computed both from the formula and from a one-basis-point bump in Mica, so a mislabeled definition fails the check.
