データ精度の違いによるバックテスト結果の差異
MetaTrader4(MT4)のバックテストをする際にデータを作成すると思いますが、皆様はどのように作成されているでしょうか。
一番良いのはEAを稼働させる業者のデータですが、ほとんどの業者は直近1~3ヶ月程度のデータしかありません。(Axioryは2015年から1分データを公開しているので、Axioryを利用している方はこのデータを利用すると良いと思います。)
私の場合、足りない分はFXDD社の1分データをインポートして作っています。
FXDD社は最も古いデータでも2005年1月までしかありませんので、MetaQuotes社のデータを利用している方もいらっしゃるかと思いますが、僕はあえてMetaQuotes社のデータを使用していません。(私が公開するバックテストが2005年以降になっているのはこのためです)
MetaQuotes社のデータは精度(信頼性)が高くないと言われていますので、精度の良くないデータでバックテストすることに意義を感じなかったからですが「実際にどの程度の差異が発生するのか」という点については未検証でした。
そこで今回は「MetaQuotes社のデータのみを使用してバックテストした場合」と、FXDD社のデータを使用してバックテストした場合でどの程度の違いが発生するのか検証していきたいと思います。
バックテストに使用するEAはZigzagBreakoutという当サイトで販売しているEAです。
FXDD社のデータでバックテスト
期間は2005年1月~2016年7月15日とします。スプレッドは10。
ZigzagBreakout EAに同梱されているEURUSDの15分用設定を適用して、EURUSDのM15で実行します。
PF:2.18
最大ドローダウン:$288.74(2.37%)
勝率:59.26%
となりました。それでは、次にMetaQuotes社のデータでバックテストしてみます。
MetaQuotes社のデータでバックテスト
FXDD社のバックテストと条件は同じにします。(1999年~2004年のデータは使用しません)
PF:2.88
最大ドローダウン:$180.64(1.11%)
勝率:60.04%
FXDDのデータで最適化しているので「悪くなるかな?」と思っていたのですが、予想外に良い結果となりました。
良くなったとはいえ、FXDDのデータとの違いは歴然です。
他のEAではどうなるでしょう・・・?
FXDD社のデータでバックテスト
通貨ペアはEURGBP、5分足を使用したスキャルピングロジックEAです。
バックテスト期間はZigzagBrakeOut EAと同様、2005年1月からとします。
PF:2.30
最大ドローダウン:$2576.27(7.26%)
勝率:72.37%
MetaQuotes社のデータでバックテスト
MetaQuotes社のバックテスト、条件はFXDD社と同じです。
PF:2.26
最大ドローダウン:2736.72(8.43%)
勝率:77.19%
PFや勝率をみると「誤差の範囲かな?」と思ったのですが、グラフの形はかなり異なります。
よく見てみるとトレード回数が500回も少ない!!
これに気がついてZigzagBreakout EAの方を確認すると300回ほどMetaQuotes社の方が少なくなっていました。
結果:予想外だったこと
「FXDD社のデータとMetaQuotes社のデータでは、恐らくかなりの差異が発生するはず」と予想してはいましたが、トレード回数にここまで大きな差が出るとは思っていませんでした。
それ以外に予想外だったのは「FXDD社のデータで最適化しているので、MetaQuotes社のデータでバックテストすると悪化するのではないか」と考えていたのですが、意外とそこまで悪くなる傾向は見られなかった…という点でしょうか。(サンプルが2つだけですので、断定はできません。色々と試せば大きな差異が発生するEAや通貨ペアがある可能性があります。)
たかだか2つのサンプルでわかることなどたかが知れているかもしれませんが、適当に2つ試してみて、2つとも大きな差異が出ているというのは無視できない結果だと私は思っています。
この結果をどのように判断されるかは、人それぞれですが…私はMetaQuotes社のデータをこれまで通り「利用する必要は無い」と思っています。
「参考までに1999年~2004年のデータでバックテストしてみる…」という用途には使えるのかなと思いますが、このデータを含めて最適化するのは疑問です。(一番良いのは利用している業者が1分データを提供してくれることなのですが、長期間の1分データを提供してくれている業者はほとんど無いので、FXDD社で妥協するしか無い…のではないかと思います。)
もし1999年~2004年のデータも参考にしたいのであれば、2005年以降のテスト期間について今回、私が実施したような比較試験を行って「差異があまり出ない」ことを確認する必要があるでしょう。(FXDD社とMetaQuotes社のデータで大きな差異が発生しないEAであることを確認したのであれば、2004年以前のバックテスト結果についても有意なデータである可能性があります)
まとめ
FXDD社とMetaQuotes社のデータではバックテストの結果に差異が生じることがあります。(恐らく多くのEAで差異が発生すると思います)
あくまでも個人的な見解ですが、精度(信頼性)が良くないと言われているMetaQuotes社のデータを取り込んで、最適化等で使用する必要はないと考えています。
昔はともかく、今はFXDDだけでも10年以上のデータがあるわけですから無理に使う必要は無いのではないでしょうか(私がFXを始めた時は2009年でしたから、4年ほどのデータしか無かったことになりますね…!)
Alpariについて(2016/7/28 追記)
AlpariもFXDD同様、データを提供していましたがAlpari ukが破綻してしまったためにデータの提供が終了していました。
しかし、Alpariの場合、デモ口座を開いてMT4のヒストリーセンターからダウンロードするとMetaQuotes社からではなくAlpari社のデータをダウンロードしてくるそうです。
早速、ダウンロード&バックテストしてみました。
Alpari社のデータでバックテスト
ZigzagBreakout EAのバックテスト結果です。
PF:4.71
最大ドローダウン:$163.00(0.81%)
勝率:75.96
PF、ドローダウン、勝率、全てにおいて好成績です。(理由不明)
Alpariの場合、1999年からデータがありますがなぜかバックテストできるのは2004年6月からでした。(1999年を指定しても2004年6月からバックテストが開始します。
古いデータはMetaQuotes社のデータなのかもしれません。(Wikipediaを見るとAlpari社は1998年から創業していますが、UKは2004年からのようです。)
バックテスト期間についてはFXDDとほとんど差はありませんが、Alpariのヒストリカルデータの方がFXDDよりも精度が高いという方が多いのでAlpariのデータの方がおすすめです。
「Alpariの口座を開かないといけない」というのが面倒ですが…
【参考サイト】
2015年1月以降もAlpari ヒストリカルデータを入手する方法
あとがき
実はこの記事を作成しようとしたきっかけは、EA開発講座の一環として、「バックテストデータの作り方」という記事を作成しようと考えたところから始まります。(バックテスト用データの作成方法はググれば色々なところで書かれているので必要ない気もしたのですが、一応、当ブログ内でも解説しておこうと…)
「データの作り方」の記事を書くにあたって、記事の中で「MetaQuotes社のデータを取り込むか否か」考えたときに「MetaQuotes社のデータは精度が良くないと言われているし、必要ないだろう」と思ったわけですが・・・
実際、FXDD社のデータとMetaQuotes社のデータにどの程度の差異が発生するのかまでは検証したことが無かったので「実際に検証して差異を確認してみよう」と考えて、この記事の作成に至りました。
余談1
TickStoryというリアルティックデータでバックテストできるツールがあります。
小さな値動きで反応しやすいEAのテストには多少使えるかなぁ…と思っています。
※私はディスク容量を食うので自分のPCには入れられず、外付けHDDに入れているため使うのが面倒で滅多に起動しません…
※モデリング品質99.90になるはずなのですが、なぜかn/aになるようになりました。データ削除して再度ダウンロードしてもn/a。よくわかりません。→どうやら無料版は古いMT4にしか対応していないようです。高いモノではないので買っても良いかも…
→買ってみましたがモデリング品質はn/aのままでした… 買う必要無かった…
余談2
海外ではわりと人気がある(らしい)cTraderというツールもリアルティックデータでバックテストできます。
※MT4とは全く別のトレードツールです
MT4で作ったEAをcTraderのcBotに置き換えてリアルティックでバックテストしてみたことがありますが…
リアルティックデータでバックテストして結果が良かったからといって、リアルトレードの結果が良くなるというわけではありませんでした。
私は「リアルティックデータ」に拘る必要も無いのでは?と思っていますが、もし「リアルティックデータ」でバックテストしてみたいということでしたら、MT4のEAをcTraderに移植してみてるのも良いと思います。(たしか、AxioryがcTraderでのサービスを始めていたはずです。Axioryのは触ったことありませんが)
移植の仕方については、私が昔やった時の記録がありますのでご参考まで。(記事はMQL4でEAが作れることを前提として書いています)
以上、MT4の「データ精度(信頼性)の違いによるバックテスト結果の差異について」でした。
コメント