Monte Carlo分析の2つの違い

SQXの使い方

StrategyQuantXには「Monte Carlo trades manipulation」と「Monte Carlo retest methods」という2種類のモンテカルロ分析が用意されています。

どちらも戦略のロバスト性を確認する手法ですが、対象や処理が異なります。

※モンテカルロシミュレーションの説明は別ページで行っております。


Monte Carlo trades manipulation(トレード操作型)の解説

StrategyQuantXに搭載されているモンテカルロ分析の一つが「trades manipulation(トレード操作型)」です。これは、既に終わったバックテストの結果をもとにシミュレーションを行うシンプルかつ高速な手法です。


内容

  • 完了したバックテストの「トレード履歴」をそのまま利用
  • 新しいバックテストを走らせる必要はない
  • 履歴の順番や有無をランダムに操作して結果を再計算する
Setting

Number of simulations のところに入れる数字がモンテカルロシミュレーションの回数となります。

画像では30となっているので、

30回のテストをします。目安としては最低30回。

統計的に信頼度が高いのが100回ぐらいだといわれてます。もちろん多ければ多いほど良いですが、EAでのテストであれば100回以上は個人的には必要ないと考えてます。

次にその下の2つの項目の説明です。

Randomize trades order, with method Resampling
トレード順序をランダム化(リサンプリング方式を使用)

Randomly skip trades, with probability 10 %
トレードをランダムにスキップ(確率10%)

では1つずつ説明していきます。まずは、

Randomize trades order, with method Resampling

これは、バックテストで得られたトレードの並び順をランダムに入れ替えて、異なる順序で結果がどう変化するかを確認する方法です。

「Resampling」というのは、統計的に標本を取り直す(ブートストラップ的な)考え方で、順序をシャッフルした複数パターンを作り出します。

利益の合計は同じでも、トレード順序が変わることでドローダウンの出方が大きく変わり、戦略が“運の並び”に依存していないかを確認できます。

そして2つ目の

Randomly skip trades, with probability 10 %

これは既存のトレード履歴の中から、ランダムに一部のトレードを「実行されなかった」と仮定して除外する方法です。

確率10%の場合、平均して10回に1回の割合でトレードをスキップします。

現実の運用では「ネットワーク遅延」「約定ミス」「EAを停止していた」などでトレードを逃すことがあるため、そのような“取りこぼし”が戦略に与える影響を確認できます。

👉 まとめると、

Randomize trades order → 「トレードの順番が違っても安定しているか?」

Randomly skip trades → 「一部トレードを逃しても戦略が崩れないか?」

どちらもチェックいれておいていいです。

Filtering

この Filtering タブは「Monte Carloテストの結果をどこまで許容するか」を指定するフィルター機能です。
要するに テストをパスする最低条件を設定する場所 です。

設定例の意味

  1. Net profit (MC trades, Conf. level 80%) >= 60% of Net profit
    • 80%信頼区間での純利益が、元のバックテスト純利益の60%以上であること。
    • 例:元の利益が100万円 → シミュレーション結果でも80%の確率で60万円以上を維持できない戦略は不合格。
  2. Max DD % (MC trades, Conf. level 80%) <= 175% of Max DD %
    • 80%信頼区間での最大ドローダウンが、元のドローダウンの175%以下であること。
    • 例:元の最大DDが10% → Monte Carloでの検証結果が80%の確率で17.5%以内に収まらない戦略は不合格。

追加したい場合は、Add conditionsから行えます。


実行例

  • トレード順序をランダムに入れ替える
    例えば「勝ちトレードが先に続いた場合」と「負けトレードが先に続いた場合」で、資産曲線(エクイティカーブ)はどのくらい見た目が変わるかを確認できます。利益の合計は同じでも、最大ドローダウンの深さやメンタルへの影響は大きく違うことがあります。
  • 一部のトレードをランダムにスキップする
    例えば「ネットが切れて1回のエントリーを逃した」「EAを止めていたので数トレード分参加できなかった」──こうした状況を再現できます。戦略がトレードを少し取りこぼしただけで大きく崩れるなら、実運用では危険という判断ができます。

特徴

  • 高速に実行できる
    バックテストを再度走らせる必要がないため、何十回のシミュレーションでも一瞬で完了します。
  • 利益総額は変わらない
    トレードの勝敗そのものは変えていないため、理論上のトータル利益は同じです。
  • 資産曲線の形が変動
    順序やスキップによってドローダウンの出方が大きく変わるため、実際の運用で「いつ苦しい局面が訪れるか」を想像できます。
  • 実際にありがちなリスクを再現
    「ネット障害」「取引の取りこぼし」など、現実でも起こり得る状況を仮想的に試せるのが大きなメリットです。

ようするに

