「この社債、金利が1%上がったら価格はどれくらい下がるんだろう?」と聞かれてサッと答えられると、経理や財務の現場で頼りにされますよね。債券の金利リスクを測る基本指標は「デュレーション」で、スプレッドシートのDURATION関数なら、マコーレー・デュレーション(キャッシュフローの加重平均回収期間)を一発で計算できますよ。
この記事では、スプレッドシートのDURATION関数の使い方を、構文から実務の活用例・MDURATION関数との使い分け・金利変動シミュレーションまで、同僚に教える感覚で解説します。名前が似ているPDURATION関数との違いも整理しているので、社債・国債のリスク管理にぜひ活用してくださいね。
スプレッドシートのDURATION関数とは?
スプレッドシートのDURATION関数は、定期的に利息を支払う利付債について、マコーレー・デュレーション(Macaulay Duration)を年単位で計算する財務関数です。
マコーレー・デュレーションとは、債券の各キャッシュフロー(クーポンや満期償還金)を現在価値で割り引いて加重平均した「元本回収の平均年数」のことです。ざっくり言えば、「投資資金が平均的に何年で戻ってくるか」を示す指標ですよ。
このデュレーションは、債券の金利リスクを測る基本指標として広く使われています。デュレーションが長いほど金利変動の影響を受けやすく、短いほど安定する、という性質があるんですよ。社債・利付国債のポートフォリオ管理ではまず押さえておきたい関数です。
DURATION関数の構文と引数
DURATION関数の構文は次のとおりです。
=DURATION(受渡日, 満期日, 利率, 利回り, 頻度, [日数計算基準])
英語表記だと =DURATION(settlement, maturity, rate, yield, frequency, [day_count_convention]) となります。
| 引数 | 省略 | 説明 |
|---|---|---|
| 受渡日(settlement) | 必須 | 債券の購入日。DATE関数での指定を推奨 |
| 満期日(maturity) | 必須 | 債券の満期日。受渡日より後の日付 |
| 利率(rate) | 必須 | 債券の年利クーポン率(例: 0.03 = 年3%) |
| 利回り(yield) | 必須 | 投資家の年利回り(市場利回り、小数で指定) |
| 頻度(frequency) | 必須 | 年あたりの利払い回数(1, 2, 4のいずれか) |
| 日数計算基準(basis) | 省略可 | 1年の日数計算方式(下表参照、省略時は0) |
頻度(frequency)は「1=年1回払い」「2=半年ごと」「4=四半期ごと」の3種類のみです。上記以外の値を指定すると#NUM!エラーになりますよ。
日数計算基準(basis)の設定値
| 値 | 1年の日数計算 |
|---|---|
| 0(省略時) | 30日/360日(米国NASD方式) |
| 1 | 実際の日数/実際の日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日 |
| 4 | 30日/360日(ヨーロッパ方式) |
日本の国債や社債なら basis=1(実際/実際)、米国の短期金融商品なら basis=2 が一般的です。迷ったら対象債券の目論見書で使われている方式を確認するのが安全ですよ。
DURATION関数の基本的な使い方
半年払い社債のデュレーションを求める
額面100・年利クーポン3%・半年ごと利払い・期間5年の社債を、市場利回り4%で評価するケースを計算してみましょう。
| セル | 項目 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/4/21 |
| B3 | 満期日 | 2031/4/21 |
| B4 | クーポン利率 | 0.03 |
| B5 | 利回り | 0.04 |
| B6 | 頻度(半年) | 2 |
=DURATION(B2, B3, B4, B5, B6, 1)
結果は 約4.58年 になります。満期までちょうど5年の社債ですが、デュレーションは4.58年と満期より短くなりますよ。これは、満期前に受け取るクーポンが平均回収期間を短縮するためです。
直接日付を入れる場合はDATE関数を使います。
=DURATION(DATE(2026,4,21), DATE(2031,4,21), 0.03, 0.04, 2, 1)
年1回払い利付国債のデュレーションを求める
額面100・年利1.2%・年1回利払い・期間10年の利付国債を、市場利回り1.5%で評価するケースです。
=DURATION(DATE(2026,4,21), DATE(2036,4,21), 0.012, 0.015, 1, 1)
結果は 約9.46年 になります。満期10年に対して約9.46年という値は、低クーポン債ならではの特徴ですよ。クーポンが小さいと、満期での元本償還が回収全体の大部分を占めるため、デュレーションが満期に近くなります。
利回り変化でデュレーションがどう動くか
同じ5年物の社債でも、市場利回りを変えるとデュレーションは少し変化します。利回りだけを0.03・0.04・0.05と変えて比較してみましょう。
| 利回り | DURATION関数の結果 | 傾向 |
|---|---|---|
| 3%(クーポンと同じ) | 約4.68年 | 最も長い |
| 4% | 約4.58年 | 中間 |
| 5% | 約4.48年 | 最も短い |
利回りが上がるとデュレーションは少し短くなります。割引率が上がることで、遠い将来のキャッシュフローの現在価値ウェイトが下がるためですよ。
マコーレー・デュレーションの意味をつかむ
「加重平均回収期間」として読む
DURATION関数が返す値は「マコーレー・デュレーション」と呼ばれ、各キャッシュフローの受取時期を現在価値で重み付けして平均した年数です。
たとえば5年物・クーポン3%・半年払い・利回り4%の場合、0.5年後から5年後まで合計10回のキャッシュフローがあります。それぞれの現在価値を重みとして、受取時点(0.5年、1年、1.5年……5年)を加重平均した値が、約4.58年というデュレーションです。
直感的には「投資資金が平均的に戻ってくるまでの年数」と覚えてください。満期より短くなるのは、満期前に受け取るクーポンが平均を前倒しするからですよ。
満期と金利リスクの関係
デュレーションには次のような基本的性質があります。
| 条件 | デュレーションへの影響 |
|---|---|
| 満期までの期間が長い | 長くなる |
| クーポンが低い(ゼロクーポンに近い) | 長くなる(満期に近づく) |
| 利回りが高い | 短くなる |
| 利払い頻度が多い(半年→四半期) | わずかに短くなる |
デュレーションが長い債券ほど金利リスクが大きいのが鉄則です。10年物の低クーポン債は、5年物の高クーポン債よりデュレーションが長くなり、金利変動時の価格変動も大きくなりますよ。ポートフォリオ管理では、この性質を踏まえてデュレーションを調整していきます。
MDURATION(修正デュレーション)との使い分け
2つの関数の違いを数式で整理
DURATION関数とよく似た関数に、MDURATION(モディファイド・デュレーション)関数があります。2つの違いを整理しておきましょう。
| 観点 | DURATION(マコーレー) | MDURATION(修正) |
|---|---|---|
| 返す値 | 加重平均回収期間 | 金利感応度(価格変動率の近似) |
| 単位 | 年 | %/金利1単位 |
| 計算式 | 各CFの現在価値加重平均 | マコーレー ÷ (1 + 利回り/頻度) |
| 主な用途 | キャッシュフロー構造の把握 | 金利変動による価格変動の見積もり |
| 典型値 | 満期より少し短い値 | マコーレーより1〜2%ほど小さい値 |
MDURATION関数の構文はDURATION関数と完全に同じです。引数も6つ、同じ順序で指定します。
=MDURATION(受渡日, 満期日, 利率, 利回り, 頻度, [日数計算基準])
先ほどの5年物社債の例で両方計算してみましょう。
=DURATION(DATE(2026,4,21), DATE(2031,4,21), 0.03, 0.04, 2, 1)
→ 約4.58年(マコーレー)
=MDURATION(DATE(2026,4,21), DATE(2031,4,21), 0.03, 0.04, 2, 1)
→ 約4.49年(修正)
修正デュレーションは、マコーレーを (1 + 利回り/頻度) で割った値になります。今回は 4.58 ÷ (1 + 0.04/2) = 4.58 / 1.02 ≒ 4.49 で電卓検算と一致しますよ。
金利リスク分析ではどちらを使うか
実務での使い分けは次のとおりです。
- DURATION(マコーレー): 債券のキャッシュフロー構造を把握したいとき、「何年で回収できる債券か」を見たいとき
- MDURATION(修正): 金利が動いたときの価格変動を見積もりたいとき、ポートフォリオの金利感応度を測るとき
ざっくり「性質の理解にDURATION、シミュレーションにMDURATION」と覚えておくとスムーズですよ。なお、マコーレーと修正は同じ債券なら互換性のある値なので、片方から計算で出すこともできます。
金利変動による価格変動を概算する
MDURATION関数を使うと、金利が動いたときに債券価格がどれくらい変化するかを概算できます。基本式は次のとおりです。
価格変動率 ≒ -MDURATION × 金利変化幅
先ほどの5年物社債(修正デュレーション4.49)で、金利が0.5%・1%上昇したらどうなるかを見てみましょう。
| 金利変化 | 価格変動率の概算 | 額面100万円の場合の価格変動 |
|---|---|---|
| +0.5% | -2.25% | 約-22,500円 |
| +1.0% | -4.49% | 約-44,900円 |
| -0.5% | +2.25% | 約+22,500円 |
| -1.0% | +4.49% | 約+44,900円 |
金利1%の上昇で約4.5%の価格下落という概算が、MDURATIONから一瞬で出せるわけですよ。PRICE関数で正確な価格を計算する前のラフな目安として便利です。
この概算は「金利変化幅が小さい範囲」で成り立ちます。金利変化が大きいと誤差が増えるので、2%を超える変化の場合はPRICE関数で実際の価格を計算するほうが正確ですよ。
PDURATION関数との違い(名称の混同注意)
「DURATION」と名前が似た関数に、PDURATION関数があります。この2つはまったく別の関数なので、検索や入力のときは名前を正確に見分けてくださいね。
| 関数 | 用途 | 引数 |
|---|---|---|
| DURATION関数 | 債券のマコーレー・デュレーション(年数) | 受渡日、満期日、利率、利回り、頻度、[basis] |
| PDURATION関数 | 目標金額に到達するまでの投資期間 | 利率、現在価値、将来価値 |
名前の「P」は Period(期間)の意味で、PDURATION は「目標到達に必要な期間数」を複利計算で求める関数ですよ。「500万円を年3%で運用して1000万円にするまでに何年かかる?」のような試算に使います。
一方、DURATIONは債券の金利リスク分析専用の関数で、引数も計算内容もまったく違います。検索で「スプレッドシート DURATION 使い方」と調べたときに、PDURATIONの解説が混ざっているサイトもあるので、引数の数(DURATION=6個、PDURATION=3個)で見分けてくださいね。
YIELD・PRICE関数との関係
DURATION関数は、同じ財務関数シリーズのYIELD関数やPRICE関数と組み合わせて使う場面が多い関数です。それぞれの位置づけを整理しておきましょう。
| 関数 | 入力 | 出力 | 役割 |
|---|---|---|---|
| YIELD関数 | 現在価格 | 年利回り | 買い値から利回りを逆算 |
| PRICE関数 | 希望利回り | 理論価格 | 目標利回りから適正価格を計算 |
| DURATION関数 | 利回り | 加重平均回収期間 | リスク測定の基礎 |
| MDURATION関数 | 利回り | 金利感応度 | 価格変動シミュレーション |
実務でよくある流れは、「YIELD関数で現在の満期利回りを計算 → その利回りをDURATION/MDURATIONに入れて金利リスクを評価 → 金利シナリオごとの価格変動をPRICE関数で検証」という組み合わせですよ。
なお、DURATION関数は定期利付債専用です。割引債(ゼロクーポン債)やYIELDMAT関数で扱う満期一括払い債には使えません。割引債はデュレーション=満期までの年数と定義されるので、そもそもDURATION関数を使う必要がないんですよ。
よくあるエラーと対処法
#NUM!エラー
以下のケースで発生します。
| 発生条件 | 対処法 |
|---|---|
| 受渡日 ≥ 満期日 | 受渡日が満期日より前になるよう修正する |
| 頻度が 1, 2, 4 以外 | 1、2、4のいずれかに修正する |
| basis が 0〜4 以外 | 0、1、2、3、4のいずれかに修正する |
| 利率が負の値 | 0以上の利率を指定する |
| 利回りが負の値 | 0以上の利回りを指定する |
よくあるのが頻度の指定ミスです。月1回払いを想定して「12」を入れるとエラーになりますよ。DURATION関数は年1回・半年・四半期の3パターンしか対応しないので、月払いの場合は近い頻度で代用するか別の計算方法を検討してください。
#VALUE!エラー
引数に数値・日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,21) のようにDATE関数を使うと確実ですよ。セル参照で日付を渡す場合は、参照先のセルが日付書式になっているかも確認してください。
#NAME?エラー
関数名のスペルミスが原因です。「DURATON」「DUARATION」のような打ち間違いが典型例ですよ。入力中に候補から選ぶようにすると防げます。PDURATION関数と混同して「PDURATION」と打ってしまうケースもよくあるので、引数の数(6個 or 3個)で意図した関数か確認してくださいね。
結果が満期より長くなる
通常はあり得ません。DURATION関数は定義上、満期までの年数より短い値を返しますよ。結果が満期より長く出る場合は、受渡日と満期日が逆転しているなど、入力値を見直してみてください。
Excelとの互換性
DURATION関数はExcelとGoogleスプレッドシートで同じ計算結果を返します。Excelファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作しますよ。
スプレッドシートでは引数名が日本語(「受渡日」「満期日」「利率」「利回り」「頻度」「日数計算基準」)で表示されます。Excelの英語表記(settlement、maturity、rate、yield、frequency、basis)と見た目は違いますが、動作は完全に同じです。
MDURATION関数も同様にExcel・スプレッドシート間で互換性があります。両方の環境で同じ分析ファイルを使えるので、チーム内で分析基盤を統一しやすいですよ。
まとめ
スプレッドシートのDURATION関数は、定期利付債のマコーレー・デュレーション(加重平均回収期間)を計算する財務関数です。ポイントをまとめておきます。
- 引数は受渡日・満期日・利率・利回り・頻度の5つが必須。日数計算基準(basis)は省略可
- 頻度(frequency)は 1, 2, 4 のいずれか(年1回/半年/四半期)のみ
- 返す値は「元本回収の加重平均年数」。満期より少し短い値になる
- MDURATION関数は金利感応度を返す。価格変動率 ≒ -MDURATION × 金利変化で概算できる
- 満期が長い・クーポンが低いほどデュレーションは長く、金利リスクが大きくなる
- 日本の債券なら basis=1(実際/実際) が目安
- PDURATION関数とは別物。債券デュレーションなら DURATION、投資期間の計算ならPDURATION関数
- 定期利付債専用。割引債やYIELDMAT関数対象の満期一括払い債では使わない
金利動向が注目されている局面では、デュレーションを使った金利リスク分析の重要性が高まります。DURATION関数とMDURATION関数をセットで使いこなして、保有債券の価格変動リスクをサッと把握できるようになっておくとよいですよ。YIELD関数やPRICE関数・DISC関数とあわせて、財務関数シリーズを一通りチェックしておくと、債券分析の基礎が整いますね。
