ForHosting KIT · Developer Utilities

Yield to call calculator

This yield to call calculator estimates the annual return earned when an issuer redeems a callable bond on its next call date.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

Enter the bond's current price, contractual call price, annual coupon rate, and time remaining until the call. You can also set face value and payment frequency. The result includes the nominal annual yield to call, effective annual yield, periodic rate, coupon payment, and number of remaining coupon periods, making the assumptions behind the result visible rather than hiding them in a single percentage.

What yield to call measures

Yield to call is the discount rate that makes the present value of a callable bond's expected cash flows equal its current market price, assuming the issuer exercises the call on the stated date. Those cash flows consist of every coupon payment through that date plus the call price paid at redemption. The measure is especially useful when a bond trades above face value and the issuer may refinance expensive debt after interest rates fall. In that situation, yield to maturity can overstate the return an investor is likely to realize because it assumes coupons continue until final maturity. This calculator reports a nominal annual yield based on the selected payment frequency, along with an effective annual yield that reflects compounding. Yield to call is a scenario measure, not a forecast that the call will definitely occur. Compare it with yield to maturity, yield to worst, credit risk, and the bond's actual call provisions before making an investment decision.

Enter consistent bond terms

Use currency amounts on the same basis for current price, call price, and face value. For example, if a bond is quoted at 98 per 100 of face value, either enter 980 as price with 1,000 as face value and scale the call price accordingly, or enter 98 with 100 as face value. Enter the coupon rate as an annual percentage, such as 5 for a five percent coupon, rather than 0.05. The calculator divides the annual coupon across the chosen number of payments per year. Years to call must correspond to a whole number of coupon periods because the model assumes the valuation date falls on a coupon date and does not calculate accrued interest or fractional-period discounting. A four-year call with semiannual coupons therefore has eight periods. Current price should be the clean price on that same coupon-date assumption. If settlement occurs between coupon dates, use a bond calculator that explicitly handles accrued interest, day-count conventions, and the exact settlement schedule.

How the calculation is solved and interpreted

There is no general one-step algebraic formula for yield to call when a bond has several coupon payments, so the calculator solves the standard present-value equation numerically. It searches for the periodic discount rate at which the discounted coupons and call payment equal the supplied price, then converts that periodic rate into nominal and effective annual percentages. The search is deterministic, bounded, and repeated enough to provide stable rounded output. A bond priced below the value of its remaining undiscounted cash flows will generally produce a positive yield, while a sufficiently high premium can produce a negative yield when the call price and coupons do not recover the purchase price. The result assumes every payment arrives on time and coupons can effectively be evaluated at the calculated rate. It excludes taxes, transaction costs, reinvestment uncertainty, default risk, embedded call schedules after the selected date, and market-price changes before redemption. Use multiple call dates separately when reviewing a bond with several callable dates, and treat the lowest relevant return as an important risk indicator.

Evaluate a premium callable bond

Check whether coupons earned before an early redemption compensate for paying more than face value.

Compare competing bonds

Calculate returns under each bond's next call scenario using consistent price and payment assumptions.

Screen a fixed-income portfolio

Automate a reproducible yield-to-call calculation for positions with complete call terms.

What does the calculation cost?

It is free in the browser on this page and costs $0.002 per API request.

Is yield to call the same as yield to maturity?

No. Yield to call assumes redemption on the selected call date at the call price; yield to maturity assumes payment through final maturity.

Can yield to call be negative?

Yes. A large purchase premium can exceed the coupons and redemption amount received before the call date.

Should I enter 5 or 0.05 for a five percent coupon?

Enter 5. Coupon rate is expressed as a percentage of face value.

Does the calculator include accrued interest?

No. It assumes valuation on a coupon date and requires a whole number of remaining coupon periods.

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.

POSThttps://api.kit.forhosting.com/finance/bond-yield-to-call

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.

curl -X POST https://api.kit.forhosting.com/finance/bond-yield-to-call \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"price":980,"call_price":1020,"coupon_rate":5,"years_to_call":4}'
{
  "price": 980,
  "call_price": 1020,
  "coupon_rate": 5,
  "years_to_call": 4
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "finance.bond_yield_to_call",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →