バックテストとは?完全ガイド
バックテストとは、トレード戦略のルールを過去の価格データに適用し、実際の資金を投じる前に成績をシミュレーションして評価するプロセスです。信頼できるバックテストは各時点で入手可能なデータだけを使い、取引コストを現実的にモデル化し、アウトオブサンプルで検証します。
バックテストはシステムトレードの土台です。プロのクオンツファンドは、戦略に資金を投じる前に、そのルールを何年分もの過去データに当てはめ、そのアプローチが過去にどのような成績を上げていたかを把握します。このガイドでは、バックテストとは何か、どのように機能するのか、そしてアマチュアのバックテストの大半を無効にしてしまう失敗について解説します。
基本的な考え方
トレード戦略とは一連のルールです。条件Aが成立したら買う。Bが起きたら売る。ルールCに従ってポジションサイズを決める。バックテストはこれらのルールを過去のデータセット(過去の価格、出来高、その他の市場データの系列)に適用し、その期間にルールに厳密に従っていたら何が起きていたかをシミュレーションします。
その結果得られるのは、シミュレーション上の運用実績です。エントリー価格、エグジット価格、保有期間を伴う一連の仮想取引です。ここから、トータルリターン、シャープレシオ、最大ドローダウン、勝率といったパフォーマンス指標を計算できます。これらの指標は、実際のお金をリスクにさらす前に、その戦略に価値があるかどうかを判断する助けになります。
キーワードはシミュレーションです。バックテストはトレードそのものではなく、トレードのモデルです。シミュレーションの質は、過去データの質、取引コストの前提の現実性、そして架空の優位性を生み出すコーディングミスがないかどうかにかかっています。
バックテストが重要な理由
バックテストがなければ、運用前に戦略を評価するには、実際のトレード(高くつきます。学ぶために実際の資金で代償を払うことになります)か、主観的なチャートの読み取り(「このパターンはたいていうまくいくように見える」)のどちらかに頼るしかありません。どちらも厳密ではありません。
バックテストによって、次のことができます。
- さまざまな市場局面で戦略がどう振る舞うかを理解する
- 想定されるドローダウンを見積もり、ポジションサイズを計画するとともに、損失期間の心理的な現実を考慮に入れる
- 競合する戦略のバリエーションを客観的に比較する
- パラメータ感応度を把握する。戦略は特定のパラメータ値でしか機能しないのか、それとも一定の範囲で機能するのか
- お金を失う前にロジックの誤りを見つける
機関投資家のクオンツファンドは、資金を配分する前に何か月もかけて戦略のバックテストとストレステストを行います。このステップを省く個人トレーダーは、構造的に不利な立場に置かれます。
バックテストの仕組み
バックテストは次の手順で進みます。
- 過去データを読み込む。テスト期間における対象銘柄のOHLCV(始値・高値・安値・終値・出来高)バー。
- インジケーターを計算する。移動平均、RSI、出来高平均などの派生シグナルを、各時点で入手可能なデータだけを使って計算します(先読みなし)。
- シグナルを生成する。各バーで、エントリーまたはエグジットの条件が満たされているかを評価します。
- 執行をシミュレーションする。シグナルが発生したら、現実的な価格(通常は次のバーの始値、または終値+スリッページモデル)でエントリーを記録し、手数料を差し引きます。
- ポートフォリオの状態を追跡する。各バーで現金残高とポジション評価額を更新し続けます。
- パフォーマンス指標を計算する。最後に、すべての取引を統計的なサマリーに集計します。
決定的な限界:先読みバイアス
先読みバイアスは、取引判断を下した時点では入手できなかったはずの情報をバックテストが使うときに発生します。バックテストでは素晴らしく見えるのに実際のトレードで失敗する、最もよくある理由です。
先読みバイアスのよくある原因:
- 今日の終値でシグナルを生成し、そのまま今日の終値で執行する(両方を同時に行うことはできません)
- 分割調整済みや配当調整済みの過去価格を、その調整がいつ判明したはずかを考慮せずに使う
- まずデータセット全体でインジケーターを計算し、その後でバーを順に処理する(バー100のインジケーター値にバー101〜500のデータが含まれてしまう)
- ファンダメンタルデータ(利益、アナリスト予想の修正)を、発表日ではなく提出日で使う
過剰最適化:より気づきにくい問題
正しく実装されたバックテストであっても、過剰最適化(カーブフィッティングとも呼ばれます)は大きなリスクです。同じデータセットで十分な数のパラメータの組み合わせを試せば、純粋に偶然だけで優れた結果を出すものが出てきます。危険なのは、このランダムな当てはまりを本物の優位性と取り違えることです。
標準的な解決策はアウトオブサンプル(out-of-sample)テストです。過去データを、パラメータを最適化する学習期間と、戦略を確定するまで一切手をつけないテスト期間に分けます。信頼できるのはテスト期間の結果だけです。両方の期間でパフォーマンスが同程度なら、戦略は汎化しており、頑健である可能性があります。アウトオブサンプル期間の成績が大きく劣る場合、戦略は学習データに過剰適合していたということです。
評価すべき主要な指標
バックテストでは、トータルリターン以外の指標も報告すべきです。最も重要な指標は次のとおりです。
- CAGR(年平均成長率):年率換算したリターン。期間の長さが異なる場合、トータルリターンより意味があります
- シャープレシオ:CAGRを年率換算のボラティリティで割ったもの。リスク調整後リターンを測ります
- 最大ドローダウン:期間中のピークから底までの最大の損失。その戦略に心理的に現実として耐えられるかどうかを左右します
- カルマーレシオ:CAGR / 最大ドローダウン。戦略間でドローダウン効率を比較するのに便利です
- 勝率とプロフィットファクター:取引がどれくらいの頻度で利益になるか、そして勝ちトレードが負けトレードを上回っているか
始め方
従来のバックテストにはプログラミングの知識が必要です。pandasとbacktraderを使ったPython、あるいはTradingViewのPine Scriptです。しかし、AIを活用したツールがこれを変えました。QuantPromptなら、戦略を普段の言葉で記述するだけで、コードを書かずに本格的なヒストリカルバックテストを実行できます。これにより、体系的な検証へのハードルが大きく下がり、市場は理解しているもののソフトウェアエンジニアではないトレーダーにも手が届くものになります。
どのツールを使うにしても、プラットフォームより規律のほうが重要です。十分な過去データを使い、アウトオブサンプルで検証し、取引コストを現実的にモデル化し、戦略に本物の優位性があると結論づける前に、必ずバイ・アンド・ホールドのベンチマークと結果を比較してください。
よくある質問
参考文献
- Harvey, C. R. & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management.
- Bailey, D. H. & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality. The Journal of Portfolio Management.
- QuantConnect. Backtesting (Cloud Platform documentation).