この記事で分かること

  • 感応度分析は「入力の組合せごとに1つの答え」を出す決定論、モンテカルロは「入力の分布から出力の分布」を出す確率論であること
  • サイコロ2個の和(全36通り)で原理を検算できること。和7は6通り=6/36=1/6、和2と和12は各1通り=1/36
  • ExcelはRAND・NORM.INV・データテーブルだけで1,000試行が組めること(アドイン不要)
  • 見るべきは平均ではなくP10/P50/P90と下振れ確率。そして「分布の根拠」を語れないなら感応度分析で十分だという規律

結論:答えは1つの数字ではなく「分布」になる

DCFの結論を「NPVは100百万円」と一点で示すと、その裏にあった不確実性は消えてしまいます。モンテカルロシミュレーションMonte Carlo simulation)は、入力を1つの値ではなく確率分布で与え、乱数を使って数千回モデルを計算し、出力を分布として返す手法です。

得られる答えは「NPVは100百万円」ではなく、たとえば「中央値は100百万円、P10は▲2.5百万円、P90は202.5百万円、NPVがマイナスになる確率は約10.6%」という形になります(本記事の仮設例。詳しくは後述)。平均だけを見れば価値創造の案件ですが、10回に1回は価値を毀損します。この非対称な情報こそが、意思決定に効きます。

なお、入力を1つずつ動かして「どの変数が効くか」を測る感応度分析・シナリオ分析は、本記事とは別の手法です。本記事はその先、確率分布とシミュレーションを扱います。両者は競合ではなく、順番に使う道具です。

感応度分析との違い:決定論と確率論

決定論(感応度分析)と確率論(モンテカルロ)感応度分析:入力の組合せごとに「1つの数字」NPV 百万円WACC 7%8%9%成長率 1.0%1458848成長率 1.5%16210056成長率 2.0%184115669個の「点」が並ぶだけで、どのセルが起こりやすいかは分からないモンテカルロ:出力が「分布」になる(例:サイコロ2個の和)(縦軸=出現数/全36通り)1234565432123456789101112和7=6/36=1/6(最頻)/和2・和12=各1/36結果ごとに「起こりやすさ」の重みが付く
図:左は感応度テーブル(仮設例・単位=百万円。基準ケースはWACC 8%・成長率1.5%でNPV 100百万円)。右はサイコロ2個の和の理論分布(全36通り、和7が6通りで最頻)。

両者の違いは、入力に何を入れるかの一点に尽きます。感応度分析は入力に「値」を入れ、出力として「値」を得ます。3×3の感応度テーブルなら答えは9個の点で、そのうちどれが起こりやすいかという情報は含まれていません。モンテカルロは入力に「分布」を入れ、出力として「分布」を得ます。結果一つひとつに起こりやすさの重みが付くため、「NPVがマイナスになる確率」のような問いに答えられます。

観点感応度分析・シナリオ分析モンテカルロシミュレーション
考え方決定論(deterministic)確率論(probabilistic/stochastic)
入力の与え方1つの値(WACC 8%)確率分布(WACCは平均8%・標準偏差1%の正規分布)
出力の形値の一覧(テーブル、3シナリオ)分布(ヒストグラム、分位点)
起こりやすさ分からない確率として得られる
計算回数数個〜数十個1,000〜100,000回
得意なことどの入力が効くかの特定、議論の共通土台づくり効く入力の不確実性を集計し、下振れ確率を出す
弱点確率が語れない、組合せ爆発に弱い入力分布の根拠が薄いと精緻さが見せかけになる

大事なのは、モンテカルロが感応度分析の上位互換ではないことです。実務の順序はむしろ逆で、まず感応度分析で「どの入力が効くか」を絞り込み、そのうえで効くと分かった少数の入力にだけ分布を与えます。20個の入力すべてに適当な分布を貼るより、効く3つに根拠のある分布を貼るほうが、はるかに意味のある出力になります。

仕組み:乱数 → 入力分布 → 多数試行 → 出力分布

