BTCUSDTアービトラージ仕様検討

本記事はBTCUSDTを扱っている取引所BinanceとPoloniexの価格差をAPIで抽出して、アービトラージを行う仕組み作成についての仕様作成検討結果をメインにまとめています。

今回はBTCUSDTのみ、取引所はBinanceとPoloniexのみに絞って検討しています。

コイン増やしたり、取引所増やしたりするのはめんどくさいので。。。

アービトラージの仕組み、作成は今後になります。

今回の仕様検討の結論を先に書いちゃいます。

「月利1.495%ほど利益とれるかもしれない」

です。

ほんの2週間、BinanceとPoloniexのBTCUSDTの差額調べただけなんで、本当にそうなるかどうかわかりません。

もっと深堀すべきところもあるのですが、調査だけやってるのつかれるので、今回まとめた結果を元にして、実際に取引する仕組みを今後作っていくことにしました。

アービトラージでどの程度利益がでる?

かねてから、暗号通貨でのアービトラージでどのくらい利益がでるのかということに疑問をもっていました。

この記事の目的は、何をどうやったらどれくらいの利益をでるのかを実際に仕組みを作るための事前調査と仕組みの設計図をまとめることです。

「アービトラージとは」でググったトップページにこんな説明がありました。

アービトラージ(裁定取引)とは、同一の価値を持つ商品の一時的な価格差(歪み)が生じた際に、割高なほうを売り、割安なほうを買い、その後、両者の価格差が縮小した時点でそれぞれの反対売買を行うことで利益を獲得しようとする取引のこと。

暗号通貨におけるアービトラージについてネットの情報をみると、

事実上損をしないとか、
トレードの知識不要とか、
相場に左右されないとか、
大量の通貨を扱わないと利益でないとか、
送金中に価格変動してしまうと利益得られないとか、
常に相場の確認をしなければならず時間的拘束を受ける、

などなど。

いいのか悪いのか全くわかりません。

少し前、暗号通貨において、アービトラージを利用した配当型ウォレットが流行ってました。

運用資産500ドルとか入れると月利10%とかもらえるっていう案件がいくつもありました。

今、サクッとググると2019年ほどくらいまでいくつか案件でていましたが、2020年以降の記事は上位ページには出てきてません。

下火になったのか。

たまたま、でてきてないのか。

利益出せないのか。

よくわからないので、自作して検証してみることにしました。

ここで、アービトラージについてあらためて簡単に説明します。

アービトラージとは

株式とか通貨などのある銘柄の価格が取引所間で一時的に価格に差が出ることがあります。

安い方で買って、高い方で売れば、その分の利益がでます。

最初のトライではバイナンスとPoloniexのBTCUSDTの価格を5分感覚でチェックして40時間分の価格をプログラムで抽出して、その差分がどの程度あるかを確認した結果をベースに調査をしています

アービトラージのメリットデメリットを検索してみると以下のようなことが出ています。

