「TB(短期国債)やCP(コマーシャルペーパー)のような割引証券を購入したけど、実際の年利回りは何%になるの?」と思ったことはありませんか。割引証券は利息を定期的に受け取るのではなく、額面より低い価格で購入し満期に額面を受け取る仕組みです。そのため普通のYIELD関数では利回りを計算できません。
ExcelのYIELDDISC関数を使えば、割引証券の年利回りを数式1つで算出できます。引数もYIELD関数より少なくシンプルで、PRICEDISCとは逆関数の関係にあります。
この記事では、YIELDDISC関数の構文と引数、実例、PRICEDISCとの双方向チェック、YIELD・YIELDMATとの使い分けまでを丁寧に解説します。
ExcelのYIELDDISC関数とは?
YIELDDISC関数は、割引発行された証券(利息なし・額面割れで購入する証券)の年利回りを返すExcelの財務関数です。「YIELD」+「DISCounted(割引の)」が名前の由来です。
対象となるのは、クーポン(定期利息)がなく額面より低い価格で発行・売買される証券です。代表的なものは次の通りです。
- 短期国債(TB:Treasury Bill)
- CP(コマーシャルペーパー)
- 銀行引受手形(BA:Bankers’ Acceptance)
- 割引債(ゼロクーポン債)の短期商品
普通の利付債(定期利払い)にはYIELD関数、満期一括利払い証券にはYIELDMAT関数を使います。利息なし・割引発行ならYIELDDISC関数の出番です。
計算の仕組み
YIELDDISC関数の内部計算式は次の通りです。
YIELDDISC = (redemption / pr − 1) × (B / DSM)
- redemption: 額面100あたりの償還価額(通常100)
- pr: 額面100あたりの現在価格(市場価格)
- B: 基準日数(basis設定による年の日数)
- DSM: settlement(受渡日)からmaturity(満期日)までの日数
「買った値段から満期に受け取る金額が何%上昇するか」を年率換算したものが戻り値です。
YIELDDISC関数の構文と引数
YIELDDISC関数の基本構文は次の通りです。引数は5つで、最後のbasisのみ省略可能です。
=YIELDDISC(settlement, maturity, pr, redemption, [basis])
YIELD関数にある「rate(クーポン率)」と「frequency(利払頻度)」がない点が特徴です。割引証券には定期的な利払いがないため、これらの引数は不要です。
各引数の意味を表で整理します。
| 引数 | 必須 | 意味 |
|---|---|---|
| settlement | 必須 | 受渡日(証券を購入する日) |
| maturity | 必須 | 満期日(償還日) |
| pr | 必須 | 額面100あたりの現在価格(市場価格) |
| redemption | 必須 | 額面100あたりの償還価額(通常100) |
| basis | 省略可 | 日数計算方法(0〜4) |
settlement と maturity の関係
settlementは実際に代金を払って証券を受け取る日(受渡日)で、約定日とは別物です。maturityはsettlementより後でなければ#NUM!エラーになります。
pr(現在価格)について
prは「額面100あたりの市場価格」を入力します。割引証券は額面より低い価格で取引されるため、通常prは100未満の値になります。
basis引数の選び方
日数の数え方を指定します。実務では次のように選んでください。
| 値 | 名称 | 主な用途 |
|---|---|---|
| 0(既定) | US (NASD) 30/360 | 米国社債のデフォルト |
| 1 | Actual/Actual | 米国財務省証券 |
| 2 | Actual/360 | 米国TB・CD・CP(マネーマーケット商品) |
| 3 | Actual/365 | 日本国内の短期金融商品 |
| 4 | European 30/360 | 欧州社債 |
TBやCPなどの短期金融商品ではbasis=2(Actual/360)が米国の慣行です。日本国内のCP等ではbasis=3(Actual/365)を使うケースが多いですよ。
YIELDDISC関数の基本的な使い方
実際にYIELDDISC関数を使ってみましょう。
例: 90日もの短期国債(TB)の利回りを計算する
- 受渡日: 2026/5/6
- 満期日: 2026/8/4(受渡日から90日後)
- 市場価格: 98.5(額面100あたり)
- 償還価額: 100
- basis = 2(Actual/360)
セルへの入力例は次のとおりです。
=YIELDDISC(DATE(2026,5,6), DATE(2026,8,4), 98.5, 100, 2)
内部計算で確認すると次の通りです。
YIELDDISC = (100 / 98.5 − 1) × (360 / 90)
= 0.015228... × 4
= 0.06091...(約6.09%)
結果は 約6.09% が返ります。98.5円で購入して90日後に100円で償還されるケースの年利回りです。
引数をセル参照にする書き方
実務では各パラメータをセルに入力してセル参照で計算するのが便利です。
| セル | 内容 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/5/6 |
| B3 | 満期日 | 2026/8/4 |
| B4 | 市場価格 | 98.5 |
| B5 | 償還価額 | 100 |
| B6 | basis | 2 |
数式: =YIELDDISC(B2, B3, B4, B5, B6)
市場価格(B4)を変えると利回りが即座に更新されるため、価格と利回りの関係を直感的に確認できますよ。
PRICEDISCとの双方向チェック
YIELDDISC関数とPRICEDISC関数は逆関数の関係にあります。同じ債券条件で相互に検算してみましょう。
PRICEDISC → YIELDDISC の検証
まずPRICEDISC関数で利回り6%から価格を計算します。
=PRICEDISC(DATE(2026,5,6), DATE(2026,8,4), 6%, 100, 2)
→ 98.5
次にYIELDDISC関数でその価格98.5から利回りを逆算します。
=YIELDDISC(DATE(2026,5,6), DATE(2026,8,4), 98.5, 100, 2)
→ 0.06(=6.0%)
入力した利回りと一致しました。PRICEDISCとYIELDDISCが整合していることを確認できますね。
クリーン価格とダーティ価格の扱い
割引証券には定期利払いがないため、経過利子という概念がありません(発行日から満期まで利息を「ためておいて」満期に一括という構造ではなく、単純に安く買って高く返ってくる仕組みです)。そのためYIELDDISCのprは市場の取引価格をそのまま入れてOKです。YIELD関数のようにクリーン/ダーティの区別を意識する必要はありません。
YIELD・YIELDMATとの使い分け
証券の種類によって使う関数が異なります。
| 関数 | 対象証券 | 利息の形態 | 引数数 |
|---|---|---|---|
| YIELD | 定期利払い債券(普通の社債・国債) | クーポンを定期的に支払う | 7個 |
| YIELDDISC | 割引証券(TB・CP・割引手形) | 利息なし、額面割れで発行 | 5個 |
| YIELDMAT | 満期利払い証券(短期社債・利付一括償還債) | 満期に元本+全利息を一括 | 6個 |
関数を選ぶ判断フロー
- 利息(クーポン)はあるか?
- ない(割引発行)→ YIELDDISC関数
- ある → 次の質問へ
- 利息は定期的に支払われるか?
- 半年や年1回など定期的 → YIELD関数
- 満期に一括 → YIELDMAT関数
価格関数との対応関係
各YIELD系関数には対応するPRICE系関数があります。
DISCとYIELDDISCの違い
ExcelにはDISC関数(割引率を求める関数)もありますが、YIELDDISCとは別物です。
| 関数 | 戻り値 | 計算式の違い |
|---|---|---|
| DISC | 割引率(bank discount rate) | = (redemption - pr) / redemption × (B / DSM) |
| YIELDDISC | 年利回り(investment yield) | = (redemption / pr - 1) × (B / DSM) |
DISCは償還価額を基準に割引率を求め、YIELDDISCは投資額(pr)を基準に利回りを求めます。金融実務では投資利回りの観点からYIELDDISCを使うことが多いですよ。
よくあるエラーと対処法
#NUM! エラー
次のいずれかが原因です。
| 原因 | 対処法 |
|---|---|
| settlement ≧ maturity | maturityを後ろの日付に修正 |
| pr ≦ 0 | 市場価格は正の値に(通常は100未満の正の数) |
| redemption ≦ 0 | 通常は100を入れる |
| basis が 0〜4 以外 | 整数0〜4を指定 |
#VALUE! エラー
settlementやmaturityが日付として認識されていないことが原因です。
誤: =YIELDDISC("2026-05-06", "2026-08-04", 98.5, 100, 2)
正: =YIELDDISC(DATE(2026,5,6), DATE(2026,8,4), 98.5, 100, 2)
文字列ではなくDATE関数で日付を指定しましょう。
結果が異常な値になる場合
prに100以上の値を入れると戻り値がマイナスになります。割引証券は必ず額面より低い価格(pr < 100)で取引されるため、prが100以上の場合は入力値を見直してください。
また、basis引数の選択ミスで計算結果がわずかにずれる場合があります。特に米国のTB/CPはbasis=2(Actual/360)が慣行なので、basis=0や1を使っていないか確認しましょう。
まとめ
ExcelのYIELDDISC関数は、割引証券(利息なし・額面割れで発行される証券)の年利回りを市場価格から計算する財務関数です。本記事のポイントを振り返ります。
- 対象: TB・CP・割引手形など「利息なし・額面割れ発行」の短期証券
- 構文:
=YIELDDISC(settlement, maturity, pr, redemption, [basis]) - YIELD・YIELDMATとの違い: 定期利払いなしのため引数にrate・frequencyがない
- basis: TBやCPにはbasis=2(Actual/360)、日本国内短期金融商品はbasis=3が慣行
- PRICEDISCと双方向の関係: PRICEDISC↔YIELDDISCで価格⇄利回りを相互検算できる
- クリーン/ダーティ区別なし: 割引証券は経過利子がないため、prには市場価格をそのまま入れる
割引証券の利回りが求まったら、同シリーズのYIELD関数・PRICEMAT関数・PRICEDISC関数もあわせて確認して、証券種別ごとの関数使い分けを体系的に身につけてみてくださいね。
