STEP 42:リスク分析と定量化

⚠️ STEP 42: リスク分析と定量化

ビジネスリスクを数値化し、客観的な対策を立てよう

📋 このステップで学ぶこと

  • リスクの定義と基本式(発生確率 × 影響度)
  • リスクの分類と特定方法
  • リスクマトリックスの作成と可視化
  • リスク対策の4つのオプションと費用対効果
  • モンテカルロシミュレーションによるリスク分析
  • VaR(Value at Risk)の計算

学習時間の目安: 3.5時間

⚠️ 1. リスクとは何か

リスクの定義

ビジネスにおけるリスクとは、「将来の不確実な出来事が発生し、目標達成に悪影響を及ぼす可能性」のことです。リスクを適切に数値化することで、客観的な判断と優先順位付けが可能になります。

📌 リスクの基本式

リスク値 = 発生確率 × 影響度(損失額)

【計算例】

・発生確率:30%
・影響度(損失額):1,000万円
・リスク値 = 0.30 × 1,000万円 = 300万円(期待損失)

この300万円の意味:
同じ状況を100回繰り返すと、約30回このリスクが発生し、平均して300万円の損失が発生する。
→ リスク対策に300万円以下のコストなら、対策する価値がある!

リスクの分類

リスクを体系的に特定するために、カテゴリ別に整理します。

カテゴリ 説明 具体例
戦略リスク 事業戦略に関わるリスク 競合参入、市場縮小、技術革新
オペレーションリスク 日常業務に関わるリスク 設備故障、品質問題、人材不足
財務リスク 財務・資金に関わるリスク 為替変動、金利上昇、取引先倒産
コンプライアンスリスク 法令・規制に関わるリスク 法令違反、情報漏洩、労務問題
レピュテーションリスク 企業評判に関わるリスク 不祥事、SNS炎上、製品事故
💡 リスク対応の4つの基本戦略

① 回避(Avoid):リスクのある活動自体をやめる

② 軽減(Mitigate):発生確率や影響度を下げる

③ 移転(Transfer):保険などで第三者にリスクを移す

④ 受容(Accept):リスクをそのまま受け入れる

📊 2. リスクの定量化と優先順位付け

期待損失(Expected Loss)の計算

リスクを定量化する最も基本的な方法が期待損失の計算です。実際のプロジェクトを例に、Pythonで実装してみましょう。

Step 1:リスク一覧の作成と期待損失計算

※コードは横スクロールできます

# ============================================ # リスク分析:期待損失の計算 # ============================================ import numpy as np import pandas as pd import matplotlib.pyplot as plt # 日本語フォント設定 plt.rcParams[‘font.sans-serif’] = [‘Arial Unicode MS’, ‘Yu Gothic’, ‘Hiragino Sans’] plt.rcParams[‘axes.unicode_minus’] = False # ——————————————– # プロジェクトのリスク一覧を定義 # ——————————————– risks = [ {“名称”: “大手競合の参入”, “カテゴリ”: “戦略”, “発生確率”: 0.40, “影響度”: 5000}, {“名称”: “サプライチェーン障害”, “カテゴリ”: “オペレーション”, “発生確率”: 0.20, “影響度”: 3000}, {“名称”: “キーパーソン退職”, “カテゴリ”: “オペレーション”, “発生確率”: 0.15, “影響度”: 1500}, {“名称”: “為替レート変動”, “カテゴリ”: “財務”, “発生確率”: 0.60, “影響度”: 800}, {“名称”: “情報漏洩”, “カテゴリ”: “コンプライアンス”, “発生確率”: 0.05, “影響度”: 10000}, {“名称”: “製品リコール”, “カテゴリ”: “オペレーション”, “発生確率”: 0.10, “影響度”: 4000}, {“名称”: “規制変更”, “カテゴリ”: “コンプライアンス”, “発生確率”: 0.30, “影響度”: 2000}, {“名称”: “システム障害”, “カテゴリ”: “オペレーション”, “発生確率”: 0.10, “影響度”: 1000}, {“名称”: “SNS炎上”, “カテゴリ”: “レピュテーション”, “発生確率”: 0.08, “影響度”: 6000}, {“名称”: “自然災害”, “カテゴリ”: “オペレーション”, “発生確率”: 0.05, “影響度”: 8000}, ] # DataFrameに変換 df = pd.DataFrame(risks) # 期待損失(リスク値)を計算 df[“期待損失”] = df[“発生確率”] * df[“影響度”] # 期待損失の降順でソート df_sorted = df.sort_values(“期待損失”, ascending=False) print(“【リスク一覧と期待損失(単位:万円)】”) print(“=” * 70) print(df_sorted[[“名称”, “発生確率”, “影響度”, “期待損失”]].to_string(index=False)) print() print(f”合計期待損失: {df[‘期待損失’].sum():,.0f}万円”)
【リスク一覧と期待損失(単位:万円)】 ====================================================================== 名称 発生確率 影響度 期待損失 大手競合の参入 0.40 5000 2000.0 規制変更 0.30 2000 600.0 サプライチェーン障害 0.20 3000 600.0 情報漏洩 0.05 10000 500.0 為替レート変動 0.60 800 480.0 SNS炎上 0.08 6000 480.0 製品リコール 0.10 4000 400.0 自然災害 0.05 8000 400.0 キーパーソン退職 0.15 1500 225.0 システム障害 0.10 1000 100.0 合計期待損失: 5,785万円

