ビットコインでアービトラージ(裁定取引)~Blackbirdを使ってみた(3)~


さて、今回はフリーのアービトラージbot「blackbird」に関する第3回目の記事になります。今回は、このbotの初期設定についてです。GitHubのREADME.mdに記載されていますが、「blackbird」を動かすのに必要な設定項目と、現在の私の設定値をご紹介します。

「blackbird」の設定項目と私の設定値

「blackbird」の設定は、blackbird.confファイルで設定します。下表がデフォルト値と私の設定値です。一口に裁定取引と言っても、いろいろなパラメータがあり、パフォーマンスを上げるにはここのチューニングが肝だと思います。

設定項目Default値私の設定値設定項目の内容
DemoModetruefalseここを「false」にするとライブ(実戦)モードになります。「true」の状態では、取引所間のスプレッドは表示されますが、実際に注文は出しません。
Leg1BTCBTCトレードする通貨です。現在のところBTC固定です。今後、BTC以外のアルトコインが追加されるかもしれません。
Leg2USDUSD証拠金とする通貨です。現在のところUSD固定です。
UseFullExposurefalsetrueここを「true」にすると、Leg2の通貨(USD)建て保有資産額によりポジションサイズを決定します。取引する2つの取引所の各保有資産額の小さい方から1%をマイナスした金額を基準にします。
例えば、A取引所に$1,000、B 取引所に$1,100あった場合、それぞれ、$1,000 - (1% * $1,000)=$990を使い、合計資産額は$1,980となります。
TestedExposure2525上の行の「UseFullExposure」を「false」にすると、ここの金額(USD)を保有資産としてポジションサイズを決定します。まずは、ここの設定を使って小さいポジションで試してみることをオススメします。但し、各取引所で最低取引単位が決められているので、ここの金額が小さすぎると注文できません。私は、当初ここを$50に設定して、試行していました。
MaxExposure25,00025,000取引ポジションサイズを決定する最大資産額です。Blackbirdは、各取引所の資産額がこの金額を超えても、ポジションサイズを大きくしません。
MaxLength5,184,0005,184,000blackbirdは、この回数試行後にプログラムを終了します。3秒間隔で価格差を分析する場合は、3秒×5,184,000回=180日なので、180日後にプログラムは自動終了します。
DebugMaxIteration3,200,0003,200,000blackbirdは、この回数試行後、return=0を返して終了します。プログラムのデバックなどで利用します。
Verbosetruetrue「true」の場合は、毎回bid(売値)/ask(買値)やスプレッド(価格差)をログファイルに記録します。
Interval3 sec.3 sec.取引所間の価格差を分析する間隔です。
SpreadEntry0.00800.0050裁定取引のエントリー機会と判断する価格差(%)です。blackbirdは、この値になったら2つの取引所に注文を出します。もし、トレーリングスプレッドを設定している場合は、設定条件になるまで注文送信は保留します。
SpreadTarget0.00500.0030裁定取引による利益のターゲット(%)です。例えば、SpreadEntryが0.0080(0.80%)で、 ここのSpreadTargetが0.0050(0.50%)で、各取引所の手数料が片道0.25%の場合、blackbirdは、-0.70% (0.80% spread entry - 4x0.25% fees - 0.50% target = -0.70%)になった時、ポジションをクローズします。
PriceDeltaLimit0.105.0許容するスリッページの値です(単位:$)。裁定機会を見つけたときの価格と実際に発注しようとした時の価格差が、ここで設定した値($)より大きい場合は、blackbirdは注文を出しません。
TrailingSpreadLim0.00080.0008価格差がターゲット価格に到達しても、blackbirdはここで設定した値に低下するまでオーダーを出しません。例えば、SpreadTargetを0.70%とし、TrailingSpreadLimを0.08%に設定した場合、価格差が0.7%に到達しても、0.62%に下がるまでオーダーは出しません。価格差が更に大きくなった場合、その価格 - 0.08%に順次オーダーを出す価格を引き上げていくことによって、より大きな価格差を取るための設定になります。
TrailingSpreadCount11トレーリングスプレッドを発動するための条件です。1度設定した SpreadTargetに到達後、更にここに設定した回数の間、SpreadTargetを超えている場合のみトレイリングスプレッドが発動します。
OrderBookFactor3.03.0blackbirdは、ここで設定する数値×注文する量のボリュームがある時のみ、注文を発注します。例えば、ここの値が3.0で、自分が1BTCの注文を出したい場合、板に1BTC×3.0倍=3.0BTC以上のボリュームがある場合のみ注文を発注します。
UseVolatilityfalsefalseボラティリティに合わせて、ターゲットスプレッドを設定する機能ですが、現在はサポートしていません。現在は、ここを「true」にした場合、スプレッドのボラティリティをログファイルに記録します。
VolatilityPeriod600600ボラティリティを計算する時の基準となる期間です(単位:回)。
SendEmailfalsefalse「true」の場合、トレードが成立したら、電子メールを送信します。
DBFile'blackbird.db''blackbird.db'SQLite3データベースのファイル名です。

今月の稼働状況

2018年に入って、ずっとblackbirdを稼働させていますが、稼働状況は下表の通りです。1/19までの約20日間で、Bitstamp(Long)とBitfinex間(Short)間で8回の裁定取引を実行しています。2つの取引所の資産合計は、$608.22が$636.63で$28.41の増加(+2.66%)となっています。ポジションをオープンしてからクローズするまでの平均時間は、1,105分(約18時間)です。

ID
LONG
SHORT
ENTRY_TIME
EXIT_TIME
DURATION
TOTAL_EXPOSURE
RETURN
1 Bitstamp Bitfinex 2018-01-02_04:27:27 2018-01-02_04:55:57 28.5 608.22 0.27%
2 Bitstamp Bitfinex 2018-01-05_08:58:42 2018-01-08_13:20:18 4581.6 606.42 0.39%
3 Bitstamp Bitfinex 2018-01-11_15:03:18 2018-01-11_22:40:21 457.05 630.91 0.19%
4 Bitstamp Bitfinex 2018-01-13_11:57:18 2018-01-14_12:39:57 1482.65 614.91 0.17%
5 Bitstamp Bitfinex 2018-01-15_08:42:48 2018-01-16_08:41:03 1438.25 571.23 0.32%
6 Bitstamp Bitfinex 2018-01-17_15:36:39 2018-01-17_17:16:36 99.95 509.22 0.32%
7 Bitstamp Bitfinex 2018-01-17_19:11:30 2018-01-17_22:17:33 186.05 561.19 0.51%
8 Bitstamp Bitfinex 2018-01-19_08:07:03 2018-01-19_17:33:51 566.8 636.63 0.50%
1105.11 28.41 2.66%
(avarage) (total) (total)

今後について

blackbirdを日本の取引所に対応させるべく格闘していますが、もともとプログラミングスキルがあるわけではないので、時間がかかっています。ようやく、coincheckとquoinex対応のコードが書けたので、これからデバックしていく予定です。

現在動かしている、海外取引所対応の本家「blackbird」についても、今月は約3%の利回りが得られそうなので、このまま稼働させようと思っています。このまま同じ利回りが得られると仮定すると、年間約40%の利回りが得られることになるので、ローリスクでこれだけの投資商品はなかなか無いですからね。

今回はここまでです。日本の取引所対応の話は、プログラムが動いたら、また別途書きたいと思います。いつになるかは予想できません。。。

米国の証券オプションを中心にトレードする個人投資家です。
金額は小さくても毎月安定的な収益を得る手法を追求しています。
VIX指数関連のオプションやビットコインなどの仮想通貨オプションにも注目しています。

※当サイトに掲載しているサービス・銘柄について、利益をお約束するものではございません。また情報の正確性には気を配っておりますが、当サイトの掲載内容について保証は一切致しかねます。必ずご自身で情報をご精査の上ご利用下さい。

2 thoughts on “ビットコインでアービトラージ(裁定取引)~Blackbirdを使ってみた(3)~

  1. 住吉

    初めまして。
    住吉と申します。アービトラージbot作成に興味がありブログを参考にさせていただいています。
    急な質問で申し訳ないのですがBlackbirdでバイナンスやコインエクスチェンジなどの他の海外の取引上に対応したbotを作成したいと考えています。工藤さんがBlackbridで国内の取引所に対応したbotを作成しているように、海外の他の取引所に対応させたbotを作成することは可能なのでしょうか。

    Reply
    1. 工藤玲穂 Akio Kudo Post author

      コメントありがとうございます。他の海外取引所に対応させることは可能だと思いますよ。ちなみに、バイナンスはblackbirdの対応取引所に追加されてるみたいです(まだテスト中のようですが)。各取引所のAPI仕様を理解して、C++でコーディングできることが必要なので、私は挫折しつつあります。bitrinjaniさんのR2(国産)がかなり完成度が上がってきているので、これを使うのが早いよねという気持ちになってきてます。。

      Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です