Select Language

過剰最適化を避けるMT5のフォワードテスト機能とは

過剰最適化を避けるMT5のフォワードテスト機能とは

  • X
  • facebook
  • LINE
  • RSS

  • X
  • facebook
  • LINE
  • RSS
update 2023.10.13 01:41
過剰最適化を避けるMT5のフォワードテスト機能とは

update 2023.10.13 01:41

EA(エキスパートアドバイザー)の過剰最適化(オーバーフィッティング)は、自動売買トレーダーにとって悩ましい問題です。MetaTrader5(MT5)では、このオーバーフィッティングを避けるための機能として、フォワードテスト機能が搭載されました。

フォワードテストとは、「未来の検証」という意味です。過去データで検証するバックテストに対して、リアルタイムでのEAの稼働成績を指す言葉として使われる場合もありますが、MT5のフォワードテスト機能は、ある時点までの期間を「過去」、その後の期間を「未来」とみなして最適化とバックテストを行うことを指します。具体的には、「過去」の期間のデータでパラメータの最適化を行った後、「未来」の期間のデータでバックテストを行い、そのパラメータの成績を検証します。

購入したEAをただ運用するだけでなく、自分でEAを作成したり、パラメータの最適化を行う人も増えてきました。その際、単にバックテストや最適化を行うだけでなく、フォワードテストやウォークフォワードテストを行うと、より詳しくEAの性能を検証できます。

この記事では、MT5のフォワードテスト機能や、それを利用してウォークフォワードテストをする方法を詳しく解説します。

フォワードテストとは

最適化は、過去のデータを基に成績のよいパラメータを見つけ出す作業なので、どうしても、その期間、その銘柄でしか通用しないパラメータになってしまうリスクがあります。そのため、過去のデータだけで好成績となるEAなのか、未来の相場でも同じパフォーマンスを発揮できるEAなのかを判断するためには、最適化のためにデータを使用した期間ではない「未来」の期間で検証を行うことが必要です。MT5のフォワードテスト機能は、この「未来」の検証を最適化と同時に行うことができるため、より正確に、最適化されたパラメータの評価を行うことができます。

さらに、このフォワードテスト機能で得られたデータを利用すれば、単純なフォワードテストよりも正確にEAの性能を検証できる「ウォークフォワードテスト」を行うこともできます。ウォークフォワードテストとは、少しずつ対象期間をずらして複数回フォワードテストを行い、その結果を平均してEAの成績がどの程度安定しているかを評価するものです。一度のフォワードテストだけでは、過去のデータを用いて最適化したパラメータがたまたま未来の相場でも好成績になったという可能性が残ります。しかし、複数回のフォワードテストの結果を平均することにより、その可能性を排除し、より安定的に好成績を残すEAを選ぶことができます。

フォワードテストの仕組み

フォワードテストの目的は、パラメータが過剰最適化(オーバーフィッティング)になっていないかを判断することです。オーバーフィッティングとは、EAの最適化を行う際にデータをサンプルにした期間(インサンプル期間)の成績は良いものの、それより後の期間(アウトオブサンプル期間)では極端に成績が下がる状態をいいます。

インサンプル期間とアウトオブサンプル期間の違い

最適化とは、指定した範囲で少しずつEAのパラメータの数値を変えてバックテストを行い、成績の良いパラメータを見つける作業です。最適化自体が元々、過去のデータにパラメータを合わせていく作業であるため、必然的にデータを参考にしたインサンプル期間の成績は良くなりますが、「未知の相場」に対応できるかどうかは保証されていません。

フォワードテストでは、データを参考にしていないアウトオブサンプル期間の成績を確認することで、「未知の相場」でも通用するEAかどうかを確認します。MT5のフォワードテスト機能では、バックテスト期間を二つに分割し、前半を最適化を行うためのインサンプル期間、後半を成績の検証を行うアウトオブサンプル期間に分割することで、フォワードテストを行います。

