今回はバックテストを取る際に、どうやったらカーブフィッティングを防げるのか?についてお話していきたいと思います。
バックテストでカーブフィッティングを防ぐには?!
こんにちは、ムロパチです。
今回はバックテストを取る際に、カーブフィッティングを防ぐにはどんなことに気を付けたらいいのか?!という事について解説していきたいと思います。
カーブフィッティングについてはこちらの記事をご覧くださいね。
①バックテスト期間の長さ

基本的にバックテストの期間は長いほうがいいです。
サンプル数も多く取れますし、多く取れるからこそ平均の信頼度というのが高まります。
しかし、落とし穴が2つあります。
直近勝率が低いのは良くない
例えば10年間のバックテストで勝率55%が出たとします。
問題はこの55パーセントという数字自体ではなく、この55%がどういう構成でできているのかということ。
その10年間の一番古い1年、要するに20年前ってことですよね。
そこの1年間が勝率60%だとします。
その翌年が勝率59%で、その翌年が勝率58%・・・といった感じで、
年々1%減ってってで最終的に一番直近の一年が勝率50%でした!と。
結果として10年間の平均勝率は55%だけど、どんどん勝率が悪くなっていってる55%ってどうなのっていうことですよね笑
これは誰が見てもよくありません。
その10年間の平均勝率の内訳を見たら、その数字は実際の平均値がいいのか悪いのかっていうのが色々見えてくるのかなと思います。
長すぎても信頼度が下がる
2つ目の落とし穴として、「長すぎても信頼度が下がる」ということ。
これはどういうことかと言いますと、極端な話、過去50年間のヒストリカルデータでバックテストを取るという時に現在の状況と違い過ぎる条件が多く含まれてしまいます。
昔は固定相場制で1ドル360円でした。
50年間ということはその時の状態のヒストリカルデータも入ってますし、インターネットがつながる前のデータも含まれてます。
または最近AIを使用したファンドがあったり、世界経済も状況が変化してきています。
50年前と今とでは全然状態が違うのに、これらの期間を含めるバックテストって意味があるのでしょうか。
今のは極端な例でしたが、要するに過去にさかのぼればさかのぼるほど、今とは違うヒストリカルデータの質になっています。
もちろん何年以上が長すぎる・短すぎるという明確な定義はないですが、そういう考えのベースを持って、短期中期長期の分析をしてみるのがいいのかなと思います。
個人的に一番影響が大きいかなって思うのがインターネットとAIですね。
また技術的なところで言ったら、HFT(超高速取引)とかも相場に与える影響が大きいのかなと思います。
②論理的な根拠や仮説

2つ目は結果を先に意識するのではなく、どのような考えでバックテスト取れば結果が良くなるのかを考えることです。
要するに先にバックテストの結果や勝率、シグナル数という視点から入るようなバックテストをしてしまうとカーブフィッティングになりやすいです。
どうすればいいかというと、先に仮説や中身、論理的根拠を意識してからバックテストに挑んだほうがカーブフィッティングしにくいです。
その時に大切になってくる考え方はまさに「PDCAサイクル」。
聞いたことある方も多いと思うんですけど
PDCAサイクルとは、Plan、Do、Check、Action の頭文字を取ったもの。
それぞれ計画、実行、評価、改善。この4つを何回も何回も繰り返すことでより早く結果を上げるという考えになります。
このPの部分計画の部分というのは、実は仮説でもいいと言われてまして、
バックテストの仮説をここに当てはめると、非常に効率良くいろいろ考えられるのかなと思います。
バックテストはまず仮説から入ったほうが、カーブフィッティングになりにくいです。
この仮説の考え方がまた一つポイントなんですけど、
例えば「この定義とこの条件を組み合わせて適当にやってみよう!」とかではなく、
「値動きがこういう時はヒゲが出やすい。だったらこんなフィルターをかけて、このインジケーターで、こういう数値の時っていうのは反発しやすいのでは?」
「このインジケーターっていうのも中の計算式がこんな理屈でなり立ってるから期間は今くらいがいいんじゃないか」といった感じで一つ一つ根拠を積み上げていって仮説を立てるやり方をおススメします。
③結果の理由

