この​記事で​分かる​こと

  • PRICE・YIELD・DURATION・MDURATION関数の構文と、決済日・満期日・利率・利回り・償還・頻度・基準という共通引数の意味
  • 設例の社債(額面100円・クーポン年率0.70%・半年払い・残存5年)で価格とデュレーションを実際に計算する手順
  • 修正デュレーションを使って金利変化が価格に与える影響を近似する方法と、その近似が外れる場面
  • 決済日・利払回数・基準の入力ミスで起きる典型的な事故と、その防ぎ方

結論:価格と​利回りは​表裏の​関係、​DURATIONは​金利感応度を​測る

債券の価格と利回りは、同じキャッシュフローを2つの角度から見ているだけの関係です。利回りが上がれば価格は下がり、利回りが下がれば価格は上がります。この関係自体は債券の​基礎|クーポン・​額面・​アンダーパー/オーバーパーと​価格・​利回りの​逆相関で説明した通りですが、実務でその価格や利回りを電卓で毎回計算する人はいません。Excelには、決済日・満期日・利率・利回りといった条件を渡すだけで価格や利回りを返す関数が用意されています。

ここではPRICE(利回りから価格を出す)・YIELD(価格から利回りを逆算する)・DURATION(マコーレー・デュレーションを出す)・MDURATION(修正デュレーションを出す)の4関数を、1つの社債の設例を通して一連の実務手順として扱います。用語としての「デュレーションとは何か」は用語集|デュレーションに譲り、ここでは「Excelでどう組むか」「どこで事故が起きるか」に絞ります。個別の利回り水準の評価や信用リスクの読み方は債券利回りの​基礎と​YTM|価格95円の​債券の​「本当の利回り」を​求めるを参照してください。

4つの​関数の​全体像と​共通引数

この4関数はいずれも「額面100円あたり」で価格や日数を扱う点で設計が揃っています。まず全体像を押さえておくと、個々の引数の意味を覚えやすくなります。各関数の一行定義は用語集|Excel​債券関数群にまとめてありますので、ここでは実務で迷いやすい引数の対応関係を表で整理します。

引数内容PRICEYIELDDURATIONMDURATION
settlement(決済日)受渡日。約定日ではなく資金・証券が実際に受け渡される日○○○○
maturity(満期日)償還日○○○○
rate/coupon(利率)年率のクーポン利率○○○○
yld(利回り)PRICE・DURATION・MDURATIONでは入力値、YIELDでは戻り値○(入力)○(出力)○(入力)○(入力)
pr(価格)YIELDのみで使う、額面100円あたりの現在価格—○(入力)——
redemption(償還価額)額面100円あたりの償還価格。通常は100○○——
frequency(頻度)年間の利払回数。1=年1回、2=半年ごと、4=四半期ごと○○○○
basis(基準・省略可)日数計算方式。0〜4の整数(下記参照)○○○○

4関数とも、決済日・満期日は日付そのものではなくDATE関数かシリアル値で渡す必要があります。文字列の「2026/9/10」をそのまま渡すとエラーになる環境があるため、日付はセル参照かDATE関数で統一するのが安全です。ほかの財務関数の基本(NPV・IRR・XIRR)はNPV・​IRR・​XIRR​関数の​実践|Excelでの​正しい​使い方と​3つの罠で扱っているので、あわせて確認してください。

PRICE​関数:クーポン・​利回りから​価格を​出す

構文
PRICE(決済日, 満期日, 利率, 利回り, 償還価額, 頻度, [基準])

PRICE関数は、利回りが分かっているときに額面100円あたりの価格を返します。引数のredemption(償還価額)は満期時に戻ってくる金額を額面100円あたりで指定するもので、途中償還条項がない普通社債や国債であれば通常は100を入力します。ここを誤って「1」や実際の額面金額(10,000円など)を入れると、価格がまったく違う桁の数値になります(後述の事故事例を参照)。

