お疲れ様です!

今回は「カーブフィッティングについて」というテーマで少々お話してみたいと思います。

 

EA開発・システム開発において、カーブフィッティングは切っても切れない問題です。

カーブフィッティングとは日本語で言いますと、過剰最適化となりますが、文字どおりEA・システムのロジックを過去の相場データに合うように過剰に最適化することを指します。

カーブフィッティングされたEA・システムのロジックは、過去の相場データ(のみ)に合うように構築されていますので、バックテストの成績は優秀になりますが、実戦の運用ではバックテストと同等の成績が得られないケースがあります。

要するに、EA開発・システム開発とは、いかにカーブフィッティングを排除し、未来の相場でも有効な普遍性のあるロジックを構築していくかの戦いであると言っても過言ではないと思います。

 

ではどのようにして、カーブフィッティングを排除していくのか?

ここからは私の持論ですが・・

1、過去データありきでロジックを構築しないこと

例えば裁量トレードのロジックをEA化する場合をご想像していただければ分かりやすいかと思いますが、この場合ロジックありきでEA・システムを開発し、その後、果たしてこのロジックが過去の相場でも有効なのかを検証していく流れになります。

一方、過去データありきでロジックを構築する場合、過去の相場がこう動いたから、こういうロジックなら勝てるだろうという流れでEA・システムを開発していくことになります。

両者はまったく非なるもので、前者に比べ後者のほうが圧倒的にカーブフィッティングの可能性が高まります。

 

2、変数の数をできる限り減らすこと

EA・システムのロジックは基本的にテクニカル指標(インジケーター)であったり、エントリー時間・曜日等であったり、ある種のフィルターで構築されています。

このフィルター、すなわち変数が多ければ多いほどカーブフィッティングの可能性が高まります。

EAプログラミングの経験をお持ちの方であれば理解しやすいかと思いますが、ロジックに使用するテクニカル指標(インジケーター)の数を増やしていけば(変数の数を増やしていけば)、プロフィットファクター等の評価値は上がりますが、それとは反比例的に取引回数は減少していきます。

一見、プロフィットファクター等の評価値が上がれば、より優秀なロジックに近づいているように思えますが、実は過去のデータ(のみ)にマッチするガチガチにカーブフィッティングされたロジックの完成に近づいているというわけです。

EA・システムのロジックはできる限り変数の数を減らしたシンプルなものであるべきだと思います。

 

3、十分なフォワード運用期間を設けること

「カーブフィッティングを排除しなければならない」

このことは、EA・システム開発者であれば、誰でも知っていることです。

ただ、構築したロジックがカーブフィッティング、すなわち過剰な最適化なのか、それとも適度な最適化なのかは、開発者自身も明確に判断できない部分があります。

ですので、やはり最後はフォワード運用です。

十分なフォワード運用期間を設けて、構築したロジックがカーブフィッティングに陥っていないかを判断していきます。

ちなみに私の場合、私的に運用するEA・システムの中には例外もありますが、世に出すEA・システムは最低でも1年間はフォワード運用期間を設けています。

 

さて、ここまでカーブフィッティングについてお話してきましたが、実はこのカーブフィッティングについてのお話は、弊社が運営する「EAプログラミングセミナー」のサポートをしているときに出てきたお話です。

特にシステムトレーダーの方には役立つのではないかと思い、今回記事にさせていただきました。

ご参考になればと思います。

 

では失礼致します。