このAdvent Calendarについて
はじめまして、Hohetoと申します。
筆者は普段から「仮想通貨botter」として活動しており、仮想通貨におけるボット構築&運用についての知見やノウハウを発信したりしています。
今回のAdvent Calendarではおそらく複数個の枠を確保できると思いますので、小分けにして体系的にボットについて説明したいと思います。
そもそも、Qiita読者層の中には「仮想通貨ボットって何?(怪しいんじゃないの?)」というイメージを持たれている方も多いのではないでしょうか?
人は自らが知らないものを恐れるといいます。
まずはなんとなくでも構いませんので、**エンジニアスキルと札束で人を殴ってお金を巻き上げる「仮想通貨ボットの世界」**に触れていただければと思います。
仮想通貨ボットとは
エンジニアの方には馴染みがあると思いますが、そもそもボット(bot)とは「何かをトリガーにして特定のタスクを走らせるプログラム」の総称です(例:特定の時刻がきたら自動でツイートするプログラム、など)。
仮想通貨の世界にも様々な種類のボットが存在します。
例えばビットコインの現在価格を知らせるようなものも、広義でいうと「仮想通貨ボット」に分類されるでしょう。
ここでいう「仮想通貨ボット」とは、特に 「利益獲得を目的として仮想通貨取引を自動で行うためのプログラム」 のことを指します。
株式、インデックス、為替などの既存アセットにおいても、自動取引システムは存在します(収益が上がるかどうかは置いておいて)が、仮想通貨ボットによる自動取引も概念としては同じです。
ただ、仮想通貨においては世界中の主要取引所が豊富なAPIを提供しており、リアルタイムにさまざまな情報を取得したり、プログラムから注文を出したりする環境が整っています。
これにより、身近なプログラミング言語やライブラリのみを利用してボットを構築することが可能です。
「システム」という形式張った名称ではなく、よりカジュアルな「ボット」という名称が定着しているのはこのような理由のため、と筆者は考えています。
なお、筆者の自己紹介文に「botter」という記載がありますが、botterとは仮想通貨ボットを構築し、実際に取引をさせて継続的に収益を得ている人たちのことです。
プログラムからの仮想通貨取引
上述の通り、仮想通貨取引所はそれぞれが情報取得や注文受付のためのAPIを提供しています。
ただし、統一規格が存在しないため、それぞれのAPI仕様はバラバラなのが現状です。
これらをカバーするため、共通のフォーマットで各取引所のAPIをラッピングしたオープンソースのライブラリの開発が進んでいます。
本記事では、「ccxt(CryptoCurrency eXchange Trading Library)」というライブラリを取り上げます。
以下の例は、Pythonとccxtを利用してビットコイン(ティッカーシンボル「BTC」)を購入するプログラムです。
import ccxt
api = ccxt.bitflyer({"apiKey": "MY_API_KEY", "secret": "MY_SECRET"})
api.create_order(symbol="BTC/JPY", type="MARKET", side="BUY", amount=0.001)
この例では、日本のbitFlyerという取引所で0.001 BTCを「成行」で購入しています。
たった3行で発注処理が完結していることから、開発効率の高さが伝わってくると思います(当然、実運用するボットではエラーハンドリングを別途行います)。
※「成行」という言葉の意味が分からない方は、「成行 指値」でググってください。
仮想通貨ボットの意義
誕生してからの歴史の浅い仮想通貨は、既存アセットのような厳しい規制が少なく、公的資金や大型ファンドといった大規模な資金を持つプレイヤーの参入もまだまだ少ない状況です。
そんな中で世界中に玉石混合の様々な取引所が存在しており、それぞれ閉じられた市場を展開しているため、歪みや非効率性がそこかしこに存在します。
仮想通貨ボットの意義とは、「これらの歪みや非効率性を収益源として継続的な取引を行い、仮想通貨市場の効率化に貢献すること」です。
個人個人の動きとしては、単純に「継続的・安定的に収益を得る」という経済的インセンティブのもと、収益化できる歪みや非効率性を探す、という逆の手順となります。
上手く収益源を回収できるボットを構築できれば、単純に将来的な値上がりを期待して行う「Buy & Hold」のような投資戦略よりもはるかに安定した収益を生み出すことが可能です。
洗練されたボットは長期的な運用に耐えうる投資戦略として、あなたの資産ポートフォリオの中で第一線級の活躍をしてくれるでしょう。
仮想通貨ボットの一例
例1. 買い注文と売り注文を交互に繰り返すプログラム
安い価格で買ってそれよりも高い価格で売るという、細かく売買を繰り返し行うことで利益を積み上げるプログラム。
買いと売りの差額を積み上げることで収益化を図ります。
例2. 複数の取引所の価格を監視し、鞘が開いたときに注文を行うプログラム
取引所Aで安い価格で買い、取引所Bで高い価格で売ることで、価格の差(鞘、といいます)を収益化するプログラム。
「裁定取引」や「アービトラージ(アビトラ)」と呼ばれます。
詳細やその他のボットについては後述します。
つづく…
本日はここまでです。
次回の更新をお楽しみに!(続くかな…?)