MQL5でEA開発 75 過剰最適化
過剰最適化
これからブレイクアウトEAを使って検証を始める前に過剰最適化について触れておくことにします。
過剰最適化はオーバーフィッティングとも呼ばれます。
過剰最適化というのは多くのパラメータを使用して最適化し、バックテストでのパフォーマンスを高めるものです。
一般にパラメータが多いほどバックテストでのパフォーマンスはよくなります。
しかし、実際に運用してみると全然勝てない、つまり再現性がないということがよくあります。
過剰最適化の例
過剰最適化の例を1つ挙げておきましょう。
例えばたまたま大負けしたトレードがあったとします。
そのトレードがエントリーした時間は10時30分だったとします。
そこでエントリーしない「時間」というパラメータを作り、0から23の間で最適化してみます。
すると10時台にエントリーしないと1トレード当たりの損益がいいということが分かりました。
しかし、全体の損益はやや減りました。
10時台にエントリーしないことで10時30分の大負けトレードを避けることはできましたが、それ以外の10時台の勝ちトレードも避けてしまったので、全体での損益はやや減ってしまったのです。
そこで、エントリーしない「分」というパラメータを追加し、0から59の間で最適化してみます。
すると、30分台にエントリーしないと1トレード当たりの損益がいいばかりではなく、全体の損益も大きく増えるということが分かりました。
10時30分の大負けトレードだけをピンポイントで避けることができたからです。
では将来に渡り、10時30分にエントリーしなければパフォーマンスはよくなるのでしょうか。
そんなことはありません。
過去においてたまたま10時30分のエントリーで大負けしたトレードがあった場合、そのトレードを除外することでバックテスト上のパフォーマンスを高めることはできます。
しかし、それはあくまでもたまたまであって、そのようなパラメータに再現性はないのです。
シンプルイズベスト
パラメータの少ないシンプルな戦略とパラメータの多い複雑な戦略のどちらがよいでしょうか。
私であれば、パフォーマンスが聖杯のような複雑な戦略よりパフォーマンスがそこそこのシンプルな戦略を選びます。
パラメータの多い複雑な戦略は過剰最適化されている可能性があり、バックテスト上でいくらパフォーマンスがよくても再現性はないだろうからです。
では、パラメータの数がどのくらいであれば、シンプルだと言えるでしょうか。
これに対しては明確な基準はありません。
2-5個くらいがよいと言う人もいれば、取引数が多ければそれに比例してパラメータも多くていいと言う人もいます。
しかし、これらはその人たちの意見にすぎず、根拠があるかは怪しいと思います。
私はパラメータは少ないほどよい、だが、再現性があるかどうかはフォワードテストで確認すべきだと考えます。
逆にフォワードテストのパフォーマンスが良好であるなら、パラメータがいくらか多くても問題ではありません。
重要なのは再現性があるかどうかであって、パラメータがいくつかではないのです。
ただ、再現性のある戦略を作ろうとすると、自然とパラメータは少なくなっていくと思います。
なお、ブレイクアウトEAで最適化に使うパラメータは長期期間と短期期間の2つだけです。
シンプルなほうだと言えるでしょう。
極端な高勝率戦略にも過剰最適化のリスク
パラメータが少なくても過剰最適化になる場合があります。
例えば、わずかな利益で利食って、損切り幅を利食い幅の100倍にすれば、極端に高勝率の戦略が簡単にできあがります。
面白いもので、コストを考慮しなければ、利食い幅が1、損切り幅が1の戦略は1勝1敗、勝率50%の戦略になるものであり、利食い幅が1、損切り幅が100の戦略は100勝1敗、勝率99%の戦略になるものです。
しかし、
1*1-1*1=0
1*100-100*1=0
となるように、優位性のあるトレード戦略でない限り、高勝率でも最終的には利益になりません。
勝率99%の戦略は1%の負けで99%の勝ちの利益を吹き飛ばしてしまうものであり、損切りをしない勝率100%の戦略は含み損で100%の勝ちの利益を吹き飛ばしてしまうものなのです。
そして、1トレード当たりで見ると、勝率99%の戦略では負けトレードの損失は勝ちトレードの利益の99倍になり、損切りをしない勝率100%の戦略では含み損は無限大になります。
ところで100回トレードして勝率50%なら50回は負けます。
パラメータを加えて50回の負けを減らすのはなかなか大変です。
しかし勝率99%の戦略ならどうでしょうか。
100回トレードしても1回しか負けません。
何かパラメータをいくつか加えて、この1回の負けを減らすことができれば、あっという間に全戦全勝の聖杯になります。
先ほど、10時30分に大負けする戦略の話をしました。
もし、その戦略が10時30分の1回しか負けがなく、しかし、その負けで他のすべての勝ちトレードの利益を吹き飛ばすとします。
このような戦略は極端なコツコツドカン型の戦略であり、価値があるようには見えません。
ところが、「時間」と「分」の2つのパラメータを加えただけで、10時30分の負けトレードを回避し、聖杯になってしまいます。
つまり、極端な高勝率戦略ではパラメータが少なくても過剰最適化となるリスクがあるのです。