📖 FXのバックテスト:戦略をどう検証し、なぜWalk-Forward分析が必要なのか
バックテストとは、過去データ上で売買ルールを走らせ、資金をリスクにさらさずに、その戦略が過去にどう振る舞ったかを理解するための検証です。アルゴリズム取引では、バックテストはデモ運用や実運用の前に必ず通るべき段階です。
この記事の目的は、MT4、MT5、cTraderでFXのバックテストを専門的に組み立てる方法を示すことです。モデリング方式の選択、ティック精度の確保、Walk-Forward分析、指標の解釈、約定のシミュレーション、Monte Carloによる堅牢性チェックまで扱います。
バックテスト: 過去データ上で取引をシミュレーションし、収益性とリスクの指標を計算すること。
アルゴ取引: コードに実装された形式化済みルールに基づく取引。
ティックデータ: 正確な時刻を伴う、最小単位の価格変化の連続(tick-by-tick)。
Walk-Forward分析(WFA): 安定性を評価するための「ある期間で最適化 → 次の期間(OOS)で検証 → 期間をずらす」というサイクル。
Monte Carlo: 結果のばらつきや「テール」リスクを評価するための、ランダムなシナリオ群(取引順序の入れ替え、コスト変動など)。
🧭 バックテストとは何か、なぜ結果を左右するのか
バックテストは、過去の市場で戦略の取引をシミュレーションし、主要指標を計算する作業です。デモや実運用の前にアイデアの質をふるいにかけ、コードのロジックを確認する手段でもあります。
- 仮説検証: 弱いアイデアを素早く除外し、強いものに集中する。
- コード診断: エントリーとエグジットを視覚的に検証すると、ロジック上のミスを見つけやすい。
- 指標: Max Drawdown、PF、Sharpe、1取引あたりの期待値、年別の安定性。
- 規律: 過去データで確認されたルールは、心理的にも守りやすい。
Max Drawdown: エクイティの高値からの最大下落率。
PF(Profit Factor): 総利益を総損失で割った比率。
Sharpe Ratio: リスク(リターンの変動率)で標準化した収益性。
1取引あたりの期待値(Expectancy): 1取引の平均利益 = WinRate × AvgWin − (1 − WinRate) × AvgLoss。
過去の結果は将来を保証しません。バックテストは、フォワードテスト(新しいデータやデモでの検証)と約定管理で補完します。
⚙️ MT4、MT5、cTraderでのバックテスト手法
各プラットフォームは、モデリング精度、複数通貨対応、最適化速度、開発のしやすさが異なります。
複数通貨対応: 1つのEAと1回の実行内で、複数シンボルを同時にテストまたは取引できること。
MT4:制約のある定番
- テスター: ビジュアルモードはあるが、複数通貨バックテストには非対応(1回の実行につき1シンボル)。
- モデリング: 「始値のみ」「コントロールポイント」「全ティック」。外部ティックなしでは品質がしばしば90%以下になります。
- 速度: 逐次実行で、分散最適化はありません。
✅ 長所
- 開発環境がシンプルで、既製のEAが多い。
- 素早い実験を始めるハードルが低い。
❌ 短所
- 1回の実行で複数通貨テストができない。
- ティック精度には外部インポートと履歴データの手作業準備が必要。
MT5:プロ向けの標準
- 複数通貨対応: 1つのEAが1つのプロセス内で複数シンボルをテストできます。
- ティック: ブローカー由来の実ティックとスプレッドに対応。「全ティック」「1-Minute OHLC」「始値」モードがあります。
- 最適化: マルチスレッド、遺伝的アルゴリズム、リモートエージェント、クラウド。
- フォワード最適化: 履歴を学習部分とOOSに分割する機能を内蔵。
1-Minute OHLC: 1分足バーの4価格(Open/High/Low/Close)でモデリングする方式。速い一方、狭いストップでは粗くなります。
遺伝的アルゴリズム: パラメータセットを「進化」させ、良い組み合わせを選別するヒューリスティックな最適化。
OOS(Out-of-Sample): 最適化後に、すでに選んだパラメータを検証するための「標本外」の履歴部分。
✅ 長所
- ティックベースで高いモデリング精度を標準で得やすい。
- フォワードや遺伝的アルゴリズムを含む高速な最適化。
❌ 短所
- コードの正確さとイベントモデルに、より厳密な扱いが求められる。
cTrader:C#の柔軟性とMarket Replay
- 言語: C#(Automate/cAlgo)、厳密な型付けと.NETエコシステム。
- データ: 「Tick data from server」、固定またはランダムスプレッド。
- 体験: Market Replay。学習や視覚検証のために、市場を手動で再生できます。
- 性能: 実行は逐次。最適化は新しいビルドでは並列化されています。
✅ 長所
- 強力なC#スタックと使いやすいMarket Replay。
- 約定やスプレッドを柔軟にカスタマイズできる。
❌ 短所
- マルチシンボルのシステムには、シグナル設計を手作業で組む必要がある。
🧪 モデリング方式と使い分け
方式の選択は、バー内の動き(ティック)への感度と、狭いSL/TP (ストップロス/テイクプロフィット)に左右されます。
Tick: 価格とスプレッドのすべての変化をモデリングする方式(スキャルピング/HFT向けの最大精度)。
OHLC: バーの4価格でモデリングする方式。速い一方、狭いストップでは粗くなります。
HFT: 約定遅延が重要になる高頻度ロジック。
「全ティック」(tick-by-tick)
価格とスプレッドの各変化を最大限リアルにシミュレーションします。スキャルピングやHFTロジックには必要です。
- 長所:エントリー/エグジットが精密で、ストップとスリッページを適切に評価できる。
- 短所:負荷が高く、ティック品質への要求も高い。
要点: トリガーがローソク足の内部で発動するなら「ティック」でテストしてください。そうしないと結果が過大評価されます。
OHLC/1-Minute
1分足のOpen/High/Low/Closeでモデリングします。中期戦略や、アイデアの粗い高速フィルタリングに向いています。
- 長所:非常に速い。
- 短所:狭いストップやデイトレードのパターンでは歪みが出る。
ビジュアルモード / Market Replay
チャート上で取引を段階的に確認する(MT4/MT5)、または市場を再生する(cTrader)方式です。デバッグや学習に便利です。
- 長所:エントリーロジック、トレーリング、フィルターが視覚的に分かる。
- 短所:バッチ実行より遅く、事後的な「のぞき見」バイアスのリスクがある。
📊 モデリング品質とデータソース
信頼性は入力データの品質に制限されます。「Garbage in, garbage out」です。まず履歴データ、次に最適化です。
- ティック: MT5/cTraderではブローカーのティック、MT4では外部ティックのインポートとテスター向け変換。
- タイムゾーンとセッション: 統一したタイムゾーン、欠損や重複バーの確認。
- コスト: 実際またはランダムなスプレッド、手数料、スリッページをモデリングする。
- 確認: 取引なしの「ドライラン」で時系列の単調性を検証する。
ストラテジーテスターを開く → EAを選択 → 「全ティック」モード → ティックソース「取引所/ブローカーティック」 → 手数料/スプレッドを設定 → 「ビジュアル化」を有効化 → 開始。フォワード最適化では、最適化設定でOOS区間を有効にします。
🧼 公正なバックテストのためのデータパイプライン
データがすべてを決めます。 最適化の前に、履歴が完全で、タイムゾーンが一致し、「穴」や重複が除去されていることを確認してください。
- 信頼できるソースまたはブローカーから、ティック/分足データをインポートする。
- タイムゾーンと取引セッションのカレンダーを正規化する。
- 重複、ゼロバー、極端な「スパイク」などの異常を除去する。
- スプレッド/手数料をモデリングし、価格/数量の丸めルールを設定する。
- 時間の単調性を確認するため、取引なしの「ドライテスト」を実行する。
互換性: MT5とcTraderではティックデータを優先。MT4ではティックインポートを使います。複数ソースを混ぜる場合は、統一タイムゾーンを使い、夏時間切り替えのルールを固定してください。
データセットの「パスポート」を管理しましょう。ソース、深さ、タイムゾーン、エクスポート日、ファイルハッシュを残すと、再現性が高まります。
⚡ 約定モデリング:注文、スプレッド、遅延
理想的な約定は結果を過大評価します。注文タイプ、スプレッドフィルター、スリッページ、ランダム遅延といった現実的な仮定を入れてください。
スプレッド: BidとAskの差。ニュース時や流動性が低い場面で拡大します。
スリッページ: 市場の勢いや遅延により、期待より悪い価格で約定すること。
遅延: ネットワーク/端末/サーバーの合計レイテンシ。HFTやニュース取引では重要です。
| 構成要素 | モデル | 推奨 |
|---|---|---|
| 注文タイプ | Market/Limit/Stop | スキャルピングではスプレッドフィルター付きlimit、トレンドではmarketも許容。 |
| スプレッド | 固定またはランダム | 過去値の範囲内でランダムにしたスプレッドの方が現実的。 |
| スリッページ | 対称または偏りあり | market注文では不利な方向へのずれを見込む。 |
| 遅延 | ランダムに10〜300ミリ秒 | ニュース時やボラティリティのピーク時間に重要。 |
実運用を計画するときは、バックテスト比で利益に5〜15%の「約定ディスカウント」、Max Drawdownに+20〜30%を見込んでください。
⏩ Walk-Forward分析(WFA)
Walk-Forwardは、安定性を評価するための段階的な「ある期間で最適化 → 次の期間(OOS)で検証 → 期間をずらす」サイクルです。
WFA: in-sample(学習部分)とout-of-sample(検証部分)を交互に使い、予定に沿って再最適化する方法。
OOS: すでに選んだパラメータを検証する、未学習の履歴部分。
Rolling vs Anchored: スライドする窓と、起点を固定して伸びる窓の違い(過剰最適化リスクを抑える)。
- 履歴を分割します。例:12〜18か月を最適化、3〜6か月を検証。
- 最初の窓でパラメータを最適化し、最良セットを固定する。
- そのセットを次の窓(OOS)で検証する。
- 窓をずらし、履歴の最後までサイクルを繰り返す。
- OOS結果をまとめ、安定性とドローダウン範囲を評価する。
WFAの実務的な設計
Rolling windowは適応が速く、Anchoredは過剰学習を抑えやすい一方で慣性が大きくなります。
要点: パラメータ数を制限し、すべての窓で同じルールを使ってください。そうしないと比較が不正確になります。
🎲 戦略のMonte Carlo検証
Monte Carloは、取引順序の入れ替えやスプレッド/スリッページの変動など、ランダムなシナリオ群によって結果のばらつきとリスクの「テール」を示す検証です。
シャッフルシナリオ
収益率とドローダウンの範囲を評価するため、200〜1000本の代替履歴をシミュレーションします。
- Reshuffle: 同じPnL (損益)を保ったまま、取引順序をランダムに並べ替える。
- Noise: スリッページとスプレッドに±25〜50%を加える。
- Gap test: ニュース時の「急落」を模した、まれな極端ティックを入れる。
要点: 中央値だけでなく5〜10パーセンタイルを見てください。ピークよりも安全余裕が重要です。
💻 例:移動平均線のクロス(MA Cross)
MQL5とcTrader向けC#の学習用ロジックです。実運用では、ボラティリティフィルターATR、リスク管理、約定管理を追加してください。
1) MT5でEAを作成し、下のコードを貼り付けます。2) テスターで「全ティック」を選び、手数料/スプレッドを設定します。3) 別のシンボル/時間足で検証し、PF/DD (Profit Factor/最大ドローダウン)を比較します。
MQL5 (MT5)
#property strict
input int FastMAPeriod = 20;
input int SlowMAPeriod = 50;
#include <Trade/Trade.mqh>
CTrade trade;
int hFast, hSlow;
int OnInit(){
hFast = iMA(_Symbol, PERIOD_CURRENT, FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
hSlow = iMA(_Symbol, PERIOD_CURRENT, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
return(INIT_SUCCEEDED);
}
void OnTick(){
double fast[], slow[];
if(CopyBuffer(hFast,0,0,2,fast)<2 || CopyBuffer(hSlow,0,0,2,slow)<2) return;
bool crossUp = (fast[1] <= slow[1]) && (fast[0] > slow[0]);
bool crossDown = (fast[1] >= slow[1]) && (fast[0] < slow[0]);
if(crossUp) { trade.PositionClose(_Symbol); trade.Buy(0.1); }
if(crossDown) { trade.PositionClose(_Symbol); trade.Sell(0.1); }
}
C# (cTrader Automate)
using cAlgo.API; using cAlgo.API.Indicators;
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class MACrossBot : Robot {
[Parameter("Fast", DefaultValue = 20)] public int Fast { get; set; }
[Parameter("Slow", DefaultValue = 50)] public int Slow { get; set; }
private MovingAverage maF, maS;
protected override void OnStart(){
var series = MarketData.GetSeries(TimeFrame);
maF = Indicators.MovingAverage(series.Close, Fast, MovingAverageType.Simple);
maS = Indicators.MovingAverage(series.Close, Slow, MovingAverageType.Simple);
}
protected override void OnBar(){
bool crossUp = maF.Result.Last(1) <= maS.Result.Last(1) && maF.Result.LastValue > maS.Result.LastValue;
bool crossDown = maF.Result.Last(1) >= maS.Result.Last(1) && maF.Result.LastValue < maS.Result.LastValue;
if(crossUp) { ClosePositions(TradeType.Sell); ExecuteMarketOrder(TradeType.Buy, SymbolName, 10000); }
if(crossDown) { ClosePositions(TradeType.Buy); ExecuteMarketOrder(TradeType.Sell, SymbolName, 10000); }
}
}
この例は簡略版です。トレンドフィルター、ATRによるサイズ計算、手数料/スリッページの考慮、適切なmoney-managementは入っていません。結論を出す前に、これらの要素を追加してください。
🧪 ミニケース:異なるアイデアはどう振る舞うか
説明用の例は、どこでアイデアが稼ぎ、どこでコストや市場レジームに苦しむかを直感的に理解する助けになります。値はデモ用です。自分の値に置き換えてください。
Breakout London (EURUSD M15)
ロンドン開始後の最初の2時間でアジア時間レンジをブレイク。固定SL/TP、スプレッドフィルター付き。
- 強み:トレンド局面、1取引あたりの期待値が高い。
- 弱み:ニュースとスリッページへの感度が高い。
Mean Reversion (USDJPY M5)
VWAPやBBからの乖離拡大時に平均へ戻る動きを狙い、分割決済します。
- 強み:レンジ相場、取引数の多さ、滑らかなエクイティ(口座価値の曲線)。
- 弱み:コストが上がると「千の小傷で死ぬ」ように優位性を削られる。
MA Cross (H1)
SMA 20/50のクロスにATRフィルターとATR×2のトレーリングストップを組み合わせます。
- 強み:近い通貨ペアへパラメータを移しやすい。
- 弱み:往復相場や長いレンジでPFが低下する。
| 戦略 | シナリオ | PF | Max DD | Sharpe | 取引数 |
|---|---|---|---|---|---|
| Breakout London | ティック + ランダムスプレッド | 1.6 | 18% | 1.1 | 480 |
| Mean Reversion | ティック + 手数料×1.2 | 1.4 | 12% | 1.3 | 1200 |
| MA Cross | OHLC → ティック(検証) | 1.3 | 20% | 1.0 | 260 |
🌗 市場レジームと戦略の挙動
履歴をトレンド、レンジ、ニュース時間帯に分けます。指標を別々に評価し、稼働/停止ルールを調整してください。
トレンド局面
フィルター:ADX>25、チャネルブレイク、MAの正の傾き。
- 推奨:TPを広げ、押し戻しへの感度を下げる。
- リスク:勢いが尽きたトレンドでのだましブレイク。
レンジ局面
低ボラティリティ(ATRがレンジ下部)、ADX<15、反転の多い値動き。
- 推奨:TPを縮小し、mean-reversionとスプレッドフィルターを使う。
- リスク:コストが統計的優位性を「食い尽くす」。
ニュース時間帯
高いATR、スプレッド拡大、ギャップ。
- 推奨:一時停止、スプレッドフィルター、ニュース後の遅延エントリー。
- リスク:スリッページ、頻繁なストップ。
要点: 経済カレンダーとATR/スプレッド制限を組み合わせると、Sharpeが改善することがよくあります。
📋 MT4 vs MT5 vs cTrader — FX向け比較
精度、速度、マルチシンボルシステムの扱いやすさに影響する主な違いです。
| 基準 | MT4 | MT5 | cTrader |
|---|---|---|---|
| モデリング精度 | 外部ティックなら最大99%。それ以外は≤90% | ブローカーのティック。高精度 | Tick data from server。スプレッドを柔軟に設定 |
| 速度/最適化 | 逐次実行 | マルチスレッド、クラウドエージェント、遺伝的最適化 | 逐次実行。最適化は並列化 |
| 複数通貨対応 | なし(1シンボル/テスト) | あり(1つのEAで複数シンボル) | API/シグナル設計を通じて対応 |
| 視覚テスト | ビジュアルモード | ビジュアル化 + 拡張分析 | Market Replay |
| レポート/指標 | 基本セット | 拡張レポート/グラフ | 詳細統計/エクイティ |
🔍 結果の解釈:主要指標
評価は総合的に行います。収益性とリスク、安定性を組み合わせ、取引数と期間別の利益分布を確認してください。
最大ドローダウン(Max Drawdown)
残高/エクイティが高値からどれだけ下がったかを示す最大下落率です。低いほど良く、年率収益(例:CAR/MDD)と合わせて比較します。
Profit Factor(PF)
総利益を総損失で割った比率です。> 1は潜在的に利益あり、> 1.5は良好、> 2は優秀ですが、期間ごとの安定性が重要です。
Sharpe Ratio
リターンをリスク(リターンの変動率)で標準化した指標です。高いほど安定的で、目安は> 1、「滑らかな」システムでは1.5〜2に近づきます。
1取引あたりの期待値(Expectancy)
1取引の平均利益です:Expectancy = WinRate × AvgWin − LossRate × AvgLoss。正の値であり、十分な取引数で確認されている必要があります。
エクイティ: 未決済ポジションを含む口座価値の曲線(残高とは異なる)。
PF: PF = Gross Profit / Gross Loss。取引数とMax DDと一緒に見ると有用です。
Sharpe: (Mean Return − Rf) / StdDev(Return)。ここでRfは無リスク金利です。
Expectancy: = WinRate × AvgWin − (1 − WinRate) × AvgLoss。200〜300取引以上のサンプルで確認します(日中取引ではさらに多く)。
CAR/MDD: 年率収益(Compound Annual Return)を最大ドローダウンで割った比率。
指標の年別/四半期別の安定性を確認し、「約定ディスカウント」(スプレッド/手数料/スリッページ)を使ってください。そうしないとPFとSharpeは過大評価されます。
🗺️ パラメータ堅牢性マップ
2つの主要パラメータをグリッドで変化させ、指標を記録します。探すべきは最大値の「小島」ではなく、安定性のあるプラトーです。
実験設計
- グリッド: 2つのパラメータ(例:Fast/Slow MAの期間)について15×15点。
- 指標: PF、Max DD、Sharpe、CAR/MDD、取引数。
- 基準: PF ≥ 1.3、DD ≤ 25%、取引数 ≥ 200。
設定の判断
プラトーの端ではなく中央からパラメータを選びます。そうすると、市場レジームが変わっても有効性を保てる可能性が高くなります。
⚠️ よくある落とし穴と避け方
過剰最適化(overfitting)
- パラメータが多すぎる、または範囲が狭すぎると、戦略がノイズに合わせ込まれます。
- 対策:パラメータ数の制限、Walk-Forward、OOS検証、Monte Carlo。
約定の無視
- スプレッド/手数料/遅延を考慮しないと、PFとSharpeはほぼ常に過大評価されます。
- 対策:ランダムスプレッド、スリッページ、遅延、結果への「ディスカウント」。
「汚い」データとタイムゾーン
- 欠損、重複、誤ったタイムゾーンは、日中ロジックを壊します。
- 対策:データパイプライン、統一タイムゾーン、ティック優先。
🧰 バックテストのDevOps:再現性と実験管理
戦略は、その結果を再現できるときに価値があります。データのバージョン、固定設定、標準化されたレポートが必要です。
- データのバージョン管理: エクスポート日、ソース、深さ、ファイルハッシュ。
- 実験設定: シンボル、時間足、日付、手数料、スプレッド/遅延、seed (乱数生成器の初期値)。
- レポートテンプレート: 指標の要約、エクイティ/ドローダウンのグラフ、PnL (損益)分布、感度。
- 成果物: 取引ログ、シリアライズしたパラメータ、EA / cBot (cTraderのボット)のバージョンパスポート。
JSON/YAML設定の「起動テンプレート」を保存し、ワンクリックで実行を再現できるようにしてください。
🧮 最適化手法:grid、遺伝的、ベイズ
最適化とは、収益性とリスクのバランスが最も良いパラメータを探すことです。計算時間と結果の安定性を考慮してください。
| 手法 | 概要 | 向いている場面 | リスク |
|---|---|---|---|
| Grid Search | パラメータの全探索グリッド | パラメータが少なく、範囲が狭い場合 | 時間がかかり、「グリッドへの合わせ込み」リスク |
| 遺伝的最適化 | 組み合わせを進化的に選別(突然変異/交叉) | 中〜多めのパラメータ数 | 基準管理と早期停止が必要 |
| ベイズ(TPE) | TPEによる「パラメータ → 指標」モデル | 実行コストが高く、表面が複雑な場合 | 実装が難しく、局所最大に陥るリスク |
粗いグリッド → 遺伝的最適化 → WFA/Monte Carloで検証、という組み合わせが有効です。最大PFではなく、安定したプラトーを選びます。
🛡️ リスク管理とポジションサイズ
リスク管理は、エントリーポイント以上に資本曲線へ影響します。ポジションサイズはボラティリティと資本に応じて決めるべきです。
Fixed fractionalとボラティリティリスク
1取引あたり資本の一定割合をリスクに取り、ATRでストップを正規化します。
- 実務:SL (ストップロス)からロットを計算し、1取引あたり0.5〜2%をリスクにする。
- ATR正規化:ボラティリティが異なっても同じ金額リスクにする。
要点: バックテストでリスクを正確にモデリングしてください。そうしないと実際のドローダウンに嫌な形で驚かされます。
リスク制限
日次/週次の損失上限、連続ストップ後の休止、スプレッド幅やATR急増時の取引停止。
- N回連続で負けた後に休止する。
- 極端なスプレッドまたは異常なATRで停止する。
🧩 戦略ポートフォリオ:分散と相関
相関の低い複数の独立戦略は、エクイティを滑らかにし、ドローダウンを減らします。
- タイプ: トレンド、mean-reversion、ブレイクアウト、異なる時間足/シンボル。
- 選別: 日次PnL (損益)の低い相関、補完的な市場レジーム。
- 管理: 同時リスクと銘柄クラスターへの上限。
戦略の相関行列を作り、個別だけでなくポートフォリオ全体としてテストしてください。
🧨 「もしも」シナリオ:コストと条件のストレステスト
約定悪化、ボラティリティ上昇、ニュース時の停止に、戦略がどう耐えるかを確認してください。
| シナリオ | 変更 | 想定される影響 |
|---|---|---|
| 手数料 ↑ | ×1.5 | 高頻度戦略のPF低下。取引をフィルタリングする。 |
| スプレッド ↑ | +30% | entry/exitが悪化し、ストップ増加、Sharpe低下。 |
| 遅延 ↑ | +150ミリ秒 | 急変時の約定が悪化。バッファを増やす。 |
| ニュース — off | 発表前後−1時間 | 取引数は減るが、損失のテールが滑らかになる。 |
❓ よくある質問(FAQ)
「99%」のモデリング品質をどう実現する?
バックテストとフォワードテストは何が違う?
FX戦略ではどのくらいの履歴期間を使うべき?
ビジュアルモードとMarket Replayはなぜ必要?
バックテストにはMT4、MT5、cTraderのどれを選ぶべき?
バックテストで手数料とスワップをどう考慮する?
戦略が堅牢だとどう判断する?
✅ デモ/実運用開始前のチェックリスト
- 「パスポート」付きデータセット:ソース、深さ、タイムゾーン、エクスポート日、ハッシュ。
- テスト設定:シンボル、時間足、日付、コスト、遅延、seed。
- ランダムスプレッドとスリッページを含む最終の「ティック」実行。
- パラメータ数を制限した最適化とWFAでの検証。
- Monte Carlo:200以上のシナリオ、分布のテール管理。
- 堅牢性マップ:プラトーからパラメータを選ぶ。
- 管理区間でのエントリー/エグジットの視覚検証。
- ポジションサイズ:1取引あたりリスクとATR正規化。
- 制限:日次/週次の損失上限、休止ルール。
- 極端なスプレッド/ATRでの取引停止。
- 取引ログ付きで2〜4週間以上のデモ監視。
- デモ vs バックテストの比較:乖離が計画範囲内。
- 約定悪化に備えた「もしも」プラン。
- ポートフォリオ:既存戦略との相関チェック。
- リスクを段階的に増やす実運用リリース計画。