basis(基準)は0〜4の整数で日数計算方式を切り替える引数です。0(省略時)は米国NASD方式の30/360、1は実際/実際、2は実際/360、3は実際/365、4はヨーロッパ方式の30/360です(出典:Microsoft サポート「PRICE 関数」)。決済日が利払日からずれている銘柄では、この基準の選び方が価格の小数点以下に影響します。実務では、対象銘柄の発行要項・目論見書に定められた日数計算方式に合わせるのが原則で、基準を「なんとなく省略」して既定値の30/360のまま使うと、実際/実際で計算する市場の銘柄と数銭単位でずれることがあります。

YIELD​関数:価格から​利回りを​逆算する

構文
YIELD(決済日, 満期日, 利率, 価格, 償還価額, 頻度, [基準])

YIELD関数はPRICEの逆で、市場で観測された価格(pr)から利回りを逆算します。取引所や証券会社の気配値は「価格」で表示されることが多いため、その価格を投資家が比較しやすい利回りに変換する場面で使います。引数の並びはPRICEとほぼ同じですが、yld(利回り)の位置にpr(価格)が入る点だけが違います。この2関数は「同じ7つの条件のうち、どちらを既知としてどちらを未知にするか」が違うだけなので、セットで覚えると引数の取り違えが減ります。

YIELD関数が返す利回りは、頻度で指定した複利周期に基づく最終利回り(YTM)の年率表示です。YTMという概念そのものの意味や、それが「保有し続けた場合の内部収益率」であることの説明は債券利回りの​基礎と​YTMに委ねます。

DURATION・​MDURATION:金利感応度を​測る

構文
DURATION(決済日, 満期日, 利率, 利回り, 頻度, [基準])
MDURATION(決済日, 満期日, 利率, 利回り, 頻度, [基準])

DURATION関数はマコーレー・デュレーションを年単位で返します。マコーレー・デュレーションは、各キャッシュフロー(クーポンと償還額)の現在価値を重みにして、それぞれの受取時期(年数)を加重平均した値です。「平均して何年後にキャッシュフローを回収できるか」を表す時間の指標だと考えると理解しやすくなります。

MDURATION関数はマコーレー・デュレーションを1期あたりの利回り(yld÷frequency)で割り引いた修正デュレーションを返します。修正デュレーションは「利回りが1%動いたときに価格が何%動くか」を近似する感応度そのものであり、実務でリスク管理の指標として使うのはほぼ常にこちらです。DURATIONとMDURATIONの使い分けを一言でいえば、DURATIONは時間の単位、MDURATIONは感応度の単位という違いになります。両者の引数は同一で、償還価額(redemption)を取らない点がPRICE・YIELDとの違いです。これは、デュレーションが「価格そのもの」ではなく「価格の変化率」を測る指標であり、額面100円あたりで正規化した計算の中で償還価額を別出しする必要がないためです。

設例:社債の​価格と​デュレーションを​計算する

以下は説明用の仮設例です。実在の銘柄ではありません。額面100円・クーポン年率0.70%(半年払い)・残存5年の社債を想定し、市場利回りが年率1.10%のときの価格とデュレーションを求めます。決済日はちょうど利払日に一致させているため、経過利子(端数期間の利息)を考えずに計算できる、もっとも基本的なケースです。

入力項目値
決済日2026年9月10日
満期日2031年9月10日(残存5年、利払日と一致)
利率(年率、半年払い)0.70%
利回り(年率)1.10%
償還価額(額面価額100円あたり)100
頻度2(半年ごと)
基準1(実際/実際)

この条件をPRICE関数に渡すと次の式になります。

数式
=PRICE(DATE(2026,9,10),DATE(2031,9,10),0.007,0.011,100,2,1)
結果:98.0592(額面100円あたり98円5銭9厘6毛)

この結果は、残存10半期分のクーポン(1期あたり0.35円)と満期時の償還100円を、半期あたり利回り0.55%で割り引いた現在価値の合計に一致します。クーポン利率0.70%より利回り1.10%の方が高いため、価格は額面100円を下回るアンダーパー(98.0592円)になります。同じ条件でDURATION・MDURATIONを計算すると次の通りです。

