ゼロから作る自動売買bot開発 ~ 第7回:botの仕様を考察しましょう ~

2018.11.08

furusake-s

こんにちは、BCHNews編集長のfurusake-sです。
連載記事 ゼロから作る自動売買bot開発 ~ 第7回:botの仕様を考察しましょう ~ をお届けします。

連載過去記事一覧

ゼロから作る自動売買bot開発 ~ 第0回:開発を始める前に ~
ゼロから作る自動売買bot開発 ~ 第1回:bot開発は取引所選びから ~
ゼロから作る自動売買bot開発 ~ 第2回:API Documentを読んでPublic APIを呼んでみる ~
ゼロから作る自動売買bot開発 ~ 第3回:API Documentを読んでPrivate APIを呼んでみる ~
ゼロから作る自動売買bot開発 ~ 第4回:API Documentを読んでRealtime APIを呼んでみる ~
ゼロから作る自動売買bot開発 ~ 第5回:APIで色々やってみる(1) ~
ゼロから作る自動売買bot開発 ~ 第6回:APIで色々やってみる(2) ~

雑談

私が別カテゴリで連載中のインタビュー系記事が好評なこともあり、BCHNewsも少しずつではございますが皆様にリーチしてきていると実感しております。それと共に、技術系記事というのは本当に一部のユーザーにしか届かないのだなとも実感しました。

いま、界隈で関心のある出来事というのはなんでしょうかね?BCHのハードフォークでしょうか?先日、BitcoinUnlimitedメンバーで、私にとってビットコインの先生でもあるkenさん( @kenshishido )と、BCHが置かれている現状について意見交換しました。日頃からBCHや暗号通貨界隈全体の未来も予想してたりするんですが、コラム的な記事はあまり書く気が起きないんですよね、なんででしょうか。。

思い返すとBCHNewsはファクトベースの記事が多いように思います。読みたい記事、読んでもらいたい記事、BCHNewsの方向性は未だ手探りでございます。
多くの反響を頂ければ方向性を決めるための材料となるのですが、未だ多くの暗号通貨ユーザーへリーチしていない現状があるため、記事の拡散力向上が急務となっております。

bot開発の方向性

これまで、bitFlyerのAPIを使ったサンプルプログラムを中心にbot開発の前提についてお話してきました。
今回は、実際に注文を市場に出して、その振る舞いについて解説していく、、、前に、一度立ち止まってbotの仕様について考察していきたいと思います。
botを動かすために必要な機能を洗い出してみましょう。・・・まずは3点考えられますね。

注文管理

注文を市場に出す、及び市場に出している注文を管理する機能が必要になります。
Take型の注文のほうがMake型の注文より実装の難易度が下がる気がします。Take型はMake型よりも約定させやすいため、ACTIVEな注文を管理しなくて済むようなアルゴリズムを採用できるためです。

約定管理

約定した注文履歴を集計して、ポジションの平均単価計算や、損益計算、注文執行のトリガー条件などに利用したりします。損益計算については証拠金維持率などを見る別解も考えられるでしょう。botの管理者が状況をモニタリングするためにも使われます。

ポジション管理

FXの場合、long(買い)ポジションあるいはshort(売り)ポジションと言って、保有している通貨の方向と総量をポジションと表現します。FXでない場合は現物を持つなどと表現されます。機能としては証拠金維持率を管理するための機能と考えてもらえればよいでしょう。

次に、いつ、いくら、どの方向に(long or short)注文を出すべきか、それをbotに判断させるための情報も必要となりますね。上の3つの機能群を注文系とすれば、こちらは情報系とでも呼びましょうか?

取引所内部の情報

これまで紹介してきたAPIから得られる情報を意味します。実際に注文を出す場合に必要な情報です。

取引所外部の情報

売買の判断、方向をbotが判断するために必要な情報の一種です。なくてもbotに売買させることは出来ますが、取引所はbitFlyer以外にもたくさんありますし、株式市場や為替市場も参加者が同じだと仮定した場合は暗号通貨市場に影響を及ぼすと考えられるため、参考にするbotは多いことと思います。
株式市場で証拠金が足りなくなってしまった場合、暗号通貨を手放して資金を株式口座に送金しないといけない人達がいるかもしれませんよね?そういうことです。また、キプロスやベネズエラの通貨危機の時のように、法定通貨の信用が急落した際に暗号通貨への退避行動が確認されましたので、こちらも関連はあると考えています。
その他、市場参加者の心理(通称:市場心理)を判断材料とするbotも存在するかもしれません。SNSに投稿されている内容などを情報源にするbotなどが考えられるでしょう。

このような情報をbotに与えることで、botの勝率を高めようと日々、bot開発者界隈は切磋琢磨しています。

これまでの内容は一般論ですが、取引所固有の情報としては、bitFlyerに導入されているSFDという仕組みがあります。
参考リンク:https://bitflyer.com/ja-jp/commission

Lightning FX SFD(Swap For Difference)という仕組み

サイトには以下のように解説があります。

Lightning FX 取引価格と Lightning 現物(BTC/JPY)取引価格が 5% 以上乖離している場合、約定ごとに以下の Lightning FX SFD が発生します。 SFD は約定ごとに発生し、ポジションの決済時に清算されます。ただし、決済注文の約定時には、付与いたしません。

