MT4のバックテストでスプレッドの設定をどうするか
前回の記事で、MT4のストラテジーテスターでバックテストする際のスプレッドについて考察しました。
バックテストはスプレッドの設定で変わるので、「だいたいこれくらい」って感覚的に決めるのは的外れになる危険があります。
リアルトレードの期間がある場合には、そのデーターとバックテストを突き合わせる事で、ある程度一致する設定を見出す事は出来そうです。
ただ、開発段階ではリアルのデータはありません。
その場合、スプレッドをどう設定したら良いか悩むところです。
実際、僕自身も開発の段階で何か基準を設けなければ先には進めません。
という事で、この基準を決めるためにいくつか検証をしてみました。
TDSを持っていない人も、まとめに書いてあるバックテストに対する考え方は是非見て貰いたいと思っています。
長文ですが、最後までご覧いただけたら幸いです。
本記事は前回の記事の続きになります。
前回の記事をご覧になっていない方はこちらを先にお読みください。
バックテスト時の最適なスプレッド設定を探る
バックテストとスプレッド設定の関係
前回の記事のように、バックテストはスプレッドの設定で結果が変わります。
できるだけリアルの結果と一致する設定でバックテスト行いたいものです。
例えば、ドル円のバックテストをする時にスプレッドはいくつに設定するのが良いでしょう?
前回使用したEA1を2つの設定で比較してみます。
OANDA東京サーバーで稼働しているドル円のEAです。
OANDA東京サーバーはドル円のスプレッドが0.3pips~の変動です。
設定1は0.3pips+αの0.8pipsという事にします。
また、EA1は定刻エントリーのロジックで、その時間帯は1pips前後~2pipsになっている事も多い感じです。
設定2は1.5pipsという事にします。
バックテストにはTDSの固定を使用しています。
オレンジが設定1で緑が設定2です。
グラフの形は似ているので、このような推移をしそうだなと思いますが、リアルでどんな結果が出るのかは分かりません。
これにリアルの結果を追加すると下図のようになります。
青がリアルトレードの結果です。
グラフの形は似ているので、乖離はありながらも推移は合っていそうですね。
でも、トータルの結果は違っていますし、それに伴ってPF等の数値は変わってきます。
これはリアルの結果と比較した事で分かった事です。
つまり、リアルの結果が無い状態のバックテストでは色々な数値の信頼性は低いわけです。
例えば、このEAでスプレッド設定を0.8pipsで10年間のバックテストをしたらPFが1.5だったとします。
「ブローカーのスプレッドは0.3pips~の変動なので、ちょっと厳しめに0.8pipsでバックテストをしたところ、PFは1.5でした。すごいEAでしょ?」
ってなります?
バックテストをリアルに近づける
まぁそれでも稼働開始の最終判断はバックテストを見るので、少しでもリアルに近くなるような設定にしたいわけです。
そこで、色々調べたところ以下の様な方法が出てきたので検証しようと思います。
リアルとバックテストの乖離の原因は、ストラテジーテスターの仕様もありますが、ヒストリカルデータの影響も大きいと考えます。
僕のリアル稼働はOANDA東京サーバーです。
バックテストはTDSを使い、ヒストリカルデータはデューカスコピーのものです。
証券会社が違えば、チャートは、ほぼ同じでも全く同じわけではありません。
スプレッドの変化の仕方も変わります。
この辺りを少しでも埋めるべく、変動スプレッドで調整していきます。
デューカスコピーのスプレッドを調べる
AverageSpreadを使ってデューカスコピーの平均スプレッドを調べます。
詳しいやり方はググってください。
デューカスコピーでは、この期間のドル円のスプレッドは平均0.86pipsのようです。
OANDA東京サーバーのスプレッドを調べる
SpreadLoggerAnalyzerを使って平均スプレッド、最小最大スプレッドを調べます。
このEAのエントリー定刻では平均0.9pips、最大2.8pips、最小0.3pipsというデータが得られました。
TDSの変動スプレッドを設定する
平均スプレッドは、デューカスコピーが0.86pips、OANDAが0.9pipsなので、スプレッド加算は0にしました。
乗数は1、最小最大はSpreadLoggerAnalyzerで得た値に合わせます。
青がリアルのデータで、緑が上記の変動スプレッド設定です。
乖離はあるものの、変動スプレッドのデータはリアルを縫うように上下しています。
先ほどの0.8pipsや1.5pipsのものよりは乖離は少なそうです。
ただし、過去においてもこのようになるかは不明です。
各種データの比較
次に、この2つの各種データを比較してみました。
概ね似たような数値にはなっていると思いますが、母数が100回くらいで少ないですから回数を増やすと乖離が目立つようになる可能性もありますかね。
このバックテストの設定で、2012年1月1日~2022年11月11日までのバックテストを行ってみました。
ただ、このEAは日本時間の定刻にエントリーするロジックのため、夏時間と冬時間で設定の変更が必要です。
自動で判断し切り替えるものも作っていますが、切り替えは年に2回なので自動で判断する機能を外して手動で行っています。
バックテストは自動切換えのものでやっているので、そのせいでロジックは同じでも多少の誤差が出る可能性はあります。
リアルのデータに比べてPFは極端に上がっていますが、他の部分はやや良さげかなとも思いますが概ね同じ感じでしょうか。
PFは区切ったところによって変わるので、そもそも当てにならないのかも知れません。
数値的な乖離はあると思いますが、このグラフと似たような推移をしたであろうと思っても良いかな?
まぁ、確かめるすべはありません。
EA2~EA4についても、同様にバックテストのスプレッド設定を導き出して検証を行いました。
掻い摘んで説明します。
EA2の検証
スプレッドの設定
OANDAで稼働のドル円なのでEA1と同様です。
青がリアルのデータで、緑が上記の変動スプレッド設定です。
やや上に乖離していますが、回数が少ないのでどんどん広がっていくのか、縫うようになるのかは判断がつきません。
各種データの比較
バックテストの方がいくつかの項目で上振れ気味ですね。
その積み重ねでPFや純益に目立つ差が出ています。
これも回数が少ないので母数が増えるとどうなるか。
EA3の検証
スプレッドの設定
OANDAで稼働のユロドルです。
平均スプレッドは、デューカスコピーが0.4pips、OANDAが0.7pipsなので、スプレッド加算は3にしました。
乗数は1、最小4、最大20の設定です。
青がリアルのデータで、緑が上記の変動スプレッド設定です。
乖離はあるものの、変動スプレッドのデータはリアルを縫うように上下しています。
各種データの比較
どちらかに偏ってブレている感じではありませんね。
売り買い別の比較もしてみます。
売りは下振れ、買いは上振れという感じでしょうか。
トータルで近い値が出ていても、やはり内部では+乖離と-乖離が相殺されているようです。
EA4の検証
スプレッドの設定
FXTF稼働のポンド円です。
平均スプレッドは、デューカスコピーが1.88pips、FXTFが0.7pipsでした。
本来ならスプレッド加算は-12くらいになりますが、とりあえず加算-10で様子を見てみました。
乗数は1、最小6、最大30の設定です。
青がリアルのデータで、緑が上記の変動スプレッド設定です。
加算が-10って甘すぎだよなって思っていたら案の定。
途中には縫うような動きが割と長期間見られてはいますけどね。
この状態で各種データがどうなっているか見てみましょう。
各種データの比較
売り買い別のデータ
売りポジが-乖離で買いポジが+乖離ですね。
どちらもかなり乖離していますが、買いポジの方が極端に大きいためトータルにも影響が出ています。
そして、バックテストは取引数が25回多いのも原因と考えられます。
このままでは先の方法でスプレッド設定を決める事ができません。
問題点を整理します。
・このEAは横の再現率が緩く見ても75%程なので、もともと乖離がある。そしてそれが取引数の違いも生み出している。
・そもそもFXTFは日付け変更前後と大きな指標時の数秒以外は基本的にスプレッドは固定。
あとあるかな?
まぁ、経験的にも加算がマイナス10ってのは甘々だよなって感じはしますよね。
基準を機械的に儲ける事が目標なので、固定+αの+αをだいたいこれくらいって決めるわけにもいきません。
という事で、加算がマイナスになる時は加算は無しで0にして試してみます。
加算0での検証
加算0で、その他は変更なしの乗数1、最小6、最大30の設定です。
乖離はありますが、かなり改善されたように見えます。
横の再現率の問題で取引数が違う事や売りポジと買いポジで乖離の仕方が違う事が原因と思いますが、これは受け入れるしかありません。
実は加算5くらいがもっと一致したデータになるのですが、これはリアルの結果があるので分かる事です。
リアルの結果が無い状態でスプレッド設定をどうするか?という話なので現時点で加算5を選択することは出来ません。
他にもFXTFのポンド円で違うロジックのEAを同様に検証して、いずれも加算5が丁度良いという事になればそれで良いでしょう。
まとめ
結論ですが、現時点で僕は上記の方法で変動スプレッドを設定してバックテストを行おうと考えています。
加算がマイナスになる場合は加算0にします。
この記事では詳しいやり方が分からないかも知れませんので、「TDS 変動スプレッド 設定」などをワードにして検索してください。
まぁそれでも問題点はありますよね。
直近の平均スプレッドで判断していますが、過去のスプレッドは同じではないですし、そもそもストラテジーテスターの仕様で乖離が存在します。
以前は、過去に戻ってそのEAを動かせばバックテストと同じ結果が得られると思っていました。
バックテストの結果にリアルが近づくように…と考えていました。
リアルがバックテストと乖離していると思っていたのです。
愚かですね 笑。
バックテストがリアルと乖離しているのです。
バックテストをリアルに近づけ、参考にできるところだけ見る…これですね。
検証の結果から、極端に的外れな設定でない限り、数値の乖離はあってもグラフの推移は似てくるだろうと考えられます。
右上がりになりそうだ、とか、右下がりになりそうだ、とか、横ばいやギザギザになりそうだという予測はできそうです。
総合収支やPFは、区切りの位置で変わるのであまり参考になりません。
グラフの推移が似ているという事は、勝率、DD、平均勝ち負け等は乖離が小さ目になると思います。
いずれにしても、バックテストは参考にはなるがリアルと一致はしないという事を忘れてはいけません。
同じEAでもスプレッドの設定次第でバックテストの結果は大きく変わるんです。
あ、TDSを持ってない人はどうしましょうね…
…
…
最後までお付き合いいただきありがとうございました。
自作EAの合計収支
※取り消し補填になったポジションがあり、このグラフに26,424円追加されています。