Skip to main content
Back to BlogCalculator Guides

How to Calculate Bond Yield (the Five Yields, the One That Matters, and Why Current Yield Lies)

Calculate bond yield without fooling yourself — the five yields a bond carries, why current yield understates discount bonds, why the approximation formula is biased, and what modified duration actually predicts.

The Toolbox TeamAugust 14, 20267 min read

"It's yielding 5.6%" — which 5.6?

A broker hands you a bond: $1,000 face, 5% coupon, ten years, trading at $950. "It's yielding 5.6," she says. Fine — except yield is doing a lot of work. That bond carries five yields, all different, and the one she quoted depends on which she meant. Pick the wrong one and you've mispriced the trade.

The Bond Yield Calculator computes all five plus duration from five inputs — face, price, coupon rate, years, frequency. The hard part isn't the arithmetic; it's knowing which number answers your question and where each quietly stops telling the truth.

The five yields, and what each one ignores

Yield Formula (what it is) What it ignores
Nominal (coupon) Coupon rate, fixed at issue Price, time, everything
Current Annual coupon ÷ market price The capital gain or loss at maturity
Approximate YTM [C + (F−P)/n] ÷ [(F+P)/2] Compounding, time value of money
Precise YTM The rate r that solves P = Σ C/(1+r/k)ᵗ + F/(1+r/k)ⁿ Nothing — this is the real one
Yield to call Same as YTM, but redeems at the call price on the call date Only exists if the bond is callable

Current yield is the one retail investors reach for first — and the one that lies.

Why current yield understates a discount bond

Current yield on our $950 bond is $50 ÷ $950 = 5.263%. That looks like your return. It isn't — you paid $950 and get $1,000 back at maturity, a $50 capital gain current yield ignores. The honest number is YTM: 5.66% precise, 5.64% approximate. Current yield undersells your return by ~40 basis points. Flip it: the same bond at $1,050 (a premium) has a current yield of 4.76% but a YTM of 4.36% — now current yield overstates, because you'll lose $50 of principal at maturity. Current yield only equals YTM at par, and bonds rarely trade there. A "current yield" quote on a bond off face is the wrong number — sometimes by accident, sometimes not.

The approximation formula is biased. Use the precise one.

The tool shows both an approximate and a precise YTM, close near par — which lulls people into treating them as interchangeable. They aren't. The approximation linearly amortizes the gain or loss; the precise YTM compounds it. The difference is small at par and grows as you move away.

Take a deeper discount: $1,000 face, 5% coupon, ten years, trading at $800. Current yield is 6.25% (still understating). The approximation gives 7.78%; the precise YTM is 7.93% — undershoots by ~15 basis points. Push the price to $1,200 at twenty years (a fat premium) and it reverses: approximation 3.64%, precise 3.58%, and now it overshoots.

The pattern: the approximation underestimates YTM for discount bonds and overestimates for premium bonds — the further from par and the longer the maturity, the wider the gap. It's a back-of-envelope estimate, fine for a sanity check, wrong for a decision. The precise figure — bisection on the full price equation — is the one to quote.

Duration: the risk number, and what it can't see

Yield tells you what you earn if nothing changes. Duration tells you what happens when rates do. The tool reports Macaulay duration (weighted-average time to each cash flow, in years) and modified duration (Macaulay ÷ (1 + periodic yield)).

Modified duration is the practical one: the % price move per 1% yield change. Our $950 bond has a Macaulay duration of ~7.93 years, modified ~7.71 — a 1% rate rise knocks ~7.7% off the price, a 1% drop lifts it about the same. The single most useful risk number on a bond.

What it can't see: convexity. Modified duration is a linear approximation — a tangent line. Real price curves bend, so the actual drop after a 1% rise is a touch smaller than duration predicts, the actual gain after a 1% drop a touch larger. The tool doesn't compute convexity; treat the duration estimate as a first-order read. For small rate moves it's close, for a 2–3% shock it drifts.

Gotchas

  • Yield to call disappears unless years-to-call is strictly less than maturity. The guard is yearsToCall < yearsToMaturity — set them equal and YTC silently becomes null, no warning, no "yield to worst" panel.
  • The displayed YTM is bond-equivalent yield, not effective annual yield. A 5.66% semiannual YTM compounds to 5.73% effective annual. The tool uses the market convention (periodic rate × frequency), what brokers quote — don't compare it directly to an effective annual return on a stock or savings account without converting.
  • Fractional years round to the nearest period. nPeriods = round(years × frequency), so 10.3 years semiannual becomes 21 periods (10.5 years), not 20.6. If you need odd first-coupon or stub-period precision, this tool doesn't model it.
  • "Total return at maturity" is a cash total, not a yield. The overview shows $550 — $500 of coupons plus $50 of capital gain, summed undiscounted. It's how many dollars hit your account, not what rate they represent. Don't read it as a yield; the yield is the YTM above.

Summary

  • "Yield" is five numbers: nominal (the coupon rate), current (coupon ÷ price, lies off par), approximate YTM (biased), precise YTM (the real return), and yield to call (callable bonds only).
  • Current yield ignores the capital gain/loss at maturity — understates discounts, overstates premiums. Use YTM: 5.66% on the $950 bond, not 5.26%.
  • The approximation underestimates YTM for discounts, overestimates for premiums; trust the precise figure.
  • Modified duration (~7.71 here) predicts the % price move per 1% yield change — a first-order estimate ignoring convexity.
  • Run the numbers in the Bond Yield Calculator. For the compounding side of a reinvested-coupon bond: compound interest. For equity-style returns: investment returns, dividend, and ROI.