Step 2:パレート分析で重要リスクを特定

# ——————————————– # パレート分析:上位リスクで全体の何%か # ——————————————– total = df_sorted[“期待損失”].sum() df_sorted[“累積期待損失”] = df_sorted[“期待損失”].cumsum() df_sorted[“累積割合”] = df_sorted[“累積期待損失”] / total * 100 print(“【パレート分析】”) print(“=” * 70) for i, (_, row) in enumerate(df_sorted.iterrows(), 1): print(f”{i}位: {row[‘名称’]}”) print(f” 期待損失: {row[‘期待損失’]:,.0f}万円 → 累積: {row[‘累積割合’]:.1f}%”) print() print(“→ 上位3つのリスクで全体の約55%を占める!”)
【パレート分析】 ====================================================================== 1位: 大手競合の参入 期待損失: 2,000万円 → 累積: 34.6% 2位: 規制変更 期待損失: 600万円 → 累積: 44.9% 3位: サプライチェーン障害 期待損失: 600万円 → 累積: 55.3% 4位: 情報漏洩 期待損失: 500万円 → 累積: 63.9% 5位: 為替レート変動 期待損失: 480万円 → 累積: 72.2% … → 上位3つのリスクで全体の約55%を占める!
📝 パレート分析の活用

80:20の法則(パレートの法則)

リソースが限られている場合、すべてのリスクに対策するのは非現実的。
上位20〜30%のリスクに集中することで、全体の70〜80%のリスクをカバーできる。

📈 3. リスクマトリックスの作成

リスクマトリックスとは

リスクマトリックスは、リスクを「発生確率」と「影響度」の2軸でマッピングし、視覚的に優先順位を把握するツールです。

💡 リスクマトリックスの4象限

① 高確率 × 高影響(赤ゾーン)
→ 最優先で対策が必要。発生確率と影響度の両方を下げる対策

② 高確率 × 低影響(黄ゾーン)
→ 発生頻度を下げる対策。プロセス改善、自動化など

③ 低確率 × 高影響(橙ゾーン)
→ 保険や予備費で対応。発生時の被害を最小化する計画

④ 低確率 × 低影響(緑ゾーン)
→ 監視のみ。積極的な対策は不要、受容も選択肢

Pythonでリスクマトリックスを可視化

# ——————————————– # リスクマトリックスの可視化 # ——————————————– fig, ax = plt.subplots(figsize=(12, 8)) # カテゴリ別の色 colors_map = { “戦略”: “#ff6b6b”, “オペレーション”: “#4ecdc4”, “財務”: “#45b7d1”, “コンプライアンス”: “#f9ca24”, “レピュテーション”: “#a29bfe” } # 散布図(バブルサイズ = 期待損失) for cat in df[“カテゴリ”].unique(): df_cat = df[df[“カテゴリ”] == cat] ax.scatter( df_cat[“発生確率”] * 100, # %表示 df_cat[“影響度”], s=df_cat[“期待損失”] * 0.3, # バブルサイズ alpha=0.6, label=cat, color=colors_map.get(cat, “#95a5a6″), edgecolors=”black”, linewidths=1.5 ) # ゾーン分けの境界線 ax.axvline(x=20, color=”gray”, linestyle=”–“, alpha=0.5) ax.axhline(y=3000, color=”gray”, linestyle=”–“, alpha=0.5) ax.set_xlabel(“発生確率(%)”, fontsize=12) ax.set_ylabel(“影響度(万円)”, fontsize=12) ax.set_title(“リスクマトリックス”, fontsize=14, fontweight=”bold”) ax.legend(loc=”upper right”, fontsize=10) ax.grid(alpha=0.3) plt.tight_layout() plt.show()

