システムトレードナビ:バックテスト:パラメータの最適化とオーバーフィッティング

↑「システムトレードナビ:コンテンツ一覧」へ戻る

パラメータの最適化」とは、総損益、勝率、PF、ドローダウン等のシステム評価指標を総合的に判断して最高のパフォーマンスになる変数の組み合わせを見出していくことですし、

オーバーフィッティング(カーブフィッティング)」とはシステムを過去の相場にぴったり合うように過剰に最適化してしまうことです。

バックテスト時のパフォーマンスは良かったのに、フォワードテストや実戦では使い物にならなかった場合、最適化ではなく過剰な最適化だったということになるわけです。

この2者の境界線の線引きは難しいものがあります。

なにを持ってオーバーフィッティングとするのか?

バックテスト時に収集した過去データにおいて最高のパフォーマンスを得られるパラメータを選び出した時点では最適化ですが、後にそのパラメータが通用しなくなればオーバーフィッティングとみなされてしまいますしね。

オーバーフィッティングに陥りやすいケースとその対応策について私なりにまとめてみました。


バックテスト用過去データの対象期間が短すぎる場合

このケースが一番多いのではないでしょうか。

相場には大きく分類すれば低迷期、上昇期、天井期、下降期の4つのステージがあるわけですが、バックテストデータに一部のステージのものしか含まれていない場合です。

上昇期のトレンドの強いデータだけで最適化すれば、下降期は多分対応できるかともいますが、低迷期や天井期のトレンドレスな局面では結果は悲惨になる可能性が大です。

過去データは長ければいいというものではありませんが、極力4つのステージが全て含まれていることが理想です。

それが難しい場合でも少なくともトレンド大とトレンド小の両ステージが対象期間に含まれていることがバックテストデータとしての最低条件になるかと思います

採用しているテクニカル指標が多過ぎる場合

一つの指標には通常3個程度のパラメータが必要ですから、3指標使用すれば約10個程の変数の組み合わせを最適化することになります。

これだけでも相当な組み合わせがあるわけで、5,6指標採用して最適化された変数のセットはある意味特殊なものであまり普遍性がないものとも言えるわけで、相場局面が変化すると全く機能しなくなる可能性も大ということになります。

一つの判断に使用する指標は4指標ぐらいまでが限度ではないでしょうか。

採用しているテクニカル指標が複雑過ぎる場合

現在、基本的な指標に加え、多くのテク二カル指標が存在します。
相場の動きは複雑なようでシンプル、シンプルなようで複雑、なんとも捉えどころのないアメーバーのような存在です。

特定の指標で端的にすべての相場の動きを捉えることなど不可能です

どのような局面に有効な指標なのか等をよく理解した上で、いくつの指標を組み合わせてなんとか相場の傾向性を掴んでいくわけですので一つ一つの指標はシンプルなものでなければ組み合わせたイメージを想像できません。

バックテスト時は最終的な数値を検証するだけでなく、システムが得意とする局面でしっかりと利益を上げられ、苦手とする局面では損失を極小に押さえられているか等の検証が必須です。

理解できないような指標を採用し最適化した場合はこの検証が出来ないわけですので後々システムが破綻する可能性が大きくなるかと思います。

機械的に検出したパラメータセットをそのまま採用してしまう場合

トレード○○等の自動売買ソフトの場合、売買ルールを選択してシュミ―レーションを実行すると機械的にパラメータの最適化をしてくれます。

EXCELでもマクロかVBAを使用すれば同様の事は可能です。

但し、こうして得られたパラメータセットを使用する場合には注意が必要です。

各指標には各ターゲットのサイクルに合ったなんとなく相性の良い数値というものが存在します。

例えば
移動平均、日足であれば5本、5分足だと12本の倍数等

変数を確認して突拍子もない数値で構成されたパラの組み合わせであった場合はオーバーフィッティングになる可能性が大きいかと思います。

最後に

シストレには多少のオーバーフィッティングはつきものと思いますが、上記の4つのポイントに留意すれば致命的なオーバーフィッティングを防ぐことはある程度可能かと思います。

↑「システムトレードナビ:コンテンツ一覧」へ戻る

コメントの入力は終了しました。