最適化の性質を考慮すると、オーバーフィッティングが発生してしまうのは仕方がないことです。しかし、最適化で生じたパラメータの中からオーバーフィッティングになっているものを除外することができれば、未来の相場でも利益を上げられるEAを運用することができます。フォワードテストはこのために行います。

MT5でフォワードテストを行う手順

ここからは、MT5で最適化とフォワードテストを同時に行う手順を紹介します。MT5では、「フォワード最適化」というメニューが用意されていて、すぐに行うことができます。

手順1

メニューバーより「表示」をクリックし、「ストラテジーテスター」を選択します。

ストラテジーテスターの出し方 ストラテジーテスターの出し方

手順2

ストラテジーテスターのメニュー一覧より「フォワード最適化」を選択します。

フォワードテスト選択 フォワードテスト選択
point メニューの違いは初期設定の違い

ストラテジーテスターには複数のメニューがあり、通常の最適化を行う場合は「最適化を完了」メニューを、最適化とフォワードテストを同時に行う場合は「フォワード最適化」メニューを選択しますが、どちらを選んでも同じストラテジーテスターの設定タブに遷移します。メニューの違いは初期設定の違いで、「フォワード最適化」を選んだ場合は、フォワードテストを行う際に設定する必要がある項目が最初から設定されています。「最適化を完了」メニューを選択した場合でも、「フォワードテスト」の項目を手動で設定すれば、フォワードテストを行うことができます。なお、「最適化を完了」という日本語表記は誤訳で、英語ではもう一つの最適化メニューである「遺伝的最適化」との対比で、「完全最適化」という意味になります。

手順3

銘柄や時間足等、通常のバックテストで必要な項目を入力した後、フォワード最適化に必要な「フォワードテスト」と「オプティマイズ」の項目を入力・選択します。

フォワードテスト設定 フォワードテスト設定

番号

項目名

説明

1

フォワードテスト

フォワードテストに使用する期間を設定します。「1/2」に設定すると、バックテスト期間のうち前半1/2で最適化を行い、後半1/2をフォワードテストに使用します。カスタムを選択すると、任意の日付を指定することができ、その日付以降がフォワードテストに使用されます。

2

オプティマイズ

最適化の方法を選択します。
・無効化:最適化を行わず、通常のバックテストのみ行います。
・完全アルゴリズム(遅い):パラメータタブで指定した入力変数の全ての組み合わせでバックテストを行います。
・遺伝的アルゴリズム(速い):遺伝的アルゴリズムに基づいて、パラメータタブで指定した入力変数の全ての組み合わせのうち一部でバックテストを行います。完全アルゴリズムよりも速く最適化が完了します。
・気配値表示で選択されたすべての銘柄:複数の銘柄で同時にバックテストを行います。

3

最適化基準

最適化結果を選別したり、並び替えたりする基準を選択します。
・残高最大:口座残高が大きい順。
・最大利益率:利益率が大きい順。
・最大予想ペイオフ:期待ペイオフが大きい順。
・最小ドローダウン:ドローダウンが小さい順。
・最大回復係数:リカバリーファクターが大きい順。
・最大シャープレシオ:シャープレシオが大きい順。
・カスタム最大:OnTester関数で指定した基準が大きい順。
・複雑な基準の最大値:複数の基準(取引数、ドローダウン、リカバリーファクター、期待ペイオフ、シャープレシオ)を用いた評価が大きい順。

「フォワード最適化」メニューを選択すると、「オプティマイズ」欄はデフォルトで「完全アルゴリズム(遅い)」が、最適化基準は「残高最大」が選択されますが、変更も可能です。フォワードテストは、全ての最適化結果について行われるわけではなく、成績が上位の最適化結果のみに行われ、最適化基準はフォワードテストが行われる最適化結果の絞り込みにも使用されます。

point 完全アルゴリズムと遺伝的アルゴリズム

