ストラテジーテスターのレポートは、最後に必ず1本のエクイティカーブを見せます。システムに何週間も向き合っていると、そのカーブがシステムについての「真実」に思えてきます。実際には、あれは1つのサンプルです。あなたのルールが勝ちと負けの集合を生み、歴史がそれを特定の順序で——たまたまそうなった順序で——配っただけです。
この「順序」は、普段向けられているよりずっと多くの疑いに値します。まったく同じトレードリストを持つ2つの戦略でも、損失が10年に散らばって届いたのか、悪い四半期に固まって届いたのかで、運用の体感はまるで別物になります。トレードリストが戦略です。順序は、驚くほどの程度まで、運です。
モンテカルロ・シミュレーションは、この2つを切り分ける標準的な方法です。この記事では、私たちのUSDJPYリサーチで使っている特定のバリアント——取引順序のシャッフル——を紹介し、その数値が設計判断をどう変えたか、そして同じくらい重要な「この手法に分からないこと」を説明します。
1本のバックテストは1本のパス
まず、バックテストの結果とは実際のところ何なのかから始めます。システムがトレードごとにエクイティの一定割合をリスクに晒すなら、最終残高はトレードごとの成長率の積であり、掛け算は順序を気にしません。トレードをシャッフルしても、最終残高は同じ場所に着地します。
パスは別の話です。最大ドローダウン、連敗の長さ、最悪の月の深さ——これらはすべて、どのトレードがたまたま隣り合ったかに依存します。5%のヒストリカル・ドローダウンの裏には、同じトレードの並び替えで12%を生んだはずの順序が隠れているかもしれません。
システムが自分自身のパスに反応するようになると、これはさらに重要になります。「ピークからX%失ったら取引を停止する」という形のルールは対称性を壊します。ある順序ではルールは一度も発火せず、別の順序では2年目に発火して、それ以降のすべては起こらなかったことになります。レポートのエクイティカーブは、こうした世界のうちの1つを見せているだけです。あなたのリスクは、残りの世界に住んでいます。
1本のパスを分布に変える
つまり有用な問いは「最大ドローダウンはいくつだったか」ではなく、こちらに近いものです。このトレード集団が到来し得た順序の全体にわたって、結果が「停止せざるを得ないライン」を越える頻度はどれくらいか?
順序シャッフルのモンテカルロは、まさにこの問いに答えます。手順は短いものです。バックテストからトレードを取り出す。順序をランダム化してエクイティパスを再構築する。それを数千回繰り返し、自分にとって重要なしきい値を越えたパスの数を数える。
出てくるのは、より美しいエクイティカーブではありません。1つの不都合な数字です。あなたのトレード集団と停止ルールを所与としたときの、破綻確率の推定値です。
私たち自身のシステムで測定したもの
具体例の前提を述べておきます。私たちのUSDJPYポートフォリオシステムは、約19年分の実ティックデータ(2007〜2026年・リアルティックモデリング・履歴品質98%・合計約0.7pipsの取引コスト込み)で検証されています。このシステムには、私たちがパーマネントストップと呼ぶハードなルールが載っています。エクイティがピークから18%下落したら取引を停止し、再開しない、というものです。このしきい値はレポート上の線ではなく実際のシステム動作なので、「18%へ到達する頻度」は、システムがそもそも生き残れるかどうかを決めます。
私たちはこの確率を、バックテストの取引シーケンスを20,000回シャッフルし、18%ラインに触れたパスを数えることで推定しました。システムが公開している3つのリスク設定それぞれについて、別々に実行しています。以下の数値はシミュレーションとバックテストの結果であり、ライブの成績ではありません。
| リスク設定 | 19年CAGR(バックテスト) | 最大ドローダウン(ヒストリカルパス) | 18%ストップ到達(モンテカルロ・20,000回) |
|---|---|---|---|
| 標準 | 12.7% | 5.2% | 1.35% |
| 中 | 16.0% | 6.4% | 7.75% |
| 高 | 2.7% | 19.0% | 17.9% |
標準の行は、ゆっくり読む価値があります。5.2%のヒストリカル・ドローダウンは、18%のストップに対して余裕に聞こえます——3倍以上のヘッドルームです。モンテカルロの推定は、1本のパスには見せられないニュアンスを加えます。それだけの余裕があってもなお、順序の約1.35%はストップまで辿り着くのです。20,000本のシミュレートされたパスのうちおよそ270本が、ヒストリカルパス上では終わりに近づきもしなかったシステムを終わらせました。
最も多くを教えてくれたのは「高」の行です。リスクを上げると、シャッフルされたパスの5本に1本近く(17.9%)がストップを越える水準までドローダウンが持ち上がりました。そして実際のヒストリカルパス上でも越えたのです。2010年の円急騰局面で「高」設定は18%のしきい値に到達し、パーマネントストップが発火し、複利はそこで終わりました。19年後、この設定のバックテストCAGRは2.7%——保守的な「標準」の12.7%を下回っています。トレードが悪かったからではありません。システムが複利を続けるまで生き残れなかっただけです。ヒストリカルの順序が、たまたまあの17.9%の中に落ちたのです。
この表こそ、保守的な設定が推奨で、高リスク設定が明示的に非推奨である理由です。ある地点を過ぎると、リスクの追加は長期リターンを買いませんでした。テストの後半に市場にいられない、無視できない確率を買ったのです。
この数字が実務で何を変えるか
これらのシミュレーションを走らせる前、私たちの設計の議論は多くの人と同じように聞こえました。「最大ドローダウンは5%か、悪くないな」。走らせたあとは、こう変わりました。「この設定は順序の1.35%で失敗する。実際のお金で走らせるかもしれないシステムとして、それは許容できるか?」
後者の形が優れている理由はいくつかあります。ドローダウンの統計値は1本のパスからの点推定であり、上で見たように、パスの一部は運です。しきい値越えの確率は、同じデータを使って、あり得るパスの母集団全体を記述します。そして、実際の意思決定に対応しています。「最大ドローダウン」で発動するルールを持つ口座は存在しません——現実の口座にあるのは、システムか、ブローカーか、トレーダー自身の神経が強制する、そこを越えたら取引が止まる1本のラインです。その特定のラインに到達する確率を推定することは、実際に重要な問いに答えることです。
より静かな利点もあります。シミュレーションを走らせるためには、まず自分のストップが本当はどこにあるのかを書き出さなければなりません。そしてその数字を正直に決めることが、この作業の価値の半分です。現実には15%の下落で戦略を見捨てるはずの人が、30%に対する生存をテストするのは自己欺瞞です。
順序シャッフルに分からないこと
ここからが記事の正直な半分です。シャッフルテストは、トレードが独立であり、どんな順序でも到来し得た、という仮定の上に立っています。市場はこの仮定に完全には協力しません。
現実の損失は群れます。特定の市場レジーム——ボラティリティの急騰、長い方向感のないレンジ——で苦しむ戦略は、負けトレードをそのカレンダー区間に集中させます。シャッフルはこの損失を時間軸全体にばらまくため、テールを実際より細く見せることがあります。その意味で、順序シャッフルはしばしば楽観的な推定器です。その破綻確率は保証ではなく、下限として扱ってください。
クラスタリング問題には部分的な対処法があります。個々のイベントではなく、連続したブロック——週や月の単位——をシャッフルする方法です。短期のクラスタリングが各ブロックの内側で生き残るため、ブロック・リサンプリングは市場の系列的な性格をより多く保ち、たいていはより太い、より正直なテールを生みます。これも完全な修正ではありません。ブロック長がそれ自体新しい仮定になり、ブロックより長いスケールで働く依存性は手順のどこでも回復されません。2つのバリアントの合理的な使い方は、挟み撃ちです——素のシャッフルがレンジの楽観端に印を付け、ブロックシャッフルが現実へ一歩近づけ、テールの真実はその間のどこかにあります。
シャッフルテストには、過剰適合の検出もできません。カーブフィットした戦略は美しいトレードリストを生み、美しいトレードリストの20,000通りの並べ替えは、すべて美しく見えます。シミュレーションは、入力に含まれるあらゆるバイアスを継承します。
この2つの理由から、私たちはモンテカルロを複数あるゲートの1つとして扱っています。私たちのリサーチ・パイプラインでは、年代順のアウトオブサンプル分割と、最後まで開封しないホールドアウト期間の隣に置かれています——レジーム依存性や過去への適合という、シャッフルには検査できないものを正確に検査する手法たちです。
レポートの行ではなく、イベントを数える
シミュレーションが意味を持つかどうかを決める技術的な細部が1つあります。何をシャッフルの単位にするか、です。
テスターのレポートは行で構成されていますが、行は意思決定ではありません。1つのポジションを3回に分けて手仕舞う戦略なら、レポートには3つの黒字の行が並びます——しかしそこにあったのは1つのトレードアイデア、1つのエントリー判断、1つの市場イベントです。この3行を独立な抽選としてシャッフルすれば、存在しなかった分散を製造したことになり、シミュレートされたドローダウンは静かに縮みます。
私たちが従う原則は、独立したイベントのレベルでリサンプルすることです。1つの判断と運命を共にするすべてを、シャッフルを始める前に1つのリターンへ畳み込みます。地味なデータ前処理ですが、テールの推定値を、大半のモデリング上の選択より大きく変えます。
MetaTrader 5の言葉で言えば、約定履歴(ディール履歴)はデフォルトのままでは粒度が間違っています。1つのポジションは通常、複数のディール行——エントリー、場合によっては部分決済、最後の手仕舞い——を生み、レポートにはスワップや手数料調整の行が別に載ることもあります。まずポジション識別子でディールをグループ化してください。戦略がポジションを分割で建てたり手仕舞ったりするなら、さらに一歩進んで、1つのトレード判断に属するポジション同士をまとめます。正しいグループ化のルールはあなたのEAの実際の挙動に依存します。汎用ツールがこの工程を代行できないのはまさにそれが理由で、これを飛ばすと、そのあとに出てくるすべての数字が静かに偏ります。
自分のシステムで試すには
これをあなたがテスト中のEAに適用するのに、特別なツールは要りません。手順全体が、スプレッドシートか、任意の言語の短いスクリプトに収まります。
ストラテジーテスターのレポートからディール履歴をエクスポートします。1つの判断に属する部分約定や分割手仕舞いを統合しながら、行をイベント単位のリターンへ畳み込み、結果が特定の初期残高に依存しないよう、各イベントを百分率の変化で表現します。それから、まともな乱数生成器でシーケンスをシャッフルし、エクイティパスを再構築し、あなた自身の停止ライン——本当にやめるはずのドローダウン水準——を適用して、パスがそれを越えたかを記録します。数千回繰り返せば、その越えた頻度があなたの推定値です。
自分たちのレポートでこれをやってきた経験から、実務的な注意を2つ。測ろうとしているテールに見合った回数を回してください——真の確率が1%付近なら、数百回のシミュレーションはほぼノイズで推定することになります。20,000回ならそのテールに数百本のパスが入り、推定値が意味を持ち始めます。そして、結果を見たあとに停止ラインを緩めたくなる衝動に抵抗してください。数字が許容範囲に見えるまでしきい値を動かすのは、バックテストが良く見えるまでパラメータを最適化するのと同じ誤りです。1つ上の層で起きているだけです。
回数についての助言の裏には、単純な算術があります。N回の独立な試行で推定した確率pの標準誤差は、おおよそp(1−p)/Nの平方根です。p=1%・N=500回なら誤差は約0.44ポイント——あなたの「1%」は0.5%とも2%とも読めてしまい、それは快適な設計と疑わしい設計の差です。N=20,000なら同じ誤差は約0.07ポイントまで縮み、設定同士を比較できる程度に推定が安定します(これらは推定量の算術的な性質であって、トレーディングの結果ではありません)。試行は安価です。スプレッドシート水準の実装でも数万回が数秒で終わるので、ここでケチる理由はまずありません。
最後に、採用する価値のある報告の習慣を1つ。破綻確率の数字を書き留めるときは——自分のためでも誰かのためでも——回数と停止ラインを隣に記録してください。「18%ストップ・20,000回で1.35%」は再現可能な言明です。「だいたい1%」はそうではなく、半年後のあなたは、それがどのしきい値の話だったかを思い出せません。
おわりに
次にエクイティカーブに感心したときは——自分のものでも、ベンダーのものでも——並べ替えられた兄弟たちのうち何割が、あなたが実際に使うつもりの停止ルールを生き延びたかを問うてみる価値があります。答えは安心できるものであることも、そうでないこともありますが、いずれにせよ1本のバックテストには提供できない情報であり、手に入れるためのコストはスクリプトを書く一晩です。
Origin-U Projectは、日本を拠点とする独立系のクオンツFXリサーチプロジェクトです。本記事で解説した考え方は、Origin-U Projectが開発した商用USDJPYポートフォリオEA「BUSHIDO」に実装されています。
本記事のパフォーマンス数値はすべて、ヒストリカルデータに基づくバックテストまたはモンテカルロ・シミュレーションの結果です。過去の結果は将来の成績を保証しません。
Origin-U リサーチノート — 全10回 第5回
← 前の記事: 私たちがマーチンゲールとグリッドを使わないと決めた理由 — 検証の記録 | 次の記事: 堅牢なFX戦略の条件 — チャートではなく、プロセスを見る →
English version: Using Monte Carlo Simulation to Evaluate Trading Systems
シリーズ全10回
- USDJPY向けマルチストラテジー・ポートフォリオEAの作り方 — 86本の仮説検証が教えてくれたこと
- アルゴリズムトレードで分散が重要になる本当の理由
- 利益よりも先にリスク管理 — トレーディングシステムは「負ける側」から設計する
- 私たちがマーチンゲールとグリッドを使わないと決めた理由 — 検証の記録
- モンテカルロ・シミュレーションでトレーディングシステムを評価する
- 堅牢なFX戦略の条件 — チャートではなく、プロセスを見る
- バックテストとフォワードテストの違い — 同じEAで数字が変わる4つの理由
- トレードのアイデアを実装前にどう評価するか — 86本の仮説を検証した手順
- 低ドローダウンのトレーディングシステム設計 — ドローダウンは「結果」ではなく「入力」である
- 長期USDJPYリサーチから学んだこと — 20年分のティックデータが教えてくれたもの




