仮想通貨ボット構築に必要な知識体系

みなさんこんにちは。Hohetoです。

本日の記事では、「仮想通貨ボット構築に必要な知識体系」をまとめてみたいと思います。

結論から申し上げますと、仮想通貨ボット構築には、いくつかの異なる領域の知識やスキルが必要であり、**広くて深い**です。
それぞれの知識やスキルの蓄積が、**ボット構築の総合力**につながります。

ただ、全てが揃っていなければボット構築ができないか？と言われると、そんなことはありません。
逆に、知識やスキルが欠けていたとしても**「まず作ってみること」**が重要であり、そのようにして自分に足りない知識やスキルを経験によって補っていくことになります。

# ボット構築に必要な知識体系

本記事では、以下の3種類の領域に大別して整理しました。

- ITスキル
- ドメイン知識
- 戦略構築能力

順を追って説明します。

## その① ITスキル

まずは、エンジニアの方が既に持ち合わせている可能性が最も高い領域です。
仮想通貨ボットはプログラミングによって構築します。小規模なアプリケーションと言ってもいいかもしれません。
高度なスキルが必ずしも必要というわけではありませんが、最低限のスキルセットがないと構築のハードルがぐっと高くなってしまいます。
細分化すると、以下のようなスキルが必要でしょう。

### プログラミングスキル

アプリケーション開発スキル、と言い換えてもよいかもしれません。
コーディングスキルに加えて、モジュール設計スキルなども必要とされるでしょう。
シンプルに発注とキャンセルを繰り返すようなボットであれば1ファイル完結でも問題ないかもしれません。ですが、例えば取引所とのやり取りをまとめてモジュール化したり、抽象化して複数の取引所に対応したり、と様々な課題が現れてきます。
拡張性と汎用性を備えたボットを開発するためには、それなりの設計スキルと実装スキルが必要です。

### インフラ系スキル

ボットの運用サーバ（アプリケーションサーバの位置づけ）やネットワークインフラ、分析やロギングのためのデータベースなど、インフラ系スキルも必要です。
AWSやGCPといったクラウドサービスの知識も時には必要になります。


## その② ドメイン知識（＝仮想通貨と資産運用・トレードの知識）

続いて、ボットの対象となる実領域の知識です。
おそらく、仮想通貨トレードに慣れ親しんでいない読者は、ここの知識はほとんど持ち合わせていないと思います。
例えば以下のような知識のことです。

- そもそも、現物とデリバティブとは似て非なるものである。
- 流動性の少ない銘柄で成行注文をぶっ放すと、スリッページコストが大きくなる。
- bitFlyerのビットコインFXには、SFDという特殊な手数料が存在する。


**「なんのことやら分からない…！！（呪文？）」**と思われるでしょう。
そもそも聞いたこともない単語のオンパレードかと思います。が、ご安心ください。
全員、最初はそうです。分からないことにストレスを抱えず、新しい知識を身に着けられることを楽しむ姿勢が大切だと思います。

もう少し細分化して説明します。

### 仮想通貨の知識

取引の対象について理解することは、とても重要です。
ビットコインとはそもそもどういった製品であるのか？どのような歴史を歩んできたのか？を知ると、以下のような質問に答えられるようになります。

「ビットコインを買おうとしている人は、なぜ買いたいと思っているのか？」
「ビットコイン価格には周期性があると言われているが、なぜなのか？」
「ビットコインは高額になってしまっているため、ビットコインキャッシュという似た製品を買ってもいいのか？」

また、ビットコイン以外にも多彩な製品があります。
例えばイーサリアムの特徴はなんでしょうか？ビットコインではなくイーサリアムを買おうとしている人は、なぜそう思ってるのでしょうか？

主要な銘柄に絞っても、将来有望に見えるものは数十種類を超えるでしょう。
中身が価格に追いついていなかった、2017～2018年のバブル期とは異なります。
様々なブロックチェーンと通貨が多彩な特色を備えて競争しあい、それぞれが数年の稼働実績、優秀な開発陣と多額の資金、そして数億ドル以上の取引高を誇るアプリケーション群を擁しているのが、現在の仮想通貨の世界です。


### 資産運用の知識

資産運用の知識も必要です。
一般的に、資産運用はリスクと引き換えにリターンを得ます。リスク・プレミアムと言ったりします。
リスクとは「危険なこと」という意味ではなく、「変動がある」という意味です。

