FX自動売買基礎と応用

FXのアノマリーとは?具体例を用いて実際の検証方法を徹底解説


1.アノマリーとは

アノマリーを検索すると「理論的に説明できない現象。異常値のこと。」というような説明をされているのが見つかります。
FXでのアノマリーといえば、「月末のロンフィク(ロンドンフィックス)に向けてポンドが買われやすい。」が代表的です。
一般的に「月末ロンフィクの値動きは理論的な説明ができる。」と言われます。
しかしアノマリーの理論的な説明というのは、値動きの背景要因とは違い「全体的なデータの傾向からは理論的に説明できない、平均から逸脱した値動きの異常な傾向。」という意味があると考えられます。

アノマリーは理論的に説明できない現象。異常値のこと。

データを集めてトレードで勝てそうな条件をみつけても、その偏りが周囲の一般的なデータと比較して大差ないものなら偶然起きたものかもという疑いがあるのですが、周囲の一般的なデータと比較して圧倒的な偏りなら、その条件は偶然起こったわけではない有意差があるかもしれないと考えられます。

異常値が優位性である可能性

2.検証前の注意点

トレードに活かすアノマリーを見つけるには、なぜそのような異常値が発生するのかを説明できる要因がデータの背景に存在する、ことが理想的です。
思いつく限り片っぱしからデータの異常値を探せば簡単に見つかりますが、検証する項目、回数が多いほど「本来、優位性はないけど偶然起きた異常値」を拾ってしまうリスクが高まります。
背景要因がわかるものに絞ってアノマリー検証を行うことで、偽物のアノマリーを拾うリスクを軽減できると考えられます。

背景要因がわかるものに絞ってアノマリー検証を行うことで、偽物のアノマリーを拾うリスクを軽減できる

3.月末ロンフィクアノマリーの背景

今回は、広く知られている「月末ロンフィクアノマリー」を例にして検証します。
なぜ「月末ロンフィクに向けてポンドが買われやすい」のかについて簡単に説明します。
ロンフィクは対顧客向けの基準レートを決める時間で、日本でいう仲値です。
ポンドの買戻しが集中しやすい月末にこの基準レートが高いと、銀行側は高値で顧客のポンド買いの注文を受けられるという思惑により、月末ロンフィク前にポンドドルのつり上げが起きやすいと言われています。(諸説あり)

4.検証するデータの準備をする

ここにポンドドルの価格変動データ(2011年末から2021年末まで)を用意しました。
データの中身は左から日時(ロンドン時間)、始値、高値、安値、終値です。
ロンフィク前のデータが目的となるので、日時データについてはイギリス方式のサマータイムを考慮したものを用意するようにして下さい。
ロンフィクの時間は、ロンドン時間の16時、日本時間でいうとイギリスが夏時間のときは0時で冬時間のときは1時です。

ポンドドルの価格変動データ(2011年末から2021年末まで)

このデータを分析しやすいように加工していきます。
まず日時データについてですが、今回知りたいのは月末最終営業日の値動きです。
そのため通常の日時データを月の残り日数という形に変換します。
加えて「何時台か」も必要な情報です。

次に、値動きを4本値から「その時間に価格が何%動いたか」という形に変換します。

データを分析しやすいように加工

上記のように変化率を計算します。
ここでは分析しやすいように、この式を始値と終値の対数差に置き換えます。
始値と終値の対数差は「始値と終値の差が何%か」を近似することが数学的にわかっているので、このような置き換えが可能です。

変化率を計算

さらに、各時間のローソク足が陽線だったのか陰線だったのかを知りたいので、陽線なら1、陰線なら0というダミー変数を用意します。

検証に必要なデータに加工したものが以下の図です。
左から日時データ(datetime_lon)、月の残り日数(days_left)、何時台(hour)、始値と終値の対数差(log)、陽線なら1、陰線なら0のダミー変数(direction)です。
たとえばデータの一番上は、2011/12/30 21:00の情報で月の残日数が2日、21時台、0.002575%上昇した陽線とわかります。

