ExcelのDURATION関数は、債券のマコーレー・デュレーションを計算する財務関数です。マコーレー・デュレーションは、債券のキャッシュフロー(利息と元本)を現在価値で加重平均した期間を指します。簡単に言えば「投資資金の平均回収期間」を表すリスク指標です。
単なる残存年数ではなく、金利が変動したときの価格変動を予測する指標として、運用や財務の現場で日常的に使われていますよ。
ただ、業務で初めて触れる方からは「年単位で出るのに年数ではないってどういうこと?」という疑問をよく聞きます。MDURATION(修正デュレーション)との違いも分かりにくいですよね。この記事では構文と使い方の基本から、修正デュレーションとの違い、金利感応度の予測まで、実務で活用できる形で詳しく解説していきます。
ExcelのDURATION関数とは?マコーレー・デュレーションの考え方
ExcelのDURATION関数は、マコーレー・デュレーションを計算する関数です。
マコーレー・デュレーション(Macaulay Duration)は、1938年にアメリカの経済学者フレデリック・マコーレーが提唱した概念です。債券の各キャッシュフローを現在価値で重みづけして加重平均した期間を指します。単位は「年」ですが、これは単純な残存年数とは異なる意味を持ちますよ。
たとえば残存5年のクーポン債の場合、満期前にも利息(クーポン)を受け取れますよね。途中で資金が戻ってくる分、実質的な回収期間は5年より短くなります。この「現金の重みで均した平均的な回収期間」がマコーレー・デュレーションです。
| 債券タイプ | マコーレー・デュレーション |
|---|---|
| ゼロクーポン債(残存5年) | 5.0年(残存年数と完全一致) |
| クーポン付き債券(残存5年) | 5年より短い |
ゼロクーポン債は途中の利息支払いがなく、満期時に元本がまとめて戻るだけです。そのためデュレーション=残存年数と一致します。一方、クーポン債は途中で利息が入る分、加重平均期間は短くなりますよ。
この値が大きいほど、金利変動による価格変動が大きくなります。つまりデュレーションは「金利リスクの大きさ」を測る指標としても機能するわけです。
DURATION関数の構文と引数
DURATION関数の構文は次の通りです。
=DURATION(settlement, maturity, coupon, yld, frequency, [basis])
各引数の意味を表にまとめました。
| 引数 | 必須 | 内容 |
|---|---|---|
| settlement | 必須 | 受渡日(債券を購入する日) |
| maturity | 必須 | 満期日(償還される日) |
| coupon | 必須 | 年利クーポンレート(5%なら0.05) |
| yld | 必須 | 年間最終利回り(4%なら0.04) |
| frequency | 必須 | 年間利払回数(1=年1回、2=半年、4=四半期) |
| basis | 任意 | 日数計算基準(0〜4、省略時は0) |
frequency引数は 1、2、4 のいずれかのみ有効です。3や12を指定すると #NUM! エラーになるので注意してください。
basis引数(日数計算基準)は次の5種類から選びます。
| 値 | 日数計算基準 | 主な用途 |
|---|---|---|
| 0(既定) | NASD 30/360 | 米国社債の標準 |
| 1 | 実日数/実日数 | 日本国債、米国財務省証券 |
| 2 | 実日数/360 | 一部マネーマーケット |
| 3 | 実日数/365 | 一部の社債 |
| 4 | European 30/360 | 欧州社債 |
日本国債のデュレーションを計算する場合は、basis=1(実日数/実日数)に近い計算を選ぶのが一般的ですよ。
DURATION関数の基本的な使い方
実際に5年債のデュレーションを計算してみましょう。
例: 5年・半年クーポン・利率5%・利回り4%
次のような条件の債券を考えます。
| 項目 | 値 |
|---|---|
| 受渡日 | 2026/1/1 |
| 満期日 | 2031/1/1 |
| クーポンレート | 5%(年率) |
| 最終利回り | 4%(年率) |
| 利払回数 | 半年に1回(frequency=2) |
| 日数基準 | NASD 30/360(basis=0) |
数式は次のように書きます。
=DURATION("2026/1/1", "2031/1/1", 0.05, 0.04, 2, 0)
結果は 約 4.499 年 になります。残存期間は5年ですが、半年ごとにクーポンを受け取る分だけ平均回収期間が短くなりました。
クーポンレート(5%)が利回り(4%)より高いので、この債券は若干プレミアム(額面より高い価格)で取引される状態ですね。
日付はDATE関数で渡すのが安全
文字列で日付を直接書いても動きますが、地域設定によって解釈が変わる場合があります。実務ではDATE関数(年月日から日付値を作る関数)を使うのが安全ですよ。
=DURATION(DATE(2026,1,1), DATE(2031,1,1), 0.05, 0.04, 2, 0)
セル参照で渡す場合も、対象セルが日付型として認識されているかを確認してください。
ゼロクーポン債で残存年数と一致するか確認
ゼロクーポン債(クーポンレート=0%)でデュレーションを計算すると、残存年数と完全一致するはずです。実際に試してみましょう。
=DURATION(DATE(2026,1,1), DATE(2031,1,1), 0, 0.03, 1, 0)
結果は 5.0 年。残存5年のゼロクーポン債のデュレーションは、定義通り残存年数と一致します。これは概念の確認に有用な計算ですので、覚えておいてくださいね。
マコーレー・デュレーションが「加重平均期間」である理由
ここで一度、マコーレー・デュレーションの計算式を見ておきましょう。
マコーレー・デュレーション = Σ(t × PVCF_t) / Σ(PVCF_t)
- t: 各キャッシュフローまでの期間(年)
- PVCF_t: 期間tのキャッシュフローの現在価値
- 分母 Σ(PVCF_t) = 債券の理論価格
つまり各時点 t を、その時点のキャッシュフロー現在価値で重みづけして加重平均しているわけです。
たとえば残存5年・クーポン4%・年1回・利回り4%の債券(額面100)で考えてみましょう。
| 経過年t | キャッシュフロー | 現在価値PVCF_t | t × PVCF_t |
|---|---|---|---|
| 1 | 4 | 3.85 | 3.85 |
| 2 | 4 | 3.70 | 7.40 |
| 3 | 4 | 3.56 | 10.67 |
| 4 | 4 | 3.42 | 13.68 |
| 5 | 104 | 85.48 | 427.40 |
| 合計 | — | 100.00 | 463.00 |
マコーレー・デュレーション = 463.00 / 100.00 = 4.63 年
5年目のキャッシュフロー(元本+利息=104)が現在価値ベースで圧倒的に大きいため、加重平均がほぼ5年寄りに引っ張られます。途中のクーポン4ずつの貢献で4.63年に少しだけ短縮された、というイメージですね。
この「キャッシュフローを現在価値で重みづけして時間を加重平均する」発想こそが、マコーレー・デュレーションの本質です。年単位で出るのは t(期間)の単位が年だからで、決して「年数」を意味しているわけではないんですよ。
DURATIONとMDURATION(修正デュレーション)の違い
DURATIONを業務で扱う方が必ずぶつかる疑問が、「MDURATION(修正デュレーション)と何が違うのか?」です。
数式上の関係
両者の関係はとてもシンプルです。
MDuration = Macaulay Duration / (1 + y/n)
- y: 年間最終利回り
- n: 年間利払回数(frequency)
つまり修正デュレーションは、マコーレー・デュレーションを「(1 + y/n)」で割った値です。マコーレー・デュレーションより必ず小さくなりますよ。
先ほどの5年債の例で確認しましょう。
=MDURATION(DATE(2026,1,1), DATE(2031,1,1), 0.05, 0.04, 2, 0)
結果は 約 4.411 年。マコーレー(4.499)÷(1 + 0.04/2) = 4.499 / 1.02 ≈ 4.411 となり、関係式通りの結果が得られています。
関数比較表
両関数の使い分けを表にまとめました。
| 項目 | DURATION(マコーレー) | MDURATION(修正) |
|---|---|---|
| 関数の意味 | 加重平均された期間(年) | 金利感応度の指標 |
| 単位 | 年 | 年(実態は %/% に近い) |
| 主な用途 | 概念理解、ポートフォリオ平均期間 | 価格変動予測、リスク管理 |
| 大小関係 | MDurationより必ず大きい | Macaulayより必ず小さい |
| 実務での使用頻度 | 教科書・概念理解で頻用 | 日常の業務で頻用 |
使い分けの判断基準
- 概念や教科書的な議論ではマコーレー・デュレーションを使う
- 価格変動を予測する実務計算ではMDURATION(修正デュレーション)を使う
詳しい使い方はExcelのMDURATION関数の使い方も参考にしてみてくださいね。
金利感応度の予測(実務での主用途)
DURATION関数の最も実務的な使い道は、金利が動いたときの債券価格の変動を予測することです。
一次近似式
修正デュレーションを使った価格変動の近似式は次の通りです。
ΔP/P ≈ −MDuration × Δy
- ΔP/P: 価格の変動率
- Δy: 利回りの変化(小数表記。1%なら0.01)
利回りが上がると価格は下がるので、マイナス符号が付いていますね。
実例: 0.5%の金利上昇で価格はいくら下がる?
先ほどの5年債(MDuration=4.411)で、利回りが 4% から 4.5% に上昇した場合を考えましょう。
ΔP/P ≈ −4.411 × 0.005 = −0.02206 = −2.21%
つまり価格は 約 2.21% 下落する見込みになります。100万円分保有していれば約2.2万円の評価損ですね。
Excelで実装してみる
次のようにセルを組み合わせれば、金利変化に対する価格変動を即座に計算できます。
| セル | 内容 | 値 |
|---|---|---|
| A1 | 受渡日 | 2026/1/1 |
| A2 | 満期日 | 2031/1/1 |
| A3 | クーポン | 0.05 |
| A4 | 利回り | 0.04 |
| A5 | 利払回数 | 2 |
| A6 | 利回り変化Δy | 0.005 |
| A7 | =MDURATION(A1,A2,A3,A4,A5,0) | 4.411 |
| A8 | =-A7*A6 | -0.0221(-2.21%) |
現実のポートフォリオでは数千銘柄を保有することもあります。各銘柄のMDURATIONを計算してエクスポージャー(保有額×MDuration)を集計すれば、ポートフォリオ全体の金利感応度を一目で把握できますよ。
凸性(コンベキシティ)の補足
このΔP/P ≈ −MDuration × Δy はあくまで一次近似です。利回りが大きく動く局面(1%以上の金利変動など)では、実際の価格曲線とのズレが目立ってきます。
より正確に予測したい場合は、二次の項である凸性(Convexity)を加えます。
ΔP/P ≈ −MDuration × Δy + (1/2) × Convexity × (Δy)²
Excelには凸性専用の関数はありませんが、SUMPRODUCTで自前実装することは可能です。CFA試験などで頻出のテーマですね。
DURATION関数のよくあるエラーと対処法
DURATION関数でつまずきやすいエラーを表にまとめました。
| エラー | 発生条件 | 対処法 |
|---|---|---|
| #VALUE! | 日付として認識されない文字列を渡した | DATE関数または日付型セル参照を使う |
| #NUM! | settlement >= maturity(受渡日が満期日以降) | 日付の前後関係を確認 |
| #NUM! | coupon < 0 または yld < 0 | 利率を 0% 以上に修正 |
| #NUM! | frequency が 1, 2, 4 以外 | 年1回・半年・四半期のいずれかに修正 |
| #NUM! | basis が 0〜4 の範囲外 | 日数基準を 0〜4 で指定 |
特に注意したいfrequencyの仕様
frequency引数は 1(年1回)、2(半年)、4(四半期)のみ有効です。月次クーポン(12)や年3回(3)の債券は計算できません。
たとえば次の数式は #NUM! エラーになります。
=DURATION("2026/1/1", "2031/1/1", 0.05, 0.04, 12, 0) ← 月次は不可
月次キャッシュフローを扱いたい場合の対処は2通りです。SUMPRODUCTで自前計算するか、不規則な現金流入を扱えるXIRR関数を組み合わせる流れになりますよ。
日付フォーマットの罠
"2026/1/1" のような文字列リテラルは、地域設定によっては解釈が変わる場合があります。実務では DATE関数 またはセル参照(日付型として認識されているセル)を使うのが鉄則です。
DURATION関数とあわせて使う関連関数
DURATION関数は、債券分析の関数群と組み合わせて使うのが基本です。よく一緒に使う関数を紹介します。
MDURATION関数(修正デュレーション)
価格変動の一次近似に使う、実務で最も使用頻度の高い関数です。引数構造はDURATIONと完全に同じなので、両方を並べて使えます。詳細はMDURATION関数の使い方を参照してください。
PRICE関数(債券価格の計算)
利回りから債券価格(クリーンプライス)を計算する関数です。デュレーションで予測した価格変動の検証にも使えますよ。詳細はPRICE関数の使い方を参照してください。
YIELD関数(最終利回りの計算)
債券価格から最終利回りを逆算する関数です。市場価格を入力してYIELDで利回りを求め、それをDURATIONの yld引数に渡す流れがよくあります。詳細はYIELD関数の使い方を参照してください。
XIRR関数(不規則キャッシュフローの内部収益率)
DURATION関数は定期キャッシュフロー(年1・半年・四半期)専用です。月次や不規則な支払いは扱えません。XIRR関数で内部収益率を計算してから、別途デュレーションをSUMPRODUCTで実装する流れになりますよ。詳細はXIRR関数の使い方を参照してください。
PV関数(現在価値の計算)
マコーレー・デュレーションの計算式の核は「キャッシュフローの現在価値」です。デュレーションを手計算で検証する際にPV関数が役立ちます。詳細はPV関数の使い方を参照してください。
イミュナイゼーション戦略でのデュレーション活用
最後に、デュレーションが実務で果たす最も重要な役割の一つ、イミュナイゼーション戦略を紹介します。
イミュナイゼーション(immunization)とは、金利変動の影響を受けないように資産と負債を構築する戦略です。具体的には、保有資産と将来の支払い負債のデュレーションを一致させますよ。
仕組み
- 金利が上がる → 債券価格は下がる(含み損が発生)
- 金利が上がる → 再投資収益は上がる(クーポン再投資の利回り改善)
この2つの効果は逆方向に働きますよね。資産デュレーションを負債デュレーションと等しくしておくと、両者がぴったり打ち消しあって金利変動の損益がほぼゼロになります。
生命保険会社や年金基金が「ALM(Asset-Liability Management、資産負債管理)」と呼ぶ手法の核心がこれです。Excelでは保有債券一覧のMDURATIONを計算し、保有金額をウェイトとした加重平均を取ります。それを目標負債のデュレーションと比較する作業が日常的に行われていますよ。
簡単なシミュレーション例
| 資産 | 保有額 | MDuration | エクスポージャー(額×MDur) |
|---|---|---|---|
| 5年国債 | 1,000万円 | 4.5 | 4,500万円・年 |
| 10年国債 | 500万円 | 8.5 | 4,250万円・年 |
| 30年国債 | 200万円 | 18.0 | 3,600万円・年 |
| 合計 | 1,700万円 | 平均 7.27年 | 12,350万円・年 |
ポートフォリオ加重平均MDuration = 12,350 / 1,700 = 7.27年
負債デュレーションが7.0年なら、もう少し短い債券を増やしてマッチングさせる、という判断ができます。
まとめ
ExcelのDURATION関数のポイントを整理します。
- DURATION関数はマコーレー・デュレーション(債券キャッシュフローの加重平均期間)を計算する
- 単位は年だが、単純な残存年数ではなく「現在価値で重みづけされた平均回収期間」
- ゼロクーポン債のデュレーション=残存年数(クーポンがあれば残存年数より短い)
- 構文は
=DURATION(settlement, maturity, coupon, yld, frequency, [basis]) - frequency は 1、2、4 のいずれかのみ有効(月次は不可)
- 修正デュレーション(MDURATION)= マコーレー / (1 + y/n)
- 価格変動の予測は MDURATION を使い、
ΔP/P ≈ −MDuration × Δyで近似 - 凸性(Convexity)まで含めると二次近似で精度が上がる
- イミュナイゼーション戦略では資産と負債のデュレーションを一致させる
債券投資・ALM・金利リスク管理の現場で、DURATION関数とMDURATION関数はセットで使う基本ツールです。両者の関係と使い分けを押さえておけば、業務でも試験でも安心して取り組めますよ。
関連する財務関数として、MDURATION関数、PRICE関数、YIELD関数、XIRR関数、PV関数もあわせて確認してみてくださいね。
