バックテストで勝率60%が出たとき、それが本物かを確かめる3つの数字

試行回数別の見かけの勝率。実力が五分五分でも1通りで50%、30通りで60%、100通りで62% 検証・統計

シリーズ「検証結果の読み方」全3回第1回です。

過去検証のやり方を説明した記事はたくさんあります。ツールを開いてチャートを送り、ルール通りにエントリーして、勝率と損益を記録する。手順としてはそれで合っています。

ただ、その先がほとんど書かれていません。出てきた勝率60%という数字を、どこまで信じていいのか。ここを飛ばすと、検証したのに勝てないという状態になります。手法が悪いのではなく、検証の読み方でつまずいているケースがかなりあります。

 

 

 

TL;DR

確かめる数字は3つです。

  1. トレード数:何回のトレードでその勝率を出したか
  2. 試行回数:採用するまでに何通りのルールを試したか
  3. 期間を分けた結果:前半と後半で同じ傾向が出るか

このうち2番目が一番見落とされていて、一番効きます。

 

 

 

50トレードの勝率60%は、負け越しと区別がつかない

50トレードして30勝、勝率60%だったとします。悪くない数字に見えます。

ですがこれは50回しか投げていないコインの結果です。同じ手法を無限に回したときの本当の勝率がどのあたりにあるか、幅で出すとこうなります(二項分布の95%信頼区間、Wilson法)。

トレード数 勝率 本当の勝率がある範囲(95%)
50 60% 46.2% 〜 72.4%
100 60% 50.2% 〜 69.1%
300 60% 54.4% 〜 65.4%
1000 60% 56.9% 〜 63.0%

50トレードでは下限が46.2%です。負け越す手法だったとしても、50回やれば勝率60%くらいは普通に出ます。この検証結果からは、勝てる手法かどうかを判断できません。

300トレードあたりから範囲が実用的な幅に収まってきます。50や100で結論を出しているなら、まだ足りていないと考えたほうが安全です。

 

 

 

もっと効くのは「何通り試したか」

ここからが本題です。

検証の説明記事はたいてい、パラメータを変えて一番成績の良い組み合わせを採用しましょう、と書いてあります。移動平均を20から25に変えてみる、損切り幅を30pipsから50pipsにしてみる。ごく自然な手順に見えます。

ですが、これをやると数字が勝手に良くなります。

実力がちょうど五分五分(本当の勝率50%)の手法を用意して、100トレードの検証をM通り走らせ、その中から一番成績の良かったものだけを見る。これを2万回繰り返して集計しました。

試した通り数 一番良かったものの見かけの勝率(中央値)
1通り 50%
5通り 56%
10通り 57%
30通り 60%
100通り 62%

実力が完全に五分五分でも、30通り試せば見かけの勝率60%が普通に出ます。しかも中央値で60%です。運が良ければ75%まで出ました。

つまり冒頭の「50トレードで勝率60%」は、パラメータを30通り試した後の数字なら、何の情報も持っていません。エッジがゼロの手法から出る典型的な値です。

試行回数は自己申告するしかないので、正直に数えてください。パラメータの組み合わせだけでなく、通貨ペアを変えた回数、時間足を変えた回数、途中で条件を足したり外したりした回数も全部入ります。感覚的には、思っているより1桁多いことが多いです。

 

 

 

期間を分けると、かなり落とせる

3つ目は単純です。検証期間を前半と後半に割って、両方で同じ傾向が出るかを見ます。

さきほどと同じ、実力五分五分の手法で計算しました。

  • 前半100トレードで勝率55%以上が出る確率:17.9%
  • 前半で55%以上、かつ後半でも55%以上になる確率:3.3%

5分の1近く残っていたまぐれが、両方の期間を要求すると30分の1まで落ちます。完璧なフィルタではありませんが、手間に対して効果が大きい部分です。

注意点として、前半を見てからルールを調整して後半で試したなら、それは分けたことになりません。後半も試行回数のうちに入ります。

 

 

 

よくある間違い

  • 勝率だけを見る:勝率90%でも、1回の負けが9回の勝ちを消すなら意味がありません。損益の期待値と合わせて見ます
  • 都合の悪い期間を外す:相場が特殊だったから、という理由で期間を削ると試行回数が増えるだけです
  • スプレッドとスワップを入れない:短い足ほどここで結果が反転します。往復コストを引いてから判断します
  • 良い結果が出たところで止める:検証を止めるタイミングを結果で決めると、それも実質的な試行になります

 

 

 

まず何をするか

いま手元に検証結果があるなら、次の3つを書き出してみてください。

  1. トレード数はいくつか。300に届いているか
  2. 採用するまでに何通り試したか。10通りを超えているなら、上の表の分だけ数字を割り引く
  3. 期間を2つに割っても同じ方向が出るか

この3つを通した手法だけを、少額の実弾に進める。それだけで、検証したのに勝てないという状態はかなり減ります。

なお、ここで挙げた3つは入口です。試行回数の割り引きをきちんと数式で扱う方法(Deflated Sharpe Ratio)や、パラメータをずらしたときに成績がなだらかに変化するかを見る方法など、もう一段先があります。

コメント

タイトルとURLをコピーしました