「この債券、今いくらで売られているか分かったけど、利回りは何%になるの?」というシーンはよくありますよね。市場価格から利回りを手計算するのは時間がかかり、ミスも起きやすいです。
ExcelのYIELD関数を使えば、定期的に利息(クーポン)を支払う債券の満期利回り(YTM:Yield to Maturity)を数式1つで求められます。PRICE関数と逆の関係にあるため、「価格→利回り」の逆算に最も適した財務関数です。
この記事では、YIELD関数の構文と引数の意味、半年利払い社債の実例、PRICE関数との双方向チェック、そしてYIELDDISC・YIELDMATとの使い分けまでを実務目線で解説します。
ExcelのYIELD関数とは?
YIELD関数は、定期的に利息を支払う証券(利付債)の年利回り(満期利回り、YTM)を返すExcelの財務関数です。
たとえば「残存5年・年クーポン4%・半年利払い・現在の市場価格102.275」という社債を入力すると、利回りが3.5%として返ってきます。逆にPRICE関数へ利回り3.5%を入力すると価格102.275が求まります。つまりYIELD関数とPRICE関数はコインの裏表の関係なのです。
YIELD関数の特徴は次の3つです。
- 市場価格(クリーン価格)を入力すると年利回りを返す
- 半年利払い・年1利払い・四半期利払いに対応(frequency引数)
- 戻り値は年率(半年利払いでも年率に換算済み)
YIELD関数の構文と引数
YIELD関数の基本構文は次の通りです。引数は7つで、最後のbasisだけ省略可能です。
=YIELD(settlement, maturity, rate, pr, redemption, frequency, [basis])
各引数の意味と入れ方を表で整理しました。
| 引数 | 必須 | 内容 | 入れ方の例 |
|---|---|---|---|
| settlement | 必須 | 受渡日(決済日) | DATE(2026,5,6) |
| maturity | 必須 | 満期日(償還日) | DATE(2031,5,6) |
| rate | 必須 | 年クーポン率 | 4% または 0.04 |
| pr | 必須 | 額面100あたりの現在価格(クリーン価格) | 102.275 |
| redemption | 必須 | 額面100あたりの償還価額 | 通常は 100 |
| frequency | 必須 | 年間利払い回数 | 1/2/4 のみ |
| basis | 任意 | 日数計算基準 | 0〜4(既定は0) |
rate と pr の違い
- rate(クーポン率): 証券に印字された年利率。発行体が支払う利息の計算に使う
- pr(現在価格): 市場で今いくらで取引されているか(額面100あたりのクリーン価格)
rateは固定(発行時に決まる)で、prは市場の需給で変動します。YIELDは「この価格prを実現する利回りはいくつか?」を反復計算で求める関数です。
settlement と maturity の関係
settlementは「実際にお金と証券を交換する日(受渡日)」で、約定日とは別物です。maturityはsettlementより後でなければ#NUM!エラーになります。日付は必ずDATE関数で指定しましょう。
frequency引数(年間利払い回数)
年間の利払い回数で、1(年1回)/2(半年に1回)/4(四半期に1回)の3択のみです。月次(12)や週次を入れると#NUM!エラーになります。
basis引数(日数計算基準)の早見表
basis引数は日数の数え方を指定します。実務では次のように選んでください。
| 値 | 名称 | 主な用途 |
|---|---|---|
| 0(既定) | US (NASD) 30/360 | 米国社債のデフォルト |
| 1 | Actual/Actual | 米国財務省証券・日本国債(5年・10年) |
| 2 | Actual/360 | マネーマーケット・CD・CP |
| 3 | Actual/365 | 一部ユーロ債・英ポンド建て |
| 4 | European 30/360 | 欧州社債(ICMA方式) |
「米国社債=0、米国債/日本国債=1、欧州社債=4」を覚えておくと実務で迷いません。
YIELD関数の基本的な使い方
実際にYIELD関数を使ってみましょう。次のような半年利払い社債を想定します。
例: 残存5年・半年利払い社債の利回りを求める
- 受渡日: 2026/5/6
- 満期日: 2031/5/6(残存5年)
- 年クーポン率: 4%
- 市場価格(クリーン価格): 102.275(額面100あたり)
- 償還価額: 100
- 利払頻度: 半年に1回(frequency=2)
- 日数計算基準: 30/360(basis=0)
セルへの入力例は次のとおりです。
=YIELD(DATE(2026,5,6), DATE(2031,5,6), 4%, 102.275, 100, 2, 0)
結果は 0.035(=3.5%) が返ります。価格がパー(100)より高いため、クーポン率4%より低い利回り3.5%になっていますね。
セルレイアウトと数式の組み立て
実務では各パラメータをセルに入力し、YIELD関数でセル参照する形が便利です。
| セル | 内容 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/5/6 |
| B3 | 満期日 | 2031/5/6 |
| B4 | 年クーポン率 | 4% |
| B5 | 市場価格(クリーン) | 102.275 |
| B6 | 償還価額 | 100 |
| B7 | 利払頻度 | 2 |
| B8 | basis | 0 |
数式: =YIELD(B2, B3, B4, B5, B6, B7, B8)
市場価格(B5)だけを変えると利回りが即座に更新されるため、複数の取引候補を比較する感度分析が楽になりますよ。
パー価格のときの検算
「クリーン価格=100(パー)のとき、利回りはクーポン率に等しい」という債券の基本原則をYIELD関数で確認してみましょう。
=YIELD(DATE(2026,5,6), DATE(2031,5,6), 4%, 100, 100, 2, 0)
→ 0.04(=4.0%)
クーポン率と利回りが一致しています。これが債券価格計算の基本です。
YIELD関数の実務活用パターン
PRICE関数との双方向チェック
YIELD関数とPRICE関数は逆関数の関係にあるため、互いに検算できます。
PRICE → YIELD の流れ
まずPRICE関数で利回り3.5%から価格を計算します。
=PRICE(DATE(2026,5,6), DATE(2031,5,6), 4%, 3.5%, 100, 2, 0)
→ 102.275
次にYIELD関数でその価格から利回りを逆算します。
=YIELD(DATE(2026,5,6), DATE(2031,5,6), 4%, 102.275, 100, 2, 0)
→ 0.035(=3.5%)
最初に入力した3.5%と一致しますね。この双方向チェックでPRICEとYIELDの計算ロジックが整合していることを確認できます。
クリーン価格とダーティ価格の扱い
YIELD関数の引数prに入れるのはクリーン価格(経過利子を含まない価格)です。市場で公表されている価格はクリーン価格ですが、実際の取引では経過利子を含むダーティ価格が支払いの基準になります。
| 種別 | 内容 |
|---|---|
| クリーン価格 | YIELD関数のpr引数に入れる価格 |
| 経過利子 | ACCRINT関数で計算(前回利払日〜受渡日) |
| ダーティ価格 | クリーン価格 + 経過利子(実際の支払額) |
YIELD関数のprにダーティ価格を誤って入力すると、利回りが過小評価されます。特に利払い日直前に購入する場合は経過利子が大きくなるため注意してください。
basis引数の実務的な選び方
計算結果はbasis引数の選択によってわずかに変わります。業界慣行に合わせるのが鉄則です。
- 日本国債(5年・10年): basis=1(Actual/Actual)
- 米国社債: basis=0(US 30/360)
- 米国財務省証券: basis=1
- 欧州社債(ユーロ債): basis=4(European 30/360)
- CD・CP等の短期金融商品: basis=2(Actual/360)
社内計算と市場の公表値を照合するときは、basisが一致しているかを最初に確認しましょう。
よくあるエラーと対処法
#NUM! エラー
最も多いエラーです。次の原因を確認してください。
| 原因 | 対処法 |
|---|---|
| settlement ≧ maturity | maturityを後ろの日付に修正 |
| rate < 0 | クーポン率は0以上に |
| pr ≦ 0 | 市場価格は正の値に |
| redemption ≦ 0 | 通常は100を入れる |
| frequency が 1, 2, 4 以外 | 月次(12)等は不可 |
| basis が 0〜4 以外 | 整数0〜4を指定 |
#VALUE! エラー
settlementやmaturityが日付として認識されていないことが原因です。文字列ではなくDATE関数で生成しましょう。
誤: =YIELD("2026-05-06", "2031-05-06", 4%, 102.275, 100, 2, 0)
正: =YIELD(DATE(2026,5,6), DATE(2031,5,6), 4%, 102.275, 100, 2, 0)
結果が想定と違うとき
エラーは出ないが値が想定と異なる場合は、次を確認してください。
- frequencyの取り違え(年1回のつもりで2を入れている等)
- basisの選択が業界慣行と違う(米国債なのにbasis=0を使う等)
- prにダーティ価格を入れてしまっている(クリーン価格を入れること)
- rateやprのスケール(%入力か小数入力か)
YIELDDISC・YIELDMATとの違い・使い分け
証券の種類によって使う関数が異なります。比較早見表で整理しましょう。
| 関数 | 対象証券 | 利息の形態 | 主な引数の違い |
|---|---|---|---|
| YIELD | 定期利払い債券(普通の社債・国債) | クーポンを定期的に支払う | pr(現在価格)とfrequencyが必要 |
| YIELDDISC | 割引証券(TB・CP・割引短期国債) | 利息なし、額面割れで発行 | discount(割引率)が必要、rateなし |
| YIELDMAT | 満期利払い証券(短期社債・利付一括償還債) | 満期に元本+全利息を一括支払い | issue(発行日)とrate,prが必要 |
関数を選ぶ判断フロー
- 利息はあるか?
- ない(割引発行)→ YIELDDISC関数
- ある → 次の質問へ
- 利息は定期的に支払われるか?
- 半年や年1回など定期的 → YIELD関数
- 満期に一括 → YIELDMAT関数
価格関数との対応関係
各YIELD関数には対応するPRICE系関数があります。
まとめ
ExcelのYIELD関数は、定期利払い債券の市場価格から年利回り(YTM)を1関数で求める財務関数です。本記事のポイントを振り返ります。
- 用途: 定期利払い債券(社債・国債)の満期利回りを市場価格から逆算
- 構文:
=YIELD(settlement, maturity, rate, pr, redemption, frequency, [basis]) - pr引数: 必ずクリーン価格(経過利子を含まない価格)を入れること
- frequencyは1/2/4のみ: 月次等は不可
- basis: 米国社債=0、米国債/日本国債=1、欧州社債=4 が業界慣行
- PRICE関数と双方向の関係: PRICE↔YIELDで相互検算できる
- 使い分け: 割引証券→YIELDDISC、満期一括利払い→YIELDMAT
利回りが求まったら、DURATION関数やMDURATION関数と組み合わせてポートフォリオの金利感応度分析へ展開できますよ。PRICE関数・DURATION関数・MDURATION関数のシリーズ記事もあわせて読んで、債券評価の4関数を体系的にマスターしてみてください。
