Node.jsで暗号資産アービトラージ

ビットコイントレード中心にNode.jsで実際に作るためのレシピ

ビットコインアービトラージツール自作で損しないために気をつけたいポイント(バグが出ないように注意!)

※このページは2019/5/21に更新されました。

ビットコインアービトラージツールを自作する際に損を出さないための注意点をまとめました。

「これからビットコインアービトラージツールを作ってみたい」
「あまりツールを作ったことないけどちゃんと作れるか不安だ」

という方に読んでほしい記事です。

アービトラージツール自作で失敗しやすい(損してしまう)ポイント

テストコードやテストデータで発注してしまう

テストデータをコード上に直接記載してしまい、そのまま稼働してしまうケースです。

例えば、bitFlyerとcoincheckの価格差をテストしたい際にbitFlyer84万円、coincheck83万円など価格差が開いたテストデータを用意する必要があります。

テスト用のコード(bitFlyer84万円、coincheck83万円)を追加すればテストすることはできますが、コードを汚してしまうので通常はこのようなコーディングはしません。

バグによる誤発注も複数重なると損失が増えるので絶対に避けたいポイントとなります。

ただ、自作ツールだとテスト用の環境準備に労力もかけられないし、ちゃちゃっとテストしたくなりますよね。。

おすすめの対策はNode.jsであればjson-serverを利用して擬似APIからテストデータを取得できるように用意しておくことです。

仮想通貨取引所API利用時に必須のテストデータ用ライブラリ(json-server) - Node.jsで暗号資産アービトラージ

json-serverは導入も簡単なのでそこまで時間も取られません。

configファイルにテストモードフラグを用意して、APIと擬似API(json-server)の切り替えができるようにしておくと便利です。

本来はダメですが、どうしてもテストデータをコードを書く時も、テストモードフラグの判定を入れておくとミスが減ります。

以下はテストモードの時だけテストコードを利用する例です。万が一この状態で稼働してしまっても変数が上書かれることはありません。

if (testMode){
  bitFlyerPrice = 840000;
  coincheckPrice = 830000;
}

ちゃんとテストせずに稼働させてしまう

テストをせずにツールを稼働させてしまうのはかなり危険です。

アービトラージツールは小さな利益を拾っていく取引手法なので、バグで損失が出ると痛いです。

ツール作りは時間がかかるので焦る気持ちはわかりますが、きちんとテストしてから稼働させるようにしましょう。

また、テスト工数を減らすためにもシンプルなつくりにしておくことも重要です。

単体機能の確認(修正したコードの確認)だけでなく、「取引所からAPIでデータを取得して発注するまで」のように一連の流れを意識したテストも思わぬバグが見つかったりするので重要です。

取引手法の選定ミス

ツールのバグとは少し話が変わりますが、そもそも選択した取引手法がミスしていた場合、想定外の損失が発生する場合があります。

例えばアービトラージではビットコインを用意しておく場合は値下がりする変動リスクがあります。

「元々現物として保有しているビットコインを利用しておく」か「ビットコインの値上がりを見込める」などの整理ができていないと、アービトラージでは儲けていてもトータルの資産は減ってしまう可能性もあります。

ツール化する前に本当にその戦略で利益が取れるか実際にシミュレーションしておくと思わぬ見落としを見つけることができます。

また、ツール稼働後もモニタリングしてメンテナンスしていくことが大事です。

サンプルで私が体験した想定外の損失をあげておきます。

・発注のトリガーとする価格差が小さすぎて、約定時のずれで損した
・発注のトリガーとする価格差が小さすぎて、取引手数料で損した
・保有しているビットコイン分だけ信用取引で売りを入れてヘッジしたら、ポジション手数料が利益よりも大きくて損した
・FXと現物の価格差でアービトラージを仕掛けたら、価格差が縮まらずにロスカットされた

アービトラージツールで利益が出ない原因

次にビットコインアービトラージで損はでてないけど、利益も出ない場合の原因をあげておきます。

ビットコインの価格変動がない

ビットコインの価格変動がない場合はアービトラージで利益をあげることができません。

例えば2019年3月は値動きの幅が小さく、価格差がほとんど発生しませんでした。

ツール化できていればお金も時間も損はしないので、価格変動がないときは気長に相場が動くのを待ちましょう。

発注のトリガーとする価格差が小さい

発注のトリガーとする価格差はある程度必要です。

価格差が発生するタイミングは相場が動いている状態のことが多いので多少のバッファを入れておかないと価格変動に飲み込まれてしまうためです。

私は2019年5月現在で3600円で設定しています。月一で設定値や取引所の価格差の分析を行ってブログにも載せているので参考にしてみてください。

最近のビットコインアービトラージの動向・収益(2019年4月) - Node.jsで暗号資産アービトラージ

金額が少ない

アービトラージは仕組み上小さな収益を積み上げていく必要があるのである程度の金額が必要です。

参考までにですが、私はbitFlyer、coincheck、Liquid by Quoineの3つの取引所で120万ぐらいで運用して月0円〜数千円ぐらいの利益です。

Liquid by Quoineはやや他の取引所と価格差が生まれやすい傾向にあるので、投入できる金額が少ない場合は「Liquid by Quoine + どこか1つ」のように少ない取引所で運用するのもおすすめです。

www.kennejs.com

www.kennejs.com