MT4のバックテストとスプレッドの設定
EAでは、バックテストは良くてもリアルで稼働開始したら思ったような成績にならないことが良くあります。
この原因を探るためにバックテストの精度について時々調べています。
乖離の原因は、過剰最適化だったりたまたまロジックと相場が噛み合わないから、というように考えていました。
しかしそれだけではなく、そもそもバックテストのシステムが誤差を含んでいるのです。
EAをリアル稼働した期間があれば、そのトレード履歴と、同じ期間のバックテスト結果を突き合わせることで、何が乖離の原因かを調べる事ができます。
今回は4種類のEAについて、バックテストのスプレッド設定を色々と変更する方法で分析を行いました。
バックテストとスプレッドの設定
バックテストに最適なスプレッドの設定は?
MT4のストラテジーテスターを使ってバックテストを行う際、スプレッドはいくらにするのが良いのだろう?といつも悩みます。
TDSを使っている場合は、固定が良いのか変動が良いのか、はたまたTDSって本当に良いの?なんて疑問を持つことも… 笑。
スプレットの設定によってバックテストの結果が変わるので重要なポイントですが、正解が分かりません。
仕方がないので、だいたいいつもはリアルのスプレッド+αで行っています。
そこで、スプレッドを色々変えていくつかの分析をしてみました。
ただし、「この数値が最適です!」という結果を求める分析ではありません。
スプレッドの設定で何が変わるのか?を探っています。
長くなると思いますが、最後までご覧いただければ幸いです。
スプレッド設定の変更方法
TDSはデューカスコピーのデータを使用しています。
TDS固定数種、TDS変動数種、TDSなし固定数種をEA毎に様子を見ながら変更しました。
TDS変動では乗数、最大、最小を固定にして加算だけ変更しています。
加算が多いほどスプレッドが広いという事です。
加算とは、ヒストリカルデータ上のスプレッドに追加するスプレッドです。
それぞれでリアルと合計獲得pipsが近くなるものを探しながら、変更する事で何が変わるかを見ています。
調べた全データを出すと多いので、抜粋して記事にしています。
エントリーの再現性
今回の件と直接は関係ないかもしれませんが、リアルとバックテストを比較する上で押さえておきたい話です。
再現性について、僕は縦の再現性と横の再現性があると思っています。
縦は時間で、過去でも未来でもその条件になったらエントリーをするということ。
横は環境差で、バックテストでもデモ口座でも違うブローカーでも同じタイミングでエントリーでエントリーをするということ。
同じタイミングといってもドンピシャではなくても良いですし、極端にスプレッドが広いブローカー等では差が出るかもしれません。
今回のようにリアルとバックテストを比較する場合、横が揃っていないと意味がありません。
まぁ、横が揃わない時点で精度が低いとも言えますしね。
というわけで、この話もさせて頂きました。
では、本題に入っていきます。
EA1の分析
EA1の概要
毎日定刻にドル円をショートする自作EAです。
ショートのみのロジックです。
決済は、トレーリングストップ、SLTP、定刻のいずれかで、主にトレーリングストップでの決済が多いです。
エントリーの再現率は、定刻エントリーなので、ほぼ数秒以内で100%です。
TDS変動の設定は、乗数1、最小3、最大25で、加算を変更しています。
他の部分も含めて数値はポイントになります。(1ポイント=0.1pips)
OANDA東京サーバーで稼働しています。
EA1のデータ
黄色の項目がリアルと近かったものになります。
+誤差、-誤差は、+pips、-pipsのリアルとの差です。
勝率はあまり変化がなく、リアルとの誤差も小さいです。
誤差の部分には特徴が出ていますね。
TDSを使用しているデータは-誤差がプラスです。
-誤差がプラスってちょっと紛らわしいですが、負けが少な目に出ているという事ですね。
そして-誤差は変化が少ない。
それに対して、+誤差はスプレッドが増えると成績が悪くなるという普通の反応になっています。
つまり、獲得pipsの増減は主に+誤差の増減によって影響を受けているわけですね。
-誤差があまり変化しないのはどうしてだろう?
これに関しては、トレーリングストップ等で負けを限定しているロジックが影響している可能性も考えられます。
…が、負けが増えない事や勝率が下がらないのはちょっと違和感があります。
いずれにしても、獲得pipsが同じくらいでも、内部で誤差が生じていて、その誤差のプラスとマイナスが相殺されているだけの見かけ上のことですね。
もう一点、TDSなしのバックテストではスプレッドが2ポイント(0.2pips)が近い値となりました。
OANDA東京サーバーのドル円スプレッドは0.3pips~の変動で、日中は平均0.7pips前後です。
なので、0.2pips設定でバックテストしようとは思わないですよね。
まぁそれは置いておいてデータを見ると、やはり勝率の変化は無しです。
誤差については、スプレッドが増えるにつれて+も-も悪くなっています。
これが普通の反応なんじゃないのか?と思うんですけどね。
TDSを使用した時と見ているヒストリカルデータが違う事が理由でしょうか…
EA2の分析
EA2の概要
月後半を除く毎週金曜日の定刻にドル円をロングする自作EAです。
ロングのみのロジックです。
決済は、SLTP、定刻のいずれかで、主に定刻での決済が多いです。
エントリーの再現率は、定刻エントリーなので、ほぼ数秒以内で100%です。
TDS変動の設定は、乗数1、最小3、最大25で、加算を変更しています。
OANDA東京サーバーで稼働しています。
EA2のデータ
母数が少ないですし、数値も小さ目で判断しにくい面もありますかね。
こちらも勝率はあまり変化がなく、リアルとの誤差も小さいです。
誤差の部分も負けが少な目に出ている点がEA1と同じです。
TDS固定では、同じドル円なのにEA1は10ポイント(1pips)、EA2は20ポイント(2pips)がリアルに近い結果となっています。
EA3の分析
EA3の概要
前日の値動きを基にエントリーポイントとなる価格を設定し、その価格でエントリーするユロドルの自作EAです。
設定した価格はその日中有効です。
ロングもショートもするロジックです。
決済は、トレーリングストップ、SLTPのいずれかで、主にトレーリングストップでの決済が多いです。
TPはあまりなく、SLは時々あります。
決まった価格でのエントリーなので、再現率は数秒以内でほぼ100%に近いですが、リアルではスプレッドが過剰に広がりフィルターにより空ぶった場面が2回ほどありました。
TDS変動の設定は、乗数1、最小5、最大20で、加算を変更しています。
OANDA東京サーバーで稼働しています。
EA3のデータ
勝率はスプレッドの増加につれて下がっている感じです。
誤差は+も-も多めに出ています。
スプレッドとの相関についてですが、次の図を見てください。
TDS固定のデータを増やしたのですが、増減がランダムです。
さらに次の図を。
それぞれを買いポジと売りポジに分けてみました。
こじつければ何か規則性のような事も言えそうな部分もありますが、まぁバラバラですよね。
ちょっと分母が少な目でしょうかね。
という事で、次は少し長めの稼働実績がある市販のEAです。
EA4の分析
EA4の概要
市販のEAなのでロジックは分かりません。
ポンド円用で、ロングもショートもします。
恐らくインジやオシレーターを使用したテクニカルで、エントリーは1分足の確定時ではないかと思います。
再現率は、分まで一致で50%ちょい、少し緩く見て5分以内だと75%程度です。
バックテストでは30発くらいリアルより多くエントリーしています。
TDS変動の設定は、乗数1、最小6、最大20で、加算を変更しています。
FXTFでの検証です。
EA4のデータ
勝率や誤差の増減は、スプレッドと綺麗に相関していますね。
ただ、TDS使用の場合は勝ちも負けも多く出ちゃってますね。
そして、TDSなしだと負けが少な目に出ています。
買いポジと売りポジに分けてみると、もっと顕著な傾向がありました。
合計だと相殺されていますが、売り買い別だと相当誤差があります。
言い方を変えれば、リアルとバックテストはこんなに乖離している…という事ですね。
例えば20ポイントのところは、合計獲得pipsで見ればほぼ同じですが、買いポジは+700pips、売りポジは-700pipsも乖離しています。
これだとPFも変わってきますよね。
この例でいくと、リアルのPFは1.42、20ポイントの部分は1.38です。
20ポイントの部分はリアルよりも50pipsくらい少ないので、それをプラスしても1.39です。
まとめ
長すぎてここまで辿り着いた人は少ないかも知れませんが…
EA開発にとってストラテジーテスターは重要な武器なので、その性能を少しでも正しく理解し活用する必要があると思います。
トータルで見ると同じように見えても、内部で+の乖離と-の乖離が相殺されている事が分かりました。
全てのEAや過去のデータに同様の現象が起きるかは分かりませんが、乖離が無いと考えるのは無理があるでしょう。
そして、今回はリアルのデータと比較する事でリアルとトータルが一致するスプレッドの数値を見つける事ができました。
でも、EA1とEA2は同じドル円なのに最適解が違います。
さらに、今回の最適とした数値は今現在のもので、変わるかも知れません。
例えば、次の図です。
これは、EA1の収支曲線です。
青がリアルで、オレンジが固定10、緑が固定20のバックテストです。
EA1は固定10がリアルに近いという結果でしたが、図の赤枠のところで同様の事をやったら固定20の方が近いとなるでしょう。
結局、リアルの分母を貯めない限り分からないのですよ。
変動にしても然り。
設定項目も増えるので、逆にとんでもない乖離を生み出す可能性だってあるわけですよね。
それから、勝率についてですが、こちらはどのスプレッド設定でも割と良い感じで出てましたね。
PFに関しては、EA4の最後に書きましたが、あまり細かく見てもあてにはならないという印象です。
何度も言いますが、リアルの分母を貯めない限り分からない。
バックテストは参考にはなるが、リアルとは一致しない。
以上、最後までお読み頂きありがとうございます。
自作EAの合計収支
※取り消し補填になったポジションがあり、このグラフに26,424円追加されています。