もしあなたがEAを使ったことがなくても、イメージしてみてください。

  • 将棋やチェスで「勝ち負けの順番」が違えば、心理的な印象は大きく変わりますよね。
  • サッカーで「点を先に取られるか」「後から追いつくか」で試合の流れが違うのと同じです。

Monte Carlo trades manipulation はまさにそれをFXのトレードで再現するテストです。
「同じ結果でも道のりがどう変わるか」を確認することで、戦略の本当の強さやリスクを見極めることができます。


Monte Carlo retest methods(再テスト型)の解説

イメージ図

「Monte Carlo retest methods(再テスト型)」は、StrategyQuantXで行えるモンテカルロ分析のもう一つの方法です。
こちらは「毎回フルバックテストを再実行」する点が最大の特徴で、戦略そのものが環境や条件の変化にどれくらい耐えられるかを調べます。


内容

  • 各シミュレーションごとに戦略をフルバックテスト
  • パラメータや市場条件をランダムに揺らす
  • 「同じ戦略なのに条件が少し違えばどう動くか?」を検証できる

実行例

  • 開始バーをずらす
    例えば「テストを1月1日から始めた場合」と「1月3日から始めた場合」で結果が大きく変わるなら、その戦略は“運に依存している”と判断できます。
  • パラメータを微調整する
    例えば「RSI期間14」を「±10%」ずらしても利益構造が安定しているかを確認します。ちょっとしたズレで結果が大崩れするなら過剰最適化の可能性があります。
  • スプレッドやスリッページを変化させる
    例えば「スプレッドが1.0から1.5に広がった」「約定が少し不利になった」──こうした実運用でよくある状況を再現します。
  • ヒストリーデータを歪ませる
    例えば「終値をATRの±20%の範囲でランダムに揺らす」といった処理を行い、戦略が特定のヒストリーデータに依存していないか確認できます。

特徴

  • 実行に時間がかかる
    1回1回フルバックテストを行うため、シミュレーション数が多いと計算量が膨大になります。
  • パラメータや環境の揺らぎに対する耐性を確認できる
    少しの条件変化で結果が大きく崩れるなら、その戦略は不安定。逆に安定していれば実運用にも耐えやすい。
  • 過剰最適化やデータ依存を発見できる
    過去データに“合わせすぎている”戦略は、このテストで簡単にボロが出ます。

ちょっとしたまとめ

イメージとしては「スポーツ選手の練習試合」に近いです。

  • いつも同じピッチ・同じ相手でしか結果を出せない選手は、本番で通用しません。
  • 逆に、相手やコンディションを変えても安定して力を発揮できる選手は“本物”です。

Monte Carlo retest methods は、EAをその「練習試合」にかけてみるようなものです。
本番に近い不確実さを与えても崩れない戦略だけが、実運用で安心して使えると言えます。



違いのまとめ

項目trades manipulationretest methods
対象トレード履歴戦略そのもの
処理内容順序入れ替え・削除パラメータや市場条件を変えて再バックテスト
実行速度高速遅い
主な目的順序依存や欠損への耐性確認環境変化やパラメータ揺らぎへの耐性確認
適用シーンクイックチェック最終候補の本格検証

実務での使い分け

Monte Carlo分析には「trades manipulation(トレード操作型)」と「retest methods(再テスト型)」の2種類があります。

どちらをどの場面で使えばよいか、実務での流れをイメージできるように整理します。


trades manipulation を使う場面

まずはスクリーニング(ふるい分け)として利用します。
例えば、EAを10本作ったとしましょう。そのうち「勝ち負けの順番がちょっと変わるだけで結果が大きくブレる戦略」は、現実の相場で安定して使うのは難しいですよね。

trades manipulation をかけると、こうした“順序依存”の戦略を早い段階で発見できます。
つまり 「まずは怪しい戦略を弾くための予備検査」 というイメージです。


retest methods を使う場面

trades manipulationを通過して残った戦略は「見込みあり」です。

ここからが本番。
例えば、人間の就職試験にたとえるなら「筆記試験(trades manipulation)に受かった人が、面接や実技(retest methods)を受ける」ようなイメージです。

retest methodsでは、スプレッドやパラメータを揺らしたり、データを歪ませたりして「本当に現実の変化に耐えられるか」を調べます。


これで崩れない戦略は、実運用でも安心して使える可能性が高いです。


1行まとめ

  • trades manipulation → 予備検査
    「順序依存」「トレード取りこぼしに弱い戦略」を早めに除外するために使う。
  • retest methods → 本格検査
    「環境変化やパラメータの揺らぎに耐えられるか」を確認し、最後の候補を実戦レベルでチェックする。

参考URL

https://strategyquant.com/doc/strategyquant/monte-carlo-retest-methods
https://strategyquant.com/doc/strategyquant/monte-carlo-trades-manipulation

バックテスト結果