Modeling Quality 99% は都市伝説?

EAを使うMetaTraderユーザは、「EAの存在を知り 、バックテストの使い方を覚えて、3種類のテストモードの違いを理解し、Modeling Quality 90% でテストするのが良いとわかる」という道順を歩む人が大半なのではないかと思います。


そして、さらに勉強熱心な人は、いろいろ調べてゆくうちに、Modeling Quality 99% でテストする法 なんてWordの古文書を見つけてワクワクして読むものの、Tickの全データが必要と知って諦めるパターンが多いのではと推測しています。
そこから、「世の中には Modeling Quality 99% でテストしている凄い人もいる」という噂が広まるのだと思いますが、これを言葉通りに受け止めてしまうのは、多少誤解があるので、簡単に解説しておきます。


予備知識としての Modeling Quality の計算方法は、What the Numbers in the Expert Testing Report Meanに載っています。日本語解説されたサイトは、ここここにあります。要約すると、1分足のデータから各時間足のデータまで整合性のあるデータを準備してテストすると 最高で90 % になるように、MetaQuotes社が独自の基準で計算式を決めた..ということです。


計算式の定義自体が最高値を 90 としているのに、2006年に、Paul Hampton smith 氏が残した Backtesting with 99 percent modelling V1.doc が、とある遺跡から発掘されて、99% にするにはどうすれば?..という話が始まります。
(そのサイトではTick収集プロジェクト?が動いていたみたいですが現在消息不明です..。



↑この文書が示す手法は、

MT4 -> 1分足からフラクタル補間でTick データ(FXTファイル)を生成 -> そのデータでバックテスト

というフローを

自前で取得した高精度なTick データをFXTファイルに変換 -> そのデータでバックテスト

に置き換えることで高精度なバックテストが可能である...というモノです。
この手法のコンセプト自体は正しいと思うのですが、現時点(MT4 Build 225) では、この文書の手順だけでは実行できません。

↑文書の最後に書かれている、「Recalculate」というチェックボックスが無いのです。


当時のMT4 を起動してみると…

↑昔は、「Recalculate」チェックボックスがありました。日本語UIでは、「ファイルの更新」でした。

↑Build 210〜225 の最新版の画面にはありません。







どうやら昔は、バックテスト時にTickデータを再生成することなくテストできるようになっていたようですが、今はそれができなくなっているのです。これを無理やり実現する方法として、Birt氏のhttp://eareview.net/tick-data の「MT4 build 225 FXT multiloader 」があり、fxt multiloader.exe を terminal.exe と同じフォルダにコピーして、fxt multiloader.exe をダブルクリックすると、バックテスト時に FXTを自動生成しない MT4 がいくつも起動できます。
(この間の日記に書いたツールは、FXTの生成を有効にしたまま、MT4 を多重起動可能にするものでした..。)




ツールを使えば今でも実行可能..と分かった時点で、挑戦してみたい人は是非試してみてください。
ただ、99% という数字が何処からでてくるのか?は知っておいたほうが良いでしょう。


上図は、MT4 のヘルプに書かれた FXT ファイルのフォーマットなのですが、その中に modelquality という部分があって、何と、ここに書いた数字が Modeling Quality としてレポートに出てくるのです。
(Build 225 では、FXTファイルは version.405 に変わっていますが、やはり特定の部位に90% という値が書かれています。

もう一度フローを書くと、

99%と記入したFXTファイルを作成 -> そのデータでバックテスト -> Modeling Quality 99%

つまり、90 点満点のテストの採点欄に 99 と書くことで 99 点がとれました..と言うぐらいの違和感があるわけです。


MT4では、1分足未満のTick の動きは架空のものですから、そこを生のTickの動きに置き換えるのは、バックテストの品質を高めることには間違いないと思うのですが、それを 99% と言い切ってよいのか?というとどうしても疑問が残ります。もともと固定スプレッドでしかテストできない MT4 で変動スプレッドの相場をテストする時点で無理があるのですからね^^;
Modeling Qualityを追求するよりも、固定スプレッドを大きめに再設定してテストした方がリアルトレードに近い結果が得られるという経験則(Catherine's law)の方が有効性が高いのではないかと思います。




(MetaTrader5 になると、1分足未満の精度は相変わらずでしょうけど、変動スプレッドを考慮したバックテストが出来てもおかしくないので、少し期待していますが..未だにベータテストではバックテストができません..orz




参考)
実際にFXTファイル内の Modeling Quality がそのまま出力されているのか?確認してみました。

↑hex:E8 の位置に double 値で 99.98 と書きました。(赤字の8byte)

↑この不正なFXTファイルでバックテストを行うと 99.98% になりました。
インチキ業者が、「Modeling Quality 99.98% のテストを行っています」なんてセミナーで実演するのを見せられても、騙されないようにしてください。笑。