手順は4つだけです。①入力の確率分布を決める → ②乱数を引いて入力値を1組つくる → ③モデルを1回計算する(これが1試行) → ④②③を数千回繰り返し、出力を集計して分布にする。難しい数学は使いません。難しいのは①だけです。

整数設例:サイコロ2個の和

原理は完全に数え上げで確認できます。サイコロ2個を振ったときの目の組合せは6×6=36通りで、すべて同じ確率です。和ごとの場合の数を数えると次のようになります。

組合せ(1個目, 2個目)場合の数確率
2(1,1)11/36 ≒ 2.8%
3(1,2)(2,1)22/36 ≒ 5.6%
4(1,3)(2,2)(3,1)33/36 ≒ 8.3%
5(1,4)(2,3)(3,2)(4,1)44/36 ≒ 11.1%
6(1,5)(2,4)(3,3)(4,2)(5,1)55/36 ≒ 13.9%
7(1,6)(2,5)(3,4)(4,3)(5,2)(6,1)66/36 = 1/6 ≒ 16.7%
8(2,6)(3,5)(4,4)(5,3)(6,2)55/36 ≒ 13.9%
9(3,6)(4,5)(5,4)(6,3)44/36 ≒ 11.1%
10(4,6)(5,5)(6,4)33/36 ≒ 8.3%
11(5,6)(6,5)22/36 ≒ 5.6%
12(6,6)11/36 ≒ 2.8%
合計36100%

※確率は小数第1位で四捨五入しているため、各行の表示値を単純合計すると100.1%になります。場合の数の合計は 1+2+3+4+5+6+5+4+3+2+1=36 でちょうど一致します。

検算:和が7になる組合せは (1,6)(2,5)(3,4)(4,3)(5,2)(6,1)6通りなので、確率は 6÷36=1/6(約16.7%)。和が2になるのは (1,1) の1通りだけ、和が12になるのは (6,6) の1通りだけなので、どちらも1/36(約2.8%)です。和7は和2の6倍起こりやすい、という非対称性がここで生まれます。期待値は 2×(1/36)+3×(2/36)+…+12×(1/36)7 です。

なぜ乱数が必要になるのか

サイコロ2個なら36通りを全部書き出せるので、シミュレーションは不要です。しかし財務モデルでは、売上成長率・EBITDAマージン・設備投資額・運転資本回転日数・WACC といった入力がそれぞれ連続値を取ります。組合せは無限にあり、完全列挙はできません。

そこで「サイコロを実際に何度も振って、出た目を記録する」というやり方に切り替えます。これがモンテカルロです。大数の法則により、試行回数Nを増やすほど、観測された相対度数は理論上の確率に近づきます。サイコロ2個を100回振って和7が22回(22%)出ることは珍しくありませんが、100,000回振ればほぼ16.7%に収束します。

収束の速さには目安があります。推定誤差はおおむね1÷√N で縮みます。裏を返せば、精度を10倍にするには試行回数を100倍にしなければなりません。試行回数を無闇に増やすより、入力分布の質を上げるほうが投資対効果が高い理由がここにあります。

Excelでの最小実装(アドイン不要)

専用アドインがなくても、標準関数と「データテーブル」だけで1,000試行は組めます。使う道具は3つです。

1. 乱数を作る:RAND

RAND() は引数を取らず、0以上1未満の一様乱数を返します。ワークシートが再計算されるたびに新しい値が返る「揮発性関数」で、F9キーでも引き直されます。

  • 一様分布=最小値 + RAND()*(最大値 - 最小値) 例:=0.05+RAND()*0.03 で 5%〜8% の一様乱数
  • 正規分布=NORM.INV(RAND(), 平均, 標準偏差) 例:=NORM.INV(RAND(), 100, 80)

NORM.INV(probability, mean, standard_dev) は、累積確率から値を逆算する関数です。probability は0と1の間、standard_dev は0より大きい必要があります。RAND() が返す0〜1の一様乱数をそのまま probability に渡すと、指定した正規分布に従う乱数が得られます(逆関数法)。この1行が、Excelでモンテカルロを組むときの中心にあたります。

