HomeFinance › Bond Yield Calculator

Bond Yield Calculator

Computes a bond's current yield and solves numerically for its yield to maturity from face value, coupon rate, market price, years to maturity and coupon frequency, and reports total coupon income and total return if held to maturity.

When to use

You know a bond's price and coupon and want its yield to maturity (the annualized return if held to redemption) or want to compare bonds trading at different prices.

Do not use when: The bond is callable, floating-rate or amortizing (yield to call / worst differ), or you want the price from a yield (invert with present-value style discounting).

Formula

C = face_value × coupon_rate_percent/100 / m; N = years_to_maturity × m; solve price = Σ_{k=1..N} C/(1 + y)^k + face_value/(1 + y)^N for the periodic yield y; YTM = y × m; current_yield = annual coupon / price

Standard bond pricing with level coupons at the end of each period, settlement on a coupon date (no accrued interest) and the yield found by bisection. YTM assumes coupons are reinvested at the same yield.

Inputs

ParameterTypeUnitRequiredDescription
face_valuenumberdefault 1000Amount repaid at maturity. Range: > 0, ≤ 1000000000000
coupon_rate_percentnumber% per yearyesAnnual coupon as a percent of face value. Range: ≥ 0, ≤ 100
pricenumberyesCurrent clean price in currency (e.g. 950 for a 1,000 bond quoted at 95). Range: > 0, ≤ 1000000000000
years_to_maturitynumberyearsyesTime until redemption; rounded to whole coupon periods. Range: > 0, ≤ 100
payments_per_yearintegerdefault 22 for semiannual (US Treasuries and most corporates), 1 for annual (many European bonds). Range: ≥ 1, ≤ 12

Outputs

OutputTypeUnitDescription
annual_couponnumberface_value × coupon_rate_percent / 100.
coupon_paymentnumberannual_coupon / payments_per_year.
number_of_paymentsintegerround(years_to_maturity × payments_per_year).
current_yield_percentnumber%annual_coupon / price × 100.
yield_to_maturity_percentnumber%Periodic yield × payments_per_year (bond-equivalent yield).
effective_annual_yield_percentnumber%(1 + periodic yield)^payments_per_year − 1.
total_coupon_incomenumbercoupon_payment × number_of_payments.
total_return_to_maturitynumbertotal_coupon_income + face_value − price.
price_statusstringDiscount (price below face), premium (above) or par.

Example

1,000 face, 5 % coupon, price 950, 10 years, semiannual: {"face_value":1000,"coupon_rate_percent":5,"price":950,"years_to_maturity":10,"payments_per_year":2}{"annual_coupon":50,"coupon_payment":25,"number_of_payments":20,"current_yield_percent":5.26,"yield_to_maturity_percent":5.66,"effective_annual_yield_percent":5.74,"total_coupon_income":500,"total_return_to_maturity":550,"price_status":"Discount (price below face value)"}

1,000 face, 6 % annual coupon, price 1,050, 5 years: {"face_value":1000,"coupon_rate_percent":6,"price":1050,"years_to_maturity":5,"payments_per_year":1}{"current_yield_percent":5.71,"yield_to_maturity_percent":4.85,"total_coupon_income":300,"total_return_to_maturity":250,"price_status":"Premium (price above face value)"}

GET https://tttkmbb.com/api/v1/calculate/bond-yield?face_value=1000&coupon_rate_percent=5&price=950&years_to_maturity=10&payments_per_year=2

Machine access

Sources

FAQ

Why is YTM above the current yield for a discount bond?

Current yield counts only coupons; YTM also includes the gain from being repaid 1,000 for a bond bought at 950, spread over the remaining years.

Is YTM the same as the bond-equivalent yield?

Yes for semiannual bonds: YTM here is the periodic yield times the number of periods per year (nominal), which is how US bond yields are quoted; effective_annual_yield_percent compounds it.

Related calculators