モンテカルロシミュレーションで破産確率を計算する理由
FXトレーディングを続けていると、必ず直面する問題があります。それは「どのくらいリスクをとれば、統計的に破産せずに利益を積み上げられるのか」という問いです。私が金融機関のシステム部門にいた時代、トレーディング本部はこの問題を解決するために、モンテカルロシミュレーション(以下、MCS)を日常的に使用していました。
モンテカルロシミュレーションとは、過去の取引結果をランダムに並び替えて何千回も試行し、破産確率やドローダウンの分布を統計的に明らかにする手法です。単純な期待値計算とは異なり、連敗時の資金流出やリスク管理の現実的な効果を数値化できるため、プロの運用機関でも採用されています。
試行回数を増やすことで、実現可能性が低い極端なドローダウンシナリオまで可視化できます。金融規制当局も「ストレステスト」という名称で同じ発想を使い、金融機関の健全性をチェックしています。
破産確率とドローダウンの統計的意味
まず理解すべき基本概念を整理します。破産確率(Ruin Probability)とは、現在の口座資金を失う確率を指します。ただし、FXでは完全な破産より前に「ロスカット」によって強制的に取引が終了されるため、実際には「許容ドローダウン範囲を超える確率」を計算することになります。
例えば、初期資金100万円でトレーディングを始め、許容最大ドローダウンを30%(30万円の損失)と設定したとします。この場合、統計的には何回のトレーディングサイクルを経験すると、30万円以上の損失を被る確率がどの程度か、という計算が破産確率の実務的な定義になります。
金融機関では、この計算にVaR(Value at Risk)やCVaR(Conditional Value at Risk)といった高度な統計手法を組み合わせます。しかし、個人トレーダーにとっては、過去の取引結果を活用したモンテカルロシミュレーションで十分な精度が得られます。
私が見てきた機関投資家の運用ルールでは、破産確率を1%未満に抑えることが一般的な目標でした。つまり、100年間毎日取引しても、99日間は耐えられるという設定です。これは極めて保守的ですが、長期的に資金を守る観点からは理に適っています。
モンテカルロシミュレーションの計算ステップ
ステップ1:過去の取引記録を整理する
まず必要なのは、実際の取引記録です。最低でも50回、理想的には100回以上の独立した取引(同一の戦略による)の損益結果を用意してください。重要なのは、この記録が「同じ戦略・同じロット数で実施した取引」であることです。
記録に含めるべき項目:
- 取引日時
- エントリー価格と決済価格
- 1トレードあたりの損益額(ドル建て)
- 使用したロット数
- ドローダウン中の連続取引か否か
実務的には、ほとんどのFX業者のプラットフォーム(MetaTraderなど)は取引履歴をCSV形式でエクスポートできます。XMTradingの場合、顧客マイページから「取引履歴」をダウンロードすれば、このデータが手に入ります。
ステップ2:リターンの分布を確認する
次に、各取引の損益額を初期資金の割合で標準化します。例えば、初期資金100万円で5,000円の利益を得た場合、リターンは0.5%です。この全取引のリターン率の平均値と標準偏差を算出します。
金融機関のシステムでは、ここで「正規分布に従うか」を検定しますが、個人の取引結果は往々にして正規分布から外れています(特に極端なドローダウンが起きやすい)。そのため、シミュレーション時には実際のリターン分布から直接サンプリングする「ノンパラメトリック法」が現実的です。
ステップ3:ランダム試行を実施する
ここがモンテカルロシミュレーションの核です。過去の取引結果をランダムに並び替えて、仮想的な新しい取引シーケンスを作ります。例えば、過去100回の取引結果が [+1%, -0.5%, +2%, -1.5%, …] だとすれば、これを [+2%, +1%, -1.5%, -0.5%, …] というように並べ替えるイメージです。
この並び替えた結果に基づいて、口座残高の推移をシミュレートします。初期資金から始まり、各取引のリターンを適用していき、もし残高がゼロに到達したらそこで終了(破産判定)。この試行を1,000回~10,000回繰り返します。
試行回数が多いほど統計的な精度が上がりますが、Excelで手計算する場合は1,000回程度で十分です。
ステップ4:破産確率を算出する
1,000回の試行のうち、破産に至った(残高ゼロになった)シミュレーションの割合が、破産確率です。例えば、1,000回のうち3回破産したなら、破産確率は0.3%ということになります。
実践例:Excelを使った計算
具体的に数値を使った例を示します。あなたの過去100回の取引記録から以下が判明したとします:
| 項目 | 値 |
| 初期資金 | 100万円 |
| 平均リターン(1トレード) | +0.8% |
| リターンの標準偏差 | 2.1% |
| 勝率 | 54% |
| 最大ドローダウン(過去実績) | -18% |
この条件で、過去100回の取引をランダムに並び替えて10,000回のシミュレーションを行うとします。Excelの「RANDBETWEEN」関数や「INDEX+RAND」の組み合わせで、過去の取引結果をランダムサンプリングできます。
シミュレーション結果の一例:
| シミュレーション結果 | 数値 |
| 破産(口座資金ゼロ)に至った試行数 | 12回 / 10,000回 |
| 破産確率 | 0.12% |
| 95%信頼区間での最大ドローダウン | -28% |
| 99%信頼区間での最大ドローダウン | -35% |
この結果から読み取れることは、「過去の統計から見れば、破産確率は約0.12%であり、99%の確率で-35%以上のドローダウンには耐えられる設計になっている」ということです。ただし、これは過去のデータが将来も同じ分布で再現されることを前提としています。
過去の100回の取引が「統計的に独立」していることが前提です。連続して同じ方向に負けが続く時期がある場合、単純なランダム並び替えではそのリスクを過小評価する可能性があります。金融機関ではこれを補正するため、「自己相関性(Autocorrelation)の検定」を行います。
Pythonを使った自動化
より大規模なシミュレーションを行う場合は、Pythonなどのプログラミング言語を使うと効率的です。簡単な例を示します:
“`python
import numpy as np
import pandas as pd
# 過去の取引リターン(%)を配列で指定
returns = np.array([0.8, -0.3, 1.2, -1.5, 0.5, …])
initial_capital = 1000000
n_simulations = 10000
ruin_count = 0
for _ in range(n_simulations):
capital = initial_capital
shuffled_returns = np.random.permutation(returns)
for ret in shuffled_returns:
capital = capital * (1 + ret / 100)
if capital <= 0:
ruin_count += 1
break
ruin_probability = ruin_count / n_simulations
print(f”破産確率: {ruin_probability:.4f} ({ruin_probability*100:.2f}%)”)
“`
このコードは、過去のリターン配列を10,000回ランダムに並び替え、各シミュレーションで資金がゼロになるかを判定しています。実行時間は数秒~数十秒で完了します。
実務的なポイント:プロのトレーダーが見ている指標
私が金融機関で携わっていた運用チームが、破産確率と同じくらい重視していた指標があります。それは「連敗時の資金減少率」と「回復に必要なトレード数」です。
例えば、-2%の損失が5回連続で起きた場合、初期資金は約9.9%減少します(複利効果)。その後、プラス2.2%のリターンを5回重ねて初めて元本に戻ります。この「非対称性」を理解することが、リスク管理で最も大切なポイントです。
モンテカルロシミュレーションは、この非対称性を統計的に可視化する唯一の手法です。単純な期待値(平均値)だけを見ていると、連敗時の心理的・資金的ダメージを過小評価してしまいます。
ドローダウン許容度の決め方
計算式としては、Kelly基準を応用した以下の考え方が理論的です:
許容ロット数 = (初期資金 × 破産許容確率) / (1トレード最大損失額 × 目標破産確率)
ただし、実務的には以下のシンプルなルールをお勧めします:
- 保守的(推奨):初期資金の15~20%のドローダウンを許容し、破産確率1%未満を目指す
- 中程度:初期資金の25~30%のドローダウン許容、破産確率3~5%
- アグレッシブ:初期資金の40%以上、破産確率10%超(極めて危険)
金融規制当局は、機関投資家に対して「95%信頼区間でのVaRを毎日報告する」ことを義務付けています。これはモンテカルロシミュレーション的な思考と本質的に同じです。つまり、この手法は学術的なものではなく、現在進行形で金融システムの中核で使われているということです。
限界と改善方法
シンプルなモンテカルロシミュレーションにも限界があります。最大の問題は「過去のリターン分布が将来も再現される」という仮定です。市場環境が大きく変わった場合、このモデルは機能しません。
改善方法として、金融機関で採用されているアプローチ:
- ストレステスト:過去の極端な市場イベント(2008年金融危機、2020年コロナショックなど)を再現し、そこでの損失シナリオをシミュレート
- ボラティリティ加重:最近のデータほど大きな重みを付け、市場環境の変化に対応
- シナリオ分析:特定の経済イベント(金利上昇、地政学的リスクなど)を仮定して、複数のシナリオを並行実行
個人トレーダーであれば、少なくとも「過去1年と過去3年で別々にシミュレーションを実行し、結果に大きな乖離がないか」を確認することを推奨します。
まとめ:破産確率を知ることの実務的価値
モンテカルロシミュレーションで破産確率を計算することは、単なる数学的な興味の対象ではなく、実務的には「自分のトレーディング戦略がどの程度のリスクを孕んでいるか」を客観的に把握するためのツールです。
金融機関では、この計算結果に基づいてポジションサイズ(ロット数)を決定し、ストップロスレベルを設定しています。個人トレーダーにおいても、同じ論理を適用することで、感情的な判断ではなくデータドリブンなリスク管理が可能になります。
破産確率が0.1%であれば、統計的には「1,000回のトレーディングサイクルを経験してもほぼ生き残れる」という確信を持てます。逆に5%以上であれば「100回のサイクルで数回の破産リスクがある」と認識し、ロット数を減らすべきサインです。
XMTradingなどの業者で小ロットから始める際も、このシミュレーション結果を参考に、現実的なロット数を決めることをお勧めします。デモ口座で戦略をテストした後、リアル口座で運用する際には、必ずこの破産確率計算を挟むことが、長期的な資金管理の要となります。
※本記事の情報は2026年04月時点のものです。最新情報は各公式サイトをご確認ください。本記事にはアフィリエイトリンクが含まれます。