バックテストでは素晴らしいパフォーマンスを発揮していたEAが、実際の取引で思ったような成果がでないことがあります。これがまさにEAを購入する際に悩まされる問題のひとつ、過剰最適化(カーブフィッティング)。
カーブフィッティングはEA購入前に絶対に知るべき知識です。過剰最適化(カーブフィッティング)の罠にはまらず、賢明なEA選びができるようになりましょう。
カーブフィッティングとは?
過剰最適化(カーブフィッティング、オーバーフィッティング)とは、最適化をしすぎにより、バックテストをした過去相場にだけ通用するEAになってしまうことです。
つまり、カーブフィッティングしたEAを本番で稼働させると、バックテスト通りの成績を出せません。
下の画像はカーブフィッティングしたEAの例です。取引回数5000回付近までのデータでバックテストし、最適化したEAです。カーブフィッティングにより、5000回以降は良い成績が出せていません。
カーブフィッティングの回避方法
バックテストと最適化の期間を長くする
バックテスト期間は長くしましょう。バックテスト期間が長いということは、より多くの相場のデータが含まれています。様々な相場のデータでバックテスト、最適化をした方がより相場に対応できるロジックになります。
取引回数を多くする
バックテスト期間の長さとつながる話ではありますが、取引回数も十分確保できていないとカーブフィッティングになります。例えば、10年で10回トレードして全勝するEAを作成したとします。いくらバックテスト期間が10年と長くても10回しか取引していないならば、本当に勝てるEAかどうかはわからないですね。
パラメータを減らす
パラメータを増やしすぎるとカーブフィッティングしやすくなります。ですが、EA作成においてはパラメータを増やして最適化を繰り返していくと成績の良いEAを作成することができます。
パラメータは増やそうと思えばいくらでも増やすことができますが、同様に増やした分だけテスト結果をよく見せやすくもなります。
インジケータを1つ使うだけでも「時間足」、「期間」等々パラメータがどんどん増えていきます。逆に言うと少ないパラメータでよい成績が出せるEAならばカーブフィッティングされにくいEAを作成することができます。
テストパターンを増やす
ある特定のデータでしか通用しないEAよりも様々なデータでも通用するEAの方がカーブフィッティングを避けられる可能性が高くなります。
以下のような様々なデータでバックテストをしてみましょう。
- 他の通貨ペア
- 他の時間足
- スプレッドを広く
- 他の業者のヒストリカルデータ
極値のパラメータを選ばない
最適化をしていると、ある値だけ異常にテスト結果が良くなる場合があります。下の画像の最適化結果ですが、1番目のパラメータの値だけ異常に成績が良くなっていることがわかります。このように前後の成績よりも飛びぬけて成績がよくなるようなパラメータを選ぶと過剰最適化になります。
最適化結果の点はなだらかになることを確認
以下の最適化結果を見てみましょう。最適化結果のばらつきが少なく、点がちょっとずつ変化していることがわかります。
このような最適化結果はパラメータを少し変えても成績に大きな変化がない、つまり成績が安定していてカーブフィッティングしづらくなります。逆に点にバラツキがあるとパラメータを少し変えただけでまったく違う成績になる安定感のないEAになります。
根拠あるロジックにする
極端な例ですが、例えば雨が降った日はドル円が上がりやすいという法則を見つけたとします。これを利用してお天気フィルターなるものを作成し、雨が降ったときにドル円を買うEAを作成したとします。さて、このEAは本番で通用するでしょうか?
if(tenki == "雨"){
// ドル円の買い
}
答えはなんとなくわかると思いますが、本番では通用しないでしょう。なぜなら天気と相場に関連があるとは考えにくいからです。
このように根拠が薄いフィルターロジックでバックテストの成績がよくなってもカーブフィッティングになります。
今回はわかりやすい例で天気フィルターとしましたが、インジケーターの場合でも使い方が間違っていたりすると根拠のないロジックになるので注意が必要です。
アウトオブサンプルテストをする
アウトオブサンプルテストとは、ヒストリカルデータを最適化の期間と最適化の後のテストの期間の2種類に分割する方法です。
最適化していない期間のヒストリカルデータでもパフォーマンスが落ちないかをテストすることができます。詳しくは以下の記事にて紹介しております。
カーブフィッティングの確認方法
カーブフィッティングを回避する方法を紹介してきましたが、十分に対策してもカーブフィッティングを避けられるとは限りません。最終的にはフォワードテストが必要になってきます。フォワードで大丈夫そうなことを確認してからロットを徐々に上げていきましょう。
EAを購入する際にもフォワードテストが十分に実施されていないとカーブフィッティングの可能性が排除しきれません。なのでフォワードテストのないEAの購入は絶対に避けましょう。
カーブフィッティングされているEAは世の中に非常に多く出回っていますので注意しましょう。
まとめ
この記事では、FXトレーディングでの過剰最適化(カーブフィッティング)の問題と、それを回避する方法について解説しています。
過剰最適化が起こると、バックテストで優れた成果が得られても実際の取引では期待通りの結果が得られないことがあります。カーブフィッティングを回避する方法として、バックテスト期間や取引回数の増加、パラメータの減少、テストパターンの増加、極値パラメータの選択回避、最適化結果の安定性確認、根拠あるロジックの使用、そしてアウトオブサンプルテストを実施することが挙げられます。
EA購入時には、フォワードテストを十分に実施したものを選ぶことが重要です。