アービトラージのメリット

  • トレードの知識がいらない
  • リスクが低い
  • 相場によらずに稼ぐことができる
  • アービトラージのデメリット

  • 一度の利益が小さい
  • 送金中に価格変わる
  • 価格差が開くまで待つ必要あり
  • アービトラージのデメリット対策

    アービトラージのデメリット

  • 一度の利益が小さい
  • 送金中に価格変わる
  • 価格差が開くまで待つ必要あり
  • デメリットの1つ目の「一度の利益が小さい」についてはよくわからないので実際にやってみることにします。

    BTCUSDTでバックテストをするのも長期間だとめんどくさいので2週間くらいの調査にて

    「Binance/Poloniex間で、0.1%の価格差が1日数回出る」

    ことが分かりました。そこで、0.1%を超えたら売買することにして、1日の取引(売買)が5回前後できそうです、とりあえず、この方針で対処します。

    デメリットの2つ目の「送金中に価格変わる」とういは、資産をBTC,USDTをそれぞれの取引所にあらかじめ送金しておけば送金時間の問題はなくなります。

    デメリットの3つ目の「価格差が開くまで待つ必要あり」は、APIを使ったプログラムを組んでおけば放置できます。

    APIとは

    APIについて検索してみるとこんなことが書いてあります。

    「API」とは、「Application Programming Interface」の頭文字です。

    英文字だけで意味を理解しようとすると、アプリケーション・プログラミング・インターフェイスで、大雑把に言うと「アプリケーションをプログラミングするためのインターフェース」という意味です。

    インターフェイスとは、コンピュータ用語でいうと、「何か」と「何か」をつなぐものという意味を持ちます。例えば、USBも「パソコン」と「周辺機器」をつなぐものですので、インターフェイスの一つです。

    つまり、APIとは、この「何か」と「何か」が「アプリケーション、ソフトウェア」と「プラグラム」をつなぐもの、という意味になります。

    APIとはソフトウェアやアプリケーションなどの一部を外部に向けて公開することにより、第三者が開発したソフトウェアと機能を共有できるようにしてくれるものです。USBは外部デバイスとパソコンを繋ぐインターフェースですが、APIはソフトウェア同士を繋げます。つまり、異なるソフトウェアやサービス間で認証機能を共有したり、チャット機能を共有し・・・

    https://data.wingarc.com/what-is-api-16084
    より引用

    「・・・。」

    常人には理解できないですよね。

    厳密に説明しようとすると、上位のように難しすぎるので、できるだけ簡単に説明します。

    暗号通貨の取引所のAPIというのは、その取引所で扱っている通貨ペアのロウソクチャートデータの参照やトレードそのものをログインすることなく、プログラム上で可能とするコマンドみたいなものです。(正確ではないかもしれませんが)

    BinanceやPoloniexではこのようなAPIを無料で公開しています。

    例えば、その取引所で扱っている通貨ペアの5分足の直近500本分のロウソクチャートを数値で得ることは簡単です。

    ということは、リアルタイムで、現在価格を得ることも可能です。なぜなら一番新しいロウソクのクローズ値は現在価格なわけなので。

    もちろん、その取引所に入金している資産もサクッとわかります。BTCやUSDTをどれだけ保有しているのかわかります。

    また、買ったり売ったりというトレードもできてしまいます。

    なので、APIを利用して、BTCUSDTの取引所間の価格差はプログラムを組んでおけば一瞬でわかります。

    価格差が0.1%を超えたら安い方の取引所で買って、高い方の取引所で売るということは、容易なのです。

    ただ、売り買いを即時できるようにある程度のBTCやUSDTをそれぞれの取引所に入金しておく必要があります。

    あとは、プログラムで資産の何%を売り買いするか、どれくらいの価格差で売り買いするかを組んでおけば、アービトラージは課題はあるものの何とかできると考えています。

    ただし、課題はあります。

    APIを利用したアービトラージの課題

  • 理想は成り行き売買なのですが、それをすることで価格が変わるようであれば買板、売板を確認して指値売買になります。これがめんどくさそうです。
  • 価格差何パーセントで売買するか?過去データを見ながら適切な解を模索する必要があります。この考えを拡張して、売買しながらデーター蓄積していって、何%ぐらいで売買すれば効果的かの自己判断機能もあるといいのかも面白いですがこれは後々考えます。
  • 手持ちの資産範囲内で売買できるようにしなければならないので、その計算やデバックが必要。(デバッグでじわじわお金減っていく)
  • 売買が進むにつれて資産が不均衡になった場合、均衡させるために取引所間で資産の移動が必要だがどの程度で移行させるのが効果的かの検討(毎回やってると手数料かかるし、転送期間中は処理を停止する必要があるので)
  • アービトラージ仕様作成における検討結果

    取引手数料

    Binance:片道0.1%(BNB利用で半額)
    Poloniex:片道0.09%(50k$未満)
    指値、成り行き問わず。

    価格差過去データ

    BTCUSDT価格差分率
    =(価格(Binance)-価格(Poloniex))/価格Binance

    3/29~3/30:±0.5%
    4/8~4/9:±0.1%+α

    →今後も売買プログラム作成しながら確認予定。今のところは0.1%の差分がでたら売買をするプログラムにする予定

    BinanceとPoloniexの価格差分分布3/30
    BTCUSDT価格差分率(3/29~3/30)

    BinanceとPoloniexの価格差分分布4/9
    BTCUSDT価格差分率(4/8~4/9)

    指値か成行かの検討

    結論:今のところ成行で売買する

    理由:
    暗号通貨の売買は厳密にいうとask(買取価格)、bid(売却価格)の差分もあるので価格差があるからといってその価格で即購入、売却ができません。

    もっとも現在価格に近いask(買取価格)とbid(売却価格)はBinanceの数字をみると毎秒数回変化します。その数量もまちまちで0.001~1以上と刻一刻と変化することが分かりました。

    狙った数量だけ指値で売買しようとしたときに、数量不足になると待ち時間が発生し、価格差がなくなってしまう可能性が生じます。厳密には数量を確認して即時売買する、という手も考えられますが、売買の瞬間に他の人に奪われてしまう可能性もあり、その可能性を考えてのプログラミングは自分には不可能と判断します。(めんどくさすぎます)

    アービトラージをするには指値売買は危険なため、成行売買にすることにします。成行にすると若干の価格差が出てしまいますが、Binance,Poloniex、BTCUSDTの取引ボリュームは大きいので、それほど大きい変動はないもとみなして処理をすることにします。

    アービトラージ仕様

    価格差を見つけて、それぞれの取引所に送金して売買しようとしたら、着金し時には、価格差なくなってしまうとうことが考えられます。

    この問題を解決するために、各取引所に予めすぐに売買できる資産を送り、資産分散させておく必要があります。

    具体的資産分散手順
    (1)BTCを購入
    (2)BTCの半分をBinanceに送る
    (3)残りをPoloniexに送る
    (4)それぞれの取引所でBTCの半分をUSDTに変換する
    この分散資産額は多少ずれても問題ないようプログラムで補う

    その後、APIを使って価格差0.1%になったら、

    高い方で売って
    安い方で買う

    価格差チェックプログラムはpythonで作成しました。

    ローソク使わず、それぞれのリアルタイム価格を取得して、0.1%以上差分があったら、時間、それぞれの価格をファイルに追加書込みするプログラム作成済です。

    これを1分に1回動作させます。

    今回はLinuxサーバー(GCP)上でプログラムを動かしているので

    crontab

    コマンドを利用しました。

    BTCUSDTのBinanceとPolniexの価格比較表
    差分結果

    0.1%以上という数字は後で外部から指定できるようにする予定です。

    この条件を満たしたら、それぞれの取引所で売買を行うように今後プログラミング予定です。

    余談ですが、GoogleのLinuxサーバーGCPにはスマホのCloud Consoleアプリからも接続可能なことを発見したので、ログをファイルに出しておくことでスマホから経過を見えるようになりました

    今回の処理おける利益概算

    ●事前準備
    取引所間の差分が一定幅を超えた時点で差分なくなる前に即時売買できるようあらかじめ売買用の資産を入金しておきます

    (BB)BinancのBTC
    (BU)BinanceのUSDT
    (PB)PoloniexのBTC
    (PU)PoloniexのBTC

    ●1回の売買量
    上記4資産のUSDT相当額の最少額-取引手数料が1回に売買できる額の最大額となる

    ●売買方法
    成り行きで行うことにします。(懸念点:現在価格とずれる場合あり)
    指値にすると約定失敗するかもしれないのでやらないでおきます。

    ●例

    BTC価格、B:7000<P:7007でそれぞれ、4資産が下記の場合、

    B価格 7000

    P価格 7007

    差分割合 -0.10%
    BB 0.007143 50.001 USDT <--最小

    BU 55 55 USDT

    PB 0.00854 59.8397 USDT

    PU 51 51 USDT

    計215.8407 USDT

    1回の売買量の最大は0.007143BTCとなる。何回も繰り返すこととBinance、Poloniexの価格大小関係が入れ替わることを考慮して1回の取引量を最大の70%と仮定します。

    ただし、この70%が妥当であるかわかりません。

    なぜなら、1回のチリ引きが成立したら、それぞれの取引所のBTC,USDTに不均衡(どちらかが多すぎる状況)が生じます。

    不均衡が生ずると1回の取引高が4資産のうち最低額の70%となり、減ってしまいます。Binance, Ploniexの価格が交互に大小関係かくりあえされるならまだしも、大小関係が交互にならなければ、1回の取引額が目減りして十分な利益がえられません。

    効果算出には資産のアンバランスを考慮してませんので、実際には効果はもっと小さくなるかもしれません。

    この問題を改善する方法は現在、検討中です。

    取引は以下の2つをほぼ同時に成り行きで行うことにします。

    Binanceで、 0.0050000 BTCを買う(高い方)
    Poloniexで、0.0049951 BTCを売る(安い方)

    ここで売買するBTCの注意事項
    (1)取引額(USDT相当)を決める
    (2)安い取引所で(1)相当のBTCを買う
    (3)高い取引所で(1)相当のBTCを売る

    BTCアービトラージ効果予想

    上図のように、今回のBTCアービトラージ予想効果は月利1.495%となります。

    今後、この仕様をプログラミングして効果を確認していく予定です。

    この記事を読まれた方はこちらの記事も読まれています。

    コメント