EAのモンテカルロ検証で分かること・分からないこと|取引の並べ替え・再抽出・DDの見方
EAのバックテスト結果を確認するとき、1本の損益曲線だけでは、取引順序が変わった場合や、一部の取引が繰り返し現れた場合に結果がどの程度変わるかは分かりません。
この記事では、既存の取引履歴を材料にしたMonte Carlo / Resamplingの考え方を、Shuffle、Bootstrap、Block Bootstrap、Cost / Execution Variationに分けて整理します。ここで扱う結果は将来予測ではなく、与えられた履歴を別の並び方・抽出方法・コスト仮定で見直したときの分布です。
モンテカルロ検証で最初に分ける4つの方法
| 方法 | 何を変えるか | 主に確認すること |
|---|---|---|
| Shuffle | 同じ取引を1回ずつ使い、順序だけを入れ替える | 取引順序でDDや連敗がどの程度変わるか |
| Bootstrap | 取引を復元抽出し、同じ取引が複数回選ばれることを許す | 観測された取引集合から再抽出した場合の損益・DD分布 |
| Block Bootstrap | 連続した取引ブロックを単位に再抽出する | 取引間の並びや連続性を一部残した再標本化 |
| Cost / Execution Variation | スプレッド、手数料、スリッページ等の明示した仮定を変える | コスト・約定条件に対する感度 |
これらは同じ「Monte Carlo」という名前でまとめられることがありますが、変更している対象が異なります。方法を混ぜると、何に対するRobustnessを見ているのか分からなくなるため、結果は別々に記録します。
先に確認したいこと
- Monte Carlo結果は、将来の利益を予測するものではありません。
- P05 / P50 / P95は、この教材で生成した分布の経験的Percentileであり、将来成績の信頼区間ではありません。
- 入力する取引履歴自体に欠損・条件差・集計ミスがある場合、再標本化しても元データの問題は解消されません。
- Block Bootstrapはblock length、Cost Variationはコスト分布など、追加条件を固定しないと一意の結果になりません。
教材用の12取引データ
以下は計算方法を確認するための教材用データです。実在EAの成績ではありません。
| Completed Trade Net P/L | 120, -80, 90, -140, 60, 110, -70, 50, -100, 130, -60, 80 |
|---|---|
| Initial Balance | 1000 |
| Lot | 固定Lotとして扱う |
| 用途 | 教材用・再現確認用 |
再現条件は、Python random.Random、Seed 20261002、10,000回、方式ごとにRNGをreset、Percentileは (n-1)×q のlinear interpolationです。
Shuffleで確認できること
Shuffleでは12取引をすべて1回ずつ使い、順序だけを入れ替えます。そのため、各runのFinal P/Lは変わりません。一方、利益と損失の並び方が変わるため、途中のPeakからどこまで下がるかという最大DDや、損失が何回連続するかは変わります。
| 指標 | P05 | P50 | P95 |
|---|---|---|---|
| Final P/L | 190 | 190 | 190 |
| Max Drawdown | 140 | 230 | 370 |
| 最大連敗 | 1 | 2 | 4 |
この例では、同じ12取引でも順序によって最大DDの分布が変わります。つまり、元バックテストで観測した1本のDDだけを「唯一のDD」とみなさず、取引順序への感度を確認する材料にできます。
Bootstrapで確認できること
Bootstrapでは、12個の観測取引から12回、復元抽出します。同じ取引が複数回選ばれることも、選ばれない取引が出ることもあります。そのため、Shuffleとは異なりFinal P/L自体も変化します。
| 指標 | P05 | P50 | P95 |
|---|---|---|---|
| Final P/L | -350 | 190 | 720 |
| Max Drawdown | 100 | 230 | 520 |
| 最大連敗 | 1 | 2 | 5 |
ここでP05がマイナスになったからといって、実運用でその確率で損失になると解釈することはできません。この数値は、今回の12取引を今回の復元抽出ルールで10,000回再標本化した分布の位置を示しているだけです。
Block Bootstrapはなぜ別にするのか
通常のBootstrapは個々の取引を独立に抽出します。しかし実際の取引履歴では、相場環境やロジックの状態によって、利益・損失がある程度まとまって現れる場合があります。
Block Bootstrapでは、連続した複数取引を1つのblockとして抽出し、その連続性を一部残します。ただし、block length、重複を許すか、末尾の扱い、circular blockにするかなどで結果が変わります。したがって、これらの条件を固定せずに数値だけを提示することはしません。
Cost / Execution Variationは再標本化と分ける
スプレッド、Commission、Slippage、約定遅延などを変える検証は、取引履歴の並べ替えや再抽出とは別の感度分析です。どのコストを、どの分布・幅・単位で変えるかを明示して初めて再現可能になります。
実際のコスト条件を決めずに「Monte Carloでコストもランダム化した」とだけ書くと、結果の意味を再確認できません。EAFCでは、ResamplingとCost / Execution Variationを別の条件として記録します。
最大DDはどのように見るか
この記事の教材計算では、Initial Balance 1000から各trade P/Lを順番に加算し、途中のEquityのPeakからその後のEquityまでの最大低下幅をMax Drawdownとして確認しています。
これはMT5レポート上のすべてのDD指標と同義ではありません。Balance DD、Equity DD、Relative DDなど、何を分母・基準にするかで表示は変わるため、実データを比較するときは指標定義をそろえてください。
Robustness確認の中での役割
Monte Carlo / ResamplingだけでEAのRobustnessを判断するものではありません。Optimizationに使っていない期間、Forward、Parameter Sensitivity、Walk Forward、異なるMarket Regimeなどは別の確認です。
過剰最適化、IS / OOS、Forward、Parameter Sensitivity、Walk Forwardを含む全体像は、EAの過剰最適化とは?カーブフィッティングをOOS・Forward・パラメータ感度で確認する方法で整理しています。
元データの品質を先に確認する
再標本化の前提になるtrade historyが、どのテスト条件・データ品質から得られたものかも重要です。MT5のreal ticks、History Quality、M1・tick履歴、Tester Journalの確認範囲は、MT5リアルティックの品質をどう確認する?で整理しています。
MT5 Strategy Testerでの基本的なテスト条件のそろえ方は、MT5バックテストのやり方もあわせて確認してください。
Forward Testと役割を分ける
既存の履歴を再標本化するMonte Carloと、未知期間やデモ・リアル環境で新しい取引を蓄積するForward Testは役割が異なります。Forwardの確認方法は、EAフォワードテスト完全ガイドで整理しています。
実務で残す記録
| 項目 | 残す内容 |
|---|---|
| Input | 対象trade数、Net P/L定義、初期残高、入力SHA256 |
| Method | Shuffle / Bootstrap / Block Bootstrap / Cost Variationを区別 |
| Random | RNG、Seed、iterations |
| Block | block length、sampling rule、末尾処理 |
| Cost | spread / commission / slippage等の分布・幅・単位 |
| Metric | Final P/L、Max DD、最大連敗等の定義 |
| Percentile | P05 / P50 / P95等と補間方法 |
よくある確認
Monte Carloで将来の最大DDが分かりますか?
分かりません。既存の入力データと指定した再標本化ルールから得られる分布を確認するもので、将来の最大DDを保証・予測するものではありません。
ShuffleとBootstrapは同じですか?
異なります。Shuffleは同じ取引をすべて1回ずつ使って順序だけを変えます。Bootstrapは復元抽出なので、同じ取引が複数回選ばれることがあります。
P95のDDを推奨資金や推奨ロットに使えますか?
この記事では推奨資金・推奨ロットを提示しません。P95は今回の指定条件で生成した経験的分布の位置であり、将来の損失上限ではありません。
関連ページ
| 確認したい内容 | 関連ページ |
|---|---|
| 過剰最適化・OOS・Forward・Parameter Sensitivityを確認する | EAの過剰最適化とは?カーブフィッティングをOOS・Forward・パラメータ感度で確認する方法 |
| リアルティック・History Qualityを確認する | MT5リアルティックの品質をどう確認する? |
| Forward実績を確認する | EAフォワードテスト完全ガイド |
| MT5バックテストの基本条件を確認する | MT5バックテストのやり方 |
まとめ
EAのMonte Carlo / Resamplingでは、何をランダム化・再抽出したのかを分けて考えることが重要です。Shuffleは取引順序、Bootstrapは観測取引の復元抽出、Block Bootstrapは連続性を残した再抽出、Cost / Execution Variationは明示したコスト・約定条件への感度を確認します。
1本のバックテスト結果を別の角度から確認する材料にはなりますが、将来予測、利益保証、損失上限、推奨ロットを示すものではありません。入力データ、Method、Seed、iterations、Metric定義を残し、OOS / Forward / Parameter Sensitivity等と分けて確認してください。
お問い合わせはEAFC公式LINEへ
EAFCサイト内の記事、商品、導入前確認、設定確認、ログ確認、開発依頼前のご相談など、各種お問い合わせはEAFC公式LINEより受け付けています。
※投資助言、売買指示、利益保証、推奨ロット、推奨銘柄の案内は行っておりません。
口座番号、認証情報、Webhook URL、GAS URL、APIキーなどの機密情報は送信しないでください。
