ExcelのYIELDDISC関数の使い方|割引証券(TB・CP)の利回りを計算する

スポンサーリンク

「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米国社債のデフォルト
1Actual/Actual米国財務省証券
2Actual/360米国TB・CD・CP(マネーマーケット商品)
3Actual/365日本国内の短期金融商品
4European 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
B6basis2

数式: =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個

関数を選ぶ判断フロー

  1. 利息(クーポン)はあるか?
  • ない(割引発行)→ YIELDDISC関数
  • ある → 次の質問へ
  1. 利息は定期的に支払われるか?
  • 半年や年1回など定期的 → YIELD関数
  • 満期に一括 → YIELDMAT関数

価格関数との対応関係

各YIELD系関数には対応するPRICE系関数があります。

利回り関数対応する価格関数関係
YIELDPRICE双方向の逆関数
YIELDDISCPRICEDISC双方向の逆関数
YIELDMATPRICEMAT双方向の逆関数

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 ≧ maturitymaturityを後ろの日付に修正
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関数もあわせて確認して、証券種別ごとの関数使い分けを体系的に身につけてみてくださいね。

タイトルとURLをコピーしました