FX

FX・1分足の陽線と陰線・出現確率の謎とランダムウォーク

今、チャート上のローソク足が陽線で確定しました。

次の足が陰線になるか、陽線になるか、確率は常に50%でしょうか?

ランダムウォークなら、50%です。どんな場合も過去に関係なく50%。

これが常に50%なら、相場なんてやってられない。確かにそうですね。でも、世間様は相場はランダムウォーク、すくなくともそれにかなり近いといいますよね。

ところが、次の書籍で紹介されている実証研究によれば、そんな一般論を少なくとも部分的に否定する結果が紹介されています。

つまり、ある時間スケールでは、50%ではないとのこと。

1ティック(1/7分)のレベルでは、上昇が連続するほど次も上昇になる確率が、下降が連続するほど次も下降になる確率が高くなり、それが1分以上続くと、トレンドフォローの特徴がみられるとのことです。

ところが、300ティックのレベルでは、ほぼ一貫して、価格を引き戻す動きのほうが優勢になる。

私は大変興味深い結果だとおもいました。

そこで今回は、この実証研究のやり方を真似て、誰でも入手可能な1分足のヒストリカルデータを使い、

  • 1分足のレベルでランダムウォークは否定されるのか?

ということを、確認してみようとおもいます。

ただし、もちろん追試というほどのものではありません。FXの小噺として楽しんでいただければ幸いです。

ティックレベルでのトレンドフォローの現象

もし、為替相場が全くのランダムウォークであれば、過去の履歴に関係なく、次に上昇となる確率も、下降となる確率も、それぞれ50%です。コイントスのようなもの。

コイントスは1次元のランダムウォークです。

下の図は、冒頭の書籍で紹介されていた研究結果です。値幅は考えず、次に上となるか下となるか、そこだけに注目して1次元ランダムウォークの問題に落とし込み、円ドルのデータについて連続同符号となる確率を調べています。

「経済物理学(エコノフィジックス)の発見」3章「市場原理」から引用した円ドルの同符号出現確率の図。縦軸は確率。横軸は同符号が連続した回数。出典元にエラーバーについての説明はないですが、文脈からして明らかに1次元ランダムウォークの母比率0.5の信頼区間(おそらく95%)とおもわれます。有意にランダムウォークと異なる出現率を示す点が多いです。 この図では7ティックで約1分とのこと。なお、 連続回数nが大きくなると、サンプルサイズが急激に小さくなるため、エラーバーの範囲は図のように大きくなります。

横軸のnが同符号連続出現数で、nに対する確率が縦軸のP(n)です。

ランダムウォークであれば、図の各マーカーは、過去の連続出現数とは無関係に、P=0.5あたりに分布するはずです。

ところが、黒のマーカー、1ティックレベルでは、8ティック(7ティックで約1分とのこと)未満では、同符号の出現確率が低く(価格を引き戻そうとする動きが優勢)、8ティック以上同じ符号が続くと、次に同じ符号が出現する確率が50%より有意に大きくなっています。

同符号が連続すればするほど、次も同符号となる確率がトレンド状に上昇しています。

つまり、ある程度以上の時間、同じ符号が連続すると、さらに次も同符号となる確率が高まり、トレンドフォローの状態が出現しやすくなっていきます。

長い時間スケールでは逆張り優勢?

ところが、白抜きのマーカー、300ティック(約40分程度?)のレベルではそのような特徴はみられません。

しかし、300ティック (約40分程度?) の結果そのものも注目に値します。n=12までは、同符号となる確率が50%より低くなっています。わずかではありますが、一貫して価格を引き戻す動きが優勢です。

例えば、陽線の次に続けて陽線がでる確率は50%よりも低い、つまり陰線が出る確率は50%よりも高い、ということです(ただし、図から、nと確率の大きさの相関は低いようです)。

時間スケールによって、トレンドフォロー(順張り的行動)や、価格を引き戻そうとする動き(逆張り的行動)の特徴が異なるとおもわれます。

