AIを使って取引戦略をバックテストする方法
過去データ上でエントリー、イグジット、リスクルールをテストし、バイアスを避けてパフォーマンスを検証するための実用的なAIバックテストのワークフローを学ぶ。
By Trading AI Team

Key Takeaways
- 信頼できるバックテスト戦略は、過去データに触れる前に明確なエントリー、エグジット、ポジションサイズのルールを定義し、事後的なバイアスを減らす。
- AIバックテストの結果が異なる相場局面で持続するかを確認するために、少なくとも3つのアウト・オブ・サンプル区間を使ったウォークフォワードテストを行う。
- 手数料、スプレッド、および現実的なスリッページ(例えばトレードごとに0.05%–0.20%)を常に含めないと、有利性が過大評価される。
- リスクの脆弱さを隠すことがあるため、勝率だけでなく期待値、最大ドローダウン、プロフィットファクターを併せて評価する。
- 特徴量は必ず過去のローソク足のみから生成し、学習・検証・テスト期間を時系列で分けることでデータリーケージを避ける。
バックテストは戦略が実資金で取引する資格を得る場である。AIは戦略テストを高速化できるが、プロセスを制御しなければ自分をより速く騙す手助けにもなる。
What AI backtesting is and what it is not
AIバックテストとは、機械学習やルール発見ツールを用いて、過去のトレーディングデータ上で取引ルールを作成、改良、評価することを指す。目標は他のバックテストと同じで、コストとリスクを考慮した上で戦略に再現可能なエッジがあるかを推定することだ。
AIバックテストが得意なこと:
- 大規模なパラメータ探索: RSI長さ7–21、ATRストップ1.5–3.5など、手作業の試行錯誤なしに何千もの組み合わせをテストできる。
- 特徴量発見: 自分では試そうと思わない関係性(例:ボラティリティレジーム+トレンドフィルター)を見つける。
- ロバストネスチェック: BTC, ETH, AAPL, EUR/USD のようなシンボルで素早く再実行して確認する。
ガードレールを設けないと不得手なこと:
- クリーンで定常的に「過去から未来を予測する」こと(市場は変化する)。
- ブラックボックスにして取引ロジックを置き換え、リスク管理できなくなること。
- ライブ結果の保証—完璧なバックテストでも実行が異なれば失敗する可能性がある。
Actionable tip: AIが「素晴らしい」戦略を提案したら、そのロジックをチェックリストとして必ず出力させる:トレンドフィルター → エントリー トリガー → ストップ → 利確 → タイムストップ。これができないなら、責任を持って取引できない。
Step 1 Build a strategy spec before you touch data
多くのバックテストが失敗するのは、戦略が完全に仕様化されていないからだ。バックテスト用のトレーディング戦略は、後で自動化するにしてもコードのように書かれていなければならない。
最低限の仕様(書き出すこと):
- 市場と時間足: BTC 4H、AAPL 1D、EUR/USD 15m など。
- エントリー条件: 曖昧さのないもの。「強そう」は不可。
- エグジット条件: ストップロス、テイクプロフィット、トレーリング、時間ベースのエグジット。
- ポジションサイジング: 固定% 、ボラティリティベース(ATR)、または固定ドルリスク。
- リスク制限: 最大ポジション数、日次最大損失、最大レバレッジ。
- コストモデル: 手数料、スプレッド、スリッページの仮定。
ETH 4H の例(シンプルだがテスト可能):
- トレンドフィルター:200 EMA 上向き(終値 > EMA200)。
- エントリー:RSI(14) が50を上抜けし、終値が直前高値を上回る。
- ストップ:エントリーから ATR(14) の2.0倍下。
- 利確:エントリーから ATR(14) の3.0倍上、または RSI(14) が50を下回る。
- リスク:1トレードあたり資産の0.75%。
- コスト:片側0.08%の手数料+片側0.03%のスリッページ。
Actionable tip: ルールを Boolean 文(真/偽)に変換できないなら、戦略テストには準備ができていない。
Step 2 Get the right historical data and clean it
AIモデルはデータ品質に敏感だ。ゴミデータはノイズを生むだけでなく、偽のエッジを作り出す。
Data requirements by asset class
- Crypto (BTC, ETH): 取引所レベルのOHLCVで一貫したタイムスタンプを使う。障害時の欠損ローソク足を確認する。
- Forex (EUR/USD): ブローカーフィードに注意。スプレッドはセッションによって変わるので、ミッドプライス+スプレッドモデルを検討する。
- Stocks (AAPL): 日足を使う場合はスプリットと配当を調整し、コーポレートアクションがリターンを歪めないようにする。
Cleaning checklist (non-negotiable)
- 重複ローソク足を削除またはフラグする。
- 欠損タイムスタンプは慎重に埋める(イントラデイではフォワードフィルより削除が望ましい場合が多い)。
- タイムゾーンを正規化する(UTCが簡単)。
- OHLCの論理を検証する:High ≥ max(Open, Close) および Low ≤ min(Open, Close)。
- 指標は必ず過去のデータのみを使うよう整列する(リークを防ぐ)。
Actionable tip: まず「サニティバックテスト」を実行する:買い持ち(buy-and-hold)とランダムエントリー戦略。ランダムエントリーが手数料後に有利なら、データかコストモデルが間違っている。
Step 3 Choose an AI workflow that matches your strategy
「AIバックテスト」は非常に異なる意味を持ちうる。達成したいことに合わせてワークフローを選ぶ。
Workflow A Rule based with AI parameter search
ルールは提供し、AIがパラメータ空間を探索する。
- 最適対象:RSI/EMA/ATR システム、ブレイクアウト、フィルター付きの平均回帰など。
- 利点:解釈可能でリスク管理が容易。
- リスク:多数の組み合わせを試すことで過剰適合する可能性。
実用例: AAPL 日足で検索する場合:
- EMA ファスト:10–30
- EMA スロー:100–250
- ATR ストップ:1.5–4.0 その後、インサンプルの最高結果だけでなくアウト・オブ・サンプルの成績を評価する。
Actionable tip: 総組み合わせ数を制限する。50,000のバリアントをテストしたら、上位10は「ラッキー」だと仮定して扱え。
Workflow B Model predicts returns then trades rules
モデルが次バーのリターン確率を予測し、信頼度が高いときのみルールで取引する。
- 最適対象:強いデータ規律を持つシステマティックトレーダー。
- 利点:トレンド、ボラ、出来高、季節性など複数の特徴量を取り込める。
- リスク:リーケージや不安定なシグナル。
Actionable tip: 予測を「取引可能」なルールに変換する:「予測リターン > 0.15% かつボラティリティフィルター通過ならロング」など。単に「モデルが上を示した」では不十分。
Workflow C Pattern discovery and clustering
AIが市場のレジーム(トレンド、レンジ、高ボラ)をグルーピングし、レジームごとに異なるルールを取引する。
- 最適対象:戦略が「ある時だけ」機能することを知っているトレーダー(例:ブレイクアウトは低ボラで失敗しやすい)。
- 利点:選択性を向上させる。
- リスク:レジームラベルは変化しうるため、実行ルールは単純である必要がある。
Actionable tip: ライブではレジームフィルターをシンプルに保つ:例「ATR(14) が 60日中央値以上のときのみブレイクアウトを取る」。
Step 4 Split your data correctly to avoid leakage
モデルに「未来」を見せることほどパフォーマンスを偽装する速い方法はない。適切な分割はランダムではなく時系列に沿うべきだ。
戦略テストの推奨分割:
- Training (in-sample): 60%
- Validation: 20%
- Test (out-of-sample): 20%
例:BTC 4H、2019–2026 の場合:
- Train: 2019–2023
- Validate: 2024
- Test: 2025–2026年中頃
さらにウォークフォワードテストを追加する:
- Train 2019–2021 → test 2022
- Train 2019–2022 → test 2023
- Train 2019–2023 → test 2024 これにより、ブル、ベア、横ばいといったレジーム変化で成績が持続するか確認できる。
Actionable tip: 最適設定がウォークフォワード窗口ごとに大きく変わるなら、エッジは安定していない可能性が高い。
Step 5 Define realistic execution and cost assumptions
リテールのバックテストは完璧な約定を仮定しがちだ。ライブ取引は違う。
Costs to model
- Fees: 暗号はメーカー/テイカー、株はコミッション、FXはスプレッド。
- Spread: ロールオーバーやニュース時のEUR/USDで特に重要。
- Slippage: マーケット注文、流動性低下、ボラティリティの高いローソク足で悪化する。
- Funding/borrow: パーペチュアル先物のファンディング、マージン借入コスト。
経験則レンジ(要キャリブレーション):
- 流動性の高い暗号(BTC/ETH):片側手数料0.02%–0.10% + 片側スリッページ0.01%–0.05%
- 大型株(AAPL):$0手数料が多いが、0.01%–0.03% のスリッページは残る
- FX(EUR/USD):リテール典型のスプレッドは0.5–1.5ピップス、ニュース時にスリッページが急増
Actionable tip: コストを倍にしてストレステストする。コスト倍増で収益性が消えるなら、その戦略は薄すぎて取引に値しない。
Step 6 Pick the metrics that actually matter
あるメトリクスで素晴らしく見えても、取引不可能な戦略であり得る。
Core performance metrics
- Expectancy (per trade): コスト後の1トレード当たりの平均利益。正の期待値が基礎。
- Profit factor: 総利益 / 総損失。多くの耐久性あるシステムは1.2–1.8 程度にいる;極端に高い値は過剰適合を示すことがある。
- Max drawdown (MDD): 痛みのレベル。45%のドローダウンは12%とは別の戦略だ。
- Sharpe or Sortino: リスク調整後リターン;歪んだリターンにはSortinoがしばしば良い。
- Trade count: 30トレードは証拠として不十分;時間足によるが300トレードの方が望ましい。
Trade quality metrics (often ignored)
- 平均勝ち / 平均負け
- レジーム別勝率: トレンド vs レンジ
- 市場にいる時間
- エクスポージャーとレバレッジ
Actionable tip: 年別(または四半期別)期待値 を追う。期待値が特定の年にしか正でないなら、その期間にカーブフィットしている可能性が高い。

