🎓 レベル:標準 | 重要度:A(必須)
📎 前提:経営の意思決定とシナリオ分析・VaR(バリュー・アット・リスク) | 関連:CVaR(期待ショートフォール)・ベイズ統計(サンプリング)
要点(BLUF)
- モンテカルロ・シミュレーションは、不確実な入力に確率分布を与えて多数回ランダムに引き、結果(NPV・利益など)の分布=リスクプロファイルを得る手法です。
- 点推定(1つの期待値)では見えない損失確率・分布の形・VaR/CVaRを、実務的に求められます。
- シナリオ分析(経営の意思決定とシナリオ分析)が数点の離散シナリオなら、モンテカルロは全要因を同時に連続的に動かす感度分析の最終形。要因間の相互作用も自動で織り込まれます。
1. なぜモンテカルロか
経営の意思決定とシナリオ分析は、悲観・基準・楽観の数シナリオで結論の幅を見ました。しかし現実の不確実性は連続的で、要因も複数。「悲観と楽観の間」がどんな分布になるか、複数要因が同時にブレたら結果はどう散らばるか——離散シナリオでは捉えきれません。
モンテカルロは、各入力に確率分布(三角分布・正規分布など)を与え、そこから何万通りもの組み合わせをランダムに引いて、そのたびに結果を計算します。結果を集めると、出力の分布が得られる。これがリスクプロファイル——「結果がどんな確率でどの値になるか」の全体像です。点推定が「平均は2876」と1点を言うのに対し、モンテカルロは「平均2876だが、48%の確率で赤字、最悪は−10万」と分布を語ります。
2. NPVのリスクプロファイルを作る
設備投資のNPVを、単価・原価・数量に三角分布(最小・最頻・最大)を与えてシミュレートします。
import numpy as np
rng = np.random.default_rng(7)
N = 100_000
r = 0.10
pv_factor = np.sum(1 / (1+r)**np.arange(1, 5)) # 4年の年金現価係数
# 不確実な入力(三角分布:最小・最頻・最大)
price = rng.triangular(80, 100, 115, N) # 単価(万円)
unit_cost = rng.triangular(50, 60, 75, N) # 単位原価(万円)
volume = rng.triangular(700, 1000, 1300, N) # 数量
fixed = 20000 # 固定費(万円/年)
annual_profit = (price - unit_cost) * volume - fixed
npv = annual_profit * pv_factor - 50000 # 初期投資 50000 万円
print(f"NPV 平均 = {npv.mean():,.0f} 万円")
print(f"NPV 標準偏差 = {npv.std():,.0f} 万円")
print(f"P(NPV < 0)(損失確率) = {np.mean(npv < 0):.3f}")
loss = -npv
var95 = np.quantile(loss, 0.95)
cvar95 = loss[loss >= var95].mean()
print(f"損失の95% VaR = {var95:,.0f} 万円")
print(f"損失の95% CVaR = {cvar95:,.0f} 万円")
出力:
NPV 平均 = 2,876 万円
NPV 標準偏差 = 31,537 万円
P(NPV < 0)(損失確率) = 0.478
損失の95% VaR = 47,380 万円
損失の95% CVaR = 57,831 万円
出力の意味:期待NPVは+2,876万——点推定だけ見れば「わずかにプラス、やる価値あり」。ところがリスクプロファイルを見ると、損失確率は47.8%(ほぼコイン投げ)、標準偏差は3万超で平均をはるかに上回るブレ。95% VaRは約4.7万、CVaR(裾の平均)は約5.8万の損失。**「平均はプラスだが、半分近い確率で赤字、最悪は数万の損失」**という実像が見えます。点推定の「平均+2876」だけで投資を決めると、この大きな下方リスクを見落とす——モンテカルロは期待値の裏にある分布を暴きます。
3. リスクプロファイルの可視化と意思決定
得られたNPV分布をヒストグラムにすると、意思決定者が直感的に理解できるリスクプロファイルになります。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
rng = np.random.default_rng(7); N = 100_000; r = 0.10
pv_factor = np.sum(1/(1+r)**np.arange(1, 5))
price = rng.triangular(80, 100, 115, N)
unit_cost = rng.triangular(50, 60, 75, N)
volume = rng.triangular(700, 1000, 1300, N)
npv = ((price - unit_cost)*volume - 20000)*pv_factor - 50000
plt.figure(figsize=(7.5, 4.5))
plt.hist(npv, bins=120, density=True, alpha=0.6, color="seagreen")
plt.axvline(0, color="black", lw=1)
plt.axvline(npv.mean(), color="red", lw=2, label=f"平均NPV={npv.mean():,.0f}")
plt.axvline(np.quantile(npv, 0.05), color="orange", lw=2,
label=f"5%点={np.quantile(npv,0.05):,.0f}")
plt.xlabel("NPV(万円)"); plt.ylabel("確率密度")
plt.title(f"NPVのリスクプロファイル(損失確率={np.mean(npv<0):.0%})")
plt.legend(); plt.grid(alpha=0.3); plt.tight_layout(); plt.show()
図の意味:NPV分布が0(黒線)をまたいで広がり、左側(赤字)に相当の面積があります。赤線の平均はわずかにプラスですが、オレンジの5%点(下側5%の境界)は大きくマイナス——稀ではない悪いシナリオで深い損失。この図を経営層に見せれば、「期待値はプラスだが、これだけの下方リスクを許容できるか」というリスク選好の議論(リスク選好と効用の凹凸)に持ち込めます。点推定の1つの数字では決して起きない対話です。モンテカルロの出力分布に効用(期待効用と効用関数)を適用すれば期待効用での判断に、VaR/CVaR(第5章)を適用すればリスク量での判断に繋がります。
数式の直観的意味:大数の法則で分布を「描く」
モンテカルロが機能する根拠は大数の法則です。出力 の分布を解析的に求めるのは、 が非線形・多変数だとほぼ不可能。しかし、入力 から 組サンプリングして を計算すれば、その経験分布は で真の分布に収束します。期待値や確率は標本平均で推定でき、誤差は で縮む——次元 によらない収束率が、高次元(多数の入力)で効きます(経営の意思決定とシナリオ分析の「連続の同時変動」)。
決定的に重要なのは、 を同時に引くので、要因間の相互作用や相関が自動で織り込まれること。一方向感度(偏微分)が見落とす「価格と数量が同時に悪化する」ような複合効果も、サンプリングなら自然に現れます。さらに入力分布に相関を入れたり(多変量サンプリング)、ベイズの事後分布から引いたり(ベイズ更新と意思決定の不確実性の伝播)と拡張も容易。モンテカルロは、感度分析を「偏微分 → 数シナリオ → 全要因の連続同時変動」と高解像度化した到達点であり、意思決定分析の理論(期待値・効用・リスク測度)を実務の数値に変換する万能の橋です。サンプリング法の数理(収束の加速・分散低減・MCMC)はベイズ統計・計算統計のturfへ繋ぎます。
⚠️ よくある誤解
- 「入力分布は適当でよい」ではない:出力の質は入力分布の質で決まります(garbage in, garbage out)。最小・最頻・最大や過去データから、入力分布を慎重に設定します。
- 「平均だけ見れば十分」ではない:モンテカルロの価値は分布全体(損失確率・裾・VaR/CVaR)にあります。平均だけ取り出すなら点推定で済みます。
- 「入力は独立」と決めつけない:要因に相関があるのに独立でサンプリングすると、合算リスクを誤ります(不況時に複数要因が同時悪化)。相関は多変量分布で入れます。
- 「N を増やせば必ず正確」ではない:収束は で、稀な裾の事象の推定には大量のサンプルが要ります。入力モデルが誤っていれば、N をいくら増やしても正しい答えには近づきません。
対応シミュレーション
本文のコードで、入力分布の幅(不確実性)を変えると損失確率やVaR/CVaRが動きます。入力に相関を入れる、初期投資や割引率を変える、出力に効用を適用して期待効用で評価する、といった拡張も同じ枠組みで可能です。
関連ノート
- 第9章 応用 目次
- 経営の意思決定とシナリオ分析 — 前提:離散シナリオの連続版がモンテカルロ
- VaR(バリュー・アット・リスク) — 出力分布からVaRを読む
- CVaR(期待ショートフォール) — 出力分布の裾(CVaR)を測る
- リスク選好と効用の凹凸 — リスクプロファイルとリスク選好の対話
- 意思決定分析・リスク分析 全体目次