いずれにせよ、為替の動きは、おおざっぱに言うと条件付確率の側面があり、ランダムウォークとは少々異なるようだ、ということを示唆しています。

残念ながら私は長期のティックデータを持っていません。ですが、だれもが手軽に入手可能な最小単位のデータである、1分のヒストリカルデータではどうなるでしょうか?

1分足のデータについて、上の図と同じやり方で、同符号連続出現率を確かめてみようと思います。

1分は、上の図によれば、1ティックレベルでトレンドフォローが発生しやすくなる境界の時間といえそうですが、はてさて?

計算の準備

さっそく結果をお見せしたいところですが、結果を理解していただくためにも、計算の準備や前提をご説明したいとおもいます。

使用するデータと期間

世界の外為市場の取引高1位、2位である、ユーロドル、ドル円の1分足のヒストリカルデータを使用します。データは、XMTradingのMT4経由で取得したMetaQuotes社のヒストリカルデータです。

ただし、データは1999年から取得できるものの、ポイント単位(0.1pips単位)の精度で記録されているのが2009年第3四半期あたりからでした。

1pips単位だと、同時線(始値と終値が同じ)扱いとなる足が多すぎるため、2009年以前のデータは今回の目的では使えないと判断し、2010年1月~2019年5月までの約9年半弱のデータを計算対象としました。

コイン投げ確率の信頼区間

直観的に、表裏それぞれ確率50%のコインを10回くらい投げただけでは、表が7回とか偏ることが普通にありそうですよね。でも、1000回くらい投げれば表が70%なんてことには、なりそうもない。

この直観は正しく、中心極限定理といって、コインを投げる回数(試行回数)をふやすほど、真の確率に近づきます。

真の確率を”母比率”といい、大抵は永遠に知られざるもので、推測する対象でしかありませんが、1次元ランダムウォークであれば、母比率を50%と決めてしまえます。

一方、実測値として得られる比率を”標本比率”といいます。

一般には母比率推定の問題がほとんどですが、今回は試行回数や標本サイズに対する標本比率の範囲を推定することに注意すると、 母比率p、試行回数m、有意水準αのとき、標本比率の範囲は、

$$ p – k_{\alpha/2}\sqrt{\frac{p(1-p)}{m}} ≤標本比率≤ p + k_{\alpha/2}\sqrt{\frac{p(1-p)}{m}} $$

kは正規分布表から得られる値で、αが5%であれば、k=1.96になります。具体的例として、試行回数1000回、p=0.5、有意水準α=5%とすると、

$$0.469 ≤ 標本比率 ≤0.531$$

母比率は不変なので、標本比率は95%の確率でこの範囲に収まることになります。この範囲を信頼区間といいます。

この記事では有意水準を5%とします。つまり、95%の信頼区間をはずれていれば、ランダムウォークであるという仮説を棄却します。

陽線と陰線の存在比を確かめる

本題に入る前に、そもそも、使用するデータの陽線と陰線の存在比が、1:1から大きく異なっていないか、確認しておきたいとおもいます。

次の表は、2010/1~2019/5まで(5/24まで)の1分足のデータに含まれる、陽線、陰線、同事線の割合です。

  EUR/USD USD/JPY
データ数(サンプルサイズ) 3,476,671 3,471,975
陽線 46.83% 46.65%
陰線 46.68% 46.54%
同時線 6.49% 6.81%

同事線を除いて陽線と陰線の比率をとると

  • EUR/USD
    • 陽線:50.08%
    • 陰線:49.92%
  • USD/JPY
    • 陽線:50.06%
    • 陰線:49.94%

1000本に1本程度の違いです。前述の信頼区間から外れていれば、有意水準5%でランダムウォークでないといえるでしょう。

同事線の扱い

出典元の分析方法の説明に「もし同じレートが続いた場合には、何もしないことにします」という記述があります。1分足の同事線の扱いについては、この記事でもこの方法にならうことにします。

