
ビットコイン価格における時刻アノマリーの存在
こんにちは、Hohetoです。
今回のnoteでは、ビットコインの値動きの中で観測できる強力なアノマリーについて解説します。
※ご注意!
本noteは過去の統計上の値動きの分析を行っていますが、未来の値動きを予測するものではありません。
アノマリーとは
アノマリーとは、株式市場などのマーケットにおいて経験的に観測できる規則性のあるように見える値動きのことです。
アノマリーが存在する要因としては、
①マーケットの環境あるいは参加者に課せられた構造的な制約の存在
・例. 空売りができない、流動性がない、など。
・例. 休日や祝日、また決算などの年次的なイベントの存在など。
②市場参加者の心理的要因
・群集心理や過大評価・過小評価など。
・行動経済学や心理的バイアスを用いて説明されることが多い。
などが挙げられます。
有名なアノマリーとしては、以下のようなものがあります(このnoteでは分かりやすい表現を使って説明しています)。
例1. モメンタム効果
・直近で値上がりした銘柄は値上がりしやすく、値下がりした銘柄は値下がりしやすい(※期間は数か月程度とする研究が多い)。
・根拠として群集心理など。
例2. 小型株効果
・時価総額の小さい銘柄ほどリターンが高くなりやすい。
・根拠として、流動性や情報の非対称性による参入障壁など。
例3. セルインメイ(Sell in May)
・5月ごろは相場が低迷しやすい。
・根拠として、決算を控えた運用会社のポジションクローズ(?)
例4. 大統領選アノマリー
・大統領選挙の前年は米国株が株高になりやすい。
・根拠として、選挙前の支持率獲得のための好景気政策(?)
前者の2つは学術的に有意性を証明する論文がいくつも投稿されていますが、後者の2つはオカルトに近いものがあります。
時刻アノマリーとは
本題に移ります。
普段からビットコイン価格を見ている方は、9時や15時に値動きが激しくなる様子を見たことがあるかと思います。
界隈では、「9時上げ」という言葉もよく見かけます。
この値動きは、日足や時間足の確定と共に動くアルゴや大口投資家、またそれに追従あるいは先取りするような付随アルゴの存在が原因、と考えられます。
このnoteで言及する「時刻アノマリー」とは、
「ビットコイン価格において、毎時0分前後に起こる値動きに対し、その後数十分間に渡って逆方向への値動きが観察できる」
というものです。以下、詳細です。
①毎時0分前後(特に毎時1分~毎時5分頃)において、「直前の数分間の値動きに対してその後逆方向に値動きしやすい」という特性が観察できる。
②この特性は、約20~30分間ほど持続する。
③この特性が顕著に表れやすいのは、日本時間9時(UTC0時)。
ちなみに、「時刻アノマリー」という言葉がこれまでに存在しているわけではなく、筆者がこう呼んでいるだけです。
次章以降、それぞれについて解説します。
本noteで利用しているビットコイン価格について
・本note中のリターン計測には、「.BXBT」の分足を利用しています。
・「.BXBT」とは、BitMEXのXBTUSDで使われているインデックスです。
このインデックスは米国のUSD建て主要取引所のBTCUSD価格について、重みづけ平均をとったものです。
・期間は2019年7月1日~2020年6月30日です。
①毎時0分前後において「直前の数分間の値動きに対してその後逆方向に値動きしやすい」
この特性(以下、本特性)の傾向を把握するために、以下のルールでトレードしたときに獲得できる累積リターンを観察してみます。
ルールA.
・毎時x分(xは0~59)において、
直前の5分間の値動きがプラスであれば売りエントリーする。
直前の5分間の値動きがマイナスであれば買いエントリーする。
・エントリーした場合、30分後に決済する。
xを0分から59分までずらしながら、それぞれの分について累積リターンをグラフ化したものがこちらです。
グループ① 0≦x<10 ・・・赤
グループ② 10≦x<20・・・橙
グループ③ 20≦x<30・・・黄
グループ④ 30≦x<40・・・緑
グループ⑤ 40≦x<50・・・青
グループ⑥ 50≦x<60・・・紫
図1. 毎時x分にルールA.でトレードしたときの累積リターン推移
(横軸:タイムスタンプ、縦軸:累積リターン[ドル])
明らかにグループ①(毎時0分~毎時9分のエントリー)で累積リターンが大きい様子を確認できます。
このグループ①のみでプロットし直したグラフがこちらです。
図2. 毎時x分(0≦x<10)の累積リターン推移
(横軸:タイムスタンプ、縦軸:累積リターン[ドル])
色が少々分かりづらいので、説明します。
・毎時0分のラインが真ん中のあたりにある青線です。
・最も成績の良い5本のラインは、毎時1分~毎時5分のものです。
・残りの毎時6分~毎時9分のラインは下のほうにあります。
毎時0分ピッタリではなく、その動きを見届けた後の毎時1分~毎時5分あたりでエントリーすることにより、安定してリターンを獲得できる様子が分かります(ただしスプレッド・手数料控除なし)。
最終的に獲得できたリターンを分xごとに比較すると、以下のようになります。
図3. 分xごとの最終累積リターン
(横軸:分x、縦軸:累積リターン[ドル])
ご覧のように、0分過ぎのあたりに明らかに大きな山が現れます。
やっていることは、全く同じ単純なルールでトレードをし、その際にエントリーの分を変えただけです。その結果、このような明確な分布が現れます。
これが、本noteでお伝えしたい「時刻アノマリー」です。
②本特性は、約20~30分間ほど持続する
ルールA.を「毎時1分」に行うケースについて、追加検証を行います。
ルールA.をもとに毎時1分にエントリーして30分間ホールドしますが、その際のリターンを以下の時間帯に分割して累積していきます。
①エントリー後、0~5分後に得られるリターン
②エントリー後、5~10分後に得られるリターン
③エントリー後、10~15分後に得られるリターン
④エントリー後、15~20分後に得られるリターン
⑤エントリー後、20~25分後に得られるリターン
⑥エントリー後、25~30分後に得られるリターン
そして、それぞれについて累積リターンの推移を確認します。
図4. エントリー後の時間帯別の累積リターン推移
(横軸:タイムスタンプ、縦軸:累積リターン[ドル])
最もリターンが大きいのは②の時間帯です。
グラフでみると、③や④の時間帯は右肩上がりの傾向が見られますが、⑤や⑥になるとリターンが平行線になっています。
このことから、本特性についてはおよそ20分後くらいまでは持続するとみることができます。
③本特性が顕著に表れやすいのは、日本時間9時
続いて、時刻ごと(y: 0時、1時、…)の傾向を見ていきましょう。
前章と同様、ルールA.を「毎時1分」に行うのですが、各時刻ごと(y時1分、0≦y<24)に別々にリターンを累積します。
こうして得られたのが以下のグラフです。
図5. 時刻yごとに分割した累積リターン推移
(横軸:タイムスタンプ、縦軸:累積リターン[ドル])
最終的に獲得できたリターンを時刻yごとに比較すると、以下のようになります。
図6. 時刻yごとの最終累積リターン
(横軸:時刻y、縦軸:累積リターン[ドル])
9時(つまり9時1分のエントリー)の累積リターンが、最もリターンを獲得できていることが分かります。
また、少し恣意的な解釈かもしれませんが、①6時間おきとなる3時・15時・21時、②8時間おきとなる1時・17時 については、その前後の時刻よりもリターンが上振れているような気がします。
※この章の上述の2グラフは計測期間の後半(2020年1月1日~6月30日)のものです。全期間(2019年7月1日~6月30日)でも同様の傾向が見られますが、より傾向がきれいに出ており分かりやすかったため、本章ではこの期間について掲載しています。
さて、ここまでの話が難しい、あるいは分かりづらいという方は、こう考えて頂ければ、概ね差し支えありません。
「毎時1分~5分ごろから起こる逆方向の値動きを意識することで、トレードの期待値を高めることができる」(正確には、ここ1年はできていた)
百聞は一見に如かず ということで、次章では実際のチャート上でエントリーポイントを確認してみましょう。
TradingView上での本特性の確認
以下のルールA’.についてTradingViewでストラテジーを作成し、エントリーポイントの確認をします。
ルールA’.
・毎時1分において、
直前の5分間の値動きがプラスであれば売りエントリーする。
直前の5分間の値動きがマイナスであれば買いエントリーする。
・エントリーした場合、30分後に決済する。
・本noteの末尾に付録としてPine Scriptを添付していますので、参考にしてください。
対象銘柄
・ByBitのBTCUSD
※ByBitでは手数料体系上、成行によるヒゲが発生しにくいため、本特性をきれいに確認できます。
ここ数日間のうち、5か所のスナップショットを添付します。
↑ケース①. 9/9 8:00~12:00
↑ケース②. 9/10 22:00~翌2:00
↑ケース③. 9/11 11:00~15:00
↑ケース④. 9/13 8:00~12:00
↑ケース⑤. 9/13 13:00~17:00
いかがでしょうか。
これらの画像では、毎時0分前後がちょうど短期的な天井や底になっている様子を確認できます。
他の局面では損失を出しているケースももちろんありますが、全体で見たときには前章までの解説同様、損益は右肩上がりになっています。
考察とまとめ
本noteでは、ビットコイン価格における時刻アノマリーについて解説しました。それでは、本特性をどのようにトレードに利用することができるでしょうか?
Botterにとっての時刻アノマリー
単純に、本noteのストラテジーを実装するだけでは、収益を上げることはできません。理由としては、以下が挙げられます。
①毎時間エントリー&決済が発生するので、コストが高い。
②全局面においてエントリーさせると損益比率がさほど高くならない。
フィルタなどによって1回あたりのエントリーの期待値を上げることは考えられますが、おそらく単体で利用するよりも他の指標と組み合わせて使うようなやり方のほうが効果的だと思います。
また、機械学習を扱うBotterであれば、特徴量にしてしまうのが最もよい利用方法になるでしょう。
裁量トレーダーにとっての時刻アノマリー
短期の裁量トレードを行う方は、本特性を頭に入れておいて損はないと思います。
TradingViewのいくつかの画像で分かる通り、30分ごとに節目が変わっているようなパターンが至るところで散見されます。
裁量トレードを行う上での一つの判断材料としては非常に優秀である、と筆者は考えています。
以上で本noteはお終いです。
時刻ピッタリに起こる値動きについては以前から様々な意見をtwitter上で拝見しましたが、実際に検証してみてその単純さと力強さに驚きました。
ByBitのトレード大会ではこのアノマリーを応用したボットを作成したのですが、ハイレバ運用によってテイカー手数料とドローダウンが重くのしかかり、残念ながら結果が出すことができませんでした。
本noteによりフォロワー様たちに共有できたことが救いです。
本noteについてご意見、ご感想などがあれば、筆者のtwitterアカウントまでお願いします。
それでは良きトレードライフを!
付録
TradingViewのPine Script
※筆者はPineScriptについて詳しくないため、不備があればご指摘いただけると幸いです。
※このスクリプトでは、ホールドする期間を30分でなく28分としています。図3.から分かる通り、そのほうがリターンがよくなるからです。
//@version=3
strategy(title="Hourly Anomaly", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
entry_min = 0
duration = 28
min = minute(time)
roc = (close[0] - close[5]) / close[5]
if (min == entry_min)
if roc < 0
strategy.entry("long", strategy.long)
else
strategy.entry("short", strategy.short)
if (min == entry_min + duration)
strategy.close("long")
strategy.close("short")
リファレンス
※冒頭の時計の画像はこちら