検証に必要なデータに加工したもの

これで準備完了です。
このデータを使って月末ロンフィク前の値動きがアノマリー(異常値)かどうかを調べます。

5.クロス集計表(ピボットテーブル)による分析

準備した過去10年分のデータを、月の残日数と○○時台の2つのカテゴリーでクロス集計表を作成します。
ちなみにクロス集計表の上側の月の残日数を表頭と呼び、左側の時間帯を表側と呼ぶそうです。

月の残日数と○○時台の2つのカテゴリーでクロス集計表を作成

このようにクロス集計表を使えば月の残日数が3日でかつ、ロンドン時間の2時台の値動きが平均で0.020%動いていると分析できます。
過去10年のトータルで、下降よりも上昇のほうが大きかったということです。
この中で月末ロンフィク前のデータが、全体のアノマリー(異常値)となっているかどうかを見ていきます。

クロス集計表をより見やすくするためヒートマップに変換し、月末ロンフィク直前の1時間の値動きが平均で何%動いたかを調べます。
プラス方向に強いところは赤く、マイナス方向に強いところは青くなるよう設定しています。

クロス集計表をより見やすくするためヒートマップに変換し、月末ロンフィク直前の1時間の値動きが平均で何%動いたか?

実際に最終営業日のロンフィク(ロンドン時間16時)直前の1時間(15時台)に注目していくと、対数差の平均値は+0.05と確かに上昇しやすい傾向と分析できます。
ただし、これは対数差の平均値なので、もし調べたい優位性とは関係ない「偶然発生した大陽線」のようなものがデータに混じっていれば、その影響を受けて結果がゆがんでしまうこともあります。

ここまでは、対数差の平均値を観測するデータにしてクロス集計表を作成しました。
対数差の平均値とはその条件での上昇、下降の強さを見るのを目的としていましたが、今度は上昇/下降の強さではなく、上昇/下降している時間の長さを観測するためのクロス集計表を作成します。

「ローソク足の陽線の割合」に変更したクロス集計表のヒートマップ

上記の図は「ローソク足の陽線の割合」に変更したクロス集計表のヒートマップを表示しています。
わかりやすいように色も変えました。
陽線の割合が高いほど緑に、陽線の割合が低いほど赤くなります。
ローソク足の陽線割合が高いのは、データの期間トータルで上昇していた時間が長いと判断できるので、この条件下で継続して方向感があった可能性が高いです。
今回の検証では、目的の月末ロンフィク直前の1時間の陽線割合が0.64(64%)なので、上昇方向に偏っていると分析できます。

6.グラフ化してアノマリーとなっているかを確認

クロス集計表による分析にて「対数差の平均値がプラス」、「陽線の割合が高い」この2つの傾向を確認できました。
次は、この傾向がアノマリー(異常値)となるほど強いものかどうかを確認します。

下の図は、x軸を対数差の平均値、y軸を陽線の割合したときの「時間帯と月の残日数」で分けたデータの散布図です。

x軸を対数差の平均値、y軸を陽線の割合したときの「時間帯と月の残日数」で分けたデータの散布図

この散布図を4つのエリアに分けて考えます。

  • ①のエリアは陽線の割合は高いが、対数差の平均値はマイナス
  • ②のエリアは陽線の割合が高くて、対数差の平均値もプラス
  • ③のエリアは陰線の割合が高くて、対数差の平均値はマイナス
  • ④のエリアは陰線の割合は高いが、対数差の平均値はプラス

散布図を4つのエリアに分けて考える

②と③のエリアは陽線の割合と対数差の平均値がかみ合って、②は上昇しやすい傾向、③は下降しやすい傾向です。
この中でアノマリー(異常値)は、この赤丸で示した辺りでしょうか。

アノマリー(異常値)