MT5の最適化では、最適化を行う方法を「完全アルゴリズム(遅い)」「遺伝的アルゴリズム(速い)」の2種類から選択することができます。完全アルゴリズムは、パラメータタブで指定した入力変数の全ての組み合わせでバックテストを行いますが、遺伝的アルゴリズムは、一定の基準に基づいてバックテストを行う入力変数の組み合わせを絞り込むものです。遺伝的アルゴリズムの方が最適化を完了するまでの時間が短縮されますが、一部の組み合わせについてはバックテストが行われないというデメリットがあります。このほか、「気配値表示で選択されたすべての銘柄」を選択すると、複数の銘柄での最適化を行うことができます。

手順4

「設定」タブの隣の「パラメータ」タブで、最適化するパラメータにチェックを入れ、「スタート」「ステップ」「ストップ」の値を入力します。設定が完了したら、「スタート」ボタンを押すと最適化が開始されます。

最適化パラメータ設定 最適化パラメータ設定

手順5

フォワードテストが完了したら、結果の一覧が表示される「先行結果」のタブを確認します。結果は、それぞれ番号(パス)を付けられ、「残高最大」等の最適化基準に従って表示されます。「先行結果」の一覧から、確認したい結果をダブルクリックすると、詳細が表示されます。

最適化結果 最適化結果

手順6

「先行結果」のタブで確認したい結果をダブルクリックすると、「バックテスト」、「フォワード」、「グラフ」のタブが表示されます。グラフタブでは、損益グラフに灰色の線が表示され、この線より前は最適化にデータを使用した期間(インサンプル期間)、この線より後はフォワードテスト期間(アウトオブサンプル期間)となります。アウトオブサンプル期間に成績が下がっていないことが、オーバーフィッティングかどうかを見分けるポイントになります。

最適化グラフタブ 最適化グラフタブ

「バックテスト」、「フォワード」タブでは、インサンプル期間とアウトオブサンプル期間の両方の成績を個別に確認することができます。

フォワードタブ フォワードタブ

オーバーフィッティングかどうかを判断するためには、特にフォワードタブの成績を確認するようにしましょう。

単純なフォワードテストだけでも、オーバーフィッティングの可能性を判断する材料になりますが、MT5のフォワードテスト機能で得られる数値を使って、さらに「ウォークフォワードテスト」を行うこともできます。

ウォークフォワードテストとは

ウォークフォワードテストとは、一定の期間内でフォワードテストを複数回に分けて行い、その成績を平均することです。

ウォークフォワードテストの仕組み

通常のフォワードテストは、インサンプル期間も一つ、アウトオブサンプル期間も一つなので、インサンプル期間でオーバーフィッティングされたパラメータが、アウトオブサンプル期間でたまたま通用してしまうという可能性も残ります。ウォークフォワードテストは、この可能性を排除するために、期間をずらして複数回フォワードテストを行います。

10年の期間を対象にウォークフォワードテストを行う場合、例えば、1~3年目をインサンプル期間、4年目をアウトオブサンプル期間として、1年ずつずらして10回行います。インサンプル期間とアウトオブサンプル期間の長さや分け方は、特に決まったルールはありません。あまり短すぎたり長すぎたりすると正確なデータが取れませんが、EAの年間取引回数などにもよりますので、EAに応じて適切な長さで設定しましょう。

複数回に分けたフォワードテストの結果が出たら、インサンプル期間の獲得利益の年間平均と、アウトオブサンプル期間の獲得利益の年間平均をそれぞれ計算します。フォワードテストでは、最適化の際に過去データを参照したインサンプル期間で成績が良いのは当然で、未来の相場、つまりアウトオブサンプル期間で成績が良いのが安定したEAだと考えます。そのため、インサンプル期間の利益に比べてアウトオブサンプル期間の利益がどの程度大きかったかで評価を行います。

具体的には、下記の式に当てはめて、「ウォークフォワード効率」を計算します。年間平均を使用するのは、インサンプル期間とアウトオブサンプル期間の年数が違う場合も計算ができるようにするためです。

ウォークフォワード効率 =
平均年間ウォークフォワード利益 ÷ 平均年間最適化利益 × 100

実際の数値で見てみましょう。