例えば、預金に対する利息は、基本的にマイナスになることはありませんが、このようなリスクの少ない運用はリターンも低い傾向にあります。
株式で資産運用をしようとすると、年間のリスクが±10～20%でしょうか？そして平均リターンは5～10%程度を期待するイメージです。

ご存じの通り、仮想通貨のリスクは株式のそれよりもさらに大きいです。

- このようなリスクの大きい資産に対し、我々が取れるのはどのような対策でしょうか？
- ポートフォリオ理論とはどのような理論でしょうか？
- 「分散投資はリスクを減らす」は本当でしょうか？
- アセットアロケーションとはなんでしょうか？
- 将来有望という話を聞いた銘柄には、資産の何％を振り分けるのが適切でしょうか？

そして、資金をまるごと失って退場しないために、資金管理をしなければなりません。
資金管理とはどういう意味でしょうか？

### 取引の知識

長くなってきましたので、以下のような知識のことです。

- 成行と指値（テイカーとメイカー）とは何か。どのような違いや特徴があるのか。
- スプレッドとは何か。
- 取引コストを下げるには、どうすればよいか。
- 金利、ファンディングレートとは何か。
- レバレッジを味方につけるには、どのようなコツがあるか。

### 取引所の理解

この領域の知識は、自分自身でいろいろな取引所を使ってみないと分からないと思います。
例えば以下のような知識のことです。

- 手数料体系。どの取引所の手数料体系が、自分のボットと相性がいいのか。
- 毎日、定期的な時刻に入っている注文は、誰が出しているのか。
- それぞれの取引所のAPIのクセ（例えば実際に注文したら、どの程度の時間で反映されるか）。

など。

## その③ 戦略構築能力

最後に、収益を上げるために最も必要な能力です。
取引所や銘柄、時間軸など様々な条件により、収益化のために必要な特徴把握と戦略構築能力が必要です。
通常は、試行錯誤して運用を続けながら勝ち筋を発見し、この戦略構築能力を養っていくことになります。

一度習得してしまえば他取引所や他銘柄などに横展開可能なケースがあるので、最初の収益化までが最も険しい道のりです。

### 収益源の探索スキル

ボットで回収したい「収益源」を探すためのスキルです。
メジャーな収益源については別の日に説明したいと思いますが、仮想通貨の世界では収益源はそこかしこに存在しています。
その収益源を「見つける」スキルと、見つけた収益源を「回収する」スキルの両方が必要になります。
回収できない「見せかけの収益源」もあるのです（というか回収できないものがほとんど）。

### 統計学およびデータサイエンスの知識

収益源探索のサブ的な知識です。
手元にある既存のデータを詳細に分析することで、収益につながる何かを発見できるかもしれません。
きちんとした統計学の基礎とデータサイエンス領域の知識が力を発揮するでしょう。
機械学習スキルも、必須ではありませんが持ち合わせているなら強力な武器の1つとなるでしょう。

### 執行戦略の検討スキル

探索して得られた収益源を回収するための執行戦略（どのように注文を出すか、など戦略を具体的にどう実行するかという方針）を策定するためのスキルです。
収益源を回収して利益が出せるかどうかはコストとの兼ね合いになることが多く、いかにコストを削減するか、という戦いになります。
この領域は、「取引所の理解」と密接に関わりがあり、それぞれの取引所に応じて最適な執行戦略は異なります。
経験がものをいう領域ですので、様々な取引所で様々なアプローチを試して、知識を蓄積していくことが必要です。

## まとめ

軽くまとめただけで、相当な量になってしまいました。
これからbotterになろうかな？という方にとって、意志を挫く内容になってしまったかもしれません（まあそれはそれでよし）。

前述した通り、これら全ての知識を最初に全て身につけておく必要はありません。
興味が湧いた時点でまずは試しに簡単なボットを作っておき、実践をしながら知識・スキルを習得していく、という流れが現実的だと思います。

それにしてもお金を稼ぐのって大変ですね。

そして現在進行形でbotterをやっている皆さん！
**皆さんすごいですわ！これだけ広くて深い領域に向かい合って、開発に励み、利益まで出してるなんて、尊敬しますわ！**


# つづく…

本日はここまでです。

次回の更新をお楽しみに！（続くかな…？）