backte.st

バックテストの過剰最適化:好成績が実運用で崩れやすい理由

多くのバリエーションを試すとノイズが優位性に見えてしまう仕組み、レポート上の警告サイン、過剰最適化を減らすシンプルな習慣。

過剰最適化(オーバーフィッティング、カーブフィッティング)とは、ルールが繰り返し起きるパターンではなく、ある過去のサンプルに含まれるノイズを記述してしまっている状態です。バックテストでは素晴らしく見えた戦略が実際のお金では期待外れに終わる、最もよくある理由です。

どうして起きるのか

別のRSIの閾値、別の移動平均、もうひとつのフィルターなど、バリエーションを試して一番良く見えたものを残すたびに、あなたは探索をしています。十分に探索すれば、たまたま良く見えるものが必ず出てきます。大勢がコインを投げれば、誰かが10回連続で表を出すのと同じです。

問題は1回のテストではありません。実行して忘れてしまったテストの回数です。David Bailey や Marcos López de Prado などの研究者がこのテーマについて多くを書いており、試行回数を考慮して結果を補正する デフレーテッド・シャープレシオ のような手法もあります。

レポート上の警告サイン

ベストトレード除外チェック

Backte.st の ベストトレード除外 チェックは、最も利益の大きい5件を除いた決済済み取引の複利リターンを計算し直します。それでも利益が出るなら、結果は多くの取引に分散しています。損失に転じるなら、利益の大半は少数の外れ値から来ており、それは最も再現しにくいものです。

過剰最適化を減らす習慣

  1. テストの前にルールを書く。 何を期待し、なぜそう考えるのかを決めてから、一度だけテストします。
  2. シンプルなルールを選ぶ。 条件が少ないほど、ノイズに合わせ込む余地も少なくなります。
  3. 期間をひとつ取っておき、一度だけ使う。 アウトオブサンプル・テスト を参照。
  4. 近傍のパラメータを確認する。 本物の効果が、ひとつの正確な数値だけに依存することはまれです。パラメータの頑健性 を参照。
  5. 複数の市場でテストする。 ひとつの銘柄でしか機能しないルールは疑わしいものです。Backte.st では同じルールで最大10市場を実行できます。
  6. 試行回数を数える。 20通り試したなら、1通りだけ試した場合より厳しく勝者を評価しましょう。

実際にどう見えるか

ラボ でRSI逆張りのような戦略を組み立て、いくつかの株式で実行して、どれかひとつの市場が素晴らしく見えるまで閾値を調整してみてください。それからチェックを見ると、未使用期間や近傍パラメータが弱点に変わっていることがよくあります。これが目に見えるかたちになった過剰最適化です。

ラボで試す

コード不要で指標から戦略を組み立て、いくつかの市場で実行して、このチェックを自分のルールで確かめましょう。無料で、ブラウザ内で動きます。

ラボを開く