例えば、3本の足で、真ん中が同事線、その両側が陽線なら、2連続(n=2)の陽線とみなします。

同符号の出現確率

以下は、1分足の同符号連続出現数nと同符号の出現確率P(n)の計算結果をグラフしたものです。出典元の図と同じ体裁にしました。

●のマーカーが各nの同符号出現確率、黒のエラーバーが確率(母比率)50%の95%信頼区間です。各nのサンプルサイズによって範囲が決まります。

同じ符号がn回連続した後で、同じ符号が出現する確率(EUR/USD)
同じ符号がn回連続した後で、同じ符号が出現する確率(USD/JPY)

例えば、n=2のときの確率は、現在とひとつ前の足が同符号で、次の足も同符号となった確率を意味しています。

連続同符号の最大は、EUR/USD 、USD/JPYどちらも24回でしたが、サンプルサイズが小さすぎるのでn=15以降は割愛しています。

各nのサンプルサイズを含め、グラフのもとになっている数字を表にまとめます。

EUR/USD USD/JPY
n P(n) 信頼区間
の下限
サンプル
サイズ
サンプル
の累積割合
P(n) 信頼区間
の下限
サンプル
サイズ
サンプル
の累積割合
1 0.4966 0.4992 1652570 0.50831 0.4944 0.4992 1656407 0.51194
2 0.4922 0.4989 820680 0.76074 0.4869 0.4989 818962 0.76506
3 0.4858 0.4985 403896 0.88497 0.4791 0.4985 398739 0.88829
4 0.4810 0.4978 196201 0.94532 0.4757 0.4978 191025 0.94733
5 0.4727 0.4968 94371 0.97434 0.4685 0.4968 90875 0.97542
6 0.4690 0.4953 44606 0.98806 0.4684 0.4954 42572 0.98858
7 0.4600 0.4931 20921 0.99450 0.4627 0.4932 19942 0.99474
8 0.4589 0.4898 9623 0.99746 0.4531 0.4900 9228 0.99759
9 0.4663 0.4848 4416 0.99882 0.4657 0.4853 4181 0.99889
10 0.4687 0.4778 2059 0.99945 0.4576 0.4784 1947 0.99949
11 0.4663 0.4672 965 0.99975 0.4467 0.4685 891 0.99976
12 0.4422 0.4509 450 0.99989 0.4950 0.4538 398 0.99989
13 0.4573 0.4302 199 0.99995 0.4772 0.4305 197 0.99995
14 0.4066 0.3989 91 0.99998 0.3830 0.3973 94 0.99998

EUR/USDは連続12回まで、USD/JPYは連続11回までの、全体の99.9%はについて、確率50%の信頼区間を下回り、1分のレベルでは、ランダムウォークであるとする仮説(帰無仮説)を有意水準5%で棄却する結果となりました。

一貫して、50%より小さいという点は、最初にご紹介した図の、300ティック(40分程度)の結果と同じです。

ですが、1分のレベル(最初の図でいえば7ティック)では、連続同符号8回までは、同符号となる確率が下がっていく傾向が見られる点が異なっていました。

トレンドフォローというよりは、徐々に価格を引き戻そうとする、逆張りの動きが強くなっていくようにみえます。

過去の履歴が確率に影響し、次に異符号となる期待が高まっている、という解釈も可能でしょう。

世界一単純な1分足システムトレードの実験

1分足では、陽線ならば次に陰線、陰線ならば次に陽線となる確率が高いことがわかりました。加えて、同符号が続くと連続8回までは 、その確率がより高くなる傾向がみられました。

1分足で常に逆張りをしたらどうなるでしょうか?1分間だけ逆張りトレードをします。

スプレッドがなければ、数パーセントでも50%とは差があるため、十分なトレード回数を重ねれば勝つであろうことは容易に想像できます。

問題はスプレッドを超えて勝てるかどうか。