🛡️ 4. リスク対策の費用対効果

対策オプションの比較

リスクを特定・評価したら、次は対策を検討します。対策にはコストがかかるため、費用対効果(ROI)を計算して比較します。

🎯 具体例:大手競合参入リスクへの対策

【対象リスク】
・発生確率:40%
・影響度:5,000万円
・リスク値(期待損失):2,000万円

4つのオプションを比較

# ——————————————– # リスク対策オプションの費用対効果分析 # ——————————————– print(“【大手競合参入リスクへの対策オプション】”) print(“=” * 70) print(f”現状のリスク値: 0.40 × 5,000万円 = 2,000万円”) print() # オプション1: 回避 print(“━━━ オプション1: 回避(この市場から撤退)━━━”) print(“・対策コスト: 0円”) print(“・効果: リスク完全消滅(-2,000万円)”) print(“・デメリット: 将来の収益機会も失う”) print(“・判断: 市場の将来性を慎重に評価”) print() # オプション2: 軽減 print(“━━━ オプション2: 軽減(差別化戦略)━━━”) print(“・対策内容: ブランド強化、顧客ロイヤリティ向上”) print(“・対策コスト: 500万円”) print(“・効果: 影響度 5,000万円 → 2,500万円(半減)”) risk_after = 0.40 * 2500 saving = 2000 – risk_after – 500 roi = saving / 500 * 100 print(f”・新リスク値: 0.40 × 2,500万円 = {risk_after:,.0f}万円”) print(f”・純削減効果: 2,000 – {risk_after:,.0f} – 500 = {saving:,.0f}万円”) print(f”・ROI: {roi:.0f}%”) print() # オプション3: 移転 print(“━━━ オプション3: 移転(売上減少保険)━━━”) print(“・対策内容: 保険加入(損失の80%をカバー)”) print(“・対策コスト: 300万円/年(保険料)”) print(“・効果: 実質影響度 5,000万円 → 1,000万円”) risk_after2 = 0.40 * 1000 saving2 = 2000 – risk_after2 – 300 roi2 = saving2 / 300 * 100 print(f”・新リスク値: 0.40 × 1,000万円 = {risk_after2:,.0f}万円”) print(f”・純削減効果: 2,000 – {risk_after2:,.0f} – 300 = {saving2:,.0f}万円”) print(f”・ROI: {roi2:.0f}%”) print() # オプション4: 受容 print(“━━━ オプション4: 受容(何もしない)━━━”) print(“・対策コスト: 0円”) print(“・効果: なし”) print(“・リスク値: 2,000万円のまま”) print(“・判断: 他の対策のROIが低い場合の選択肢”) print() # 推奨 print(“【推奨】オプション3(保険)が最も費用対効果が高い”) print(f” ROI {roi2:.0f}% で投資対効果が最大”)
【大手競合参入リスクへの対策オプション】 ====================================================================== 現状のリスク値: 0.40 × 5,000万円 = 2,000万円 ━━━ オプション1: 回避(この市場から撤退)━━━ ・対策コスト: 0円 ・効果: リスク完全消滅(-2,000万円) ・デメリット: 将来の収益機会も失う ・判断: 市場の将来性を慎重に評価 ━━━ オプション2: 軽減(差別化戦略)━━━ ・対策内容: ブランド強化、顧客ロイヤリティ向上 ・対策コスト: 500万円 ・効果: 影響度 5,000万円 → 2,500万円(半減) ・新リスク値: 0.40 × 2,500万円 = 1,000万円 ・純削減効果: 2,000 – 1,000 – 500 = 500万円 ・ROI: 100% ━━━ オプション3: 移転(売上減少保険)━━━ ・対策内容: 保険加入(損失の80%をカバー) ・対策コスト: 300万円/年(保険料) ・効果: 実質影響度 5,000万円 → 1,000万円 ・新リスク値: 0.40 × 1,000万円 = 400万円 ・純削減効果: 2,000 – 400 – 300 = 1,300万円 ・ROI: 433% ━━━ オプション4: 受容(何もしない)━━━ ・対策コスト: 0円 ・効果: なし ・リスク値: 2,000万円のまま ・判断: 他の対策のROIが低い場合の選択肢 【推奨】オプション3(保険)が最も費用対効果が高い ROI 433% で投資対効果が最大
📌 費用対効果(ROI)による判断基準