なお、Excelには三角分布の標準関数がありません。最小・最頻・最大の3点で与えたい場合は逆関数を数式で組む必要があり、実務ではアドインを使うか、正規分布・一様分布で代用することが多くなります。

2. 1試行を作る

入力セルに上記の乱数式を入れ、出力セル(NPVやIRRなど)にモデルの計算式をつなぎます。この状態でF9を押すと、入力が引き直されて出力が1つ得られます。これが1試行です。あとはこれを1,000回繰り返して記録できればよいわけです。

3. 1,000試行に増やす:データテーブル

データテーブルWhat-If分析の1つ)は、指定した値を1つずつセルに代入しながら行ごとにワークシートを再計算する機能です。この「行ごとに再計算する」性質を利用すると、RAND() が行ごとに引き直され、1,000行=1,000試行の結果が並びます。

  • A列に 1〜1,000 の連番を入れる(この値自体は使いません。行数を確保するためのダミーです)
  • B列の1行目(A列の連番より1つ上の行)に、出力セルへの参照 =NPVセル を入れる
  • A列とB列の該当範囲をまとめて選択し、データタブ → What-If分析 → データテーブル(Excel 2019/2021/365ではデータツールグループ、Excel 2016では予測グループ)を開く
  • 「行の代入セル」は空欄、「列の代入セル」にはモデルで一切使っていない空セルを指定してOK

B列に1,000個のNPVが並べば、それが出力分布のサンプルです。実務上の注意を3点だけ挙げます。

  • 再計算されない場合:数式タブの「計算方法の設定」が「データテーブル以外自動」になっていると更新されません。「自動」に戻してください
  • 結果を固定する:RAND() は揮発性のため、シートを触るたびに1,000行すべてが引き直されます。分析結果を残すなら、B列をコピーして値貼り付けで固定します
  • 再現性:Excelの標準機能では乱数シードを固定できないため、同じ結果を再現する唯一の方法は値として保存しておくことです

4. 集計する

  • ヒストグラム:階級の区切りを作って FREQUENCY 関数、または COUNTIFS で階級ごとに数えて棒グラフにします
  • 分位点=PERCENTILE.INC(範囲, 0.1) でP10。第2引数 k は0以上1以下(両端を含む)です
  • 下振れ確率=COUNTIF(範囲,"<0")/COUNT(範囲)。正規分布を仮定した理論値と突き合わせるなら =NORM.DIST(0, 平均, 標準偏差, TRUE)(cumulative に TRUE を指定すると累積分布関数の値、つまり「x以下になる確率」が返ります)

試行回数が数万を超えるとExcelは目に見えて重くなります。その段階まで来たらPythonでの財務モデリングに移すほうが、速度でも再現性(乱数シードの固定)でも有利です。

入力分布の決め方:正規・三角・一様と「相関を無視する罠」

出力分布の質は、入力分布の質でほぼ決まります。よく使う3つの分布の使い分けは次のとおりです。

  • 正規分布(normal):対称で、多数の小さな要因が重なった結果に向きます。売上成長率、為替、指数リターンなど。過去データから平均と標準偏差を推定できるのが強みです。弱点は下限がないこと。売上高や価格に使うと理論上マイナス値を引いてしまうため、下限で切るか対数正規分布を検討します
  • 三角分布(triangular):最小値・最頻値・最大値の3点だけで決まります。過去データがなく、専門家に「最悪・最も有り得る・最良」を聞くしかない場面(建設コスト、工期、初期投資額)で実務的です
  • 一様分布(uniform):「その範囲のどこも同じくらい起こりうる」という無情報の表明です。ただしこれは弱い仮定ではなく強い仮定である点に注意してください。両端が中央と同じ確率で起きると宣言していることになります

最大の罠:入力間の相関を無視する

Excelで各入力セルに独立に RAND() を置くと、すべての入力が互いに無関係だと仮定したことになります。しかし現実の財務モデルでは、売上高と原材料費、金利と為替、複数事業の景気感応度は独立ではありません。