そうはうまくはいかないことを予想しつつも、確認のトレード実験をしてみることにします。AIだの自動運転だの、そんなご時勢にあって、ルールは3つだけ。

  • 1分足の陽線が確定した直後に1分間ショート
  • 1分足の陰線が確定した直後に1分間ロング
  • 同時線の場合はエントリーもエグジットもしない

実験のバリエーションとして、同符号の連続回数nについて、1~9の範囲のそれぞれについて、実験をしてみました。

例えば、n=3であれば、同符号が連続3回のときだけエントリーする、といった具合です。

次の図が、2010/1~2019/5の9年半のデータを使った実験結果です。縦軸が、1トレード当たりの平均獲得pips、横軸がエントリー時の同符号の連続出現回数です。

勝率やトレード回数・頻度は次の表のとおりです。

EUR/USD USD/JPY
n トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
1 3251129 0.053 50.8 1.1 3235521 0.054 51.1 1.1
2 1598558 0.085 51.2 2.2 1579114 0.085 51.7 2.2
3 777878 0.115 51.7 4.5 760152 0.110 52.3 4.6
4 373982 0.144 52.4 9.3 361412 0.127 52.6 9.6
5 177781 0.173 53.1 19.6 170387 0.148 53.0 20.4
6 83410 0.190 53.5 41.7 79512 0.161 53.2 43.7
7 38804 0.211 53.7 89.6 36940 0.182 53.6 94.0
8 17883 0.218 53.1 194.4 16998 0.201 54.0 204.3
9 8260 0.206 51.7 420.9 7770 0.201 53.5 446.8

連続同符号回数が伸びるにつれ、n=8までは、獲得pipsと勝率がともに上昇しており、前述の同符号の出現確率の結果と符号します。

n=3以上で、ユーロドルが上回っているのは、単純にユーロドルのほうが、少しボラティリティが大きいことが原因とおもわれます。

国内FX会社でスプレッドが狭いところで、ドル円0.3pips、ユーロドル0.4pipsなので、最大でもスプレッドの70%程度の獲得pipsにとどまっており、実際にこの方法でトレードするとスプレッド負けすることになります。

値幅に条件をつける

このまま実験終了では味気ないので、すこしばかり改良を加えてみましょう。

同じnでも、トータルの値幅は様々なはずですが、最初の実験では、値幅がどうあれ、とにかく逆張りしたわけです。

そこで、直前までの値幅が大きいほうが反発する確率も値幅も大きいであろうという経験則を(仮説として)改良ポイントに採用し、値幅に条件を設けることにします。

もっとも、同符号が連続することと値幅の相関は別問題ですが、簡易的な試みということでご容赦ください。

条件の基準値として標準偏差を使うことにします。次の3通りのケースを計算し、最初の値幅条件がないケースと比較します。

  • 値幅が1標準偏差以上のときエントリー
  • 値幅が2標準偏差以上のときエントリー
  • 値幅が3標準偏差以上のときエントリー

為替相場の標準偏差SDは次の形で近似できます。

$$ SD = at^b $$

tを分単位の時間としたときのaとbの値は、20年間の統計をとって次の記事で調査しました。

EUR/USD、USD/JPYの標準偏差について、aとbはそれぞれ次の値となりました。

  • EUR/USD
    • a = 2.08
    • b = 0.5129
  • USD/JPY
    • a = 1.57
    • b = 0.5201

例えば、EUR/USDで、n = 5、つまり1分足が5連続同符号であれば、5分間の標準偏差を次のように計算します。

$$ SD = at^b = 2.08×5^{0.5129} = 4.75pips$$

同時線の存在のため、平均的にはわずかにtを小さく見積もっていることになりますが、簡単のため同時線の時間は考慮していません。

なお、この標準偏差は、20年以上の期間で統計をとったもので、ボリンジャーバンドとは別物と考えてください。

以下が、値幅に条件を課した実験結果です。

勝率やトレード回数・頻度を含めた結果を表にまとめます。値幅の条件が厳しくなっていくと、トレード回数が減少することにご注意ください。