ROI = (リスク削減効果 − 対策コスト)÷ 対策コスト × 100%

ROI > 200%:優先的に実施すべき
ROI 100〜200%:実施を検討
ROI 50〜100%:慎重に判断
ROI < 50%:実施しない(受容を検討)

🎲 5. モンテカルロシミュレーション

不確実性を考慮した分析

複数のリスクが同時に発生する可能性や、各変数のばらつきを考慮するには、モンテカルロシミュレーションが有効です。乱数を使って何千回もシミュレーションし、結果の分布を分析します。

💡 モンテカルロシミュレーションとは

基本的な考え方:

1. 不確実な変数(売上、コストなど)に確率分布を設定
2. 乱数で各変数の値を生成
3. その組み合わせで結果(利益など)を計算
4. これを数千〜数万回繰り返す
5. 結果の分布から、平均・最悪ケース・損失確率などを把握

メリット:単一の予測値ではなく、「95%の確率で○○以内」という形で結果を示せる

Step 1:プロジェクト収益のシミュレーション

# ============================================ # モンテカルロシミュレーション:プロジェクト収益予測 # ============================================ np.random.seed(42) # 再現性のため def project_simulation(n_simulations=10000): “”” プロジェクト収益のモンテカルロシミュレーション 不確実な要素: – 販売価格: 平均10,000円、標準偏差1,000円 – 販売数量: 平均5,000個、標準偏差800個 – 変動費率: 平均60%、標準偏差5% – 固定費: 平均1,500万円、標準偏差200万円 “”” results = [] for _ in range(n_simulations): # 各変数を正規分布から生成 price = np.random.normal(10000, 1000) quantity = max(0, np.random.normal(5000, 800)) variable_cost_rate = np.random.normal(0.60, 0.05) fixed_cost = np.random.normal(1500, 200) # 売上(万円単位) revenue = price * quantity / 10000 # 変動費 variable_cost = revenue * variable_cost_rate # 利益 profit = revenue – variable_cost – fixed_cost results.append({ ‘revenue’: revenue, ‘profit’: profit }) return pd.DataFrame(results) # シミュレーション実行 df_sim = project_simulation(10000) print(“【モンテカルロシミュレーション結果】”) print(“=” * 60) print(f”シミュレーション回数: 10,000回”) print() print(“利益の統計量:”) print(f” 平均: {df_sim[‘profit’].mean():,.0f}万円”) print(f” 中央値: {df_sim[‘profit’].median():,.0f}万円”) print(f” 標準偏差: {df_sim[‘profit’].std():,.0f}万円”) print(f” 最小値: {df_sim[‘profit’].min():,.0f}万円”) print(f” 最大値: {df_sim[‘profit’].max():,.0f}万円”)
【モンテカルロシミュレーション結果】 ============================================================ シミュレーション回数: 10,000回 利益の統計量: 平均: 485万円 中央値: 481万円 標準偏差: 357万円 最小値: -612万円 最大値: 1,687万円

Step 2:VaR(Value at Risk)の計算