次に結果の理由ということで、バックテストを取った結果、勝率が高い場合でも低い場合でも結果だけを見て手法をコントロールすするのはカーブフィッティングになりやすいです。
画像の図はカーブフィッティングの検証で、勝率が低いデータだけ消したら80%台の手法ができた!というもの。
結果を見て低い場合だけ消したり、勝率が高いとこだけ都合のいいようにエントリー回数が多くなるような調整をしたりすると当たり前ですがカーブフィッティングになりやすいです。
結果を見て色々分析する分には問題ないのですが、分析する時も先ほどの③考えと同様に根拠が必要です。
なぜそこが低いのかとかなぜそこが高いのかとか。
根拠仮説を立て、じゃあこういう分析をしてみたらどうなの?と色々絡めながらやってみるといいのかなと思います。
④バイアスを避ける
バイアスを避けるとは、簡単に言うと都合のいいような解釈と自分の強い思い込みっていうのをやめましょうねっていうことです。
結果を客観的に見ることができず、自分の考えや感情が正しいと無意識に肯定したりするのは良くないです。
例えば ○○の部分だけ結果が悪いけど、ここだけ偶然だと思うよ!みたいな都合の良すぎる解釈ですよね笑
また「○○さんがいいと言ってたからバックテスト結果が悪くても、後は良くなるに違いない!」みたいな考え方も良くないです。
自分のことを客観的に見れてない・数値を客観的に見れてないとバックテストは難しいです。主観をすべて捨て、客観的に後論理的に考えるようにしましょう。
⑤エントリー数と収束率を理解する
皆さんは以下の2パターンをどう考えるでしょうか?
A:1年で10回エントリーして勝率60%
B:1年で1000回エントリーして勝率60%
Aは10エントリー中6回勝って4回負け。勝率が60%
それと同じく1000回エントリーし、600回勝って400回負け。これでも勝率は60%。
もちろん資金管理の視点から見たらからしたら、1000回エントリーの方が増えるのが早いので、この2つの条件だったら Bを選ぶと思います。
しかし、バックテストの観点から見ると勝率の信頼度が重要です。
AとBでは勝率への信頼度が全く違います。
コイントスでも、試行回数を重ねた時に10回やった時にたまたまじゃあ5回表で1/2なのか、1000回行って500回表の2分の1なのかっていうのが信頼度が異なります。
それと一緒でバックテストも勝率はエントリー回数がどれぐらいなのか?という点で信頼度も比例していきます。
もう1つ重要なのがフォワードテストでも収束するまでの期間が違うということ。
例えばAの10回エントリーで勝率60%。
実際にあったら、本当に1年で10回しかエントリーできないという、フィルターの強さだったり条件の厳しさというわけですよね。
そうなった時に、本当に勝率60%の手法だったら別に問題ないのですが、未来に対してはわかりません。
あくまでもバックテストでは60%でしたが、実際にエントリーしたらどうなるのかはわかりません。
1年に10回しかエントリーがないので、例えば半年過ぎてもまだ40%なんだけど…という可能性も出てきます。
これ60%になるのはもう何年待てばいいの?2年3年待たないといけないの?みたいな話になってきます笑
しかも怖いのが、それが本当に勝率60%なのかわからないということ。
なので、シグナル数が極端に少ないと実際のフォワードテストでもそれが正しいか正しくないかが判断しづらい。
期間が長くなってしまうと、それが正しいか正しくないかの判断がつきません。
ある程度数がないとバックテストの勝率は信頼度も低くなりますし、フォワードの結果フィードバックを取るのも遅くなったり信頼度が低くなりますね。
ということで今回はカーブフィッティングを防ぐ考え方についてご紹介しました。
是非、主観にとらわれない考え方で論理的にバックテストを取ってってみて下さいね!

645万パターンのバックテストから、最適なエントリーポイントのみ抽出した、バイナリーオプション専用のシグナルインジケーターです。
全16通貨ペアごとに最適化された、今までにないインジケーター。バージョンアップ版も永久無料配布しております。