メインコンテンツへスキップ
ガイド

単一のバックテストが嘘をつく理由

見栄えの良いバックテストと、実際に機能する戦略は同じではありません。両者を見分ける方法を、当社のツールを含むあらゆるツールに当てはめてご紹介します。

十分な数の組み合わせをテストすれば、何かが素晴らしく見えてくる

コインを10回投げれば、大抵は特に際立った結果にはなりません。しかし1000人にコイン投げをさせれば、誰か一人は10回連続で表を出すでしょう。その人を「コイン投げの天才」と呼ぶ人はいません — けれどもバックテストの世界では、トレーダーは日々まさにその過ちを犯しています。

どのツールであれ、パラメータ最適化の仕組みは同じです — 多数の組み合わせをテストし、最良のものを浮かび上がらせます。これは確かに有用ですが、そこには本質的な落とし穴があります。一部の組み合わせは純粋な偶然によって素晴らしく見えることがあります。過去データに含まれるランダムなノイズが、たまたま特定の設定と噛み合い、何の意味も持たない美しいエクイティカーブを作り出すことがあるからです。

そして、テストする組み合わせが多くなるほど、その「最良」の結果がそうした幸運な偶然の一つである可能性は高くなります。これは特定の最適化ツールの欠陥ではなく、多数の中からベストを選ぶという行為に内在する数学的な性質です。つまり、どんな結果テーブルの上位も、常に一つの問いを念頭に読む必要があるということです — これは本物の優位性なのか、それとも今回たまたま宝くじに当たっただけなのか?

どんな結果も信頼する前に確認すべき3つのシグナル

これらの確認に当社のツールは必要ありません。ツールを問わず、スプレッドシートでも実践できます。

1

何回の取引に基づいているか?

14回の取引で300%のリターンは、根拠ではなく単なる逸話です。サンプル数が少ないと、良い方にも悪い方にも極端な結果が出やすくなります — そして、極端な幸運は極端な実力と見分けがつきません。取引数が少ないほど、バックテストが教えてくれることは少なくなります。

2

隣接する値も同じ結果を示しているか?

期間14は利益を出すのに、13と15はどちらも損失を出すなら、それは優位性ではなく単なるスパイクを見つけただけです。信頼に値するパラメータ値は、通常は良好な結果が広がる領域の内側に位置します。本物の優位性は、設定を一段動かしただけで消えたりはしないからです。孤立したピークは、オーバーフィッティングの典型的な兆候です。

3

どれだけ広く探索したか?

20通りの組み合わせの中での最良の結果と、2,000通りの中での最良の結果は、同じ重みを持ちません。探索範囲が広いほど、運が「勝者」を生み出すチャンスも多くなります — つまり、「単なる偶然かもしれない」というハードルを越えるには、それだけ際立った結果である必要があります。

この3つすべてを、実行のたびに手作業で確認するのは骨が折れます。だからこそ、ほとんどの人はやりません。これこそが、私たちが本当に解決しようとしている課題です。

RunOptiがこれらをどう報告するか — すべての実行で自動的に

RunOptiはパラメータスイープを自動化しますが、私たちが最も重視しているのは、バックテストが完了した後に何が起こるかです。すべての結果は、上記の3つのシグナルに照らしてスコアリングされます。

  • check_circle

    低サンプルフラグ。最低しきい値を下回る取引数に基づく結果は、生の数値がどれほど見事に見えても、明示的に低信頼度としてマークされます。

  • check_circle

    近傍安定性。各組み合わせのスコアは、隣接するパラメータ値がどれだけ一貫して機能するかを反映します。孤立したスパイクは、たとえ生のリターンが高くても、堅実な領域よりも低いスコアになります。

  • check_circle

    探索範囲に応じたデフレーション。スコアは、その実行でテストされた組み合わせ数に応じて調整されます。2,000通り中の最良は、50通り中の最良より高いハードルを越える必要があります。運が良くなるチャンスが40倍あったからです。

  • check_circle

    そして、何も基準を満たさない場合には、そう伝えます。どのパラメータ領域もこれらのチェックを通過しなかった場合、RunOptiははっきりとお伝えします — 信頼できる領域が見つかりません。「今回の実行では信頼できる結果は得られませんでした」と言えないツールは、そもそも信頼性を測定していないに等しいと私たちは考えています。

この最後の機能は、その瞬間には最も歓迎されにくいものです — しかし、それこそがレポートの他の部分を読む価値あるものにしています。

このスコアが意味することについて。 RunOptiの堅牢性スコアは、1回の実行内における相対的な順位付けです — テストされた組み合わせの中で、どれが相対的に最も信頼できるかを示すものです。将来のパフォーマンスを保証するものではありません。過去の結果は、どれほど慎重に検証されていても、将来のリターンを保証するものではありません。

誠実なスコアリングのもとで、自分の戦略がどう見えるかを確認する

自分の戦略で完全なパラメータスイープを実行し、全体像を確認しましょう — 堅牢な領域、幸運なスパイク、そしてその違いを。

どちらに転んでも構いません。誠実な答えが「信頼できる領域が見つかりません」であるなら、それは市場から思い知らされる前に、最適化ツールから聞いておきたいはずです。