EA職人のEA講座【005】聖杯EAを作る手法/過剰最適化の罠(カーブフィッティング、オーバーフィッティング)
FX
過剰最適化
過剰最適化については第三回の講義で軽く触れましたが、今回はこれについて実践しながら深堀していきたいと思います。その前に第三回目の復習になりますが、過剰最適化とは…
大量のパラメータやインジケータ、条件で取り引きしているようなロジックは未来に於いて同じ条件が揃う可能性が低いので、結果再現性も低くなると言う問題です。
百聞は一見に如かずということで、それでは実際にMT4を操作しながらやってみたいと思います。
こちらは今回の説明の為、突貫工事で作成したEAです。ポンドドルの5分足で稼働します。
ロジックを簡単に説明しますと、レートが長期移動平均線から上へ乖離しておらず、長期、中期、短期…全ての移動平均線が上を向いたらロング。
所謂グランビルの法則にちょっと手を加えたようなロジックです。
エントリーした後はトレーリングストップで決済されます。処理を簡単にするためロングのみ行うロジックにしました。
パラメータはこんな感じです。これらのパラメータをこれから最適化していきます。最適化の方法については動画の方で詳しく解説しております。
それでは最適化をする前の状態でどのような成績が出力されるのかバックテストで確認しておきます。
バックテストの期間は2023年1月1日~今日(2024年6月14日)にしました。
PF(プロフィットファクター)1.01…損はしてませんがこのままではとても使えませんね。
では最初に移動平均線群を最適化したいと思います。最適化とはパラメータを変えながらバックテストを行い、成績の良い組み合わせを探すことです。
テストしたいパラメータの範囲を決め、【最適化】のチェックボックスにチェックをしてスタートします。
するとそれぞれの組み合わせによる成績が一覧表示されますので、この中で気に入ったパラメータを採用します。
そのパラメータで再びバックテストをすると以下のような結果になり、当初より大分マシになりました。
このような感じで他のパラメータも最適化していきます。
全てのパラメータを最適化し終えたのがこちらの資金曲線です。
ドローダウンしているところもありますが、基本的に右肩上がりなので、これなら運用してもいいかな?と思えるかと思います。
それでは次に、バックテストの期間を変えてやってみましょう。
ここまで2023年1月1日~現在のデータを使っていたので、それ以前のデータ…2020年1月1日~2022年12月31日でやってみます。
ご覧のようになりました。最初の時と同じで、損はしてないが使いたいとは思えない資金曲線ですね。
テスト期間を2020年1月1日~今日にするとこんな感じ。2022年の10月から右肩上がりになっていますが、それまでは微妙です。
ではこの資金曲線の気に入らない部分、つまりドローダウンしている部分をどうすればいいのか?
もうお分かりですね。やることは同じです。またひたすら最適化を行い、ドローダウンの小さい組み合わせを探せばいいのです。
それでも満足のいく資金曲線にならない場合はインジケータの数や種類を増やしたり、気に入らない取引の部分に条件を加えることで取り引きさせないようにしてしまえばいいのです。
ですが、こんなやり方で開発されたEAを使いたいと思いますか?
優位性があるからバックテストで利益を出しているのではなく、都合の悪い取引をインジケータや条件の追加で潰しているだけですよね。
これが過剰最適化の正体です。
だから再現性が低いのです。だからフォワードで急に成績が悪くなるのです。
橋やビルなどもそうですが、見た目はダサくてもシンプルな構造物は頑丈ですよね。変に凝った建物は壊れやすい。
家電でも「これ、いつ使うんだ?」というような機能が盛りだくさんな製品程壊れやすい。
EAにも同じことが言えます。
第三回の講義でもお話ししましたが、理想なのは
- インジケータが少ない
- パラメータが少ない
- 長期バックテストがある
- シンプル
- 理解し易い
全てを完璧に満たすのは不可能なので、これらの項目を意識しながらバランスの良いEAを選択し、ポートフォリオに組み込むのがFXで安定収入を得るコツかと思います。
■私の開発したEAのコンセプトと運用ポリシー
EA職人のEA(3本の矢)はコチラ×
よろしいですか?