正の相関がある変数を独立にサンプリングすると、片方が上振れたとき本来なら同時に上振れるはずのもう片方が中立になり、変動が互いに打ち消し合います。その結果、出力分布の裾が不当に薄くなり、リスクを過小評価します。「悪いことは同時に起きる」というリスク管理の基本が、モデル上で再現されなくなるわけです。

対処は2つあります。1つは相関行列を指定して多変量サンプリングを行うこと(アドインやPythonが必要)。もう1つは、共通のマクロ変数を1つだけ乱数にして、各入力をその関数として書く方法です。たとえば「景気指数」を1つ乱数で引き、売上成長率も稼働率もその指数から導出すれば、相関構造が自然に入ります。Excelの標準機能だけで戦うなら、後者のほうが現実的です。

その他の落とし穴

  • 裾の過小評価:正規分布は極端な事象を軽く見積もります。金融危機や資源価格の暴落は、正規分布が想定するより厚い裾を持つことが知られています
  • 精緻さの錯覚:入力の根拠が「なんとなく±20%」なら、出力の小数点以下に意味はありません。この手法はgarbage in, garbage out が最も効きます
  • 構造誤りは直らない:試行回数をいくら増やしても、モデルの構造(数式の間違い、抜けている費用項目)が誤っていれば無意味です。増えるのは間違った答えの精度だけです

結果の読み方:平均よりP10/P50/P90と下振れ確率

設例で考えます。あるプロジェクトのNPVをシミュレーションしたところ、出力が平均100百万円・標準偏差80百万円の正規分布におおむね従ったとします(理解のための仮設例)。標準正規分布の10%点は約▲1.2816、90%点は約+1.2816なので、分位点は次のように計算できます。

統計量計算読み方
P10100 + (▲1.2816)×80▲2.5百万円10回に1回はこれを下回る
P50(中央値)100 + 0×80100百万円ちょうど真ん中。正規分布なら平均と一致
P90100 + 1.2816×80202.5百万円10回に1回はこれを上回る
P90 − P10202.5 −(▲2.5)約205百万円不確実性の幅。平均の2倍以上ある
下振れ確率NORM.DIST(0,100,80,TRUE)10.6%NPVがマイナスになる確率

ここで読み取るべきは、平均だけを見ると見落とすものです。「NPV 100百万円の価値創造案件」は正しい記述ですが、同時に「約10回に1回は価値を毀損する」案件でもあります。P10が▲2.5百万円とわずかにマイナスであることと、下振れ確率が10.6%(10%をやや上回る)であることは整合しています。

投資委員会に持っていくときも、平均値1つより「中央値100百万円、下振れ確率10.6%、最悪10%シナリオで▲2.5百万円」と示すほうが議論が進みます。ダウンサイドをどう設計するかはダウンサイドケースの作り方で扱っています。

試行回数はどこまで必要か

平均の推定誤差(標準誤差)標準偏差 ÷ √試行回数 です。上の設例(標準偏差80百万円)なら、

  • N=1,000 → 80 ÷ √1,000 ≒ 2.5百万円
  • N=10,000 → 80 ÷ √10,000 = 0.8百万円

平均や中央値を語るだけなら1,000試行でおおむね足ります。しかしP1やP99のような裾の分位点は、その領域に落ちる試行が全体の1%しかないため、1,000試行では10個のサンプルしか根拠がありません。裾を語るなら10,000試行以上が目安です。

IRRの分布は取り扱いに注意

出力指標としてIRRを選ぶ場合は注意が必要です。キャッシュフローの符号が複数回変わると、IRRは複数解になったり解が存在しなかったりします。乱数を振るとこうしたケースが一定割合で発生し、分布そのものが壊れます。分布を見るなら主指標はNPVにするのが安全です(詳しくはIRRの落とし穴)。

使いどころと使いすぎ

