BTCUSDTアービトラージ試行プログラム(中間状況)

暗号通貨取引所BinanceとPoloniexのBTSUSDTの価格差を利用したアービトラージを行いどれくらいの利益が得られるかの確認をする目的でAPIを利用してpythonで以下のプログラムを組むことにより、価格差分0.3%以上の取引を1日1~2回行える見通しを得ました。

(1)BTCUSTDの価格差BinanceとPoloniexの差分確認
(2)価格差0.3%以上の差分で価格差表示
(3)売買量の計算
(4)Binanceでの成行売り注文(試行用)
(5)注文前後の価格変動確認

今後は(1)~(5)をパッケージ化してフルオート稼働させる方向でコーディングしていく予定です。目標GW終了まで。

それぞれの結果

(1)BTCUSTDの価格差BinanceとPoloniexの差分確認

1秒間隔で24時間体制でチェックをしようとしました。実際には1秒間隔でチェックプログラムを起動させても、プログラム起動分だけ追加で時間がかかるので実際は1秒とちょっとに間隔で実行させました。

BinanceとPoloniexでのBTCUSDT価格差0.3%以上表示結果(生データ)
0.3%以上の価格差表示(生データー)

エクセル上でのBinanceとPoloniexでのBTCUSDT価格差0.3%以上表示結果(生データ)
0.3%以上の価格差表示(エクセル上表示)

(2)価格差0.3%以上の差分で価格差表示

前回考察抜けをしていた売買注文手数料それぞれ約0.1%を配慮して、価格差0.3%を超える差分があったら、これを取引チャンスとして、それぞれの価格を表示。

2日間の実行結果をみると1日に1~2回程度0.3%以上の価格差が開くことがわかりました。今後もその頻度の確認を継続します

なお、この0.3%以上の差分が検出されたチャートを3点確認すると、価格の変動が大きいタイミングで発生していました。(なんとなくイメージ通りです)

チャート:バイナンスBTCUSDT(21:03, 15th, Apr, 2020 UTC+9)
バイナンスBTCUSDT(21:03, 15th, Apr, 2020 UTC+9)

チャート:バイナンスBTCUSDT(17:32, 16th, Apr, 2020 UTC+9)
バイナンスBTCUSDT(17:32, 16th, Apr, 2020 UTC+9)

チャート:バイナンスBTCUSDT(21:00, 16th, Apr, 2020 UTC+9)
バイナンスBTCUSDT(21:00, 16th, Apr, 2020 UTC+9)

(3)売買量の計算

Binance, PloniexのウォレットにあるBTC, USDTの残高の最少額(USDT換算)で最少額の半分を1回の取引にする予定です(変更するかもしれません)

(4)Binanceでの成行売り注文(Poloniexでの注文テストは未実施)

 この過程で分かったことは、BinanceでBTCUSTDを成行注文するときに数量を0.001BTC以下とするとエラーとなるようです。0.002BTCであれば売ることができました。BinanceのBTCUSDTの売り下限額は0.002BTCということとします。

(5)注文前後の価格変動確認

 (2)~(4)後の価格差表示→(2)で売買タイミングを検出後、実際の注文が終わるまでどの程度価格変動あるかを確認するために実施しました。

 テストコマンドcreate_test_orderでは何も表示されずプログラムに負荷がかかっているかどうかわからなかったので、create_order()で少額の成行売り注文して1回だけ注文後の価格変動を確認しました。注文前後で0.02%のずれが確認されました。目標が0.3%なのでこの程度のずれならば許容範囲です。しかし、「価格変動が大きい」タイミングでの注文前後で価格がどの程度発生するかが見ものです。(実際に本番プログラム作成して確認することになりそうです)

Binance注文前後のBTCUSDT、BinanceとPoloniex価格差
注文前後の価格差

今後の課題

  • poloniexでのAPI注文テスト
  • 価格変動大きいときの売買最中の価格変動(ぶっつけ本番になりそう)
  • 価格差0.3%以上の頻度は1日1~2回かどうか(今後も確認を継続する)
  • この記事を読まれた方はこちらの記事も読まれています。