EAのカーブフィッティング(過剰最適化)対策
☆バックテストはあてにならない?
よく質問で2000年頃からのテスト結果はありませんか? というご質問を頂きますが、 最適化を行うことで、どの通貨もテスト結果を優秀にすることは可能です。
一つのEAで、たとえ5通貨全てに対してであっても、2000年頃からのテスト結果を右上がりの爆益グラフに仕上げたEAを作成することは、少し時間はかかりますが、独自の方法を用いて可能です。
これは特殊技能とも言えますが10通貨全部同時であっても右上がりのEAを作ることは可能です
しかし問題はここからです。
そこまで究極に最適化された中央値をもつEAであっても、リアル運用では微妙なズレが発生し、結果を出すことがいまひとつできない可能性があります。
過去テスト期間が長ければ、未来に対しても信頼性が高くなることはたしかですが、 経験上、テスト結果はそこまではあまりあてにならなず、過信できるものではありません。
☆バックテストがあまりあてにならない理由とは
EA商品にはバックテストが添付されていますが、だいたい右上がりグラフになっていませんか?
中には「テスト結果とリアル運用に差がありすぎる」と嘆く口コミも目にしたことがあります。
テスト結果は良くても実際が良くないという現象は私自身が経験してきました。
「ついに完成した!素晴らしい検証結果!これならいける!」
と意気揚々とリアルに投入してもうまくいかないことが多かったのです。
「最適化」して完成したEAでずっと勝ち続けられるほど、相場は甘くありませんでした。
過去にあてはめて最適化したEAで勝てたら、何か違和感を感じませんか?そんな簡単なことはないのです。
☆テスト結果が優秀なのにリアルではなぜ駄目なのか?
過去の一定期間に対して最適化されたEAは カーブフィッティングと呼ばれ、
・ある一定の相場状況のみ効果があり、時期が変わると急にダメになってしまう。
・テスト結果は異常に良いのに、実際のリアル運用には全く役に立たない
・例えば、テストされる通貨のテスト期間が上昇買い一辺倒の相場であった場合、リアルの相場は明らかな売りと思われる場面でも、テストではことごとく買いと判断される。 といったことが起こります。
テスト期間が買いと売りどちらかに偏っていれば、テスト結果が優秀でも中身は偏ったEAが完成する。
つまり、テスト期間を指定する必要があるため、完全に買いと売りバランスがとれた期間でテスト最適化することは不可能に近いのです。
結論として、「少なくともテスト結果はよいことは、信用する根拠としては大事なことの1つだけれど、それだけでは優劣を判断できない」
ということになります。
☆究極の過去検証の日々の結果
☆このフォルダ全てがMT4です
私は5年近く「全てに通用する中央値を求めて、MT4を1つのパソコンに40個以上インストールし、キオクシアのSSDが壊れそうになるくらい(SSD健康度-60%低下)徹底的にいろいろなインジケーターを組み合わせて最適化」をおこなってきました。
おそらくここまで「過去検証」「最適化」ばかりやってきた人間は日本にいない。というレベルです。
指標を50個くらい並べて、全て1万とおり最適化する。それくらい極端なことをやったこともあります。
その結果、最終的に三尊、逆三尊付近のトレンド転換初期が最もすぐれたエントリーポイントであるという結果がでましたが、まだそれでも勝てるようにはならなかったのです。
※エントリーポイントとしてはたしかに良いが、それだけではまだ駄目で過去の相場に数字合わせだけしても足らないものがあったのです。
全く根拠のない売買をするよりは遥かにマシではあるものの、
過去の相場に合わせて方程式化しても不完全であてにならない、、。 過去はあくまで過去、、。
という結論に至りました。
この時点で4年近い時間と費用がかかっており、私は絶望し全身が暗闇に覆われたような気分になったことがありました。
☆それでも過去検証は無駄ではない
これと同じ結論を出した人の中には、結果のでている過去相場はチャートの右が見えないリアル相場とは別物だし、
過去検証はやるだけ無駄!動いている相場だけを見ろ
と考える方もいます。
しかし、それはそれで間違っていると思います。
未来の相場で勝っていくためには、固定化されたルールとなるロジックが必要
であり、それは少なくとも過去でも通用しなければならない。
つまり、ロジックが未来に通用するかどうかを証明するためには徹底した過去検証はやはり必要です。
「過去はあてにならないのに、ロジックの過去検証は必要」
その微妙なバランスを必要とする難題をどうしたら解決できるのか?どうしたら勝ち続けるEAを作ることができるのか?
5年をかけて試行を重ねた結果、、ついに
リアルの相場でも通用するEAを作る方法に辿りつきました
その方法は過去(検証)ではなく、〇〇を最重要視するという方法です。過去相場にあてはめる前にこれをMT4に指示しなければならなかったのです。
これについてはいずれ公開したいと考えています。
これを行うと、
過去に過剰な最適化(フィッティング)をしないため、あえてテスト結果が最高に優秀にはならなくなりますが、
あえてその状態で一時的ではなく、継続して結果を出していくために、
本質的な相場判定が可能なEAを完成させました。
☆EA(自動)による理想のトレードシステムを構築
そして5年過去検証ばかりしてきたのは全てが無駄ではありませんでした。
様々なインジケーターを試して組み合わせてきたため、エントリーから利確まで何をどのように組み合わせると効果的であるかを学んだからです。
「こうなったらエントリーする」という固定されたやり方(ロジック)をプログラムで組み合わせてEA化するのは十分に可能です。
もしEAを敬遠してしまうのだとしたら、「難しそうで自分では手がつけられない」ことや、商品のEAは「ロジックを完全に公開していないために何がどう動いてエントリーや決済が行われるのか分からないので懸念がある」という点でしょう。
開発者視点で見た場合、裁量(自分の判断タイミング)ではEA(自動)の足元にも及ばないくらい多くの選択肢を駆使し、完璧かつ理想的なトレードを行うことができるため、
EAは裁量取引(自己判断エントリー)にあらゆる部分で総合的に勝る。と考えています。
よろしいですか?