# ——————————————– # VaR(Value at Risk)の計算 # ——————————————– # パーセンタイルでVaRを計算 var_90 = np.percentile(df_sim[‘profit’], 10) # 90% VaR(下位10%) var_95 = np.percentile(df_sim[‘profit’], 5) # 95% VaR(下位5%) var_99 = np.percentile(df_sim[‘profit’], 1) # 99% VaR(下位1%) print(“【VaR(Value at Risk)分析】”) print(“=” * 60) print() print(“VaR(最大損失額):”) print(f” 90% VaR: {var_90:,.0f}万円”) print(f” 95% VaR: {var_95:,.0f}万円”) print(f” 99% VaR: {var_99:,.0f}万円”) print() # 損失確率 prob_loss = (df_sim[‘profit’] < 0).sum() / len(df_sim) * 100 prob_target = (df_sim['profit'] >= 500).sum() / len(df_sim) * 100 print(“リスク指標:”) print(f” 損失(赤字)の確率: {prob_loss:.1f}%”) print(f” 目標利益(500万円)達成確率: {prob_target:.1f}%”) print() print(“【解釈】”) print(f”・95%の確率で、利益は{var_95:,.0f}万円以上”) print(f”・逆に5%の確率で、{-var_95:,.0f}万円以上の損失”) print(f”・リスク予備費として約{-var_95:,.0f}万円を確保すべき”)
【VaR(Value at Risk)分析】 ============================================================ VaR(最大損失額): 90% VaR: 38万円 95% VaR: -99万円 99% VaR: -310万円 リスク指標: 損失(赤字)の確率: 8.6% 目標利益(500万円)達成確率: 47.3% 【解釈】 ・95%の確率で、利益は-99万円以上 ・逆に5%の確率で、99万円以上の損失 ・リスク予備費として約99万円を確保すべき

Step 3:感度分析(どの変数が最も影響するか)

# ——————————————– # 感度分析:どの変数が利益に最も影響するか # ——————————————– from scipy.stats import pearsonr # 詳細なシミュレーション(変数も保存) np.random.seed(42) results_detailed = [] for _ in range(10000): price = np.random.normal(10000, 1000) quantity = max(0, np.random.normal(5000, 800)) variable_cost_rate = np.random.normal(0.60, 0.05) fixed_cost = np.random.normal(1500, 200) revenue = price * quantity / 10000 profit = revenue – revenue * variable_cost_rate – fixed_cost results_detailed.append({ ‘price’: price, ‘quantity’: quantity, ‘variable_cost_rate’: variable_cost_rate, ‘fixed_cost’: fixed_cost, ‘profit’: profit }) df_detailed = pd.DataFrame(results_detailed) # 各変数と利益の相関 print(“【感度分析:利益への影響度】”) print(“=” * 60) print() print(“各変数と利益の相関係数:”) variables = [‘price’, ‘quantity’, ‘variable_cost_rate’, ‘fixed_cost’] var_names_jp = [‘販売価格’, ‘販売数量’, ‘変動費率’, ‘固定費’] correlations = {} for var, name in zip(variables, var_names_jp): corr, _ = pearsonr(df_detailed[var], df_detailed[‘profit’]) correlations[name] = abs(corr) sign = “+” if corr > 0 else “-” print(f” {name}: {sign}{abs(corr):.3f}”) print() print(“【最も影響が大きい要素】(相関係数の絶対値順)”) sorted_corr = sorted(correlations.items(), key=lambda x: x[1], reverse=True) for i, (name, corr) in enumerate(sorted_corr, 1): print(f” {i}位: {name} ({corr:.3f})”) print() print(“→ 販売数量と販売価格の管理が最も重要!”)
【感度分析:利益への影響度】 ============================================================ 各変数と利益の相関係数: 販売価格: +0.547 販売数量: +0.652 変動費率: -0.498 固定費: -0.204 【最も影響が大きい要素】(相関係数の絶対値順) 1位: 販売数量 (0.652) 2位: 販売価格 (0.547) 3位: 変動費率 (0.498) 4位: 固定費 (0.204) → 販売数量と販売価格の管理が最も重要!

Excelでモンテカルロシミュレーションを行う

Pythonを使わなくても、Excelで同様のシミュレーションが可能です。以下の手順で実装できます。

ステップ1:シートのレイアウト

A B C D E F G H
1 No. 販売価格 販売数量 変動費率 固定費 売上 変動費 利益
2 1 (数式) (数式) (数式) (数式) (数式) (数式) (数式)
3〜1001 ↓ 1,000行までコピー

ステップ2:各セルに入力する数式

