約定情報を取得・分析してみる【bitFlyer Real Time APIの時系列分析】

はじめに

bitFlyerのReal Time APIでは、

①Ticker(周期的な情報) 、②Executions(約定情報) 、③Board(板情報)が入手できます。前回の記事では、①Tickerを使った時系列分析を行いました(集計・可視化しただけですが…)

sawara7.hatenablog.com

 

①Tickerは、現在のレートを知る…といった基本的な情報を知ることができますが、今回はもっと自動売買や予測に使えそうな情報を求めて、②Executionsのデータ収集・集計・可視化を行いたいと思います。③Boardは次回。

②Executionsと③Boardは、板の流動性を知ることができる重要な情報だと考えています。予測や自動売買で使うならこちらのデータが重要になってくると思います。 

分析方法 Executions(約定)とは?

Executionsは、以下のPubNubチャンネルから取得できます。

PubNubからのデータ取得について:

BitCoinのリアルタイムデータを取得する。 - 仮想通貨の週末自由研究

PubNub チャンネル名
BTC/JPY 板(現物) lightning_executions_BTC_JPY
BTC/JPY FX 板 lightning_executions_FX_BTC_JPY
ETH/BTC 板 lightning_executions_ETH_BTC

 今回分析するのは、BTC/JPY 板(現物)です。全部見るのは疲れます…

 

データ構造は以下の通りです。約定が発生するたびに配信される…そうです。

[
  {
    "id": 39361,
    "side": "SELL",
    "price": 35100,
    "size": 0.01,
    "exec_date": "2015-07-07T10:44:33.547",
    "buy_child_order_acceptance_id": "JRF20150707-014356-184990",
    "sell_child_order_acceptance_id": "JRF20150707-104433-186048"
  }
]

1つのメッセージ内に、上記の構造をしたdictionaryが配列に複数入っている状態で返ってきます。

 

ところで、この"side"という属性は、約定した際の注文の売買種別だそうです。

  • side: この約定を発生させた注文(テイカー)の売買種別です。 板寄せによって約定した場合等、空文字列になることがあります。

  引用元:ビットコイン取引所【bitFlyer Lightning】

テイカー、つまり売りの成行き注文が成立した場合、この約定はside = Sellとなります。このとき、板に並んでいたASKの量が減ります。

逆は、Buyということになります。板に並んでいたBIDの量が減ります。

私はこの売買種別の取引量が、買いや売りの勢い(=レートの変動)と関連しているのではないかと思っています。

では、分析結果を以下に示します。

 

分析結果 2017/11/27(月) ~ 2017/12/01(金)

2017/11/27

BTC_JPYの約定情報を、売買種別に10分間隔で集計しました。

10分間の約定量を積み上げグラフで表しています(目盛りは左軸)

また、10分間のレートの平均値を折れ線グラフで表しています(目盛りは右軸)

11/27の一日の変動を下図に示します。

f:id:sawara0727:20171202152455p:plain

前の日が日曜日ということもあるからでしょうか?深夜の取引が活発です。

また、レートの変動が大きいときほど、取引量も増大しているようにみえます(9:30 ~と18:00~)

9:10、9:20、9:30台について、取引量は少ないですが、買いの注文の割合が多いように見えます。そして、その後レートは大きく上昇しています。なにか予測のヒントになりそうです…

また、レートが下がっているときは、売りの注文が多いようです。まぁなんとなく可視化しなくてもわかりますが…

2017/11/28

f:id:sawara0727:20171202152506p:plain

28日は、売りの注文が多い割に、レートは上昇しているという腹落ちしない結果となりました。ここは板情報を見てみないとわからないです。

また、10:30ごろの異様な量の売り注文はなんでしょうか。集計ミスということはないと思いますが…原因不明です。

 

2017/11/29

f:id:sawara0727:20171202152525p:plain

29日。うん、レート上昇時は買い注文が多く、下降時は売り注文が多い。まぁ妥当ではないでしょうか…(適当)

2017/11/30

f:id:sawara0727:20171202152536p:plain

11/30。この日は、130万円台から100万円台まで急降下した日でした。(Y軸の範囲が統一されてなくてわかりにくいですが…)

4:00台に売り注文が殺到しています…ひどい相場ですね。

2017/12/01

f:id:sawara0727:20171202152547p:plain

約定の売買種別割合の時系列変動

2017/12/01

f:id:sawara0727:20171202152649p:plain

定量の売買種別を割合にしてみました。左軸が0 - 100%となっています。

f:id:sawara0727:20171202161953p:plain

暴落した日の割合。全体的に売りの注文割合が多め。4時台の暴落時に売り注文が殺到するが、その後の買い注文が多い。こういう傾向をつかめば予測できるんじゃないかなぁと思っています。

まとめ

bitFlyerのReal Time API の Executionを用いて今週のBTC_JPYを分析しました。

買い注文が多ければレートが上昇し、売り注文が多ければレートが下降する場合があることがわかりました。(もちろん、そうでない場合もままある。)

予測や自動売買で使えそうな指標であることがわかりました。

次回は、板情報を分析しますが、それと組み合わせて使うとよりレートの傾向がわかるのでは??とわくわくしています。