もし、月末ロンフィク前の1時間がアノマリーとなって赤丸の中に入っていれば、月末ロンフィクの上昇しやすい背景的な要因に伴って強い根拠となりそうです。
では月末ロンフィク前の1時間のデータを、色を変えて散布図に表示します。

月末ロンフィク前の1時間のデータを、色を変えて散布図に表示

これぞアノマリーという結果です。
月末ロンフィク前の1時間のデータは、周囲の一般的なデータとは違うアノマリー(異常値)であったことがわかりました。
月末ロンフィク前のポンドドルは、背景的な要因と統計的なデータが伴って上昇しやすいと判断できそうです。
あくまでも客観的なデータに基づくもので、将来の値動きを予測するものではないので参考までにお願いします。

7.別のアノマリーもやってみる

スワップ3倍デーといって、通常よりスワップポイントがたくさんもらえる日があります。
多くの場合、水曜日から木曜日に変わるタイミングでポジションを保有しているとスワップ3倍の対象です。
ということは、水曜深夜から木曜日朝にかけてスワップがプラスになる通貨ペアと方向を選んでポジションを持てば利益を狙える可能性があります。
今回はそれを逆手にとって水曜深夜に多く入るかもしれないスワップ狙いの注文による価格変動が、アノマリーとしてデータに現れるのかを検証します。

スワップがプラスになるには「金利が高い通貨を買う」「金利が安い通貨を売る」となるので、低金利通貨の代表として日本円を売る方向で考えます。
通貨ペアはどのクロス円を選んでも間接的に米ドル/日本円には影響を与えるので、米ドル/日本円とします。
スワップが付加される時刻は日本時間の朝ですが、アメリカ式サマータイムを採用しているブローカーが多いと思うので、夏時間と冬時間で1時間ズレると考えて検証します。

8.クロス集計と散布図

検証のやり方は、月末ロンフィクと同じです。
対象データが米ドル/日本円で、日時データはNY時間とします。
クロス集計表の縦軸は先ほどと同じ時間帯で、横軸は変更して今回は曜日になっています。
曜日は「月曜が0、火曜が1、水曜が2…日曜が6」としています。
日曜日のデータがありますが、時差の関係でNY時間では週初めは日曜日の夜からです。

検証のやり方

では、この結果を散布図にします。
左側が全体の散布図です。
そこに水曜日のNY時間12時台から16時台まで5時間分のデータをオレンジで表示します。
水曜日のNY時間12時台から16時台までの5時間は、日本時間では水曜日の深夜でスワップ付加時刻前の5時間です。

散布図

結果は、アノマリーとはなっていませんでした
検証するデータが一般的なデータの中に混じってしまっているので、統計的な根拠はこの検証では見つかりませんでした。
背景要因は上昇しそうな気もしますが、実際のデータで検証すると優位性のない、いつも通りの値動きと変わらなかったことがわかりました。
米ドル/日本円の過去10年、水曜日のNY時間12時台から16時台までの5時間分というデータでの検証なので、検証する条件を金利差が広がっている時期に絞ったり、金利差が大きい通貨ペアを選ぶなどで結果は変わってくるかもしれません。

9.外れ値について

アノマリーかどうかの判断は散布図にして視覚的に行いますが、もっと定量的な検証にしたいときは数学的に外れ値を見つける方法を組み合わせると良いでしょう。
ただ、上記の通り視覚的な判断でも十分な示唆が得られるので、ここから先は必要に応じて活用してください。

【判定基準例1】
平均値からの距離が全体の〇〇%以上

図の赤矢印は、平均から検証するデータの縦軸と横軸をそれぞれ標準化したユークリッド距離です。
全データのユークリッド距離を計算して、目的のデータが全体の何%に位置しているかでアノマリーの判定をします。
または全てのユークリッド距離の四分位数から四分位範囲の○○倍以上離れているという基準でも良いです。
ちなみに数学のセオリーでは四分位数から四分位範囲の1.5倍以上離れているデータを外れ値として考えます。