回数 インサンプル期間の利益 アウトオブサンプル期間の利益
1 8万円 1万円
2 7万円 3万円
3 13万円 2万円
4 6万円 1万円
5 9万円 3万円
6 13万円 2万円
7 6万円 1万円
8 9万円 2万円
9 11万円 2万円
10 8万円 3万円
合計 90万円 20万円

インサンプル期間の利益

1回 8万円
2回 7万円
3回 13万円
4回 6万円
5回 9万円
6回 13万円
7回 6万円
8回 9万円
9回 11万円
10回 8万円
合計 90万円

アウトオブサンプル期間の利益

1回 1万円
2回 3万円
3回 2万円
4回 1万円
5回 3万円
6回 2万円
7回 1万円
8回 2万円
9回 2万円
10回 3万円
合計 20万円

10回分のフォワードテストでのインサンプル期間(3年)の利益とアウトオブサンプル期間(1年)の利益はこのようになりました。インサンプル期間の利益の合計は90万円で、年間平均にすると3万円です。これに対して、アウトオブサンプル期間の利益の合計は20万円で、年間平均は2万円です。

これを、ウォークフォワード効率の式に当てはめると、「2 ÷ 3 × 100」で67%となります。

ウォークフォワード効率が高ければ高いほど、未来の相場で利益を出せたことを意味するので、EAが安定した成績を出すことが期待できます。

オーバーフィッティングの可能性が低いと判断できるウォークフォワード効率の目安は、50%以上とされています。この数値を上回るEAであれば、実際に運用して利益を上げることが期待できるでしょう。逆に、ウォークフォワード効率が低い場合は、オーバーフィッティングの可能性が高いためロジックを見直す必要があります。

MT5のフォワードテスト機能からウォークフォワード効率を計算する方法

MT5のフォワードテスト機能は、1回分のフォワードテストが行えるものです。そのため、ウォークフォワードテストを行うには、自分で期間を区切って複数回フォワードテストを行い、ウォークフォワード効率を計算する必要があります。

実際にMT5でウォークフォワード効率を計算する方法を紹介します。今回は、2010~2016年の7年間を、4年ずつ4期間に区切り、最適化とフォワードテストを4回行います。4年のバックテスト期間のうち、1/4、つまり1年をフォワードテスト期間に指定します。

ウォークフォワードテストの実例

手順1

上記の手順(MT5でフォワードテストを行う手順)と同様に最適化とフォワードテストを行います。1回目は、バックテスト期間を「2010.01.01~2013.12.31」、フォワードテスト期間を「1/4」に設定しました。最適化設定は、デフォルトのまま「完全アルゴリズム(遅い)」、「残高最大」を使用しています。

ウォークフォワード設定 ウォークフォワード設定

手順2

パラメータタブで最適化したいパラメータの設定を行い、「スタート」をクリックします。この設定は、各回のフォワードテストで共通で使用します。

ウォークフォワードパラメータ設定 ウォークフォワードパラメータ設定

手順3

最適化とフォワードテストが完了したら、「先行結果」のタブに、結果のパラメータの一覧が表示されますので、この結果の中から、ウォークフォワードテストに使用するパラメータを一つ決定します。どのパラメータを使用するかは特に決まった基準はありませんが、今回は最適化された期間の口座残高が最大のものを使用します。「バックテスト」をクリックすると、口座残高が多い順番に並び替えができますので、一番上のパス(番号)3の行をダブルクリックします。

ウォークフォワード最適化結果 ウォークフォワード最適化結果

手順4

「先行結果」タブのパスをダブルクリックすると、「バックテスト」タブと「フォワード」タブが追加され、詳細な結果が表示されます。それぞれのタブの「総損益」の項目の数値がウォークフォワードの計算に必要になりますので、メモしておきます。今回は、バックテストの総損益が127,890円、フォワードテストの総損益が205,234円となりました。

バックテスト結果とフォワードテスト結果 バックテスト結果とフォワードテスト結果

手順5