モンテカルロが常用されているのは、入力分布に実データの裏づけがある領域です。

  • プロジェクトファイナンス:需要・稼働率・燃料価格・金利が別々に効き、レンダーがDSCR(元利金返済カバー率)の下振れ確率を求めます。P90ケースが融資額やカバナンツの条件交渉に直結します(→プロジェクトファイナンスの基礎
  • 資源・エネルギー:埋蔵量や価格の分布が業界標準として整備されています。そもそもP90/P50/P10という言い方自体、資源業界の埋蔵量評価に由来する用語法です
  • 保険数理・年金:損失分布そのものが商品設計と価格決定の対象であり、シミュレーションは前提の一部です
  • 銀行のリスク管理:VaR(バリュー・アット・リスク)や期待ショートフォールの算出手法として定着しています

使いすぎの戒め

一方で、一般的なM&AのDCFやLBOモデルにモンテカルロを載せる場面では、立ち止まる価値があります。入力分布の根拠が「なんとなく±20%」であれば、出てくる「NPVがマイナスになる確率は12.3%」という数字に情報はありません。桁数の精緻さが根拠の薄さを覆い隠します。これがこの手法の最大のリスクです。

実務的な規律として、次の一線を引くことをおすすめします。

  • 「その分布はどこから来たのか」を1文で説明できないなら、モンテカルロは使わない。感応度分析とシナリオ分析で十分です
  • 投資委員会の議論は、ベース/アップサイド/ダウンサイドの3本で回ることが圧倒的に多く、それは怠慢ではなく説明可能性を優先した合理的な選択です
  • 順序を守る:①ベースケースを作る → ②感応度分析で効くドライバを特定する → ③そのドライバに実データまたは明確な根拠のある分布を与えられる場合に限り、モンテカルロに進む

面接での答え方(30秒回答例)

Q:モンテカルロシミュレーションとは何か、感応度分析との違いを含めて説明してください。
「入力を1つの値ではなく確率分布で与え、乱数を使って数千回モデルを回し、出力を分布として得る手法です。感応度分析が『入力を動かすと答えがいくら変わるか』を示すのに対し、モンテカルロは『その答えがどれくらい起こりやすいか』まで示せます。実務で見るのは平均ではなく、P10・P50・P90と下振れ確率です。ただし出力の質は入力分布の根拠で決まるので、分布の出どころを説明できない案件ではシナリオ分析のほうが誠実だと考えています。プロジェクトファイナンスや資源案件のように、分布の実績データがある領域が本来の出番です。」

よくある質問(FAQ)

試行回数は何回にすればよいですか。

見たい統計量によります。平均や中央値なら1,000回でおおむね安定します。推定誤差は「標準偏差÷√試行回数」で縮むため、標準偏差が80百万円なら1,000試行で約2.5百万円、10,000試行で0.8百万円です。一方、P5やP95のような裾の分位点は、その領域に落ちる試行が全体の5%しかないため、10,000回以上を目安にしてください。なお、精度を10倍にするには試行回数は100倍必要です。試行回数を増やすより入力分布の根拠を固めるほうが、多くの場合は効果的です。

Excelのアドインは必要ですか。

最小構成なら不要です。RAND・NORM.INV・データテーブルの3つで1,000試行は組めます。アドインが効いてくるのは、相関行列を指定した多変量サンプリング、三角分布や対数正規分布など標準関数にない分布の利用、乱数シードの固定による結果の再現性確保、といった場面です。試行数が数万を超えてExcelが重くなったら、Pythonへ移すほうが実務的です。

まとめ

モンテカルロシミュレーションは、答えを「1つの数字」から「分布」へ変える手法です。原理はサイコロ2個の和で確認したとおり、起こり方の場合の数を数え上げることに尽きます(全36通り、和7は6通りで6/36=1/6、和2と和12は各1/36)。列挙できないほど複雑なモデルで、その数え上げを乱数に代行させているだけです。

Excelでも RAND・NORM.INV・データテーブルがあれば1,000試行は組めますし、読むべき指標もP10/P50/P90と下振れ確率と明快です。難所は技術ではなく入力分布の根拠にあります。出力の分布は、入力の分布の写像でしかありません。「その分布はどこから来たのか」に答えられるかどうかが、この手法を使ってよいかどうかの唯一の判定基準です。答えられないなら、感応度分析で止めておくほうが、実務家として誠実です。

出典・参考(2026-08-01確認)

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