FX自動売買研究記!

    - 為替相場をメタトレーダーの自作自動売買プログラムで勝ち抜く -

    スポンサーサイト 

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    ( --/--/-- --:-- ) Category スポンサー広告 | トラックバック(-) | コメント(-)

    仮想フォワードテスト 

    今回はフォワードテストについて考えて見ることにします。

    しばしば、
    バックテストはあくまで過去の成績でしかなく、EAの良し悪しを判断するためにはフォワードテストが欠かせない。
    と言われることが有ります。
    これは正しいのでしょうか。


    私は、

    「フォワードテストはこの上なく重要である。しかし、“フォワード”である必要ない。」

    と考えています。というのも、
    EAの信頼性を測るに当たって必要なものは
    「最適化に用いた期間以外のチャートデータ」
    であって、
    「未来向けて実際に行うテストトレード」
    である必要は無いからです。
    そのEAにとって未知のデータでありさえすれば、それでよいのです。

    必要なのは、「フォワード(未来)の」ではなく、「アンノウン(未知の)」なのです。

    例)
    2000年1月からのヒストリカルデータが手元にあると仮定た場合を考えます。
    この場合、2000年1月~本日までの期間で最適化を行った場合は、バックテストに使用できる未知の期間が全く確保できていないため翌日からのテストトレードが不可欠となります。
    しかし、2000年1月~2005年1月までの期間で最適化をとどめた場合は、それは不要です。
    なぜならば、2005年1月~2010年12月現在までのバックテストをもって、6年間の仮想フォワードテスト(アンノウンデータテスト)とする事ができるからです。
    最適化がカーブフィッティングに陥っていたとすれば、この6年分の仮想フォワードテストによって明らかなドローダウンが発生することでしょう。

    EAにとってみれば、データが未知のものであるならば、6年間のバックテストも、明日から実際に行う6年間のフォワードテストも、等価なのです。



    ここで問題になってくるのが、市販のEAです。
    この市販EAに関して言えば、この仮想フォワードテストだけでは不十分です。
    なぜならば、
    「EAにとって未知であるデータ」が存在しない可能性があるからです。

    外部変数として購入者が変更可能なもの以外に、既にコードに組み込まれたバックテスト済みの変数があるかもしれません。
    例えば、価格の急動対策と銘打って、「○○時間以内で**pips動いたときはしばらく取引を控えます」とされていたとしましょう。
    仮に作者に作為がなかったとしても、
    これは過去10年間で都合の悪い動きをしたトレードを除外する過剰最適化の一種と言えます。
    他人が作ったEAを最適化する時は、変数が全て変更可能であるかどうかを確認しておく必要があるでしょう。


    仮想フォワードに信頼がおけるという点こそが、自作EA最大のメリットなのかもしれませんね。
    スポンサーサイト

    ( 2010/12/05 01:08 ) Category フォワードテストの重要性 | TB(0) | CM(0)

    ヒストリカルデータについて 

    自動売買において、バックテストとフォワードの成績が同じパフォーマンスであることがとても重要です。
    フォワードになると極端に成績が落ちるEAというのは、もともとがそれだけのパフォーマンスしか無かったということだと思います。
    最適化のマジック、カーブフィッティングですね。

    バックテストの結果が最適化のマジックに掛かっていないかどうか検証するためには、
    最適化に利用したヒストリカルデータ以外のデータでシステムを検証する必要性があります(仮想フォワードテスト)。
    ここで問題になるのは、ヒストリカルデータは有限であるために発生する、
    『“10”あるヒストリカルデータの期間全てを最適化に使ってしまうと、仮想フォワードテストでのテストが出来なくなり、かと言って最適化の期間を“3”で行なってしまうと最適化自体のクオリティが低下してしまう。』
    というジレンマです。

    このトレードオフに対する対処としては、ヒストリカルデータの期間を増やすしかありません。

    ということで、僕は少なくとも10年間のヒストリカルデータが欲しいと思っています。
    できれば、実際にトレードが行えるブローカーでのヒストリカルデータを使いたいところです。
    (ブローカーのクセのようなものがヒストリカルデータに現れている可能性があるからです。経験上、窓埋めEAにおいてブローカーの差が顕著です。)

    それとまぁ、なんせメタクォーツ社(MetaQuotesSoftware)のデータは信用できません。
    MT4のヒストリカルセンターで簡単にダウンロード可能なアレです。ヒゲが大きすぎたりで、ドル円でのスキャル系EAのバックテスト結果が異常に良くなったりしました。
    自動売買を始めた当初、この結果を信じて実トレードしてしまいちょっと怖い目に合いました。


    こういった理由から僕は普段、
    FXDDの2005年以降のヒストリカルデータ
    http://global.fxdd.com/jp/mt1m-data.html
    (FXDD公式サイト)
    と、
    アルパリの2001年から2009年までのヒストリカルデータ
    http://thetrademachine.com/blog/2009/09/29/set-up-metatrader-history-data-get-90-backtesting-quality/
    (海外の個人ブログ?)
    を使って最適化と仮想フォワードテストを行っています。

    アルパリのヒストリカルデータは公式からダウンロードすることができなくなっていますが、
    上記リンク先には、以前公式でアップされていた?ヒストリカルデータがアップされています(Step1のところです)。
    詳しく検証していないため、これが正しくアルパリ公式のヒストリカルデータであると断言できないものの、
    少なくともメタクォーツ社提供のヒストリカルデータよりは正確だと思います。


    アルパリUKは、今や使えないブローカーになってしまいましたがヒストリカルデータだけは今でも使わせてもらっています。





    ( 2011/03/05 14:50 ) Category フォワードテストの重要性 | TB(0) | CM(0)

    ヒストリカルデータの差異について 

    長期間のEA運用を経て、フォワードテストがバックテスト通りにならないことを理解しました。
    その原因は、
    各時間取引量などに起因するスプレッドの違いであり、
    使用するブローカーそのものの違いであり、
    同一ブローカーであってもサーバーの違いによる提示価格の違い
    によるものです。

    それらの理由から、次のような結論を見出しました。

    「バックテストと実運用は、必ずしも同じ取引にはならない」
    「ブローカーの違いによって成績差が発生する」
    「しかしそれらは必ずしもマイナスに働くものとは限らない。運、誤差の範疇として許容すべきものである」
    「ゆえに、複数のヒストリカルデータを使用し、全てにおいて好成績を上げたEAのみを用いるべきである」

    というものです。
    バックテストに使用するヒストリカルデータは、複数の企業が提供してくれています。
    Metaquotes(ここのデータは信頼性皆無。好成績になりすぎる)、FXDD、Alpari、Forexite、などです。
    実運用とバックテストが異なること、そして業者間でスプレッドが異なることを考慮して、
    複数のブローカー、複数のヒストリカルデータでEAを検証すべきです。

    実際はそれほど大きな成績差は出ませんが、
    あるヒストリカルデータではほぼ無敵の様な成績であっても、
    あるヒストリカルデータでは、すごく優秀。といったレベルに低下することがあります。
    どの様な要因が働いているのかは定かではありませんが、
    実運用では、それらのバックテストの中で最も悪かった成績程度の利益しか得られないと覚悟しておくぐらいが
    精神衛生上正解だと思います。


    僕は念のため、
    1.アルパリ社ヒストリカルデータ、2001.1.1~2006.1.1の5年間で最適化
    2.同アルパリ社ヒストリカルデータ2006.1.1~2011.1.1の5年間で仮想フォワードテスト
    3.仮想フォワードテストをパスしたものについて、FXDD社の2005.1.10~今日までの期間で再確認
    4.FXDD社の再確認をパスしたものについて、FXDD社のデータで最適化の微調整
    5.微調整が完了したものをアルパリ社ヒストリカルデータで再確認
    というプロセスで、最適化をしています(実運用はFXDD)。

    一社での最適化ひと通りのヒストリカルデータでは、
    万が一得意な条件でのみ勝てるEAに仕上がってしまう恐れがあるからです。



    ( 2011/04/19 23:28 ) Category フォワードテストの重要性 | TB(0) | CM(1)
    プロフィール

    asahi_fx

    Author:asahi_fx
    日々のEA開発記録を綴っています。

    忙しい時は全然更新できませんが、
    進展がある度に少しづつ書いていこうと思います。



    運用中のEA


    Batou_EURUSD_1h_L
    Batou_AUDUSD_1h_L
    Batou_Counter_EURUSD_1h_L
    Batou_Counter_EURUSD_30min_L
    Ishikawa_EURUSD_1h_L
    Ishikawa_AUDUSD_1h_L
    Ishikawa_EURGBP_30min_L
    Ishikawa_USDJPY_1h_S
    Ishikawa_USDJPY_30min_S
    Togusa_USDJPY_1h_L
    Togusa_USDJPY_1h_S
    Togusa_USDJPY_5min_S
    Togusa_EURCHF_1h_S
    Togusa_EURCHF_5min_S
    Borma_USDJPY_15min
    Borma_EURUSD_15min
    Borma_GBPUSD_15min
    Paz_WPR_gradient_USDJPY_15min
    Pza_heikin_EURUSD_1h



    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。