CoreVecta AtlasPractical knowledge
Bond risk · Macaulay duration

Macaulay duration of a level-coupon bond

Compute the Macaulay duration of a level-coupon bond — the weighted-average wait for the bond’s money, each payment weighted by its present value share.

✓ Verified engine No account required

Workspace

The calculator's own fields, action and results arrive with the verified pack when you load it. Nothing is computed in this page.

Verified engine

Calculator

The calculator runs on the same signed pack and certified engine as the CoreVecta apps. It is fetched and verified when you need it, so this page stays light until then.

Nothing is computed in this page. Every figure comes back from the verified engine, or the calculator refuses.

What the engine returns
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.
Annual coupon rate
Yield to maturity (annual)
Coupon frequency (times per year)
Years to maturity
MethodThe per-period identity in coupon rate, yield and period count, converted to years — algebraically equal to the direct definition: each payment’s timing weighted by its share of the bond’s present value.
StandardClosed-form Macaulay duration for a level-coupon bond
GuardA 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.

How the duration moves with maturity

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.

The per-period identity in coupon rate, yield and period count, converted to years — algebraically equal to the direct definition: each payment’s timing weighted by its share of the bond’s present value.

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.

Worked example

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.

What each input represents

Annual coupon rate

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.

Yield to maturity (annual)

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.

Coupon frequency (times per year)

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.

Years to maturity

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.

Assumptions and limits

  • 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.

What the guards protect against

  • 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.

Provenance

Closed-form Macaulay duration for a level-coupon bond

The per-period identity in coupon rate, yield and period count, converted to years — algebraically equal to the direct definition: each payment’s timing weighted by its share of the bond’s present value.

Educational reference, not investment advice. The signed pack carries its own citation and re-verifies the identity against the direct weighted sum; the page reports the verification state of the release it mounted rather than asserting one.