繰上償還利回り計算機|コーラブル債の収益率
この計算機は、発行体が次回の繰上償還日にコーラブル債を償還した場合に得られる年間利回りを推定します。現在価格、契約上の償還価格、年間クーポン率、償還日までの年数をご入力ください。額面金額と年間支払回数も設定できます。名目年利回り、実効年利回り、期間利率、クーポン支払額、残存期間数を表示するため、計算の前提を明確にご確認いただけます。
無料で実行
繰上償還利回りが示すもの
繰上償還利回りとは、発行体が指定日に償還権を行使すると仮定した場合に、コーラブル債の予想キャッシュフローの現在価値を市場価格と等しくする割引率です。キャッシュフローには、その日までのすべてのクーポンと償還時に支払われる価格が含まれます。額面を上回る価格で取引される債券について、金利低下後に発行体が高コストの債務を借り換える可能性を検討する際に特に役立ちます。この場合、満期利回りは最終満期までクーポンが続くと仮定するため、実現し得る収益を過大に示すことがあります。本計算機は、選択した支払頻度に基づく名目年利回りと、複利を反映した実効年利回りを表示します。ただし、償還を予測するものではありません。投資判断の前に、満期利回り、最低利回り、信用リスク、実際の契約条項と併せてご検討ください。
整合した債券条件の入力方法
現在価格、償還価格、額面金額には同じ通貨単位をご使用ください。額面100当たり98で気配表示される債券では、価格980、額面1,000として償還価格も同じ比率に合わせるか、価格98、額面100として入力できます。クーポン率は年率の百分率でご入力ください。5パーセントなら5であり、0.05ではありません。年間クーポンは選択した年間支払回数で分割されます。償還までの年数はクーポン期間の整数倍である必要があります。これは、評価日がクーポン支払日と一致すると仮定し、経過利息や端数期間の割引を計算しないためです。4年間で年2回払いなら8期間です。この前提に合うクリーン価格をご利用ください。受渡日がクーポン日の間にある場合は、経過利息、日数計算規則、正確な支払日程に対応した別の債券計算機が必要です。
計算方法と結果の読み方
複数のクーポンがある場合、繰上償還利回りを一度で求める一般的な代数式はないため、標準的な現在価値方程式を数値的に解きます。割引後のクーポンと償還金額の合計が入力価格に等しくなる期間利率を探索し、その値を名目年率と実効年率へ変換します。探索は決定論的かつ範囲内で行われ、安定した丸め結果が得られるまで十分に反復されます。価格が未割引の将来キャッシュフロー総額より低ければ通常は正の利回りになりますが、高いプレミアムで購入すると、償還金とクーポンで購入額を回収できず負になる場合があります。結果は期日どおりの支払いを前提とし、税金、取引費用、再投資の不確実性、債務不履行、後続の償還日、市場価格の変動を含みません。複数の償還日を個別に計算し、関連する最低の収益率を重要なリスク指標としてご確認ください。
活用例
プレミアム付きコーラブル債の評価
額面超過分を早期償還までのクーポンで補えるかご確認いただけます。
複数債券の比較
一貫した価格と支払条件で、各債券の次回償還時の収益を比較できます。
債券ポートフォリオの抽出
償還条件がそろった保有銘柄について、再現可能な計算を自動化できます。
よくある質問
計算料金はいくらですか?
このページのブラウザー計算は無料で、APIリクエスト1件につき$0.002です。
満期利回りと同じですか?
異なります。繰上償還利回りは選択した償還日の支払いを、満期利回りは最終満期までの支払いを前提とします。
利回りが負になることはありますか?
あります。高い購入プレミアムが、償還前のクーポンと受取償還金額を上回る場合です。
5パーセントのクーポンは5と0.05のどちらですか?
5をご入力ください。クーポン率は額面に対する百分率で指定します。
経過利息は含まれますか?
含まれません。クーポン支払日の評価と、残存期間が整数であることを前提とします。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
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}'const res = await fetch("https://api.kit.forhosting.com/finance/bond-yield-to-call", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"price": 980,
"call_price": 1020,
"coupon_rate": 5,
"years_to_call": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/finance/bond-yield-to-call",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"price": 980,
"call_price": 1020,
"coupon_rate": 5,
"years_to_call": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/finance/bond-yield-to-call", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"price":980,"call_price":1020,"coupon_rate":5,"years_to_call":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"price":980,"call_price":1020,"coupon_rate":5,"years_to_call":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/finance/bond-yield-to-call", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"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"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |