バックテスト結果を確認するときの注意点について。勝率とエントリー回数編

バックテスト関連



こんにちは!shinです!


毎回、こんにちはって書いてますが更新するのはいつも夜中のshinです!(笑)


今日は自分でバックテストを取る人はもちろん、
シグナルツールや自動売買において表記されている勝率とエントリー回数についての注意点について書いていきたいと思います。


毎回言っていますが、僕は人が作ったシグナルツールや自動売買に頼るより、
自分でバックテストを取ることを強く勧めていますからね!

ただ、坊主シグナルについては自分で確認出来るなんてすごく便利!(宣伝)

これはみんなに教えなくちゃだね!(宣伝)

早く教えなくちゃだから、こんなブログ読んでいる暇はないわ!(茶番)

勝率について

バックテストを取るにあたって、
何を一番知りたいかっていうとやっぱり勝率ですよね。

これが低ければ実戦で全く使えませんからね。

そして、
高い方が良いに決まってますよね。


それについては異論はないと思いますが、

注意していただきたいのは信頼度です。


ん?信頼度?
って思うかもしれませんがこれは皆さん無意識に考えています。

これをもっと具体的に数字に落とし込むことが大切です。


例えば、パターン①
過去5年間で勝率80%です!
5戦4勝です!



いや少なすぎでしょ!!



ってなりますよね。
では、次にパターン②
今週の勝率は80%です!
5戦4勝です!


いや少なすぎ…
いや、1週間で5戦4勝はまあまあか…?



という感じになりませんか?
これは自然と頭の中でエントリー回数と勝率について考えているということです。

もう少し掘り下げましょう。

先ほどのパターンで何を考えていたかと言いますと、

どちらも5戦4勝の勝率80%なので、
ここでは期間を考えているということです。

つまり、5年間という期間の中で5回のエントリー回数は少なすぎる
ということですね。


ただ、もうひとつ考えましたよね?

そもそも5戦4勝っていう結果自体が少なすぎてあてにならないでしょと。


そうなんですよ!
その感覚の通りです。


5年間で5戦は論外ですが、
1週間で5戦4勝も1週間という枠で見れば立派な成績ですが、
その手法が信頼に値するかと言われればNOです。
あくまで現在は80%というだけです。
次の1戦目が負けなだけで、勝率は66.6%ですからね。

試行回数が無ければ勝率の信頼度はありません。

なので、実際にエントリーしながら勝率がある程度信頼に値するようになるにはかなりの期間が必要です。

だから、やっぱり信頼度の高い勝率のためにもバックテストが必要。


それじゃあ、どのぐらいで信頼出来るのかということですね。


こちらは統計学の大数の法則の話になってきます。
確率の収束について以下は引用文です。

確率が収束するのに必要となる試行回数nを求める。
確率分母kが誤差±r%以内に収束するのに必要となる試行回数n(危険率5%)は以下の計算式で求めることが出来ます。
n=試行回数 z=(今回は危険率5%で1.96) k=確率分母 r=誤差
※危険率=計算を間違える確率
試行回数n = 1.96^2 × ( 確率分母k – 1 ) ÷ 誤差r^2
この計算式を使って、勝率50%(確率分母2)システムの勝率が誤差±10%以内に収束するのに必要となる試行回数nを求めてみますと、
■n = 1.96^2 × ( 2 – 1 ) ÷ 10%^2 = 384回 となります。
以上の事から、勝率50%システムの勝率が誤差±10%以内(45~55%)に収束するのには、95%の確率で試行回数が384回以上必要という事が分かりました。

http://blog2.konpeitou.biz/2016/09/19/%E7%A2%BA%E7%8E%87%E5%88%A5%E3%81%AE%E5%8F%8E%E6%9D%9F%E9%80%9F%E5%BA%A6/



僕自身もそんなに詳しいわけでもないですし、
計算式を覚える必要はないのでざっくりと説明していきます。

コインを投げた時に表が出る確率は50%です。
じゃあ10回投げた時に必ず表が5回は出ますか?
出ませんよね。

4回の時もあれば6回の時もあります。
もしかしたら0回や10回の時もあります。

では100回投げれば確率は50%になるのか?

きっとならないですよね。
一定の確率であっても、必ず偏りが出るタイミングがあります。
そして分母が大きいほど、確率の収束に時間がかかります。

じゃあどのぐらいで50%になるのかっていうのが、先ほどの計算式です。

コインの裏表のように50%の確率だった場合は
384回投げれば95%の確率で表の出る確率は45~55%に収まりますよということです。

適当に描いた図なので申し訳ありませんが、
0%になる確率や100%になる確率もゼロではないですが、
限りなくゼロに近いので図のように書きました。

結局何が言いたいかと言いますと、
コインを384回投げるという行為をを100回行うと
そのうちの5回は表の出る確率が45~55%に収まらないということです。

投げる回数を増やせば増やすほど、45~55%に収まる確率は上がります。

これをバイナリーに置き換えるなら
エントリー回数が384回で勝率50%というバックテスト結果が出た場合、
95%の確率でその手法は45~55%の勝率であるということです。

試行回数を何回増やそうが、結局絶対に50%の勝率という風には言えないのですが、
信頼度は増していくということになります。

以下は先ほど紹介したサイト様にて記載してある確率別の収束に必要となる試行回数の一覧です。

またこちらのサイト様では分かりやすい説明の他、
信頼度や誤差についてエクセルシートをダウンロードすれば、
任意の数字で計算出来るものがあります。
http://www.dwdem.com/math/lec/page21.html

こちらの誤差の%は、元の勝率に対しての%なのでお気をつけください。
例えば誤差±10%の場合、元の勝率が50%⇒45~55%に収まる。
元の勝率が60%⇒54~66%に収まる。
40~60%に収まるとか、50~60%に収まるというのでは無いのでお間違えの無いように。
僕は最初勘違いしてました。

長くなってきましたが…
勝率についてのまとめとして

バックテスト結果で勝率〇%と出た場合でも
コインの裏表やサイコロではないので、確率はあくまで信頼度で表されます。
その確率には必ず誤差がある可能性があるとともに、
試行回数が少なければその誤差は大きくなるという認識を持つ。

どんなにエントリー回数が多くても誤差は無くならないので、
100%という確証は得られません。


だから常に自分の手法に疑いを持ちつつ、
今後も検証していく必要があるということですね。

エントリー回数と期待値について

これまでの説明で試行回数=エントリー回数が大切だということは理解して頂けたと思います。

ではバックテストを取るうえで、次に考えたいのが
エントリー回数と期待値についてです。

理想は勝率が高いうえにエントリー回数が多いことです。

しかし、そんなポイントや条件はなかなか見つけられません。

基本的に勝率を上げればエントリー回数は減ります。

ここが悩ましいところです。


そこで一つの基準となるのが期待値です。
その確率通りエントリーした場合、計算上いくらの収支が見込めるかということです。

例えば、エントリー金額が1000円として、

パターン①
エントリー回数300回
勝率60%=180勝

期待値=-1000円×300回+1000円×1.88倍×180勝=+38400円

パターン②
エントリー回数500回
勝率58%=290勝
期待値=-1000円×500回+1000円×1.88倍×290勝=+45200円



この場合はパターン②の方が期待値が高いということになります。

僕が作った坊主シグナルには常に期待値が出るように設定してあります。

勝率に注目してしまいがちですが、この期待値もしっかり確認していきましょう。

ただ、期待値が高ければその手法が一番かというと、それは一概には言えません。

少し大げさな数字で計算してみます。

パターン①
エントリー回数10000回
勝率55%=5500勝
期待値=340000円

パターン②
エントリー回数500回
勝率60%=300勝
期待値=64000円


パターン③
エントリー回数100回
勝率80%=80勝
期待値=50400円



仮に期間が5年間という場合、上記のパターンではどれが一番優秀な手法でしょうか?


順番に検証していきましょう。

まずパターン①
期待値はダントツなので、この部分は良いでしょう。
ではバックテストの信頼度。
先ほどのご紹介したエクセルで計算しました。
勝率55%で10000回エントリーがあった場合の信頼度95%の誤差は1.76%。
つまり、95%の確率で54.03~55.97%の勝率に収まるということでした。

次にパターン②
期待値は真ん中。
勝率60%で500回エントリーがあった場合の信頼度95%の誤差は7.12%。
つまり、95%の確率で55.73~64.27%の勝率に収まるということでした。

次にパターン③
期待値は一番低いです。
勝率80%で100回エントリーがあった場合の信頼度95%の誤差は9.8%。
つまり、95%の確率で72.16~87.84%に収まるということでした。




ここからは個人の考え方にもよると思いますし、
これ以上難しい計算は僕には分かりませんので、
ここまでの情報から僕ならどうするかというお話をします。


まず、パターン①においては単純にエントリー回数が多すぎですね。
信頼度は大事ですが、それよりもそんな回数エントリーすることが現実的では無いですね。

ただ、期待値は一番高いので純粋に手法としての改善する価値はあります。
なので、この場合はもっと条件をつけ足して、
同じ期待値でも勝率を高くしてエントリー回数を削ります。




次にパターン②ですが、 まずまず優秀だと思います。
信頼度95%というのは計算して導き出した範囲から5%は外れるということですが、
勝率が上に外れる分は問題ありませんので、実質97.5%は範囲内だということです。
エントリー回数的にも現実的な数字ですし、
仮に52.88%だったとしても大きくダメージを受ける可能性は少ないので、
この場合フォワード結果を取っていくと思います。


次にパターン③です。
こんな数字出たらめちゃくちゃ喜びますね(笑)
仮に勝率が下振れしても70%とかありますからね。

というかさずがにバイナリーのバックテストで勝率80%は相当厳しいと思います。
実際僕は出せてないですね。
FXの場合は利幅を調整したら出せると思いますが、
バイナリーでこれを出せたら自動売買化して高額エントリーで回すのが一番良いでしょうね。
もちろんシグナルでも良いと思いますが、ちょっとエントリー回数が少なすぎるのはありますね。



ということで、まとめると…
パターン①→改善した方が良い
パターン②→試してみる
パターン③→出せないと思うけど、出たら優秀!

まとめ

いかがだったでしょうか?
バックテストを取るにしても、誰かが公開しているバックテスト結果を確認するにしても
今回説明したことを知っておくだけで見え方が変わるはずです。

今後、計算式を暗記する必要や毎回信頼度を計算する必要はないと思います。

おおむね知っておけばいいですし、どっちがいいのか迷った時などに参考にしてください。

この先、バックテストを取っていくと

勝率を上げたいけどエントリー回数が下がるー!


ということはよく起きます。

そういう時には今回の記事を参考にして頂けると幸いです。

2021/3/17追記
ただ、改めて考えると直近1ヶ月だけにカーブフィッティングさせれば、勝率は80%は厳しいにしても70%とかはおそらく出せます。
しかし、それを大数の法則に当てはめて誤差を出したとしても、10年間でバックテストを取ればその誤差に収まらないことの方が多いと思います。
これは相場が単純な統計では測れない、偏りがあるという証拠になるのかなと思いました。
つくづく相場は難しいなと思います。



それでは、次回は坊主シグナルの裏技的な使い方を書きますので、
シグナルを持っていない方は7/14まで無料配布中ですので、ダウンロードしてお待ちください!


持っている方はバックテストを取ってお待ちください

コメント