関数数式結果
PRICE=PRICE(DATE(2026,9,10),DATE(2031,9,10),0.007,0.011,100,2,1)98.0592円
DURATION=DURATION(DATE(2026,9,10),DATE(2031,9,10),0.007,0.011,2,1)4.9213年
MDURATION=MDURATION(DATE(2026,9,10),DATE(2031,9,10),0.007,0.011,2,1)4.8944年

マコーレー・デュレーション4.9213年を、半期あたり利回り0.55%で1.0055で割ると、修正デュレーション4.8944年になります(4.9213÷1.0055=4.8944)。この社債は残存5年ですが、クーポンを毎期受け取る分だけ、キャッシュフロー全体の平均回収期間は満期日そのものより短くなっています。逆にPRICE関数を使って価格98.0592円・利率0.70%・償還100・頻度2・基準1からYIELDを逆算すると1.10%に戻り、PRICEとYIELDが表裏一体であることを確認できます。

感応度​分析:修正​デュレーションで​金利変化の​影響を​近似する

修正デュレーションの実務的な使い道は、利回りが動いたときの価格変化を、PRICE関数を組み直さずに素早く見積もることです。近似式は次の通りです。

式
価格変化率(%)≈ −修正デュレーション × 利回りの変化幅(%)
設例:利回りが1.10%から1.20%へ+10bp(+0.10%)動くと、価格変化率は−4.8944×0.10%=−0.4894%と近似できる

実際にPRICE関数で利回り1.20%の価格を計算すると97.5806円になり、実際の変化率は(97.5806−98.0592)÷98.0592=−0.4881%です。修正デュレーションによる近似(−0.4894%)と実際の変化率(−0.4881%)の差はわずか0.0013ポイントで、±10bp程度の小さな変化であれば近似はほぼそのまま使えることが分かります。

図1:価格と利回りの関係(設例) 95 96 97 98 99 100 101 0.6 0.8 1.0 1.2 1.4 1.6 利回り1.10%→98.06円 利回り(年率、%) 価格(円、額面100円あたり)
図:設例の​社債​(クーポン​年率0.70%・​半年払い・​残存5年・​基準1)に​ついて、​PRICE​関数で​利回りを​0.6%〜1.6%まで​動かした​ときの​価格。​数値は​いずれも​設例であり​実在の​銘柄の​価格ではありません。

ただし修正デュレーションはあくまで接線による直線近似であり、価格と利回りの関係は実際には曲線(凸性)を持っています。下の表は、利回りの変化幅を±10bp・±25bp・±50bp・±100bpと広げたときに、PRICE関数で計算した実際の価格変化率と、修正デュレーションによる近似がどこまで一致するかを比較したものです。

利回りの変化幅PRICE関数の実際の価格実際の変化率修正デュレーションによる近似
−100bp(0.10%)102.9918円+5.0302%+4.8944%
−50bp(0.60%)100.4918円+2.4808%+2.4472%
−25bp(0.85%)99.2672円+1.2320%+1.2236%
−10bp(1.00%)98.5404円+0.4908%+0.4894%
+10bp(1.20%)97.5806円−0.4881%−0.4894%
+25bp(1.35%)96.8675円−1.2153%−1.2236%
+50bp(1.60%)95.6918円−2.4142%−2.4472%
+100bp(2.10%)93.3878円−4.7638%−4.8944%
図2:利回り変化(bp)による価格変化率(設例) 0% +5% −5% +5.03% -100bp +2.48% -50bp +1.23% -25bp +0.49% -10bp −0.49% +10bp −1.22% +25bp −2.41% +50bp −4.76% +100bp 利回りの変化幅(bp)/緑=利回り低下、赤=利回り上昇 価格変化率(%)
図:設例の​社債に​ついて、​利回りが​±10bp〜±100bp動いた​ときに​PRICE​関数で​計算した​実際の​価格変化率。​数値は​上の​表と​同一の​設例です。

±10bp・±25bpまではほぼ一致しますが、±50bpを超えたあたりから乖離が広がり始め、+100bpでは実際の下落率(−4.7638%)が近似(−4.8944%)より小さく、−100bpでは実際の上昇率(+5.0302%)が近似(+4.8944%)より大きくなっています。これは価格と利回りの関係が直線ではなく下に凸の曲線であるためで、この曲がり具合を表す指標が用語集|コンベクシティです。大きな金利変化を扱うポートフォリオでは、修正デュレーションだけでなくコンベクシティも合わせて見る必要があります。