検証するデータが複数個あるときは、それぞれのユークリッド距離を合計します。
検証するデータ数と同じ数だけ全体からランダムサンプリングし、合計のユークリッド距離を比較します。
比較対象が1000パターンくらいあれば、そのうち検証するデータが何%に位置しているかを判定基準とできます。
もちろん四分位数から四分位範囲の○○倍以上離れている基準でも問題ありません。

検証するデータが複数個あるときは、それぞれのユークリッド距離を合計

【判定基準例2】
標準偏差の○○倍を直径とする楕円の外側に位置

散布図に楕円を描き、その外側ならアノマリーとするやり方です。
楕円の中心は、x軸の中央値とy軸の中央値の交点です。
x軸の半径はx軸の標準偏差の3倍、y軸の半径はy軸の標準偏差の3倍です。
散布図はx軸方向にも、y軸方向にも左右対称になるとは限りませんので、非対称として考えるべきでしょう。
この判定基準は、あえて左右非対称なものに左右対称なものさし(楕円)を使っています。
中央値から離れているデータに対して判定をあまくし、中央値に偏っているデータに対しては判定を辛くする狙いです。

散布図に楕円を描き、その外側ならアノマリーとするやり方

【判定基準例3】
分離フォレスト

データをランダムに分離していって、各データが孤立するまでに何回かかるかを調べることで、異常値を見つけるアルゴリズムです。
すぐに孤立するデータは異常値の可能性が高く、なかなか孤立しないデータは密集地にある可能性が高いということです。
Excelでは難しいかもしれないですが、Pythonを使う場合は簡単に実装できます。

散布図が分離フォレストによって異常値を検出した結果

上記の図は散布図が分離フォレストによって異常値を検出した結果です。
緑が異常値、青が正常です。
オレンジの検証するデータは緑のエリアにあるので異常値判定です。

緑が異常値、青が正常

まとめ

外れ値およびアノマリー(異常値)の判定に関して数学のセオリーに従う必要はないかもしれません。
数学のセオリーがトレーダーにとっての最適解になるとは限りません。
値動きの背景にある要因がしっかりしたものなら、アノマリーの判定はゆるくする方がおそらくうまくいきます。
逆に背景にある要因が頼りない場合は、その分判定は厳しくするべきです。
ただ、明確な基準や正解がないのが難しい点です。

この記事では、アノマリーを見つけられた例と見つけられなかった例を挙げて検証方法の一例を紹介しました。
アノマリーというのはデータの異常値ですから、データの見方によっては無限のバリエーションがあります。
この記事のやり方にとらわれず、いろいろなアノマリーを探してみてください。
冒頭でも書きましたが、先に見つけたデータのアノマリーに対して、その背景となる要因を後付けすれば、強引にこじつけた理由になってしまうかもしれません。
都合のいいズル(理由の後付け)はしないように気を付けましょう。

本記事の執筆者:藍崎@システムトレーダー

               
本記事の執筆者:藍崎@システムトレーダー 経歴
藍崎@システムトレーダー個人投資家としてEA開発&システムトレード。
トレードに活かすためのデータサイエンス / 統計学 / 数理ファイナンス / 客観的なデータに基づくテクニカル分析 / 機械学習 / MQL5 / Python

EA(自動売買)を学びたい方へオススメコンテンツ

EA運用の注意点

OANDAではEA(自動売買)を稼働するプラットフォームMT4/MT5の基本的な使い方について、画像や動画付きで詳しく解説しています。MT4/MT5のインストールからEAの設定方法までを詳しく解説しているので、初心者の方でもスムーズにEA運用を始めることが可能です。またOANDAの口座をお持ちであれば、独自開発したオリジナルインジケーターを無料で利用することもできます。EA運用をお考えであれば、ぜひ口座開設をご検討ください。


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。

この記事をシェアする

ホーム » FX自動売買基礎と応用 » FXのアノマリーとは?具体例を用いて実際の検証方法を徹底解説