Step 7 Use AI to improve robustness not just returns
AIをバックテストで最も有効に使うのは「最高のCAGRを見つけること」ではなく、「現実がぶつかったときに何が持続するかを見つけること」だ。
Robustness checks AI can automate
- Parameter stability maps: グリッド上のパフォーマンス(例:RSI長さ vs ストップサイズ)。鋭いピークではなく「台地(プラトー)」が欲しい。
- Monte Carlo reshuffling: トレード順をランダム化してドローダウン幅や破綻リスクを推定する。
- Noise tests: 価格に小さなノイズ(例 ±0.05%)を加え、エッジが消えるか確認する。
- Cost sensitivity: 手数料/スプレッド/スリッページを上げて再実行する。
- Market rotation: BTC, ETH, いくつかの大型アルトでテスト;株戦略は AAPL, MSFT, SPY でテスト。
実例: BTCブレイクアウト戦略が1.9×ATRのストップでしか機能せず、1.8×や2.0×で失敗するなら、それはロバストではない可能性が高い。
Actionable tip: ルールを設定する:「最適付近のパラメータ組合せの少なくとも70%で収益性を維持する戦略のみを取引する」。
Step 8 A practical AI backtesting workflow you can follow
以下は、Trading AI を使う場合でも自前のスタックでも繰り返し実行できるワークフローだ。
1 Start with a baseline strategy you can explain
市場と時間足を1つ選ぶ:
- BTC 4H トレンドフォロー
- ETH 1H 平均回帰
- AAPL 日足 トレンドフィルター+プルバック
- EUR/USD 15m セッションブレイクアウト
仕様を書き出す(Step 1)。例外はなし。
Actionable tip: 1週間手動で取引しても良いと思える戦略から始めよ。そうでないなら自動化するな。
2 Run a “plain” backtest with conservative costs
AI最適化の前にベースラインを測る:
- プロフィットファクター
- MDD
- 月あたりのトレード数
- 最悪月のリターン
ベースラインが既にまともならAIで改善可能。ベースラインが酷ければAI最適化は通常カーブフィットに過ぎない。
Actionable tip: インサンプルで少なくとも100トレードを要求してから、イントラデイシステムのパラメータ最適化をAIに任せる。
3 Let AI search, but constrain it
制約は過剰適合を減らす:
- パラメータ数を制限(最初は2–4が適切)。
- 取引に意味のある範囲を使う(ATRストップ0.5–10は無意味)。
- 複雑さにペナルティを与える(ルールが少ない方が良い)。
Actionable tip: フィルターは少ない方を好め。フィルターを増やすとトレード数が減り、バックテストが偶然である可能性が高くなる。
4 Validate out-of-sample and walk-forward
インサンプル上位20候補を取り、以下で再ランク付けする:
- アウトオブサンプル期待値
- ドローダウンコントロール
- パラメータ安定性
その後ウォークフォワードを実行。1つのレジームでしか機能しないものは棄却する。
Actionable tip: コスト後のアウトオブサンプル・プロフィットファクターが1.05未満に落ちるなら、トレード数が非常に多い場合を除きノイズとして扱え。
5 Paper trade with live-like execution assumptions
バックテストは実際の約定を含まない。ペーパートレードは(ほとんどの場合)それを含む。
- ライブで使う注文タイプ(成行 vs 指値)を使う。
- ライブで取引する時間帯に取引する。
- スリッページがバックテスト想定と一致するか追跡する。
Actionable tip: 50トレード以上でペーパートレードがバックテストより30%以上悪いなら、実行モデルが楽観的すぎる。
Step 9 Common mistakes that blow up AI backtests
AIバックテストを魔法のように見せてライブで失敗させるトラップ群を挙げる。
Mistake 1 Data leakage through features
例:
- 今日の終値を使って「今日のオープンで」トレードを決める。
- 全サンプルの平均/分散で正規化する(未来情報の使用)。
- 先を覗くインジケーターでレジームにラベル付けする。
Fix: 特徴量は過去のローソク足のみを使って構築し、スケーラーは訓練データでのみフィットさせる。
Mistake 2 Over-optimizing on one market
BTC 2020–2021 だけで機能する戦略はワンオフかもしれない。
Fix: 複数シンボルと複数レジームでテストする。暗号ならベア期間(例:2022年)や高ボラ期を含める。
Mistake 3 Ignoring liquidity and order types
ローソク足の終値で指値が約定すると仮定するバックテストは、速い市場では幻想だ。
Fix: 次バーでの約定仮定を使い、スリッページを含め、必要なら部分約定もモデル化する。
Mistake 4 Using win rate as the main goal
勝率78%の戦略でも、損失が勝ちの4倍なら負ける可能性がある。
Fix: まず期待値とドローダウンで最適化し、次に勝率を見る。
Actionable tip: ハードフィルターを追加する:「平均勝ちが平均負けの少なくとも0.8倍でなければならない」、高勝率型の平均回帰を厳格なリスクキャップで取引する場合を除く。
Frequently Asked Questions
How do I backtest a trading strategy with AI?
正確なエントリー、エグジット、リスクルールをまず定義し、次に時系列で分割したデータ上で現実的な手数料とスリッページを含めてAIバックテストを実行する。アウトオブサンプルとウォークフォワードテストでエッジがレジームを越えて持続するか確認する。コストを上げたストレステストで収益性が残る戦略のみを昇格させる。
What is the best historical data for AI backtesting?
最適なヒストリカルデータはあなたの執行場所に一致し、正確なタイムスタンプ、コーポレートアクション(株式の場合)、一貫したOHLCVを含むものだ。暗号は取引所固有のデータを、FXは現実的なスプレッドモデルを持つフィードを使う。欠損ローソク足を常に検証し、必要ならスプリット/配当を調整する。
How do I avoid overfitting when strategy testing?
パラメータを制限し、ウォークフォワードテストを使い、鋭い最適点より広い性能のプラトーを好むことで過剰適合を避ける。チューニングに使わない厳格なアウトオブサンプルテストを保持する。ノイズテストやコスト倍増などのロバストネスチェックを追加する。
What metrics matter most in an AI backtest?
期待値、最大ドローダウン、プロフィットファクターが最も重要で、リターンをリスクやトレード品質に結びつける。トレード数、平均勝ち対平均負け、年別・レジーム別の成績も追跡すること。高いシャープは有用だが、ドローダウンやコスト感受性を無視してはならない。
References
- Chan, Ernest P. Quantitative Trading: How to Build Your Own Algorithmic Trading Business.
- López de Prado, Marcos. Advances in Financial Machine Learning.
- CME Group and exchange contract specifications (for tick size, session rules, and costs assumptions).
外部リンク
Backtesting a Trading Strategy in Python With AI Generated Code GitHub - tradingstrategy-ai/getting-started: Start developing and backtesting your own automated trading strategies · GitHub Features | AI Trading Strategy Backtesting Tool Features Trading Strategy Backtesting Software | TrendSpider AI Backtesting Assistant | LuxAlgo


