【EA開発ガイド】Part 7 フォワードテスト基礎 – Chapter 1 フォワードテスト概論

ざっくりではあるがフォワードテストについて基本的なところをまとめてみた。結論を言うと「いきなり高ロットで運用したらほぼ必ず失敗するぞ!!」ということである。EAはプログラムなんでバグと呼ばれる移乗動作するのが当たり前。ある程度の期間運用しテストしてからでないとロットは上げない方がいい。バックテストよりもフォワードテストの方が重要であると筆者は考えている。

注意事項

本稿はFXの自動売買について紹介していますが内容を保証するものではありません。金銭にかかわる内容であるためご注意ください。参考にする場合は自己責任でお願いします。

留意事項

本記事ではMT4を使用する。

実行環境

FXTF MT4
・Version: 4.00 build 1374
・26 Feb 2023

フォーワドテストの目的

ほぼ確実にリアルタイム口座でやらかすのでフォワードテストは必須と思っていいだろう。

EAのプログラミングバグ発見

バックテストでは基本的に約定拒否などは発生しないしスプレッドが大きくひらくこともない。あと、通信が遮断して再接続なんてこともない。バックテストの環境とフォワードテスト(リアルタイム取引)の環境は想像以上に異なると思っておいた方がいい。基本バックテストと同じように動作することなどまずないだろう。ただ大きなイレギュラーは三カ月に一回とか頻度が少ない。よく「フォワードテストは最低でも三カ月続けないと意味がない」などと言うがまさにその通りだと思う。可能なら半年くらいEAを稼働させてバグが発生しないかフォワードテストで様子をみたいところ。

Point

フォワードテストでほぼ確実にバグが見つかる。

スプレッドの開き

リアルタイム取引ではスプレッドが大きく開くことがよくある。もちろんバックテストはそこまで想定できないのでEAの性質によってはスプレッドの開きが原因でバックテストの結果を大きく乖離してしまう可能性もある。フォワードテストの結果をバックテストにフィードバックしてスプレッドを調整するなどするとバックテストの品質も上がるだろう。とにかくリアルタイムだとスプレッドのせいでエントリータイミングが大きくズレてしまうので低ロットでしっかりと検証しよう。

Point

スプレッドの開きが原因でフォワードテストの成績は悪くなることが多い。

バックテストとリアルの乖離検証

バックテストとフォワードテストの乖離はスプレッドなどが関係しているためEAのロジックによって大きくことなってくる。なのでEAによって乖離の大きいものもあれば少ないものもある。自身の開発しているEAが現在のバックテスト環境とどの程度の乖離があるか目安を作っておくとよい。筆者開発している最新のEAだと乖離が少なく誤差平均10%くらいになっていると思う。これも乖離が発生しないようにエラー処理やスプレッド制御を実装しているのも関係していると思う。自身の開発EAがバックテストとどのくらい乖離する傾向があるかチェックするのがフォワードテストの目的のひとつである。

Point

EAによってバックテストとフォワードテストの乖離に差異がある。

フォワードテストのやり方

ロットミスすると現金が一瞬で溶けるので要注意。ロットパラメーターのデフォルトを1万通貨に設定しておくのが無難である。

フォワードテストの手順

高ロットで運用する前にフォワードテストで1~2年は検証したいところ。

ポイント
  1. MT4対応のFX口座を複数開設
  2. 低ロットで半年間フォワードテストを実施
  3. バグや問題があれば随時改善しフォワードテストを継続
  4. バックテストとの乖離を検証し問題が無ければ高ロット検証へ
  5. 高ロットと低ロットで約定率を検証
  6. 高ロットで安定稼働できるFX業者で運用開始

最終的に100万通貨ぐらいで運用したいな。

フォワードテストの期間

EAのロジックにもよるか可能なら最低でも半年は運用した方がよい。ただあまりにも成績が悪い場合は止めて原因調査した方がいい。だが基本はどんなに負けようが半年間運用し続ける。この運用でバックテストとフォワードテストとの乖離率が分かってくるので今後のEA開発のヒントになる。

Point

バックテストとの乖離率を検証したいので負けても半年は運用したい。

口座間調査

FX口座によって配信されるレートがかなりことなる。ひどいところだと1分足の形がまったく違うなんてことも。あと証券会社によってスプレッドの開き具合が違ったりするため複数のFX業者を対象にテストをした方がよい。ただMT4で自動売買できるFX口座は限られるので選択肢はそこまで多くない。筆者は「FXTF」「OANDA」「外為ファイネスト」の三社で検証している。

Point

FX口座によってスプレッドの開くタイミングが異なるためフォワードテストでは複数のFX口座でテストするのが吉。

低ロットテスト

ロットを上げてEAが暴走すると実害がでてしまうのではじめの半年くらいは低ロットでの運用をおすすめする。ほんとにリアルタイム運用は何がおきるかわからないので可能な限りロットを下げてフォワードテストをしたい。バックテストとの乖離率が分かってきたらロットを上げていいと思うが判断は非常に難しい。

Point

新しいEAはほぼ必ずトラブルので可能な限り低ロットでテストする。

高ロットテスト

低ロットである程度安定したらこんどはいよいよ高ロットテストとなる。都市伝説ぽいのだがロットを上げると約定タイミングがずれることが多い。10万通貨くらいならまだしも100万通貨ともなると1万通貨と同じタイミングで約定する可能性は低い。特にボラティリティが高いタイミングで高ロットのEAがちゃんと約定できるのか検証したい。約定率はFX業者によって異なるため低スプレッドでも約定率が低い場合は別業者を検討した方がいいかもしれない。

Point

高ロット時の約定率をFX業者ごとに検証する。

まとめ

資産の運用という側面からみるとバックテストよりもフォワードテストの方が重要と思える。バックテストでいくら好成績でもフォワードテストで結果を出せなければゴミ箱行きである。EAのロジックにもよると思うがフォワードテスト検証は短くても半年長ければ1年くらい必要だと筆者は考えている。

ポイント
  • バックテストと同じくらいフォワードテストは重要である
  • EAの初期段階はバグが多いのでかならずフォワードテストする
  • ロットを上げるタイミングは難しい

EAのバグと設定ミスでフォワードテスト中に15万円くらい消し飛びました。