EUR
/USD
値幅条件なし 1標準偏差以上でエントリー
n トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
1 3251129 0.053 50.8 1.1 1267755 0.091 51.0 2.7
2 1598558 0.085 51.1 2.2 708630 0.129 51.8 4.9
3 777878 0.115 51.7 4.5 387571 0.166 52.7 9.0
4 373982 0.144 52.4 9.3 204207 0.204 53.8 17.0
5 177781 0.173 53.1 19.6 104784 0.238 54.8 33.2
6 83410 0.190 53.5 41.7 51545 0.259 55.6 67.4
7 38804 0.211 53.7 89.6 25053 0.280 56.3 138.8
8 17883 0.218 53.1 194.4 11911 0.285 56.0 291.9
9 8260 0.206 51.7 420.9 5582 0.265 55.2 622.8
2標準偏差以上でエントリー 3標準偏差以上でエントリー
n トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
1 550391 0.098 51.2 6.3 272827 0.076 51.0 12.7
2 270893 0.137 51.9 12.8 118388 0.115 51.2 29.4
3 144152 0.188 52.9 24.1 61239 0.163 51.8 56.8
4 78565 0.250 54.0 44.3 32042 0.247 52.8 108.5
5 41308 0.287 55.0 84.2 16958 0.315 54.3 205.0
6 20706 0.316 56.3 167.9 8728 0.349 54.8 398.3
7 10397 0.354 57.5 334.4 4354 0.356 54.9 798.5
8 5059 0.364 57.3 687.2 2142 0.363 54.4 1623.1
9 2425 0.327 55.2 1433.7 1052 0.304 49.6 3304.8

USD
/JPY
値幅条件なし 1標準偏差以上でエントリー
n トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
1 3235521 0.054 51.1 1.1 1383157 0.084 50.9 2.5
2 1579114 0.085 51.7 2.2 771230 0.111 51.3 4.5
3 760152 0.110 52.3 4.6 427683 0.138 51.9 8.1
4 361412 0.127 52.6 9.6 221681 0.158 52.3 15.7
5 170387 0.148 53.0 20.4 113405 0.178 52.6 30.6
6 79512 0.161 53.2 43.7 57131 0.186 52.9 60.8
7 36940 0.182 53.6 94.0 27580 0.210 53.6 125.9
8 16998 0.201 54.0 204.3 13254 0.231 54.1 262.0
9 7770 0.201 53.5 446.8 6251 0.224 53.3 555.4
2標準偏差以上でエントリー 3標準偏差以上でエントリー
n トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
トレード回数 平均獲得
pips
勝率
(%)
トレード頻度
(分/回)
1 610649 0.084 50.6 5.7 302580 0.077 50.6 11.5
2 295934 0.115 51.1 11.7 132573 0.106 51.4 26.2
3 160353 0.156 51.9 21.7 66632 0.157 52.2 52.1
4 84999 0.187 52.4 40.8 35079 0.200 52.7 99.0
5 44405 0.217 53.0 78.2 18261 0.225 52.3 190.1
6 22969 0.237 53.6 151.2 9444 0.233 52.7 367.6
7 11587 0.246 54.1 299.6 4917 0.228 52.8 706.1
8 5766 0.268 54.6 602.1 2509 0.274 54.1 1383.8
9 2800 0.285 54.9 1240.0 1241 0.284 54.4 2797.7

以上から、EUR/USD、USD/JPYに共通して、次のことがわかります

  • 1標準偏差以上は、値幅条件なしよりも全てのnで平均獲得pipsを上回った
  • 2標準偏差以上は、1標準偏差以上よりも全てのnで平均獲得pipsを上回った
  • 3標準偏差以上は、2標準偏差以上と同程度の平均獲得pipsにとどまった
  • 1標準偏差以上~3標準偏差以上は、n=2までは平均獲得pipsが同程度

値幅に条件を課すという改良は確かに効果がありました。