決済日・​利払回数・​基準の​指定ミスに​よる​典型的な​事故

PRICE・YIELD・DURATION・MDURATIONは引数の数が多く、しかも似た関数同士で引数の並びが微妙に違うため、入力ミスがそのまま桁違いの誤答につながりやすい関数群です。ここでは、実際にExcelで数式を組んで確認した代表的な事故を紹介します。

償還価額を​「1」で​入力してしまう

redemption(償還価額)は額面100円あたりの金額で入力する引数です。ここに実際の投資金額や「1」(100%のつもりで小数を入れてしまう)を入れると、価格はまったく違う値になります。先の設例と同じ利率0.70%・利回り1.10%のまま、redemptionだけを100から1に変えて計算すると、価格は4.3430円になります。正しい98.0592円とは比較にならない値ですが、数式としてはエラーにならずに計算されてしまうため、見た目だけでは気づきにくい事故です。

利率を​パーセント​表記の​まま​入力してしまう

rate(利率)は0.007のような小数(=0.70%)で入力する引数です。セルの表示形式を%にしないまま「0.7」と入力し、それを70%(年率クーポン70%)として渡してしまうと、PRICE関数は434.30円という、額面100円の債券としてはあり得ない価格を返します。結果が明らかに異常な範囲に出た場合は、まずrateとyldの単位(小数かパーセントか)を疑うのが定石です。

決済日と​満期日を​取り違える

settlement(決済日)とmaturity(満期日)を逆に入力すると、償還までの残存期間がマイナスになり、PRICE関数は計算不能として#NUM!エラーを返します。エラー自体は分かりやすいものの、複数の銘柄を一括で計算する表で日付列の参照がずれていると、一部の行だけ#NUM!になり見落とされることがあります。日付を渡す列は、コピー時に参照がずれていないかを個別に確認してください。

利払回数​(頻度)を​1回に​間違える

以下は頻度引数の誤りだけを確認するための別の設例です(額面100円・クーポン年率4.00%・利回り年率3.00%・残存5年・決済日は利払日に一致)。半年payの銘柄をfrequency=1(年1回)で計算すると、正しいfrequency=2の価格104.6111円に対して104.5797円となり、差は0.0314円です。1件あたりの差は小さく見えますが、これは額面100円あたりの差であり、額面10億円の取引であれば約31万円の誤差に相当します。約定金額の検算や決済照合で不一致が出た場合、まず疑うべき引数の一つです。

基準​(basis)の​選び違いと​経過利子の​失念

決済日が利払日からずれている(端数期間がある)銘柄では、basisの選択が価格に影響します。先の設例の決済日を利払日から3か月後(2026年12月10日)にずらして計算すると、基準0(米国式30/360)では価格98.1535円、基準1(実際/実際)では98.1540円となり、わずかですが値が変わります。さらに注意すべきは、PRICE関数が返すのは用語集|ダーティプライスと​クリーンプライスでいうクリーンプライス(経過利子を含まない価格)だという点です。実際に買い手が支払う受渡代金は、このクリーンプライスに用語集|経過利子を加えたダーティプライスになります。日本の債券市場でも、受渡日が利払日と異なる場合には買い手が経過利子相当分を売り手に支払う実務があります(出典:日本証券業協会「(債券の)経過利子」)。この経過利子はACCRINT関数で別途計算するもので、PRICE関数の戻り値だけを「支払う金額」として扱うと、実際の受渡代金より経過利子の分だけ少ない金額しか用意しないことになります。日数計算の方式は、対象銘柄の発行要項に定められたものに合わせるのが原則で、basisの意味は用語集|デイカウント・​コンベンションを参照してください。

感応度分析を​データテーブルで​自動化する

