BandCrossのFX自動売買

勇敢に

バックテストで最適化を行う場合の期間について

リオオリンピック終わってしまいましたが日本選手の活躍は素晴らしかったですね。そのため夜から朝にかけてついついテレビを観てしまい夏期休暇中にやろうと思っていたEA関係の作業はほとんど手付かずとなってしまいました。(結局ダラダラしてただけ)

ところでバックテストで最適化を行う場合、どれくらいの期間の過去データを対象にするかという事については人それぞれ色んな意見があるかと思います。ワタシは長期の過去データを使用して最適化する事については否定的なのですが、感覚的な理由ではなく少しもっともらしい根拠でそれを明確にする事が出来ないか検討してみました。

バックテストで最適化するという事は過去の値動きと同じようなパターンが再現する事を前提にしていることかと思います。という事は実際に再現している過去の値動きパターンはいつ頃のものが多いのかを調べれば、必要な過去データの期間が分かるのではと考えられます。

という事で類似する過去の値動きパターンを探すインジケータが無いかとネットで探したところMT5用のインジケータを見つけました。(自分で作ろうとしないでまずネットを探すとは)K近傍法という機械学習の一つを応用したもので、最も似ている値動きのパターンを過去データから抽出し、その後の値動きを使って未来予測するインジケータです。理論的な内容を理解したわけではありませんが、過去データとの類似性を計算する際に最近の値動きに重みをおく方式です。作者はMQLのサイトで多数の優れたプログラムを公開しておられるgpwr氏です。どうもありがとうございます。

そしてこれをMT4用に改造したのが下図のインジケータです。オレンジの部分は抽出した最も似ている過去の値動きで、赤い部分は当時のその後の値動きです。抽出した期間とその相関係数を画面左上に表示するようにしてあります。

I-Knn

これをEAにしてバックテストを行いFXDDのヒストリカルデータ(2005.1.10~2015.12.31)を使用して2015年のEURUSDの値動きが何年前の値動きと類似しているかを調べた結果が以下の表です。(1時間足、24本のバーで比較)

過去パターン出現率_60M_24本_corr0_85

本当はBandCross3で使用している5分足で調査したかったのですが、あまりにも時間がかかるので1時間足を使用しています。比較するバーの数は特に理由はないのですが1日分の24本としました。また、ある程度以上の類似性が無い場合は該当なしとしてカウントしないようにしています。(該当なしは約10%発生)なお、1年分のバーの数を6240本(52週×5日×24時間)固定として分類していますので、実際は各年によって若干バーの本数が違うことによるズレが少し発生しているかと思います。(大まかな傾向を知ることが目的なので気にしないということで)

上記の結果を見る限り、何かを間違えているのではと思うくらい平均的に過去パターンが出現しています。(本当に間違えているかも)この結果からは10年前の過去データも最適化ではそこそこ有効であると考えられます。為替相場に関連するシステムの性能や市場参加者が異なってもその影響はもう少し短期の動きにしか出てこないのかもしれません。(とはいっても時間がかかりすぎるので1分足や5分足を確認する気にはなれんしな。。。)

それにしても今回分かったのはワタシの技術力ではMT5対応からMT4対応への改造は非常に大変な作業であるということです。(まだバグあるかも)しばらくMT5が普及しないことを切に願っています。

そして何はともあれせっかく作成したインジケータなのでBandCross3を購入して頂いた方にプレゼントしたいなと考えています。(ネットに同じものあるかもしれませんが)詳細は後ほどこのブログなどで公開します。

作成者: BandCross

普段は自動制御系ソフトウェアのエンジニアをしている会社員です。FXの自動売買ソフトウェアを専門サイトに出品していますので、それに関連する情報を発信していきたいと考えています。

2件のコメント

  1. こんにちは。
    興味深い記事をありがとうございます。
    最も出現数が多いのが2~3年前、次いで1年未満、1から2年前と続くので、過去3年間の方が再現性が高いという傾向は読み取れるように思います。

    • その通りです。実はバー24本の比較では少なかったかなと思い、120本のバーで調査したところ直近2年間のパターンの出現数は他の倍ぐらいになりました。詳細は次回のブログで公開する予定です。