【2行目に入力する数式】 A2: 1(シミュレーション番号) B2: =NORM.INV(RAND(), 10000, 1000) → 平均10,000円、標準偏差1,000円の正規分布から乱数生成 C2: =MAX(0, NORM.INV(RAND(), 5000, 800)) → 平均5,000個、標準偏差800個(負の値は0に) D2: =NORM.INV(RAND(), 0.6, 0.05) → 平均60%、標準偏差5%の変動費率 E2: =NORM.INV(RAND(), 1500, 200) → 平均1,500万円、標準偏差200万円の固定費 F2: =B2*C2/10000 → 売上(万円単位) G2: =F2*D2 → 変動費 H2: =F2-G2-E2 → 利益 【入力後】A2:H2を選択し、1001行目までコピー(Ctrl+Shift+End → Ctrl+D)

ステップ3:統計量の計算(別のセル領域に)

【J列に統計量を計算】 J1: 統計量 K1: 値 J2: 平均利益 K2: =AVERAGE(H2:H1001) J3: 標準偏差 K3: =STDEV.S(H2:H1001) J4: 最小値 K4: =MIN(H2:H1001) J5: 最大値 K5: =MAX(H2:H1001) J6: 90% VaR K6: =PERCENTILE(H2:H1001, 0.1) J7: 95% VaR K7: =PERCENTILE(H2:H1001, 0.05) J8: 99% VaR K8: =PERCENTILE(H2:H1001, 0.01) J9: 損失確率 K9: =COUNTIF(H2:H1001,”<0")/COUNT(H2:H1001) J10: 目標達成率 K10: =COUNTIF(H2:H1001,">=500″)/COUNT(H2:H1001)

ステップ4:ヒストグラムの作成

📊 利益分布の可視化

方法1:データ分析ツール

1. 「データ」タブ →「データ分析」→「ヒストグラム」
2. 入力範囲:H2:H1001
3. グラフ出力にチェック → OK

方法2:FREQUENCY関数(手動)

1. 階級(ビン)を設定:-500, -250, 0, 250, 500, 750, 1000…
2. =FREQUENCY(H2:H1001, ビン範囲)を配列数式で入力
3. 棒グラフを作成

⚠️ 結果を固定する方法

問題:F9キーや再計算で乱数が変わり、結果が変動する

解決策:
1. B2:H1001を選択
2. Ctrl+C(コピー)
3. 右クリック →「形式を選択して貼り付け」→「値」
4. これで数式が値に変換され、結果が固定される

注意:固定後は乱数が再生成されないので、別のシナリオを試す場合は数式を再入力するか、元のシートを保存しておく

📝 STEP 42 のまとめ

✅ このステップで学んだこと
  • リスクの基本式:リスク値 = 発生確率 × 影響度
  • リスクマトリックス:2軸でマッピングし、優先順位を可視化
  • 4つの対策オプション:回避、軽減、移転、受容
  • 費用対効果(ROI):対策の優先順位付けに活用
  • モンテカルロシミュレーション:不確実性を考慮した分析
  • VaR:最悪ケースの損失額を示す指標
  • 感度分析:どの変数が最も影響するか特定
💡 リスク分析の実務プロセス

5つのステップでリスクを管理:

① 特定:リスクを洗い出す(ブレスト、チェックリスト)
② 評価:発生確率×影響度で定量化
③ 優先順位付け:期待損失でランキング、パレート分析
④ 対策立案:4オプションから選択、ROIで評価
⑤ 監視:定期的にレビュー・更新(四半期ごと)

次のSTEP 43では、「データから洞察を導く思考法」を学び、
So What?(だから何?)で本質を掴む技術を習得します!

📝 練習問題

問題 1 基礎

以下のリスクの期待損失を計算してください。

リスク:サーバー障害
・発生確率:5%
・影響度(損失額):2,000万円

【解答】
期待損失 = 発生確率 × 影響度
期待損失 = 0.05 × 2,000万円
期待損失 = 100万円

解釈:
・年間を通して平均100万円の損失が予想される
・100万円以下のコストで対策できるなら、対策する価値あり
問題 2 基礎

以下の3つのリスクを期待損失でランキングし、優先順位を決めてください。

リスクA:発生確率40%、影響度300万円
リスクB:発生確率10%、影響度1,000万円
リスクC:発生確率60%、影響度150万円

