Home › Finance › 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
| Parameter | Type | Unit | Required | Description |
|---|---|---|---|---|
face_value | number | default 1000 | Amount repaid at maturity. Range: > 0, ≤ 1000000000000 | |
coupon_rate_percent | number | % per year | yes | Annual coupon as a percent of face value. Range: ≥ 0, ≤ 100 |
price | number | yes | Current clean price in currency (e.g. 950 for a 1,000 bond quoted at 95). Range: > 0, ≤ 1000000000000 | |
years_to_maturity | number | years | yes | Time until redemption; rounded to whole coupon periods. Range: > 0, ≤ 100 |
payments_per_year | integer | default 2 | 2 for semiannual (US Treasuries and most corporates), 1 for annual (many European bonds). Range: ≥ 1, ≤ 12 |
Outputs
| Output | Type | Unit | Description |
|---|---|---|---|
annual_coupon | number | face_value × coupon_rate_percent / 100. | |
coupon_payment | number | annual_coupon / payments_per_year. | |
number_of_payments | integer | round(years_to_maturity × payments_per_year). | |
current_yield_percent | number | % | annual_coupon / price × 100. |
yield_to_maturity_percent | number | % | Periodic yield × payments_per_year (bond-equivalent yield). |
effective_annual_yield_percent | number | % | (1 + periodic yield)^payments_per_year − 1. |
total_coupon_income | number | coupon_payment × number_of_payments. | |
total_return_to_maturity | number | total_coupon_income + face_value − price. | |
price_status | string | Discount (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
- API:
GET https://tttkmbb.com/api/v1/calculate/bond-yield(query parameters) orPOSTwith a JSON body{"inputs": {...}} - Schema: https://tttkmbb.com/api/v1/calculators/bond-yield · Markdown: https://tttkmbb.com/finance/bond-yield.md · JSON definition: https://tttkmbb.com/finance/bond-yield.json
- MCP: server
https://tttkmbb.com/mcp, toolrun_calculator with calculator_id="bond-yield" - OpenAPI operationId:
calculate_bond_yield - Freshness:
static. Authentication: none. Rate limit: fair use (see rate limits).
Sources
- Investopedia – Yield to Maturity (YTM): What It Is and How It Works (reference)
- Wikipedia – Yield to maturity (reference)
- Investopedia – Current Yield (reference)
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
- APY Calculator — Nominal versus effective annual rates.
- Present Value Calculator — Discount a single future amount.
- IRR Calculator — YTM is the IRR of the bond's cash flows.