パラメータの最適化とは、総損益、勝率、PF、ドローダウン等のシステム評価指標を総合的に判断して最高のパフォーマンスになるパラメータセットを見いだしていくことですし、オーバーフィッティング(カーブフィッティング)とはシステムを過去の相場にぴったり合うように過剰に最適化してしまうことです。
バックテスト時のパフォーマンスは良かったのに、フォワードテストや実戦では使い物にならなかった場合、最適化ではなく過剰な最適化だったということになるわけです。
この2者の境界線の線引きは難しいものがあります。
なにを持ってオーバーフィッティングとするのか?
バックテスト時に収集した過去データにおいて最高のパフォーマンスを得られるパラメータを選び出した時点では最適化ですが、後にそのパラメータが通用しなくなればオーバーフィッティングとみなされてしまいますしね。
オーバーフィッティングに陥りやすいケースとその対応策についてまとめてみました。
バックテスト用過去データの対象期間が短すぎる場合
このケースが一番多いのではないでしょうか。
相場には大きく分類すれば低迷期、上昇期、天井期、下降期の4つのステージがあるわけですが、バックテストデータに一部のステージのものしか含まれていない場合です。
当然の帰結ですが、そのような過去データを使用して検証を行えば最高のパフォーマンスを実現するパラメータセットは一部のステージに特化したものになっている可能性が高くなってしまいます。
下降期のようなトレンドの大きいデータだけで最適化した場合、同じくトレンドのある上昇期にはある程度対応できるかと思いますが、低迷期や天井期のトレンドレスな局面では悲惨な結果になってしまう可能性が大です。
バックテスト用の過去データは最低数年分、かつ極力4つのステージ全てが含まれていることが理想です。
採用しているテクニカル指標が多過ぎる場合
一つの指標には通常3個程度のパラメータが必要ですから、3指標使用すれば約10個程の変数の組み合わせを最適化することになります。
これだけでも相当な組み合わせがあるわけで、5、6指標採用して最適化された変数のセットはある意味特殊なものであまり普遍性がないものとも言えるわけで、相場局面が変化すると全く機能しなくなる可能性も大ということになります。
一つの判断に使用する指標は4指標ぐらいまでが限度ではないでしょうか。
採用しているテクニカル指標が複雑過ぎる場合
現在、基本的な指標に加え、多くのテク二カル指標が存在します。
相場の動きは複雑なようでシンプル、シンプルなようで複雑、なんとも捉えどころのないアメーバーのような存在です。
特定の指標で端的にすべての相場の動きを捉えることなど不可能です。
どのような局面に有効な指標なのか等をよく理解した上で、いくつの指標を組み合わせてなんとか相場の傾向性をつかんでいくわけですので一つ一つの指標はシンプルなものでなければ組み合わせたイメージを想像できません。
バックテスト時は最終的な数値を検証するだけでなく、システムが得意とする局面でしっかりと利益を上げられ、苦手とする局面では損失を極小に押さえられているか等の検証が必須です。
理解できないような指標を採用し最適化した場合はこの検証が出来ないわけですので後々システムが破綻する可能性が大きくなるかと思います。
機械的に検出したパラメータセットをそのまま採用してしまった場合
トレード○○等の自動売買ソフトの場合、売買ルールを選択してシミ―レーションを実行すると機械的にパラメータの最適化をしてくれます。
EXCELでもマクロかVBAを使用すれば同様の事は可能です。
ただし、こうして得られたパラメータセットを使用する場合には注意が必要です。
各指標には各ターゲットのサイクルに合ったなんとなく相性の良い数値というものが存在します。
変数を確認して突拍子もない数値で構成されたパラの組み合わせであった場合はオーバーフィッティングになる可能性が大きいのではと思います。
大変面倒で時間もかかってしまいますが自分の手で一つ一つパラメータを打ち込み検証していく作業の中で最適な数値を見つけ出していくことが、遠回りのようで一番の近道なのだと思います。
まとめ
シストレには多少のオーバーフィッティングはつきものですが、上記の4つのポイントに留意していれば致命的なオーバーフィッティングはある程度防ぐことは可能なのではないかと思います。