Bond Yield to Maturity Calculator

Find the annualized return you'd earn holding a bond to maturity, accounting for price premium or discount.

Inputs

%

Results update as you type, and the address bar keeps your numbers so the link you share reopens this exact calculation.

Yield to Maturity

5.66%

Detailed results
Current yield5.26%
Annual coupon income$50.00
Total return to maturity$550
Premium / (discount) to par-$50.00

What this result means

Yield to Maturity: 5.66%.

This bond is trading at a discount. Held to maturity, it yields 5.66% per year — higher than the coupon rate because you capture the discount at maturity.

Cash Flow Schedule

Coupon payments and final principal repayment over the life of the bond.

Cash Flow Schedule. 20 rows, first 12 shown.
PeriodCoupon paymentPV of paymentCumulative income
1$25.00$24.31$25.00
2$25.00$23.64$50.00
3$25.00$22.99$75.00
4$25.00$22.36$100
5$25.00$21.74$125
6$25.00$21.14$150
7$25.00$20.56$175
8$25.00$20.00$200
9$25.00$19.45$225
10$25.00$18.91$250
11$25.00$18.39$275
12$25.00$17.88$300

How this is calculated

YTM = Newton-Raphson solution to: Price = Σ(Coupon/(1+YTM/freq)^t) + Face/(1+YTM/freq)^n

Yield to maturity (YTM) is the single discount rate that makes the present value of all future coupon payments and the face-value repayment equal to the bond's current market price. It is the internal rate of return of holding the bond to maturity.

Why YTM differs from the coupon rate. If you buy a bond at a discount (below par), you earn the coupon income plus a capital gain when par is repaid — pushing YTM above the coupon rate. Buy at a premium and YTM falls below the coupon rate because you pay more than you receive back.

Current yield vs YTM. Current yield = annual coupon ÷ price. It ignores the pull-to-par effect and therefore overstates YTM for premium bonds and understates it for discount bonds. YTM is the more complete measure.

Reinvestment assumption. YTM assumes all coupon payments are reinvested at the same YTM rate. In practice, reinvestment rates vary, so realized yield may differ. Bonds with higher coupon rates are more exposed to this reinvestment risk.

Interest rate risk. Bond prices move inversely to interest rates. A rising-rate environment causes existing bond prices to fall. Longer maturities have higher duration and therefore greater price sensitivity per basis point of yield change.

Tax treatment. For bonds bought at a discount, the IRS generally requires you to accrete the discount into taxable income annually ("original issue discount" rules apply to OID bonds; market discount rules apply to bonds acquired at a discount in the secondary market). Consult a tax advisor for bonds with significant price differences from par.

Assumptions

  • YTM is computed using Newton-Raphson iteration, accurate to within 0.001 basis points.
  • All coupon payments are assumed reinvested at the computed YTM (reinvestment rate risk not separately modeled).
  • The bond has no call provisions, put options, or sinking fund (plain-vanilla bond).
  • Day-count conventions (actual/actual, 30/360) are not applied; periods are assumed equal.
  • Tax effects, including OID accrual or market-discount rules, are not included.

Frequently asked questions

What is yield to maturity?

YTM is the single annualized discount rate that equates the present value of all future coupon payments and the face-value repayment to the bond's current market price — in other words, your internal rate of return if you hold to maturity. It assumes all coupon payments are reinvested at the same YTM rate (a sometimes-unrealistic assumption in practice), and it accounts for both coupon income and any capital gain or loss from your purchase price.

Why is YTM higher than the coupon rate for a discount bond?

A discount bond is priced below par because yields have risen since issuance. When you buy at $950 (par $1,000), you receive the $1,000 face value at maturity — an instant $50 capital gain on top of all coupon payments. This gain compounds your total return, pushing YTM above the coupon rate. The deeper the discount, the higher the YTM relative to the coupon.

What is the difference between YTM and current yield?

Current yield = annual coupon ÷ price; it captures only the income component relative to what you paid. Current yield ignores the pull-to-par effect entirely. For a discount bond, current yield understates true return because it misses the capital gain. For a premium bond, current yield overstates return because it ignores the capital loss at maturity. YTM is the complete, honest return picture.

What does 'semi-annual' coupon frequency mean?

Most US Treasury and corporate bonds pay coupons twice per year (every six months). A bond with a 5% annual coupon and $1,000 face value pays $25 every six months = $50 annually. The YTM calculation uses periods matching the coupon frequency — semi-annual calculations use a 6-month compounding period, then annualize the result. Always match the calculator's frequency setting to your bond's actual payment schedule.

Can YTM be negative?

Yes, theoretically. If a bond's price is so far above par that coupon income doesn't offset the capital loss at redemption, YTM can be negative. This occurred with many European sovereign bonds during periods of negative central bank rates — investors accepted negative returns for safety. In the US, negative YTM is extremely rare for investment-grade bonds, but callable bonds bought above call price can exhibit negative YTM if redeemed early.

How does duration relate to YTM?

Duration measures a bond's price sensitivity to interest rate changes: a 7-year duration bond loses approximately 7% in value for every 1% rise in yields (and vice versa). Higher-YTM discount bonds have slightly shorter duration than equivalent premium bonds, because the capital gain at maturity arrives sooner (reducing effective time-weighted cash flow). Higher yields generally mean shorter duration — a key reason long-duration bonds are more volatile.

Related calculators and guides

Last reviewed and sources

Statutory figures marked for verification currently use placeholder values of zero.