Bond current yield calculator
A 60 coupon on a bond quoted at 950 is a current yield of 6.3158%; at a 1,000 quote it would be 6%. Enter the annual coupon and the price you face to see your yearly cash yield. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Annual coupon
- 60
- Market price
- 950
- Current yield percent
- 6.3158
- Current yield decimal
- 0.06315789
- Precision
- 4
- Inverse yield
- 15.8333
Current yield is the cash income a coupon bond pays this year relative to what you pay for it in the market: annual coupon income divided by the current market price, expressed as a percent. This bond current yield calculator applies that textbook identity with no quote lookup and no guesswork about accrued-interest conventions — you supply the annual coupon dollars and the price you actually face. A sixty-dollar coupon on a nine-hundred-fifty-dollar bond is a six point three two percent current yield; the same coupon on a one-thousand-dollar par quote is six percent because only the denominator moved. Zero-coupon names return a zero current yield instead of an error, because current yield counts cash coupons, not the pull-to-par embedded in yield to maturity.
What current yield measures, and what it leaves out
Current yield answers one question: how much cash income does this bond pay each year compared with the price you would pay for it today? You divide the annual coupon by the market price and multiply by 100. A 60 coupon on a bond quoted at 950 gives 6.3158%, and the same coupon at 1,000 gives 6%, because only the price changed. It does not count the gain or loss you make when the bond is repaid at face value, nor taxes or accrued interest. That is why it can differ from yield to maturity, which includes that pull toward face value.
Reading the result without the usual slips
Enter the coupon for a full year: if the bond pays twice a year, add both payments together. Use the price you actually face in the market, not the face value, or you will simply get the coupon rate back. When the price falls and the coupon stays fixed, current yield rises, so it is a quick way to reprice a holding after a market move. A bond with no coupon shows a current yield of zero rather than an error. If you also enter the face value, you see the coupon rate and whether the bond trades at a premium or a discount.
What you can do with it
Reprice a coupon bond after a market move
Hold the annual coupon fixed and recompute current yield when the market price changes, so a dip or rally updates the cash yield without a market-data vendor.
FAQ
How is current yield different from yield to maturity?
Current yield uses only this year's coupon cash and today's price. Yield to maturity also needs remaining life and the redemption amount, because it folds in the pull to par. This calculator does not compute YTM.
Why must market price be greater than zero?
A zero annual coupon is allowed and produces a 0% current yield.
Does this include capital gains, taxes, or accrued interest?
No. It is the cash current yield only. Yield to maturity, taxable-equivalent municipal yield, and clean-versus-dirty conventions are different metrics. Pass the price figure you already want to use.
What does the bond current yield calculator cost?
It is free in your browser on this page.
What does the inverse yield figure mean?
It is the market price divided by the annual coupon: how many years of that coupon it would take to earn back what you paid. For a 60 coupon at a price of 950, that is 15.8333 years.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/finance/bond-current-yield \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"annual_coupon":60,"market_price":950}'const res = await fetch("https://api.kit.forhosting.com/finance/bond-current-yield", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"annual_coupon": 60,
"market_price": 950
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/finance/bond-current-yield",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"annual_coupon": 60,
"market_price": 950
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/finance/bond-current-yield", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"annual_coupon":60,"market_price":950}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"annual_coupon":60,"market_price":950}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/finance/bond-current-yield", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"annual_coupon": 60,
"market_price": 950
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "finance.bond_current_yield",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
The engine is pure deterministic arithmetic, so homework keys, screening spreadsheets, and API clients always agree on the same inputs.
What current yield measures and how it is computed
Current yield answers a cash-income question for a coupon bond: given the dollars the issuer pays over a year, what percent of the bond's current market price does that coupon represent. Worked example: an annual coupon of sixty dollars on a nine-hundred-fifty-dollar market quote is six point three one five eight percent, because sixty divided by nine hundred fifty equals zero point zero six three one five eight. Another example: a fifty-dollar coupon on a one-thousand-dollar par quote is five percent. Tax-free municipal comparisons are a different search and a different tool; this calculator only divides annual coupon income by current market price. The standard identity used here is current_yield_percent equals annual_coupon divided by market_price, times one hundred. The same ratio without the times-one-hundred step is current_yield_decimal, so a six point three two percent current yield is also about zero point zero six three two of the purchase price each year. When the annual coupon is strictly positive the response also includes inverse_yield, which is market_price divided by annual_coupon — the number of years of that coupon it would take to recoup the market price if the coupon never changed, the reciprocal of the decimal current yield. A zero coupon is a zero current yield and inverse_yield is omitted rather than returned as null, because optional output keys are dropped when they do not apply. Supply an optional face_value (par) and the engine also reports coupon_rate_percent, the dollar premium or discount versus par, quote_vs_par as premium, par, or discount, and yield_versus_coupon so you can see the textbook relationship: a discount quote lifts current yield above the coupon rate; a premium quote pushes it below. This page does not compute yield to maturity, yield to call, or duration: those need remaining life and a redemption assumption. It is also not taxable equivalent yield.
Inputs, validation, rounding, and what the response contains
Market price must be strictly greater than zero: a zero or negative price is undefined for yield and is rejected the same way so automation never stores Infinity. The decimal yield is rounded to min(precision plus four, fifteen) so a small yield such as ninety-four basis points still keeps extra digits after the point. Successful responses echo the two inputs, the percent current yield, the decimal current yield, the formula string, and the precision used. Both annual_coupon and market_price are required finite numbers in the same currency units. Annual coupon may be zero to model a zero-coupon bond, which produces a zero percent current yield; a negative coupon returns a typed invalid_input error that names the field, because a cash yield cannot be computed from a negative coupon in this contract. Optional aliases coupon, coupon_payment, annual_coupon_income, and c map to annual_coupon; price, current_price, bond_price, and dirty_price map to market_price so spreadsheets and form clients can reuse familiar column names. Optional face_value (aliases par, par_value, face, nominal, face_amount) must be strictly positive when sent; it is used only to compute the coupon rate versus par and to classify the quote. Failed validation is never billed; only successful API tasks consume prepaid balance at the published base rate of $0.002. Do not send CUSIP codes or live ticker symbols: this engine does not look up quotes, accrued interest, or coupon calendars, and a non-numeric identifier fails as invalid_input.
Where a bond current yield calculator earns its keep
Income investors and fixed-income screeners use a bond current yield calculator to compare coupon bonds after a price move without waiting for a terminal to refresh a current-yield column: if the annual coupon is unchanged and the market price fell, current yield rose, and the inverse-yield years-to-recoup figure shortened. If you need a tax-adjusted comparison between a municipal coupon and a taxable yield, use the separate taxable-equivalent-yield tool; if you need stock cash yield, use the dividend-yield tool. This page answers only annual coupon income over current market price, with stable, reproducible output you can trust in tests. It is not a substitute for yield to maturity when you care about pull-to-par over the remaining life of the bond. Advisors and educators walk clients through why a high headline current yield can be a falling-price artifact rather than a coupon raise, by holding annual_coupon fixed and changing only market_price, then adding face_value to show that a discount quote sits above the coupon rate. Spreadsheet users pin a sixty-on-nine-hundred-fifty result of six point three one five eight percent in continuous integration when they refactor display code, ensuring rounding and aliases keep working. Pair the free interactive page for a single-quote check with the priced endpoint for batch screens.
Integration use cases
Homework and CFA-style drills
Generate reproducible current-yield answers for worksheets: annual coupon over price times one hundred, including discount, premium, and par cases when face_value is supplied.
Watchlist and product automation
Batch the API across many quotes with the same JSON contract as the free widget to seed current-yield columns and CI fixtures.
Technical questions
What is the bond current yield formula?
current_yield_percent = (annual_coupon / market_price) × 100. The tool also returns current_yield_decimal (the same ratio without × 100) and, when the coupon is positive, inverse_yield = market_price / annual_coupon.