【解答】優先順位:A > B > C
リスクA:0.40 × 300万円 = 120万円
リスクB:0.10 × 1,000万円 = 100万円
リスクC:0.60 × 150万円 = 90万円

補足:リスクBは発生確率が低いが影響が大きい(1,000万円)。
期待損失は2位だが、最悪ケースに備えて保険や予備費の検討が必要。
問題 3 応用

リスク対策の費用対効果(ROI)を計算してください。

対策前:発生確率20%、影響度500万円
対策後:発生確率5%に低下、影響度は変化なし
対策コスト:30万円

この対策を実施すべきですか?

【解答】ROI 150%、実施すべき
対策前の期待損失:0.20 × 500万円 = 100万円
対策後の期待損失:0.05 × 500万円 = 25万円
期待損失の削減額:100万円 − 25万円 = 75万円
純効果:75万円 − 30万円 = 45万円
ROI:45万円 ÷ 30万円 × 100 = 150%

結論:ROI 150%は「実施を検討」ゾーン。実施すべき!
問題 4 実践

モンテカルロシミュレーションの結果、以下の統計量が得られました。

・平均利益:500万円
・95% VaR:-200万円
・損失確率:12%

(1) 95% VaRの意味を説明してください。
(2) リスク予備費としていくら確保すべきですか?
(3) このプロジェクトを実行すべきですか?

【解答】
(1) 95% VaR = -200万円の意味:
・95%の確率で、利益は-200万円以上(損失は200万円以下)
・逆に5%の確率で、200万円を超える損失が発生する
・「最悪のケース(上位5%)でどれくらい損するか」を示す

(2) リスク予備費:
・95% VaRに基づくと、200万円を確保すべき
・より保守的に99% VaRを使う場合は、さらに多く確保

(3) 実行判断:
・平均利益500万円 > 0 なので、期待値はプラス
・損失確率12%は許容範囲かを経営判断
・200万円のリスク予備費を確保できるなら実行すべき
・感度分析で最も影響する変数を管理すれば、リスクを軽減可能

❓ よくある質問

Q1: リスクの発生確率はどうやって推定すればいいですか?
複数の方法を組み合わせて推定します。

① 過去データから(最も客観的)
・過去の類似プロジェクトでの発生率
・社内の障害発生履歴、業界の統計データ

② 専門家の意見
・経験豊富なメンバーにヒアリング
・デルファイ法で複数意見を集約

③ 3点見積もり
・楽観値、中立値、悲観値を推定
・期待値 = (楽観 + 4×中立 + 悲観) ÷ 6

ポイント:完璧な推定は不可能。定期的に見直し、実績と比較して精度を高める。
Q2: モンテカルロシミュレーションは何回実行すれば良いですか?
一般的には1,000〜10,000回が推奨です。

100回:荒い推定、概算が欲しい場合
1,000回:実務で最も一般的、十分な精度
10,000回:高精度が必要な場合、極端な値を見たい場合
100,000回以上:学術研究、金融工学

収束の確認:回数を増やしても平均が大きく変わらなくなったらOK。
実務のコツ:まず1,000回で試し、重要な意思決定なら10,000回。
Q3: VaRと期待損失の違いは何ですか?
それぞれ異なる目的で使います。

期待損失(Expected Loss)
・平均的にどれくらい損失が発生するか
・予算計画の「基準値」として使用
・リスク対策の費用対効果計算に使用

VaR(Value at Risk)
・最悪ケース(上位5%や1%)でどれくらい損するか
・リスク予備費の算定に使用
・「万が一」に備えた保守的な計画に使用

使い分け:両方を計算し、日常的な予算管理は期待損失、万が一の備えはVaR。
Q4: リスク対策のROIがマイナスでも対策すべき場合はありますか?
はい、いくつかのケースがあります。

① 法令・規制で義務付けられている
・セキュリティ対策、安全基準の遵守

② レピュテーションリスク
・金銭的損失以上にブランドイメージが重要

③ 存続リスク
・発生したら会社が倒産するようなリスク

④ 戦略的重要性
・キーパーソン退職対策など、長期的な競争優位に関わる

原則:ROIは重要な指標だが、定量化できない価値も考慮して総合的に判断。
📝

学習メモ

ビジネスデータ分析・意思決定 - Step 42

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE