独自に編み出したbitcoinのアービトラージ自動売買のロジックを公開します

以前こちらの記事で私が編み出したアービトラージの手法を紹介したのですが、当時はまだ自動売買環境を構築できておらず、手動での取引を想定していました。

その後自動売買環境を構築していくにあたり少し戦略の見直しがあり、プログラムの検討記録という位置づけで記事にはしていたのですが、改めて今回の記事でまとめなおそうと思います。

まずは前提知識として冒頭でご紹介した記事を先に読んでいただければと思います。

アービトラージをする上での一番のハードルは取引手数料かと思います。GMOコインやbitbankの場合、メイカーとして約定すれば逆にマイナス手数料を受け取ることができ、有利に取引ができます。メイカーとして約定するためには指値注文をする必要があるのですが(タイミングが悪ければ指値でもテイカーとして約定することはあります)、GMOコインとbitbankで同時に指値注文を出した場合、片方だけが約定してしまい、もう片方を待っているうちに価格差がなくなってしまったり指値と反対方向に価格が動いて戻ってこなかったりする恐れがあります。

そこでbitbankだけで先に指値注文を出し、その注文が約定した瞬間にGMOコインで成行注文を出すことにしました。また、指値注文を出している間に価格差がなくなればその注文は即座にキャンセルします。これをフローチャートに表すとこのような感じです。

先にGMOコインで指値注文してもいいのですが、下の表の通りGMOの方がテイカー手数料が安いのでbitbankでメイカー、GMOでテイカー取引とした方が利益は大きくなります。

取引所テイカー手数料メイカー手数料
GMOコイン0.05% -0.01%
bitbank0.12% -0.02%

また、成行で注文をする際は板に出ている注文の価格と数量で約定価格が決まってしまうため、板情報を取得して約定価格(の見込み)を計算したうえでアービトラージの価格差を算出する必要があります。

冒頭の記事からのアップデートということで変更部分だけまとめてみたら意外とあっさり終わってしまいました。このロジックで組んだPythonプログラムをnoteで有料記事として公開予定です。