手順1~3を、開始年を1年ずつずらして繰り返します。結果は下記のようになりました。

回数 開始年 バックテスト総損益
(3年)
フォワードテスト総損益(1年)
1回目 2010年1月1日 127,890円 205,234円
2回目 2011年1月1日 366,023円 -183,076円
3回目 2012年1月1日 270,866円 8,704円
4回目 2013年1月1日 131,292円 123,109円
合計 - 896,071円 153,971円

1回目

開始年 2010年1月1日
バックテスト総損益(3年) 127,890円
フォワードテスト総損益
(1年)
205,234円

2回目

開始年 2011年1月1日
バックテスト総損益(3年) 366,023円
フォワードテスト総損益
(1年)
-183,076円

3回目

開始年 2012年1月1日
バックテスト総損益(3年) 270,866円
フォワードテスト総損益
(1年)
8,704円

4回目

開始年 2013年1月1日
バックテスト総損益(3年) 131,292円
フォワードテスト総損益
(1年)
123,109円

合計

開始年 -
バックテスト総損益(3年) 896,071円
フォワードテスト総損益
(1年)
153,971円

この数値を基に、ウォークフォワード効率を計算します。

ウォークフォワード効率 =
平均年間ウォークフォワード利益 ÷ 平均年間最適化利益 × 100

1回あたりのバックテスト期間は3年、フォワードテスト期間は1年のため、バックテストの総損益の合計を年間平均に換算すると「896,071 ÷ 12」で74,673円、フォワードテストの総損益の合計を年間平均に換算すると「153,971 ÷ 4」で38,493円になります。

これを式にあてはめると、「ウォークフォワード効率=38,493÷74,673×100=約52%」となります。

ウォークフォワード効率50%以上を満たしていますので、このEAはオーバーフィッティングの可能性が低いと判断できます。

MT5ではウォークフォワードがやりやすくなった

実は、MT4でもフォワードテストやウォークフォワードテストを行うことはできました。ある期間を除外して最適化を行い、パラメータを決めた後、除外していた期間で通常のバックテストを行えば、フォワードテストになります。さらに、それを期間を分割して繰り返せばウォークフォワードテストもできます。しかし、分割してやるのはかなりの手間でした。

MT5では、この点が改善され、最適化を行うのと同時にフォワードテストも行うことができるようになりました。最適化を行うと多くのパラメータが生まれますが、そのうち未知の相場(アウトオブサンプル期間)でも成績が良いパラメータはどれかというのが一目で分かるのは、EA利用者にとってはありがたい機能です。

まだまだ自動売買ではMT4が主流ですが、MT5は多くの点でMT4より進化しています。MT5の機能を活用して、より利益を上げるEAを探していきましょう。


Date

作成日

2022.12.01

Update

最終更新

2023.10.13

この記事は、お役に立ちましたか?

ご覧いただきありがとうございます。Myforexでは、記事に関するご意見・ご感想をお待ちしています。
また、海外FX・仮想通貨の経験が豊富なライター様も随時募集しております。

お問い合わせ先 [email protected]

貴重な意見をいただきありがとうございます。
貴重な意見をいただきありがとうございます。

関連記事

アクセスランキング

メタマスク(MetaMask)のエアドロップ確認機能とは?特徴や使い方を解説

分散型ウォレットのメタマスク(MetaMask)に、エアドロップ確認機能が追加されました。これにより、エアドロップの受け取り資格の有無を、メタマスク上で簡単にチェックすることが可能になっています。当記事では、エアドロップ確認機能の特徴や、対応しているブロックチェーン、使い方を解説します。
New
update2024.04.26 21:00

仮想通貨BBの将来性は?ビットコイン向けリステーキングチェーンBounceBitについて解説

仮想通貨(暗号資産)BBは、レイヤー1ブロックチェーンBounceBitのネイティブトークンです。BounceBitは、ビットコイン(BTC)をリステーキングできるインフラとして機能します。
update2024.04.25 20:00

セービングとステーキングの違いとは?仕組みや利率・やり方を解説

