今回はフォワードテストについて考えて見ることにします。
しばしば、
バックテストはあくまで過去の成績でしかなく、EAの良し悪しを判断するためにはフォワードテストが欠かせない。
と言われることが有ります。
これは正しいのでしょうか。
私は、
「フォワードテストはこの上なく重要である。しかし、“フォワード”である必要ない。」
と考えています。というのも、
EAの信頼性を測るに当たって必要なものは
「最適化に用いた期間以外のチャートデータ」
であって、
「未来向けて実際に行うテストトレード」
である必要は無いからです。
そのEAにとって未知のデータでありさえすれば、それでよいのです。
必要なのは、「フォワード(未来)の」ではなく、「アンノウン(未知の)」なのです。
例)
2000年1月からのヒストリカルデータが手元にあると仮定た場合を考えます。
この場合、2000年1月~本日までの期間で最適化を行った場合は、バックテストに使用できる未知の期間が全く確保できていないため翌日からのテストトレードが不可欠となります。
しかし、2000年1月~2005年1月までの期間で最適化をとどめた場合は、それは不要です。
なぜならば、2005年1月~2010年12月現在までのバックテストをもって、6年間の仮想フォワードテスト(アンノウンデータテスト)とする事ができるからです。
最適化がカーブフィッティングに陥っていたとすれば、この6年分の仮想フォワードテストによって明らかなドローダウンが発生することでしょう。
EAにとってみれば、データが未知のものであるならば、6年間のバックテストも、明日から実際に行う6年間のフォワードテストも、等価なのです。
ここで問題になってくるのが、市販のEAです。
この市販EAに関して言えば、この仮想フォワードテストだけでは不十分です。
なぜならば、
「EAにとって未知であるデータ」が存在しない可能性があるからです。
外部変数として購入者が変更可能なもの以外に、既にコードに組み込まれたバックテスト済みの変数があるかもしれません。
例えば、価格の急動対策と銘打って、「○○時間以内で**pips動いたときはしばらく取引を控えます」とされていたとしましょう。
仮に作者に作為がなかったとしても、
これは過去10年間で都合の悪い動きをしたトレードを除外する過剰最適化の一種と言えます。
他人が作ったEAを最適化する時は、変数が全て変更可能であるかどうかを確認しておく必要があるでしょう。
仮想フォワードに信頼がおけるという点こそが、自作EA最大のメリットなのかもしれませんね。
スポンサーサイト