【データ収集編】仮想通貨Botの作り方
今回は前回の第1章部分の「仮想通貨Botを作る流れ」における、"データの収集"について解説していきます!
1. データ収集の目的
Bitcoinの自動取引Botを作る際には、「特定の条件を満たした場合に売買をする」といったプログラムを作ることになります。その「特定の条件」を決めるためには、少なくとも過去にどのような値動きをしたのかは知る必要があるでしょう。
また、その値動きをした理由を説明するために、値動きの一部を計算したうえで価格以外の指標を作ってみたり、Bitcoin価格以外の指標(NASDAQなどの指標や、SNSで話題に上がった数など…)を参考にして読み解くことも考えられます。
さらに、それを人が読み解いて売買のルールを決めるのではなく、機械学習を用いる場合には、一般的には大量かつ複数のデータを用いて学習を行うことになり、それによってプログラムの精度も変わってくるので、どのようなデータを収集するのかは非常に重要になってきます。
2. 収集するデータ
では、実際にどのような種類のデータが収集すべき候補となるのでしょうか。以下は、私が実際に使っているものも含めて分類と例を挙げました。
(1) 価格データ
Bitcoinの取引価格を時系列データとして記録したもので、主にOHLCデータといわれる特定の期間内の始値、終値、高値、安値を記録したものを用います。実際にBitcoinが今までどのような値動きをしたのかを知るために最も重要といえるデータです。
(例)2024-11-16 10:00: Open: $36,500, High: $36,800, Low: $36,300, Close: $36,750 (OpenのO、HighのH、LowのL、CloseのCを取ってOHLCデータと呼びます)
(2) 取引量データ
取引所で一定期間内にどれだけのビットコインが取引されたかを示すデータです。取引量の増減は市場の活発さや価格変動の強さを示す指標となるため、価格を予測するうえで重要な指標となります。
(例) XXX取引所 1時間足の取引量: 500 BTC
(3) オーダーブック情報
取引所で現在出されている買い注文と売り注文の一覧です。買い板は現在の購入希望価格、売り板は販売希望価格を示し、売買の流動性や強いサポート・レジスタンスレベルを確認し、Botがどの価格で取引をするべきかの指標となりえます。
(4) 経済指標・ニュース
Bitcoinの価格に影響を与える外部の要因です。規制の動向、マクロ経済の変化、大手企業のBitcoin参入などのニュースは、実際にBitcoinの価格に与える影響が大きいことが知られているため、これも収集の方法によりますが、重要なデータとなります。
(5) テクニカル指標
Bitcoinの過去の価格データを元に、今後の価格の方向性を分析する指標です。具体的にはOHLCデータをもとに算出するので、これを単体で集めるというわけではなく、収集したデータをもとに作成します。Botが売買タイミングを決定するために使うことが多いです。
(例)
①移動平均(Moving Average, MA):
過去の平均価格を算出し、トレンドの方向を示します。例えば、短期移動平均が長期移動平均を上抜けた場合は買いシグナルなどです。
②ボリンジャーバンド:
価格の変動範囲を示し、相場が過熱しているかを判断します。具体的には、バンドの上限に近づくと売りシグナル、下限に近づくと買いシグナルなどです。
③RSI(Relative Strength Index):
過去の価格変動を基に売られすぎ・買われすぎを示すオシレーター指標です。具体的には、RSIが30以下なら買いシグナル、70以上なら売りシグナルなどです。
(6) オンチェーンデータ
ブロックチェーン上で記録された取引履歴やウォレットの動向などのデータです。このデータは、ビットコインのネットワーク全体の動きを示す重要な指標になります。
(例)
①アクティブアドレス数:
一定期間内に取引を行ったウォレットの数です。アクティブアドレス数が増加すると、ネットワークの活発さを示し、価格上昇の兆候と見ることがあります。
②ハッシュレート:
ビットコインのネットワークの総計算力を示す指標です。ハッシュレートが上昇すると、マイニング活動が活発でネットワークが安全であると考えられます。
③大口ウォレットの動向:
いわゆるクジラ(大量のビットコインを保有するアドレス)と呼ばれるアドレスが、大きなトランザクションを行うと、市場に大きな影響を与えることがあります。
3. データ収集の方法
例えば「(1) 価格データ」については、実際に取引所のAPIを使用して自分でデータを蓄積していくこともできますし、データセットを収集してくるという方法もあります。
以前はCryptWatchでOHLCデータを過去まで遡って持ってくることができたのですが、最近試したところだと使えなくなっているようなので、Kaggleなどで公開されているデータを使用するのはありかなと思います。
このデータには取引所ごとではありませんが、全体のVolumeも含まれているので、「(2) 取引量データ」としても使えるんじゃないでしょうか。
「(3) オーダーブック情報」は各取引所からデータを取得する必要があり、「(4) 経済指標・ニュース」「(6) オンチェーンデータ」も過去のデータを取得するのはやや難易度高めなので、今後は「(1) 価格データ」「(2) 取引量データ」とそこから算出する「(5) テクニカル指標」を使って価格予測モデルを作る方法を説明していきます。