Less is Best

rubyが好き。技術の話とスタートアップに興味があります。

為替の予測モデルが利益を出すにはどれくらいの精度が必要なの?

最近は、為替の予測モデルの構築をプライベートでちょこちょこと行っていたわけですが、進捗駄目です。全然いいモデルを構築できず正月を過ごしてしまいました。ふと、どのくらいの予測精度を目標にすべきかということについて、全く考えていなかったなということに気が付きEURUSD, USDJPYでどれくらいの精度を目指すべきか、各タイムフレーム毎に検証してみることにしました。

仮説

取引頻度が高いほど、1取引あたりに対するスプレッドの割合が大きくなるはずなので、必要な精度は高くなるはず。

検証方法

S=スプレッド, E=期待Pips, P=精度(正解率) とすると、

PE - (1-P)  E - S > 0

の方程式が成り立つときに利益を出せるようになるはずなので、このPの値を求めてみました。もっと厳密に計算するにはスリッページのことを考慮しなければいけませんが(特に短いタイムフレームでは)、今回は正規分布にでもなっていると仮定して、無視できることとしておきます。

データについてはhistdata.comからダウンロードした2006-2016年の10年間のデータを利用しています。

結果

単位はpipsです。EURUSDの1Minは期待損益よりもスプレッドの方が大きいため、除外しています。USDJPY, EURUSDともに1Min後の必要精度は高すぎてモデルの構築は現実的では無い感じがしますね。

EURUSD

予測対象 必要精度 期待損益
1Min - 1.45
5Min 80.2 3.15
10Min 71.5 4.43
15Min 67.6 5.4
30Min 62.5 7.6
45Min 60.3 9.22
1H 58.8 10.8
3H 55.2 18.4
6H 53.6 26.4
12H 52.4 38.9
1D 51.8 53.3
3D 51.1 88.4
7D 50.7 142
  • スプレッド = 1.9 pipsにて計算

USDJPY

予測対象 必要精度 期待損益
1Min 99.0 1.22
5Min 73.0 2.61
10Min 66.3 3.68
15Min 63.4 4.48
30Min 59.5 6.31
45Min 57.9 7.64
1H 56.7 8.96
3H 53.9 15.4
6H 52.7 22.0
12H 51.9 31.7
1D 51.4 43.0
3D 50.8 72.3
7D 50.5 112
  • スプレッド = 1.2 pipsにて計算

雑感

  • 基本的にUSDJPYの方がスプレッドが小さいため、必要な精度が低いので、USDJPYをターゲットに最初はモデル構築したほうがやりやすそうですね。
  • 今回は全期間を対象に必要正解率を算出しましたが、期待損益が大きいほど必要正解率は下がるため、ボラティリティの高い相場のみをフィルタリングすれば、必要予測精度を下げることはできそうです。
  • スプレッドも今回は大きいものを使用しているので、こちらも低いスプレッド環境で取引できれば。
  • 今回計算した数式は僕の頭のなかから出てきたものなので、偉い人の考えたちゃんとした計算方法があれば知りたいですね。あとで探して見ます。

以上。