MT5導入 その5

MT5

フォワードテスト

EAのパラメータの最適化で注意することは、たいていの場合、その結果がカーブフィッティング
だということです。つまり、最適化を行った期間のみで最適となるパラメータをみつけたにすぎないのです。
実際に最適化したEAを動かしてみて、その結果をバックテストと比較すること「フォワードテスト」といいます。
フォワードテストの結果がバックテストの結果と比べてさんざんであれば、明らかにカーブフィッティングです。
しかし、実際にEAを動かす方法では、ある程度の回数の取引を繰り返さないと結果がわからないので、
カーブフィッティングであることがわかるまでにかなりの時間がかかってしまいます。

それと同等のテストを、すでにあるヒストリカルデータを使って行えば、結果はすぐにわかります。
EAの最適化を実行した期間と別の期間でバックテストを行うことも「フォワードテスト」といいます。

ただし、フォワードテストを行う為には、最適化を行った期間とは全く別の期間のヒストリカルデータ
がないといけません。あくまでも、未知の相場だと仮定してテストを行わねければ意味がないのです。

ところが、フォワードテストは最適化でもっとも評価の高かったパラメータの値を設定したEAに対して
実行するだけでようでしょうか?
たとえ、フォワードテストの結果がよかったしても。”たまたま”よかったという可能性も捨てられません。
もしかすると、パラメータの値がわずかに違うケースで、最適化の結果がよかったとしても、フォワードテスト
の結果が悪くなるかもしれません。

このような”たまたま”なケースをあぶりだすためにも、最適化でまあまあの結果であったパラメータの
組み合わせを多数用意して、それぞれに対してフォワードテストを行って、大きな差がないかを調べる
必要があるのです。

結局、フォワードテストも結構な回数の繰り返しが必要となるので、手動でやるのは面倒です。ただMT5
では、このような面倒なフォワードテストを自動で実行してくれる機能が搭載されています。以下に
その方法を紹介します。

フォワードテストの設定項目

フォワードテストの設定は、最適化の設定と同じ画面で行います。ストラテジーテスターの「概要」タブ
の画面から、「フォワード最適化」と書かれているボタンをクリックしてください。
フォワードテストに関する設定は、最適化期間を指定する「日付」と「フォワードテスト」をセットで
行います。

「フォワードテスト」の項目では、「キャンセル」「1/2」「1/3」「1/4」「カスタム」の選択肢のなか
から選択を行います。

前述のパラメータ最適化のときには、この設定を「キャンセル」にしていました。最適化だけを行って、
フォワードテストは行わないという設定です。

「1/2」「1/3」「1/4」は、最適化の期間のうち、フォワードテストの期間に割り振る割合を指定するものです。

例えば、最適化の期間を1999/1/1~2019/1/1までの20年間と設定してあるとします。ここで、フォワードテスト
を「1/2」に設定すると、フォワードテストの期間が最適か期間の後半1/2となります。つまり、フォワードテスト
の開始日が2008/12/31となり、税半の期間で最適化を行い後半の期間でフォワードテストを行う設定となります。

同様に「1/3」の場合、後半の1/3,つまり、2012/5/2がフォワードテストの開始日となります。
また、フォワードテストの開始日を具体的に指定したい場合、「カスタム」を選び、その右側で開始日を直接指定
すればOKです。

フォワードテストの結果の見方

フォワードテストは通常、最適化とセットで行います。フォワードテストを「キャンセル」以外、オプティマイズ
を「無効化」以外に設定し、最適化を実行した場合、最適化期間の税半の期間で、通常のパラメータの最適化を行います。
オプティマイズが「完全アルゴリズム(遅い)」の場合、パラメータの範囲で設定したすべての組み合わせに対して
バックテストを行い、その結果を表形式とグラフ形式で出力します。
そして、最適化で評価の高かった上位10%程度のパラメータの値の組み合わせに対して、今度は最適化期間の後半の期間
でバックテストを行い、その結果を表形式とグラフ形式で表示します。

上記の例でフォワードテストを実行した結果について見てみましょう。

最適化は1999年からの10年間で実行しました。
その結果の2-Dグラフは次のようになります。

評価の高かったパラメータ値の組み合わせは、大きく三つの部分に分布していることがわかります。

フォワードテストは、前半の最適化で評価の高かったパラメータ値の組み合わせに対して行われるので、2-Dグラフ
は次のようになります。

これを見ると、最適化、フォワードテストともに評価値の高い領域もありますし最適化の評価は高いものの、
フォワードの評価は低くなっている領域もあります。

表形式の結果は、ストラテジーテスターの「先行結果」タブに表示されます。

ここでは、バックテストの結果でソートしています。バックテスト、つまり最適化で結果のよかったパラメータの値が、
フォワードテストでどうなるかを見るわけです。

この例では、バックテストで最適となったパラメータ値の組み合わせ(FastMAPeriod=15,SlowMAPeriod=21)は、フォワードテスト
ではマイナスの結果になってしまし、カーブフィッティングであったことがわかります。
しかし、上位のほかのパラメータ値の組み合わせでは、フォワードテストでもプラスになっているものが多くみられます。
実際フォワードテストの2-Dグラフでも、FastMAPeriod=50,SlowMAPeriod=70を中心とした領域で評価値の高い部分が割と
大きなかたまりとして分布しています。

このように、最適化とフォワードテストの両者の評価がよいパラメータ値の組み合わせがピンポイントではなく、ある程度広い
範囲に連続して存在するのであれば、最適化がカーブフィッティングであった可能性は低いと考えられます。この領域のパラメータ
の値であれば、とりあえず採用する価値はあるでしょう。
ただ、上記の結果で、最後の2行に現れている(FastMAPeriod=60,SlowMAPeriod=62),(FastMAPeriod=61,SlowMAPeriod=63)の組合わせは、
短期の気移管と長期の期間の差が小さいため、わずかな価格の差で結果が変わる可能性があります。そうゆう意味では、このパラメータ値
の組み合わせは選択しないほうがよいでしょう。

MT5
shin3をフォローする
System trading topics

コメント

タイトルとURLをコピーしました