APIビットコインアービトラージシステム
目次/もくじ
ここまで業者間アービトラージシステムのプログラミングの考察?をしてきましたが、
中には「中身がどうなっているかなんてどうでもいい。動けばいい」という人もいるようで、
システムに関する問い合わせがちょいちょい来ます。
正直なところ、その問い合わせが多いので対応が面倒になってきました。
使いたい人は自己責任で使ってどうぞ。
ただし、お約束です。
・大きいロットで取引するとアービトラージのエッジ(優位性)が消えるので、小さいロットでやってください。
・使用は完全に自己責任でお願いします。
基本的には、これまでの記事の内容を組み合わせればシステムの構築はできるはずなので、
本当はいろいろ試行錯誤して自分のプログラムを書くのが一番良いと思っています。
2017/10/30追記
自分の手でアービトラージしたり、開発しないと見えてこないこともあるので、自力で開発にトライしてみることをおすすめします。
「ビットコイン自動売買システムの作り方 一覧」
以下、仕様、使い方です。
概要:
取引所AのBidが取引所BのAskよりも高い場合、取引所Aで売りトレード、取引所Bで買いトレードをし、取引所AのAskが取引所BのBidよりも低い場合、取引所Aで買いトレード、取引所Bで売りトレードをします。
例:
コインチェックのBidがZAIFのAskよりも高くなったとき、コインチェックで売り、ZAIFで買いの取引。
対応取引所:
コインチェック、ZAIF、ビットフライヤー
現時点では3社間でのアービトラージが可能ですが、取引タイミングが多発している現状では、実際に取引する業者を2社に絞った方が資金管理が便利です。
また、レート差が発生している際、板が薄いことが予想されるので、大きなロットで取引しようとすると一部がペンディングになる可能性があります。(指値注文方式から成行注文方式にしたので、ペンディングにはなりませんが、オーダーが分割されます。)
このことから、“大きなロットで大きな差をとりに行く”よりも“小さなロットで回数を重ねる”戦略の方が有効に働きます。
取引所の前準備
・各取引所にアカウントを作成し認証を済ませる。
・各取引所に同じ金額を入金(ある程度金額を入れないと利ざやが1円とかになります。)
・各取引所のAPIキーを取得。
(取引が許可されていることを確認してください。)
ソフトの設定
初回起動時
・BitCoinArbSetting.exeを起動
・APIキーと秘密鍵、各種パラメータを入力し、送信する。(取引しない取引所は空欄にしてください。)
・IDが表示されるので、IDをメモする。(このIDを今後使います。)
・BitCoinArbTicker.exeを起動
・IDを入力する
・トレード開始
終了時
・Stopボタンを押し、ウィンドウを閉じる
次回起動時
・BitCoinArbTicker.exeを起動
・IDを入力する
・トレード開始
設定値を変更するとき
・BitCoinArbSetting.exeを起動
・各種パラメータを入力し、送信する。
設定項目:
・取引最小間隔(秒):
短時間に大量にトレードすることを防ぐためのフィルターです。
・取引をするレート差(円):
この設定値よりもBid,Askの差が広がった場合に取引します。
・通知先メールアドレス:
取引があった場合に通知するメールアドレス(空欄不可)
・取引ロット(0.005BTC~):
※各取引所最小ロット(コインチェック:0.005、ZAIF:0.0001、BitFlyer:0.001)
・自動資金移動:
取引所内のビットコインと円に偏りが生じた際に、自動的にスプレッドが安いタイミングで資金移動をします。
・各取引所API:
取引しない業者の欄は空欄にしてください。
仕様:
・WEB APIを使った業者間アービトラージトレードシステムです。
・現在の取引対応ペアはビットコイン円のみ(現時点では取引所がアルトコインのAPIに対応していないため、そもそも開発できません。)
・ティック更新にInternet ExplorerのCOMを使用するため、ソフトを稼働させている間はInternet Explorerは使用できません。
・ティックソフトはexeファイルなのでexeファイルが稼働する環境が必要です。
(Mac,Linuxを利用している場合はWindowsエミュレータを導入するか、WindowsVPSを使う必要があります。)
ダウンロードはこちら
※ダウンロードサイトに登録している訳ではないので、ダウンロード時、実行時にアラートが出ることがあります。
反響が大きすぎて手に負えないので、完成品のソフトの掲載は一時停止しています。
現在システムは法人をお持ちの方に卸しています。興味がある方はご連絡ください。
※連絡先はサイドメニューにあります。
ビットコインの取引所間アービトラージの特徴と性質
現物取引のアービトラージと信用取引のアービトラージは別物
仮想通貨からトレードの世界に入ってきた方の中には、この二つを混同されている方が多いような気がします。
そもそも現物取引と信用取引の違い
まず現物取引ですが、文字通り今現在自分が持っている資産の交換です。
ウォレットにあるビットコインや円がそれに当たります。
株でいうところの現物株です。
そして信用取引ですが、これはレバレッジをかけて”信用”で取引します。
こちらにはエントリーと決済処理があります。
つまり、1サイクルの取引では、
現物取引:交換1回
信用取引:エントリーと決済
の違いがあります。
二つのアービトラージの違い
さて、
アービトラージをしようとなると、この二つは性質が全然違います。
現物取引アービトラージの場合、
取引所Aの買値 < 取引所Bの売値
の状態で交換すれば、アービトラージが成立します。
こちらの場合、差が縮まらなくても何回でも交換可能です。
しかし、レバレッジを効かせられないので保有資産以上の取引はできません。
一方
信用取引のアービトラージの場合、
取引所Aの買値 < 取引所Bの売値
の状態でエントリーし、
その後レート差が縮まった状態で決済して はじめてアービトラージが成立します。
こちらの場合、エントリーした後に差が縮まらないと決済できません。
FXのアービトラージはこっちです。
この二つの取引(現物・信用)が混ざることはありません。
また、難易度は信用取引の方が圧倒的に上です。
ビットコインでアービトラージ 現物/信用どっちがいいか
一口にアービトラージといっても取引の方法には2通りあります。
1回(交換)の取引で終了する現物取引と、
2回(エントリー、決済)が必要な信用取引です。
現在どちらも検証していますが、
この二つは似ているようで全く異なる特徴を持っています。
(現物アービトラージはコインチェック、ザイフ、ビットフライヤー間)
(信用アービトラージはコインチェック、ビットフライヤー間)
現物取引のアービトラージの実際
現物取引の場合、レート差は1000円~3000円くらいまで広がり、
その後数分から数十分後にレートが閉じることが多いです。
しかし、板が薄い場合成行注文だとオーダーが分割されて、
実質的な約定レートが比較的不利になることがあります。
(大きなロットは取引できない)
ちなみに指値注文にすると片方の取引所だけ
オーダーがペンディングのまま、約定しない可能性があります。
信用取引のアービトラージの実際
一方、信用取引の場合、レート差は20000円近くまで広がりますが、
レートが閉じることはありません。(いっても4000円くらい。だいたいbitFlyerのせい)
そのため、レート差が8000円以上になったらエントリー
レート差が5000円以内になったら決済
のような処理が必要です。
※現物のBTCレートと信用のBTCレートは全く別物です。
少ない運用資金でもレバレッジをかけられるのが信用取引ですが、
エントリー後にレート差が開きすぎると強制的に損切り決済になってしまう可能性も0ではありません。
ビットフライヤーの現物レートと信用レートに1万円以上に乖離があることが
諸悪の根源のような気もするのですが、
レートの上下だけ気にするトレーダーたちにとって問題にならないのかもしれません。
まとめると、
取引量が少ない場合、放置プレイの場合は現物取引
取引量が多い場合、相場を監視できる場合は信用取引が向いていると言えると思います。
(論文で使ったら怒られそうな表現…)
ビットコインの取引所間アービトラージの特徴と性質
ちゃんと約定する
FXの場合、業者間アービトラージをやろうとしても、約定拒否だったり、スリップしたりで実際に上手く行くようにするのは、比較的大変です。(業者選びが最重要問題になります。)
しかし、仮想通貨もとい暗号通貨の場合、それらの諸問題はないようです。
意外だったのは、約定拒否しないことはもちろん、スリップもしないことでした。(嘘です。bitFlyerは約定拒否しますし、ZAIFはサーバーダウンしますし、スリップするときは滑ります。)
レート差が激しい
FXでは業者間アービトラージの場合、数pipsを極めることになりますが、ビットコインの場合、1000円以上ずれることが一日に数回~数十回はあります。
もちろん、
片方の業者のBidよりももう片方の業者のAskが1000円以上低い
片方の業者のAskよりももう片方の業者のBidが1000円以上高い
といった状態です。
コインチェックでは、15分間の間に設定したパーセント以上暴騰暴落するとメールで知らせてくれる機能がありますが、あのときに比較的アービトラージのタイミングが発生しています。
ただ、レート差が発生しない安定した相場が続く場合もあるので、
そのときはおとなしく待ちましょう。
差が発生している時間が長い
アービトラージを検査する前では、
「おそらくレート差が発生している時間はせいぜい1秒くらいだろうから、そこら辺を競うにはマルチスレッドで並列処理とかも必要かもな~」とか思っていましたが、
数分~数十分の余裕があります。
つまり、
レート差を検知 → 取引所Aに発注 → 取引所Aのレスポンスを確認 → 取引所Bに発注
と悠長なことをしていても余裕で間に合ってしまいます。(オーダーが分割されて滑るので、やっぱり速度を極めた方が良いです。)
FXの場合、取引所Aの注文のレスポンスを待つ前に取引所Bの注文を出しておかないと、とてもではないですが、間に合いません。
ここら辺も今後変わっていきそうですね。
仮想通貨取引所API各社違い
コインチェック
・レート更新が意外と遅い
->UNIXタイムスタンプをミリ秒にして1000倍にすると更新が早くなります
・APIではビットコインしかトレードできない
・指値・成行注文が可能
・信用取引可能
・取引手数料無料
・1円区切り
・最小注文単位0.005(比較的大きい)
・オーダーが分割されにくい
・スマホアプリが使いやすい(出先で確認しやすい)
・信用取引の決済は決済注文で行う
ZAIF:
・レート更新が早い
・指値注文しかできない(成行不可)
・指値しかできないので、オーダーが残りやすい
->現在のレートよりもかなり太っ腹なレートでオーダーを出すと擬似的に成行注文ができるようです。
・取引手数料は無料どころかボーナスがもらえる
・信用取引不可->2017年9月から可能に
・5円区切り(現時点ではあまり気にならない)
・ランダムサンプリングした中では一番レートがバグってる->bitFlyerの信用レートほどではない
・最小注文単位:0.0001(すごい)
・オーダーが分割されやすい(板がすごい薄い)
・スマホアプリがかなり使いにくい(ブラウザ表示してるだけ)
BitFlyer:
・レート更新はふつう
・指値、成行注文が可能
・取引手数料有料(比較的高い)
・信用取引可能
->この手数料はアービトラージには比較的致命的なレベルです。
・1円区切り
・最小注文単位:0.001(ふつう)
・オーダーがそこそこ分割される
・スマホアプリはまぁまぁ普通
・信用取引の決済は反対売買で行う(決済注文の実装が楽)
・信用取引と現物取引のレートに大きな差がある(10000円くらい)
国内の業者間でアービトラージすると、1000円前後くらいのひらきは頻繁に発生しています。
たまに3000円くらいひらくこともあるという感触です。
これに海外の業者を加えるとさらにひらきは7000円ほどに広がるそうです。
ただ、海外業者の場合法定通貨に変えられない、なんちゃって”ウォレット”取引所が多いので、
選択肢はあまり多くはなさそうです。
また法定通貨に替えられる場合でも、ドル建ての場合はまたちょっとややこしいことになります。
2社に絞った方が良い
FXの場合、5~6社のレートを引っ張ってきてアービトラージのシビアなタイミングを狙ったりしますが、
ビットコインの場合、タイミング自体が頻発しているので2社に絞った方が資金管理が容易です。
問題はどの2社にするのか、ということですが、
まずコインチェックはシステムの安定度、板の厚さから確定です。
残るはZAIFかビットフライヤーですが、どちらも一長一短です。
ビットフライヤーは手数料の問題がありますし、ZAIFは板の薄さの問題があります。
大きなレート差をとっていくパラメータ設定ならビットフライヤーの方が良さそうです。
というか、ある程度大きなレート差でアービトラージしないと手数料とスリッページ負けします。
小さなレート差で回数を重ねる場合はZAIFですが、板が薄いので、
あまり大きなロットはかけるとスリッページ負けします。
一瞬で資金が偏る
アービトラージをすると片方の取引所の資金が円かビットコインに偏り、もう片方の取引所の資金がその逆に偏ります。
よそでは、ビットコインの送金と円の入出金で対応している人が多いみたいですが、すぐに偏ってしまうため、その方法は正直現実的とは思えません。
そのため、アービトラージのタイミングとは逆に、資金の偏りを解消するタイミングをはかり、そのときにビットコインと円を交換する方法にしました。
(適当なタイミングで円とビットコインを交換すると、せっかくアービトラージで稼いだ利ざやが消し飛ぶ可能性があります。)
この方法ならほぼ完全自動で放置が可能です。
稼働中にレートが急激に変化すると業者間の資産がずれる
ビットコインはレートが激しいので、ときたまとんでもない変動をします。そのときに、取引所Aで10万円、取引所Bで10万円分のビットコインを持っていた場合、変動後の資産のバランスが崩れます。
崩れるとどうなるかというと、「片方では取引が発生し、もう片方では取引が発生しない」という状態が発生しています。
こうなるとアービトラージのロジックが崩れてしまいます。
仮想通貨アービトラージに取引所間の送金は必ずしも必要ではない
ここまで話を進めてきていまさら~な感じもするのですが、そもそものところで誤解があるようなので、アービトラージの基本ロジックについて説明したいと思います。
一口にアービトラージといってもいろいろな種類があり、”さや”が発生するところでその差を取りに行けば広義にアービトラージです。
仮想通貨の取引所間アービトラージの場合、送金が必要だと思われている方がいますが、必ずしもそうではありません。
これは、2つの取引所のレートの上下関係が入れ替わるか入れ替わらないのかによって決まります。
ケース1 2つの取引所のレートの上下関係が入れ替わらない、かつ、同じくらいにもならない場合
現物でこのケースは遭遇したことがないのですが、このパターンの場合、取引所間の送金が必要です。レート差が入れ替わらないということはアービトラージを行うとトレードする資金がなくなった時点でプロセスが止まってしまうので、送金を行わなければ次のアービトラージができません。
しかし、送金にも手数料やタイムラグがあるので、送金する仮想通貨はアービトラージに使っているコインとは別にリップルやブロックチェーンに詰りのない仮想通貨にすることをおすすめします。
(ビットコインでアービトラージをしている場合、送金はリップルやUSDTに変えて行うといいですよってことです。)
※上下関係が入れ替わらない例としてコインチェックのレバレッジレートとビットフライヤーのFXレートがありますが、そもそもこの二つは現物ではないので送金うんぬんの話は関係ありません。
ケース2 2つの取引所のレートの上下関係が入れ変わらない、かつ、同じくらいに縮まることがある場合
国内の取引所でよくあるパターンです。この場合、レート差が開いたタイミングでアービトラージを行い、レート差が縮まったタイミングで逆のトレードを行います。
レート差が縮まったタイミングでは損益がほぼ0になるので、アービトラージのタイミングの利益だけが加算されていきます。
これを繰り返すことにより送金をすることなく、アービトラージを繰り返すことが可能です。
ケース3 2つの取引所のレートの上下関係が変わる場合
海外の取引所ではこのパターンが多いです。このケースでは、レート差が開いたタイミングでアービトラージをし、レートの上下関係が変わって、またレート差が開いたタイミングでアービトラージを行います。
どちらのトレードでも利益がでるので、効率はかなりいいです。
しかし、レートの上下関係が入れ替わるということは、それだけレート差の絶対値が広がりにくいということでもあるので、アービトラージを発動するレート差設定は必然的に小さくなります。
ビットコインアービトラージがなぜ深夜にばかり動くのか
今も細々とビットコインのアービトラージを自動で動かしているのですが、
どうやら深夜帯に動くことが多いように感じます。
以前まではビットコインの流通量は中国が一位でしたが、
現在は日本が圧倒的な一位になっています。
そこでふと思ったのですが、
「日中に手動でアービトラージをやっている人が多いのではないか」
という仮説が思い浮かびました。
日本時間の日中にアービトラージをやる人が増えれば増えるほど、
日中の業者間のレート差は消え、アービトラージチャンスが減ります。
深夜帯は手動アービトラージャーが寝ているので、
自動売買アービトラージが稼働するという寸法です。
そもそも、日本人がほとんど保有しているのに、
日中よりも深夜にレート差が発生しまくるというのは変な話ですよね。
FXの場合は、海外の機関投資家のトレード量が大きいので、
これとは逆のことが起きます。
アジア時間はほとんど相場が動かずに、
ヨーロッパ、アメリカの日中に相場が動きやすいってことです。
となると、手動でアービトラージをしている人は
FXのように深夜みんなが寝ている間にやった方が稼げる と思ったりします。
(ホルモンバランス崩壊しますけどね)
この点、夜型の人の方が有利かもしれないですね。
関連記事
-
bitFlyerのAPIの使い方と注意事項
APIを使ってbitFlyerからレートを取得したり、残高を確認したり、オーダーを出す方法まとめです
-
コインチェックのAPIの使い方[PHP]
公開:2017/6/21 PHPプログラマと言っても、いろいろな分野の人がいるわけで、WEB系だか
-
仮想通貨の自動売買API開発 使用言語と方向性
公開:2017/6/21 今ならAPIの仕様の改良により、 CoinCheck、ZAIF、bit
-
ZAIFのAPIの使い方[PHP]
APIを使ってbitFlyerからレートを取得したり、残高を確認したり、オーダーを出す方法まとめです
-
[API]ビットコインスキャルピングの自動売買システムの作り方(Poloniex)
「アービトラージあるからいいじゃん」ってずっと思ってたのですが、(今でも思ってる)スキャルピングに関
コメント
ビットコインアービトラージシステム※ただ使いたい人用
を見て連絡しました。法人様のみということで、使用させて頂きたいのですが可能でしょうか。
千葉県で建築会社、飲食店三軒やっております。現在は投資家として動いております。よろしくお願いします。
初めまして。
ビットコインアービトラージシステムについてウェブにて拝見させて頂きました。
私、法人の一環としてリサーチをさせて頂いているものなのですが、こちらのシステムの使用料について教えて頂きたいです。
よろしくお願い致します。
第三者への販売をしビジネスしたいと思いご連絡させて頂きました。
宜しくお願いします。
アービトラージに興味があります。それぞれの取引所に口座を持っていて試してみたいと思います。よろしくお願いします。
裁定取引にとても興味を持っており、現在色々と勉強中です。
もしよろしければプログラムを見せていただきたいです!
よろしくお願いします。
プログラムはこれまでの記事のコードを寄せ集め+αでできるので、ぜひ試してみてください。
ビットコインアービトラージを初めてみたいと思います。
是非プログラムお譲り下さい。
よろしくお願い致します。