意訳すると、FXで人気がある方向には追加で手数料を徴収することがありますよ、人気がない方向にはマイナス手数料を付与しますよ(新規注文のみで、決済注文は対象外)、ということです。
bitFlyer内で現物とFXの値段に大幅な乖離が生じ続けていた時期があり、対策としてこのSFDという仕組みが導入されました。これを無視すると、bitFlyerのFXで勝率を上げることは難しいでしょう。

その他

botをServer上で連続稼働させるための仕組み(daemon化)
取引所のメンテナンス時間にbotを停止させるための仕組み(cron処理など)
botを動かすための種銭(お金のことです)、この資金量の多寡によっても採用可能なbotの戦略が変わってくるため。

他にもあるかもしれませんが、大体この辺りから次回以降、実装していきましょう。

これまでどのようなbotが生き残ってきたのでしょうか?

未来のbotを語る前に、現在活躍しているbotについて考えてみましょう。

アービトラージ(裁定取引)系

勝率の高いbotとして一番有名なのはアービトラージ系のbotです。
私もこのアービトラージ系のbotを数年にわたり開発・運用しております。
種類としては大まかに分けて2種類あります。

  • BTC-FIAT系
  • FIATとは法定通貨の別称で、日本の場合は日本円(JPY)のことです。暗号通貨と法定通貨のペアを対象とするタイプです。国内においては流動性が高いため利益率は低いですが、BTCとJPYのみを扱うため成績は比較的安定していました。BTC-FXでshortポジションを取り、BTCの値上がり、値下がりの影響を少なくしている人もいるかもしれません。

  • BTC-ALT系
  • BTCとその他の暗号通貨をペアとするタイプです。BTC-ALTはボラティリティがBTC-FIATより大きいため、売買の利益率は高めですが、ALTのダウントレンド時に評価損益が悪化する時期があるなど、FIAT建での確定損益を出すタイミングが難しい手法です。BTC-FIAT、BTC-ALT、ALT-FIATの3つを組み合わせた取引手法も存在します。

取引所間の乖離縮小を前提としたMaker系

前述のアービトラージ系botは勝率は高いのですが、裁定機会が常にあるわけではなく、また大きな注文を一度にとることが難しいという側面があります。一日に稼げる金額は資産の大きさに比例するという面もあるため、資産が少額のbot開発者は敬遠する手法です。

そこで、考えられる手法が乖離縮小を前提としたMaker系botです。BTC-FXでレバレッジがかけれる、longやshortを問わないなど、自由度が高いのがメリットです。また資金を取引所外に移動させる必要もありません。

乖離縮小が予定通りに行われるとした場合、方向を見極めやすいため勝率が高くなりますが、乖離が拡大していく局面の時は証拠金維持率との戦いとなります。たまに裁定機会をわざわざツイートしているアカウントがありますが、自分で裁定しないところをみるとこのタイプの手法を採用しているのでは?と勘ぐってしまいます。

昔は私のところにDMで「お願いします!アビってください!!!」っと連絡を寄越して来るbot開発者がいました。最近は彼からあまりこのような連絡は来なくなりましたが、たまにツイートしているので、おそらく元気にやっているのだろうと思います。

まとめ

さいごは話が横にそれましたが、上の2つは生き残ってきていると考えて間違いないでしょう。
それ以外の戦略についても、検討の余地はありますが全てを書き出すことは難しいので割愛いたします。
このようなbotが動いている環境下で新たなbot戦略を考えていく必要があります。

次回予告

次回こそ、実際に子注文を板に出してみて、Private APIを使った注文管理をやっていこうかと思っています。お楽しみに。

さいごに

記事を読み切って頂いたついでにもう少し下にスクロールして頂けますでしょうか?
『記事をシェア』という文字の下にSNS投稿用のボタンが4つほど配置されているのがわかりますでしょうか・・・。
どれでも構いませんので、ポチッ。ポチッ。っとクリックして頂けると弊社エンジニアが喜びます。
実装したけど使われない機能ってとても悲しいですからね。。お願いします。。m(__)m

最新情報はこちら

BCHNewsでは公式のTwitterアカウント(@bchnews_jp)を開設しました。
更新情報を配信しておりますので、よろしければフォローしていただけると嬉しいです。

furusake-s

BCHNews編集長
セブンバニーズ株式会社 代表取締役
1982年生まれ、大阪府出身、B型
趣味はロードバイク、三国志大戦、イカを釣ること

関連記事

ゼロから作る自動売買bot開発 ~ 第0回:開発を始める前に ~

2018.09.28

by furusake-s

ゼロから作る自動売買bot開発 ~ 第1回:bot開発は取引所選びから ~

2018.10.01

by furusake-s

ゼロから作る自動売買bot開発 ~ 第2回:API Documentを読んでPublic APIを呼んでみる ~

2018.10.03

by furusake-s

ゼロから作る自動売買bot開発 ~ 第3回:API Documentを読んでPrivate APIを呼んでみる ~

2018.10.10

by furusake-s