トレードにおける売買戦略のバックテストを考える上で避けては通れないのが「カーブフィッティング」です。
カーブフィッティングを避けることは極めて重要です。どれだけ重要性を強調しても強調しすぎることはありません。
カーブフィッティング防止を考えずにパラメータを弄ることは意味がないばかりか、害悪であるとすら言えます。「何もそこまで言わなくても」と思われるかもしれませんが、これは損益に直結することです。強く言い切ります。カーブフィッティング防止は必ず考えるべきことであり、防止策を行わずバックテストの結果をよくすることは害悪です。
今回は、カーブフィッティング防止の基本のキについてTradingViewを使った具体的な方法を書いていきます。内容的には、こちらのtweetを詳しく解説したものです。
カーブフィッティングとは?
まずはカーブフィッティングとは何であるのかを確認します。
カーブフィッティングとは、システムを過去の相場にぴったり合うように過剰に最適化することです。 過去の相場に合うようにシステムを作るので、バックテストの成績は優秀になります。 しかし、実際の取引で使うと過去と未来は同じではありませんので、大抵の場合、バックテスト通りに行きません。
https://www.fxordersystem.com/systemtrade06.html
オーバーフィッティングや過剰最適化とも言います。
(ここではカーブフィッティングと表記します)
バックテストの結果は優秀なのに、実際の取引では同じようにはいかないってどういうこと?と思われる方もいるのではないでしょうか。百聞は一見に如かずです。具体例を見てみましょう。
これはTradingViewのある戦略の2018年1月~12月のバックテスト結果です。素晴らしい結果ですね!きれいな右肩上がりの損益グラフです。これ通りにトレードできるのであれば聖杯と言って差し支えありません。
ではこの売買戦略を2019年以降の期間で回すとどうなるでしょうか?
結果はこうなります。
一応プラスではありますが、求めていた結果とは程遠い損益グラフになってしまっています。これがカーブフィッティングです。
「バックテスト上では勝率96.15%、最大ドローダウン0.92%だからレバレッジ10倍ぐらいでガンガン回せばめちゃくちゃ儲かるな!」
と思って回し続けた人は漏れなく退場してしまいます。
ではどうすればカーブフィッティングを防止できるのでしょうか?
カーブフィッティング防止の基本のキ
まずカーブフィッティングを100%防止することは不可能です。必ず起こり得るものとして考えてください。
ただ防止策を講じることで、防止策を講じていないときに比べて発生確率を下げてあげることはできます。
まず基本のキとしてやることはとてもシンプルです。
「売買戦略作成時に直近の日付を含めずにバックテストを行いましょう」
以上です。たったこれだけ!
拍子抜けするぐらい簡単です。なぜこれだけでカーブフィッティングを防止できるのか例を挙げてみていきます。
①直近の日付を含めてバックテストを行ったとき
現在の日付までのバックテストを見ることはできる。明日以降の結果は未来の話なのでわからない。
②2018年末までの日付でバックテストを行ったとき
2019年以降の結果に対して最適化されていないので、2019年以降の結果を疑似的なフォワードテストとして捉えることができる。明日以降の結果は未来の話なのでわからない。
わかりにくいですね。絵で描きます!
②の売買戦略は2019年以降の値動きを一切見ずに作成しているのがポイントです。値動きを見ずに作成しているということは、もしその売買戦略を2018年に作っていれば、2019年はバックテスト通りの損益を出すことができたということを意味します。 (ちょっと乱暴な言い方ですが) これは疑似的なフォワードテストであると言えます。
仮に①②のバックテスト上の損益が上の絵のようにだいたい同じだったとしたら信頼度は②のほうが圧倒的に上です。②は少なくとも1年間以上の実績があると見做せます。
TradingViewでバックテストを行う際、具体的にどうやってバックテスト期間を指定するのかは、『知らなかったでは許されない“バックテスト期間を指定する”やり方』を参考にしてください。
もちろんこれだけでカーブフィッティングが防止できるかというとそんなに甘い世界ではありません。しかし、たったこれだけでもやっているかどうかで収益が大きく変わってきます。直近の日付を含めずにバックテストを行うことは、難しい操作は一切不要で、誰でもできるカーブフィッティング防止の基本のキです。売買戦略を作成したり、すでにある売買戦略のパラメータを変更したりしてみようとしている人はぜひやってみてください。
カーブフィッティング防止について次のステップに進みたい人は「ウォークフォワードテスト」で検索すると良いと思います。他にも色々考えるべきことはありますが、次のステップはこれです。
結論
- カーブフィッティング防止は超重要。本当にめちゃくちゃ重要
- カーブフィッティングを100%防止することは不可能。起こり得るものとして運用するべし
- 直近の日付を含めずにバックテストを行うことがカーブフィッティング防止の基本のキ
以上です!
売買戦略作成時の参考にしてみてください。