ただし、最大でスプレッドの90%を超える程度までの改善にとどまり、100%を超える結果とはなりませんでした。

ですが、以上の結果は、少なくとも1分のトレードでは、逆張りや、過去の値幅と時間が、トレードを有利にする要素であることを統計的に示唆していると考えられます。

応用はあるのか?

個人的な感想ですが、国内FX会社のドル円スプレッド0.3pips、ユーロドル0.4pips(or 0.5pips)というのは、なかなか良い塩梅の設定だとおもいます。

スプレッドを超えて勝つには、別の条件を必要とするでしょう。以上の実験では、単純なだけに、裁量トレード的に有利な場面や不利な場面、すべてを試してしまっている可能性は大いにあります。

ただ、このように単純な方法でスプレッドに肉薄する程度の成績となるのは、1分という短期トレードのため、より長い時間スケールのトレンドやファンダメンタルズの影響を受けにくいという理由が本質にあるとおもわれ、応用するならスキャルピング的なトレードではないかと推測します。

また、実験結果をみるに、同符号連続出現数とは別問題として、直近の値幅と時間、およびポジション保有時間の間に有利不利の条件が見出せるかもしれません。

ご注意ください(念のため)

ところで最近、国内FX会社のスプレッド狭争?が過熱していますね。ドル円0.2pipsというキャンペーンをやってる会社さんが増えました(DMM FXさんとか)。

FXTFさんにいたっては現在、ドル円0.1ピプス(2019年11月現在)。ユーロドル0.2ピプス。すごいですな。

ただ、実験結果のトレード頻度をみてもわかるように、試行回数的に収束するまでは大変とおもわれます。まさに”運”の問題だけで短期では負けることもありえます。

FXTFさんMT4なんですが 、1分トレードをEAなどでやると、BANされる気がしないではないです(やったことないので分かりませんが)。やる人はいないとおもいますが・・・ご注意ください、という念のための、おはなしでした。

まとめ

陽線または陰線の連続出現率から、ユーロドルとドル円の1分足がランダムウォークとしてふるまうか調べました。

冒頭で引用させていただいた既存の実証研究の結果をふまえ、全体の99.9%以上を占める、同符号が連続11回までの結果から言えることをまとめます。

  1. 1分足のデータでは、1ティックレベルで発生しうるトレンドフォローの現象は確認できなかった。
  2. 1分足のデータは、300ティックの既存の研究結果と同じく、次に同符号となる確率が50%未満となり、1次元ランダムウォークの信頼区間95%の外側であった。よって、1分のレベルでは、上昇と下降の確率について、有意水準5%で1次元ランダムウォークを否定する結果となった。
  3. 1分足のデータでは、同符号の連続回数が伸びるにつれて、連続8回までは、次に同符号となる確率が下がてゆく傾向がみられた。
  4. 2の結果から、1分間の逆張りトレードを実験したところ、値幅に条件を課した場合、1トレードあたり平均獲得pipsが、最大でスプレッドの90%程度となった。

今回は1分足という、限られた時間スケールを取り上げただけであり、為替相場のランダムウォークを全否定するといった、そんな大それた結果ではありません。

もっと一般化して、過去T時間と次のT時間の比較でみるとき、Tの長さによって振る舞いが異なって見えることは、冒頭でご紹介した既存の研究結果からもいえることでしょう。

出現率の解釈

1分足で、同符号の出現確率が50%より小さい、異符号となる確率が50%より高いことの理由は謎のままですが、

  • 誰もが、買うなら安く買いたいし、売るなら高く売りたい

このことの表れ、それだけのことかもしれません。トレンドフォローの押し目買いにしても、戻り売りにしても、局所的には逆張りですしね。

過去と期待に左右される相場心理がランダム性に混ざり、ある時間スケールまでは条件付確率の側面をもっている、私個人はそんなイメージをもっています(与太話ですよ)。

そんなわけで、以上の記事で楽しんでいただけましたなら、なによりでございます。