仮想通貨(暗号資産)を運用する代表的なサービスとして「セービング」と「ステーキング」があります。よく似た両者には、どのような違いがあるのでしょうか。当記事では、セービングとステーキングの違いや仕組み、利率、やり方などを解説します。
update2024.04.25 19:30

Zoomexがプレイ金額杯を開催!To The Moonをプレイして総額17万円相当の賞金・特典を獲得

Zoomex(ズーメックス)が、プレイ金額杯の開催を発表しました。To The Moonをプレイしてランキングに入賞すると、総額17万円相当の賞金・特典を獲得できます。キャンペーンは、2024年4月30日午前9時(日本時間)までです。
update2024.04.23 20:00

BigBossが新規ユーザー向けの入金ボーナスを提供!最大1万3,700ドルを付与

海外FX業者のBigBossが入金ボーナスの提供を開始します。今回のボーナスプログラムでは累積入金額によって付与率が変化し、最大1万3,700ドルが付与されます。入金ボーナスの付与条件や対象、注意点などをまとめました。
update2024.04.22 20:30

ThreeTraderが3周年を記念したキャンペーンを開催!

海外FX業者のThreeTraderが、3周年を記念したキャンペーンの第一弾を開催しています。キャンペーン期間中に本人確認審査を完了、または初回入金を行うと合計20ドルのキャッシュバックを受け取れます。
update2024.04.19 21:00

Bybitの新ローンチパッドに仮想通貨PBUXが登場!参加方法やPlaybuxの独自トークンについて解説

Bybitのローンチパッドに仮想通貨PBUXが登場します。PBUXは、エンターテインメントWeb3.0プラットフォーム「Playbux」の独自トークンです。計測開始日時は2024年4月18日午前9時からです。
update2024.04.18 21:00

XS.comが賞金総額100万円のデモトレード大会「Lucky Contest」を開催!

海外FX業者のXS.comが、2024年4月29日よりデモトレード大会「Lucky Contest」を開催します。上位5名などには総額100万円の賞金が贈られます。
update2024.04.17 20:00

仮想通貨OMNIの将来性は?ロールアップを統合するレイヤー1ブロックチェーンについて解説

仮想通貨OMNIは、イーサリアムのロールアップを統合するブロックチェーン、Omni Networkのネイティブトークンです。Omni Networkを使用すると、イーサリアムの流動性とユーザーにアクセスできるグローバルアプリケーションを構築できます。
update2024.04.16 21:00

メタマスクにリップル(XRP)は送金できる?メタマスクの対応ブロックチェーンについて解説

メタマスク(MetaMask)は、複数の仮想通貨(暗号資産)を管理できる人気の高い仮想通貨ウォレットですが、メタマスクにリップル(XRP)は送金できるのでしょうか。
update2024.04.16 20:00
youtube youtube

免責事項:Disclaimerarw

当サイトの、各コンテンツに掲載の内容は、情報の提供のみを目的としており、投資に関する何らかの勧誘を意図するものではありません。
これらの情報は、当社が独自に収集し、可能な限り正確な情報を元に配信しておりますが、その内容および情報の正確性、完全性または適時性について、当社は保証を行うものでも責任を持つものでもありません。投資にあたっての最終判断は、お客様ご自身でなさるようお願いいたします。

本コンテンツは、当社が独自に制作し当サイトに掲載しているものであり、掲載内容の一部または、全部の無断転用は禁止しております。掲載記事を二次利用する場合は、必ず当社までご連絡ください。

  • Facebook
  • Twitter
  • LINE

Myforexでは、このウェブサイトの機能向上とお客様の利便性を高めるためにクッキー使用しています。本ウェブサイトでは、当社だけではなく、お客様のご利用状況を追跡する事を目的とした第三者(広告主・ログ解析業者等)によるクッキーも含まれる可能性があります。 クッキーポリシー

クッキー利用に同意する
share
シェアする
Line

Line

Facebook

Facebook

X

Twitter

キャンセル