図1・上の表のような「利回りを何段階か動かして価格を並べる」作業は、PRICE関数を1件ずつ手入力するのではなく、Excelのデータテーブル(What-If分析)で自動化できます。手順は、利回りをセル参照で持つ列を作り、その列を入力セルとするPRICE関数のセルを1つ用意し、範囲選択後に「データ」タブの「What-If分析」から「データテーブル」を選んで列入力セルに利回りのセルを指定するというものです。データテーブルの入力セルは、集計表と同じシート上のセルを指定する必要がある点に注意してください。データテーブル・ゴールシーク・シナリオの使い分けと具体的な操作手順はWhat-If​分析の​3兄弟|データテーブル・​ゴールシーク・​シナリオの​使い分けで解説しています。数式や参照のコピーミスは、Excelの​データ検証​(入力規則)で​モデルの​入力ミスを​防ぐ​実務で紹介している入力規則を決済日・頻度・基準のセルにかけておくと、前章のような事故を機械的に防げます。

よく​ある​質問​(FAQ)

PRICE​関数と​YIELD​関数は​どちらを​覚えればよいですか。

両方​セットで​覚えるのが​実務的です。​市場から​得られる​情報が​利回りなら​価格を​求める​ために​PRICEを、​価格​(気配値)なら​利回りを​求める​ために​YIELDを​使います。​引数の​並びは​ほぼ同じで、​yldと​prの​位置だけが​入れ​替わっています。

DURATIONと​MDURATIONの​どちらを​金利​リスク​管理に​使うべきですか。

価格の​感応度​(利回りが1%動いたときに価格が何%動くか)を​見たい​場合は​MDURATION​(修正デュレーション)を​使います。​DURATIONが​返す​マコーレー・​デュレーションは、​キャッシュフローの​平均回収期間と​いう​時間の​概念であり、​そのままでは​価格変化率の​近似値には​なりません。

frequency​(頻度)に​3や6のような​値を​入れても​計算できますか。

frequencyは​1・2・4の​いずれかである​必要が​あります。​日本の​多くの​社債・国債は​半年payの​ため2を​使う​場面が​最も​多いですが、​対象銘柄の​利払条件を​発行要項で​確認してから​入力してください。

redemption​(償還価額)が​100以外に​なるのは​どんな​場合ですか。

コーラブル​債の​期限前償還価格や、​額面に​対して​プレミアム・​ディスカウントで​償還される​条件が​付いた​銘柄では​100以外の​値に​なります。​通常の​普通社債・​国債では​100を​使います。

Excelで​#NUM!エラーが​出たら、​まず​何を​確認すれば​よいですか。

決済日が​満期日より​後に​なっていないか、​frequencyが​1・2・4以外の​値に​なっていないか、​redemptionや​rateに​マイナス値が​入っていないかの​3点を​まず​確認してください。​日付列の​コピー時に​参照が​ずれる​ケースが​多く​見られます。

まとめ

PRICE・YIELD・DURATION・MDURATIONは、決済日・満期日・利率・利回り(または価格)・償還価額・頻度・基準という共通の材料を、目的に応じて入力と出力を入れ替えながら使う一連の関数です。設例では、クーポン年率0.70%・利回り1.10%・残存5年の社債の価格が98.0592円、修正デュレーションが4.8944年になることをExcel上で確認し、±10bp程度の金利変化であれば修正デュレーションによる近似が実際の価格変化とほぼ一致することも確かめました。一方で、償還価額や利率の単位を間違えると価格が桁違いの値になり、決済日が利払日からずれる銘柄では基準の選び方と経過利子の扱いが実際の受渡代金に影響します。関数そのものは7つの引数を渡すだけの単純な仕組みですが、その単純さゆえに、単位や日付の取り違えがそのまま誤った結論につながる点に注意が必要です。

同じ手順を、実際に手を動かして確認する

今回の設例と同じ引数構成をExcelに自分で入力し、redemptionやfrequencyの値をわざと変えて価格がどう崩れるかを試してみると、事故のパターンが体に入りやすくなります。

→ 演習機能で​財務​モデリングを​練習する

出典・参考​(2026年9月確認)

※本記事は教育目的の一般的な解説であり、法務・税務・投資助言ではありません。設例は理解のための仮設例です。