今回は、『ファイナンス機械学習―金融市場分析を変える機械学習アルゴリズムの理論と実践』に記載されていたバックテストの注意点についてまとめたいと思います。
バックテストで多くの人が陥っている間違いや危険性など、かなり重要なポイントなので、ぜひご自身のバックテストでもそれらの点を注意して実行してみてください。
バックテストの注意点3つ
バックテストに関して、注意しておくべき点は以下の3つです。
- バックテストは未来の収益性を約束しない
- バックテストはの結果をそのまま信じるべからず
- バックテストはモデルの切り捨てのためにある
それぞれ少しだけ解説していきます。
1:バックテストは未来の収益性を約束しない
まず1つ目の注意点として、バックテストはその機械学習モデルや投資戦略の将来の収益性を担保するものではないということです。
バックテストは、あくまで過去のデータを用いて行うもので、そこからわかるのは現在のモデルまたは戦略が過去のデータでどのような振る舞いをするのかという事実のみです。
同じ過去は2度繰り返さない
バックテストに用いられる過去のデータというのは、ランダム性によってたまたまその価格や値になったものの積み重ねです。
なので、過去に戻ったとしても、それと同じ値がその状況下で出るとは限りません。
つまり、仮に過去に戻って、バックテストで好成績を残したモデルや戦略を使ったとしても、同じ過去は2度繰り返さないということを考えると、バックテストで得られた結果と全く同じように稼ぎげたというわけではありません。
2:バックテストはの結果をそのまま信じるべからず
バックテストの注意点2つ目としては、バックテストの結果をそのまま信じてはいけないということです。
1つ目の注意点と少し被るところではありますが、観点が少し異なります。
ここでは、そのモデルまたは戦略が仮に良い結果をバックテストで示した場合に、その結果は偶然起こりえたのかどうか?という観点になります。
つまり、たまたま良い結果になったのであって、そのモデル・戦略が本質的に収益性があるかどうかはまた別の話ということです。(有意ではないものを有意と判断してしまう)
これは、統計学の分野などではタイプⅠエラーと言ったりします。
これは、起こる可能性が非常に低い事柄でも無数に行なっていれば、それが起こる可能性が次第に高まってしまうという法則があるからです。
宝くじの例
1つ例を挙げてみます。
宝くじの1等の当選確率が仮に0.001%(1/1000万)だったとしましょう。
その状況で、いろんな当選確率が上がるとされる方法で10万回購入します。
そうすると、1等の当選確率も全体として1%にまで上昇し、その1%の確率で1等を引いた場合に、その時に使っていた方法が1等を引き寄せた!と思えるわけです。
バックテストにおいても同じことで、無数に様々な手法のバックテストを行っていけばそのうち1つぐらいは収益性の高そうに見える結果が表れてもおかしくないのです。
こういったミスを防ぐ方法に関しては、また次回記事にまとめます。
3:バックテストはモデルの切り捨てのためにある
最後のバックテストの注意点としては、バックテストの目的は悪いモデルや戦略を切り捨てるためにあるという点です。
バックテストを行なった後にパラメータの調整などを行い、バックテストでのパフォーマンスを上げようとしてしまうことはよくあります。
私もバックテストの結果を良くしたい一心でモデルの最適化(パラメータチューニングなど)を行なっていました。
しかし、これは誤りです。
というのも、バックテストの結果を受けて調整することは、バックテストにフィッティング(過去のデータに過度に適合した状態)につながるからです。
つまり、モデルや戦略の将来のパフォーマンスの低下に直結します。
なので、バックテストで好ましくない結果を得た場合は、モデルをそこから調整するのではなく、初めからやり直すべきなのです。
まとめ
- バックテストは未来の収益性を約束しない
- バックテストはの結果をそのまま信じるべからず
- バックテストはモデルの切り捨てのためにある
今回は、戦略やモデルの性能を確認するために行うバックテストにおける注意点について、書籍『ファイナンス機械学習―金融市場分析を変える機械学習アルゴリズムの理論と実践』を参考にまとめてみました。
個人的には、特に「優れたモデルではないものを優れたモデルと判断してしまう」ことを表す2つ目の注意点には気を付ける必要がありそうです。
これらの注意点や危険性への対応や、より信頼性の高いバックテストのやり方については、また次回解説していきたいと思います。
もし、間違い等ありましたらご指摘いただけますと幸いです。