On this page15 sections
- 01The weighted-average wait for a bond’s money
- 02Concepts to hold first
- 03Averaging dates by what arrives on them
- 04What pulls the balance point around
- 05Why anyone computes it
- 06The limits of a single timestamp
- 07How the method works
- 08Try it, verified
- 09What each input represents
- 10Worked example
- 11Reading the result
- 12Common mistakes
- 13Questions readers arrive with
- 14When this calculation is used
- 15Assumptions and guards
The weighted-average wait for a bond’s money
Picture the bond’s cash flows laid along a timeline, each one sized by its present value, and ask where the arrangement balances. That balance point is the Macaulay duration: the average waiting time for the bond’s money, with early coupons pulling it toward today and the redemption payment anchoring it near maturity. It is measured in years, and for any coupon-paying bond it lands strictly inside the time remaining — the coupons see to that.
This page evaluates the closed-form identity for a level-coupon bond rather than summing the stream term by term: the per-period coupon rate, the per-period yield and the count of periods determine the balance point exactly, and the pack’s own vectors re-verify the identity against the direct definition. The result in periods is then converted onto the yearly footing the rest of the cluster speaks.
What moves it is worth internalising. Richer coupons shift weight toward the near payments and shorten the wait; leaner coupons leave the redemption dominant and stretch it. A higher yield discounts the far payments harder, which also shortens the wait; more time to run lengthens it, though ever more slowly. A bond paying nothing along the way would have its wait equal its maturity — the limiting case this closed form deliberately excludes, since it divides weight among coupons that must exist.
The classic use is matching. An obligation due at a known horizon is best funded by a bond whose duration sits on that horizon, because at that alignment the two ways a rate move bites — reinvested coupons earning differently, and the bond being worth a different amount if sold — roughly offset. That discipline, immunisation, begins with the number computed here; what the number implies for price swings is the next page’s subject.
Concepts to hold first
The average time until a bond’s money arrives, where each payment counts in proportion to its importance rather than equally. Measured in years, it is a timestamp for the whole stream — one number standing in for a whole schedule.
The share of the bond’s price that one payment accounts for. Weighting by present value rather than by face amount is what makes the average honest: a distant payment is discounted hard, so it deserves less say in where the balance point lands.
The intuition behind the arithmetic. Lay the discounted cash flows along a timeline, each sized by its present value, and ask where the arrangement would balance on a fulcrum. That position, in years, is the duration.
The practice of matching the duration of assets to the timing of an obligation, so that a rate move hurts one side roughly as much as it helps the other. It is where duration stopped being a description and became a tool.
A bond paying nothing until redemption has all its weight on one date, so its wait equals its maturity exactly. It is the boundary the coupon-paying case approaches but never reaches — and the case this page’s closed form deliberately excludes.
Averaging dates by what arrives on them
Start with the question in plain terms: on average, how long must this bond’s owner wait to be paid? Averaging the payment dates equally would be absurd — a small coupon and a large redemption would count the same. Averaging by payment size is better but still wrong, because a large amount arriving far away is not worth its face today. The only weighting that respects both size and distance is present value, and that is precisely the weighting Macaulay duration uses.
So each payment is discounted first, exactly as the pricing lesson discounted them, and the resulting present values are turned into shares of the price. Each payment’s timing is then counted in proportion to its share. Add the weighted timings and the result is one number in years: where the stream balances. The pricing page asked what the cash flows are worth; this page asks the same flows when — same discounting, different question.
For any bond that pays coupons, the answer lands strictly inside the remaining term. It has to: some of the money arrives before maturity, so the average of all arrivals cannot equal the last one. How far inside is the whole information content of the measure, and it is why two bonds maturing on the same day can carry very different durations.
Each payment is discounted, the present values become weights, and the weighted timings give the balance point in years
The direction of the reasoning. Discounting comes first, weighting second, and the timestamp last — which is why duration cannot be read off a schedule without a yield.
What pulls the balance point around
Three inputs move the wait, and their directions are worth internalising because they explain most of what practitioners mean when they talk about duration. A richer coupon shifts weight toward the near payments and shortens the wait. A leaner coupon leaves the redemption dominant and stretches it toward maturity. Between two bonds maturing on the same day, the one paying more along the way is always the shorter instrument in the only sense that matters for rates.
A higher yield also shortens the wait, and the reason is quietly elegant: harsher discounting punishes the far payments more than the near ones, so weight migrates forward without a single cash flow changing. The same bond therefore carries a shorter duration in a high-yield world than in a low-yield one, which is one reason durations are recomputed rather than remembered.
More time to run lengthens the wait, but with diminishing returns — each additional year of maturity contributes less than the one before, because the payments it adds are the most heavily discounted ones in the stream. On a long coupon bond the duration flattens out well below the maturity, which is why very long bonds are less differentiated by maturity than their dates suggest.
Starting from the maturity date, coupons and discounting each pull the weighted-average wait earlier, ending at the balance point inside the term
Duration measured down from maturity. Every effect that puts weight on early money moves the balance point earlier; nothing can move it past the final payment.
Why anyone computes it
The classic application is matching. An obligation falling due at a known horizon is conventionally funded with assets whose duration sits on that horizon, because at that alignment the two ways a rate move bites tend to offset: coupons get reinvested at different rates than expected, and the holding is worth a different amount if it has to be sold. Aligning the balance point with the obligation is the first step of immunisation, and it is why pension and insurance work is duration work.
The comparative use is simpler and more common. Given two bonds that maturity alone cannot separate — same date, different coupons — duration ranks them by the thing that actually determines rate exposure. It is the single most useful timestamp a bond has, and it travels: fund fact sheets quote an average duration for exactly this reason.
The number is also raw material. Divided once by the per-period growth factor it becomes modified duration, the working measure of price sensitivity — the third lesson in this arc. That conversion is why the timing question is worth answering carefully: an error here propagates straight into every exposure estimate downstream.
The limits of a single timestamp
This page evaluates a closed-form identity for a level-coupon bond rather than summing the stream payment by payment, and the identity is algebraically equal to the direct weighted definition — the pack’s own vectors re-verify one against the other. What the identity requires is a genuine coupon stream to distribute weight across, which is why a coupon at or below nought is refused rather than answered: with no stream there is nothing to weight, and the zero-coupon case, whose wait simply equals its maturity, sits outside the form by construction. A yield at or below nought is refused on the same principle, since the discounting the weights depend on has to be built from a positive rate.
Two further limits belong on the page rather than in the footnotes. The measure assumes one flat yield discounts every payment; a sloped curve would weight the timeline differently at each point, and a duration computed against a flat yield is an approximation of the exposure it summarises. And it assumes the cash flows are what the contract says — callable, prepayable and defaultable instruments have flows that change when rates do, which breaks the premise that the timeline is fixed while the discounting varies.
Finally, duration is a snapshot. It drifts as time passes and as yields move, so it is a quantity to recompute, not a property to record. A duration quoted without the yield and schedule it was computed under is barely a number at all.
How the method works
The annual coupon rate and the annual yield are divided across the payment schedule into per-period figures, and the remaining term becomes a count of periods.
The closed-form identity in coupon rate, yield and period count is evaluated — the exact algebraic equivalent of discounting every payment, converting the present values into shares of the price, and averaging the payment timings against those shares.
The result, in periods, is converted onto the yearly footing the rest of the cluster speaks, so that a duration from a semiannual bond and one from an annual bond are comparable.
A coupon rate at or below nought is refused, because the identity distributes weight across a coupon stream that must exist; a yield at or below nought is refused, because the weights depend on discounting at a positive per-period rate.
The certified engine performs this calculation, and the pack’s own vectors re-verify the closed form against the direct weighted sum. This page explains what the engine does; it does not reproduce it, because a second implementation of a specified method is a second answer waiting to disagree with the first.
Try the worked scenario
The engine below arrives pre-filled with the arc’s anchor: the same annual-coupon reference bond the pricing lesson carried at a discount to par, now asked when rather than how much. Read the result against the years remaining first — it should land close to the term but visibly inside it. Then run the two experiments that teach the measure: fatten the coupon and watch the wait shorten as weight migrates to the near payments, and stretch the maturity and watch the wait lengthen by less with each added year.
Read the output as a timestamp in years — the average moment this bond’s money arrives, weighted by present value. It is not a date, not a recommendation, and not valid apart from the yield and schedule you computed it under. Every figure is computed live by the verified engine; this page stores none.
What each input represents
The bond’s stated annual coupon as a percentage of face value — the size of the periodic payments whose present values do the weighting. Richer coupons place more weight early and pull the duration down; this closed form requires the coupon to be genuinely positive, since the identity divides weight among the coupon stream.
The single annual discount rate applied to every payment — the market’s current price for waiting. It sets how hard the far cash flows are discounted relative to the near ones, which is why the same bond carries a shorter duration when yields are high and a longer one when they are low.
How many coupons arrive each year. The identity works in per-period terms — the annual coupon and yield are divided across the schedule — and the finished duration is converted back to years. The workspace assumes a single annual coupon when unstated, declared as an illustration; semiannual schedules are the common market convention.
The time remaining until redemption, part-years welcome. It is the ceiling the duration approaches but never reaches while coupons flow, and the input whose growth lengthens the wait at an ever-diminishing rate on a coupon-paying bond.
Worked example
The scenario
The pack’s declared reference bond: an annual-coupon issue with a handful of years to run, its coupon rate sitting a notch below its yield — the same bond the cluster’s pricing page carries at a discount to par.
The output is the Macaulay duration in years. It lands close to the remaining term but visibly inside it: the coupons arrive early enough, and are worth enough today, to pull the average wait measurably ahead of the final redemption date.
Fatten the coupon and the duration shortens as weight migrates to the near payments; stretch the maturity and it lengthens, each added year contributing less than the one before. Those two experiments, run in the workspace, teach most of what duration means. Every figure is computed by the certified engine after the page mounts; the pack’s own vectors re-verify the closed form against the direct weighted sum.
Reading the result
Compare the duration to the years remaining, not to another bond’s maturity. The gap between the two is the coupon stream’s work, and it is the part maturity alone can never tell you.
A duration close to the remaining term means the redemption payment dominates — the bond behaves much like a single distant payment. A duration well short of it means the coupons carry real weight and the instrument is shorter than its date implies.
Always carry the yield and schedule alongside the figure. The same bond has different durations at different yields, so a duration quoted bare cannot be checked or compared.
Common mistakes
Treating maturity as duration. They coincide only for a bond that pays nothing until the end; for every coupon-paying bond, maturity overstates the wait.
Weighting the payments by their amounts instead of their present values. That average ignores the discounting entirely and lands too late, most badly on long bonds.
Quoting a duration without the yield and compounding schedule it was computed under — and then converting it to modified duration under a different convention, which is the mismatch the next lesson exists to warn about.
Reading duration as a price sensitivity directly. It is a time, in years; the conversion to a percentage-per-unit-of-yield multiplier is a separate step, and the two figures are close enough to be confused and different enough to matter.
Applying the measure to callable, prepayable or distressed instruments as if their cash flows were fixed. When the flows themselves respond to rates, a fixed-timeline average stops describing the exposure.
Questions readers arrive with
How is duration different from maturity?
Maturity is when the final payment arrives; duration is when the money arrives on average, weighted by present value. Every coupon paid before maturity pulls duration below it. Two bonds maturing on the same day can have visibly different durations, and it is the duration, not the date, that governs how their prices respond to rates.
Why is duration measured in years if it is used to talk about risk?
Because that is genuinely what it measures — a weighted waiting time. Its usefulness for risk comes from a conversion: divide it once by the per-period growth factor and the same number becomes an approximate percentage price move per unit of yield. The third lesson in this arc does exactly that.
Why does a higher yield shorten the duration when no payment has changed?
Because the weights change even though the payments do not. Harsher discounting shrinks the present value of far payments more than near ones, so the far dates lose influence over the average. The balance point moves earlier purely because the weighting moved.
Why does the calculator refuse a zero coupon rate?
Because the closed-form identity it evaluates distributes weight across a coupon stream, and with no stream the form stops describing anything it can measure. The zero-coupon answer is known without a calculator — the wait equals the maturity — so the engine declines rather than returning a figure the method cannot justify.
Can I add up the durations of the bonds I hold?
Not directly. A portfolio’s duration is the value-weighted blend of its holdings’ durations, not their sum, and the blend is only meaningful if every component was computed on the same convention. Beyond that, portfolio construction is a decision with more inputs than this educational page holds, and it offers no advice on it.
When this calculation is used
Locating a bond’s effective timestamp — the average year its money actually arrives, rather than the year its last payment does.
Matching a bond or a ladder rung to a liability due at a known horizon, the first step of immunisation.
Comparing two bonds of similar maturity but different coupon richness, which the maturity date alone cannot separate.
Feeding the modified-duration page, which converts this weighted wait into price sensitivity per unit of yield.
Seeing how coupon size, yield level and remaining term each pull the balance point, by varying one input at a time.
Assumptions and guards
The bond pays level coupons on schedule and redeems at maturity — no calls, no defaults, no step-ups or embedded options.
One flat yield discounts every payment; a sloped curve would weight the timeline differently at each point.
The measure is a snapshot: as time passes and yields move, the balance point drifts, so a duration is re-computed, not remembered.
The closed form assumes a genuinely coupon-paying bond; the zero-coupon limiting case, where the wait equals the maturity, is outside it.
A zero or negative coupon rate is refused — the closed-form identity distributes weight across a coupon stream, and with no stream the formula stops describing a bond it can measure.
A zero or negative yield is refused: the identity needs a positive per-period yield to discount against, so a flat-or-negative rate world is declined rather than mispriced.