MT4(FXシストレ)

オーバーフィッティング(過剰最適化)の原因と対策

オーバーフィッティング(過剰最適化)

オーバーフィッティング(=過剰最適化、以下オーバーフィッティングで表記)とは過去のデータ(ヒストリカルデータ)を使い自動売買システムを最適化する際に、過剰に最適化(オーバーフィット)させることによって、実際の相場においては使い物にならないものになっている状態を指します。

過去データにおけるバックテストでは素晴らしい成績が出ているけど、実際に運用してみるとサッパリ利益が出ないというのがこの状態です。

実際の運用において、このオーバーフィッティングの状態にあるかを見極めるの重要なことです。

これから先のその自動売買システムが実際に利益が上げてくれるかは開発者も含めて誰にもわかないことですし、過去データにおいてはいい成績が出ているだけに、その性能の信頼して過剰なリスクを取る恐れがあります。

事前に可能な限りオーバーフィッティングされていないかを見極め、また作成する際にはオーバーフィッティングされたもの出ないものを作るように注意する必要があります。

オーバーフィッティングの原因と対策

サンプルが少ない(過去データ期間が短い)

過去データの不足はシステムの性能に大きな影響があります。

例えばごく短い期間のみを使用して検証した場合、その期間にトレンドが発生している可能性があります。

仮にその期間に上昇トレンドが発生している場合、その自動売買システムはその期間に適した形で作られるため「上昇トレンドに適したシステム」になります。

よって未知の相場である下降トレンドや横ばい相場においては十分なパフォーマンスが出せない、あるいは大きな損失が発生する可能性があります。

自動売買とは過去のデータからパターンを見つけて作られるので、そもそも経験してしていないパターンには対応が難しいという欠点をあることを認識する必要があります。

売買条件・パラメータ(変数)が多い

売買条件の数に注意される方は多いですが、パラメータの多さは意外と盲点になりやすいオーバーフィッティングの原因かと思います。

ここでいうパラメータ数とは指標を構成する数値など使われる変数で、最適化で調整される数値になります。

パラメータ数がオーバーフィッティングの原因になるとは考えていない方もいらっしゃるかもしれません。

通常、売買条件・パラメータは多くするほど成績が上がりやすくなります。

これは利益が出る状況に売買を限定することで成績を上げていることになります。

もちろんこの考え方自体は間違っておらず、そもそも自動売買とはそういうシステムですので必須のものとも言えます。

しかし過去のデータに沿うように、過剰にフィット(最適化)させたものもまた未来の相場においては応用が利かず役に立たない場合があります。

ロバート・バルト氏の著書の中に「自由度」という考え方が紹介されています。

この自由度とは、簡単に書くと過去データ(終値などの数値)のサンプルデータ数から売買条件で使用されている指標の対象データの数を引いて残ったデータ数になります。

指標の対象データは移動平均線であれば5日移動平均線より20日移動平均の方がより多くの対象データを持っていることになります。

つまりこの「自由度」とは売買システムの条件の、過去データにおけるフィルターの多さを測る指標として用いられます。

この自由度が高いほど、統計学的に優位なデータ数が得られ、バックテストの結果が将来の売買においても有効であるかを判断する目安となります。

フィルターが多くなるほど売買回数も減りサンプル数的な質も下がるもの要因の一つと考えられます。

オーバーフィッティングを見分けるには

オーバーフィッティングを判断するには「ウォークフォーフォワード分析」が有効だと考えられています。

ウォークフォワードとは最適化の対象外のデータを使用し、期間を変動させて行いことを指し、擬似的なリアルフォワードの状況を作ります。

期間を変動させることにはエントリーを変化させることやドローダウン期間から始めた場合に破産しないかを確認する意味があり、入念に行うほど意義のあるデータを得られます。

EA(シストレ)の実力を測るフォワードテストについて フォワードテストとは フォワードテストとは、過去のデータによる検証であるバックテストに対し、リアルのトレードに近い(あるい...