【実践】Pythonで仮想通貨データを取得して分析してみよう!

目次
ウマたん当サイト【スタビジ】の本記事では、データサイエンスの実践として仮想通貨のデータを使った分析を解説していきます!実データをもとに仮想通貨の売買手法をマスターしていきましょう!
こんにちは!スタビジ編集部です!
この記事ではデータサイエンスの実践として”仮想通貨“を使った分析を解説していきます!
ロボたん最近データサイエンス界隈でも、仮想通貨を使った分析って流行っているよね!なんだか難しそうだけど、、、
ウマたんそうだね!仮想通貨を自動で売買するBotを開発して稼ぐ”botter“という人が増えているね!
せっかくだし勉強してみよう!
今回は実際に手を動かしつつ「仮想通貨データの取得」~「仮想通貨のデータの分析」までの一連の流れをマスターしましょう!
仮想通貨データの取得
まずは仮想通貨のデータを取得していきましょう!
データの取得にはAPIを利用します!
APIとは”アプリケーションプログラミングインターフェース”の略であり、ソフトウェアを通して機能などをつなげることのできる仕組みです!
APIについて詳しく知りたい方は以下の記事をチェックしてみてください!
【5分で分かる】Pythonを使って様々なサービスのAPIを利用してみよう!当サイト【スタビジ】の本記事では、Pythonを使ってSlackやGoogleのAPIを利用していきます!APIを利用することで非常に様々なことができるので是非試してみましょう!APIを使えるようになると幅が広がりますよ!
仮想通貨を扱う仮想通貨取引所の多くでは2種類のAPIを用意しています
- “Public API“:認証が不要、取引所の注文状況や公開されている取引の履歴、板情報を参照出来ます
- “Private API“:APIキーによる認証が必要、取引所での新規注文やそのキャンセル、自分の残高などを確認出来ます
今回は仮想通貨取引所「Coincheck」で用意されているAPIを利用して、ビットコインの最新情報を取得します!
Public APIを利用するので、Coincheckへの会員登録などは不要です
import requests
from pprint import pprint
endpoint = 'https://coincheck.com'
path = '/api/ticker'
url =endpoint + path
pair = {
'pair': 'btc_jpy'
}
r = requests.get(url, params = pair)
pprint(r.json())
CoincheckではベースのURL「https://coincheck.com」に各APIのURL「/api/~」を組み合わせたものにアクセスすることで各種APIを利用できます!
最新情報を取得する場合「ティッカー」というAPIを利用するので、リクエスト先は「https://coincheck.com」+「/api/ticker」となります
また、パラメーターで取得したいコインの種類を指定することも出来ます
{'ask': 5458579.0,
'bid': 5457080.0,
'high': 5482155.0,
'last': 5457510.0,
'low': 5391070.0,
'timestamp': 1648365754,
'volume': 936.2452743}
実行結果を見てみると、データが収集出来ているのがわかりますね!
Private APIを使うと実際に注文したりビットコインを送信したりできるので是非公式ページを見てみてください!
また、取引所のAPIによって取得できる通貨の種類や情報が異なるので、ぜひ試してみてください!
ウマたん仮想通貨は
利用できるAPIが豊富!
ぜひいろんな情報を取得してみよう!
仮想通貨データをPythonで分析!
次は実際に取得した仮想通貨データの値を用いて「買う」or「売る」を判別するアルゴリズムを実装していきたいと思います!
今回は自動仮想通貨Botでよく用いられる”ボリンジャーバンド“という指標を使っていきます!
“ボリンジャーバンド“とは、一定期間の価格データの平均(移動平均線)を中心として、値動きの振れ幅を標準偏差として表示するテクニカル指標の一つです
ボリンジャーバンドを可視化するとこんな感じです
plt.figure(figsize=(15,5))
plt.plot(df.index, df["Close"], label="Close", color='black', linestyle='solid', linewidth = 5.0)
plt.plot(df.index, df["sma"], label="sma")
plt.plot(df.index, df["-1σ"], label="-1σ", color='red')
plt.plot(df.index, df["+1σ"], label="+1σ", color='red')
plt.plot(df.index, df["-2σ"], label="-2σ", color='green')
plt.plot(df.index, df["+2σ"], label="+2σ", color='green')
plt.plot(df.index, df["-3σ"], label="-3σ", color='purple')
plt.plot(df.index, df["+3σ"], label="+3σ", color='purple')
plt.legend()
仮想通貨のデータだとデータ量が少ないので、説明のため「株データ」を用いています

統計学的に相場が正規分布に従う場合、価格は以下の確率でボリンジャーバンド内に収まることになります
上の図では赤線の範囲内が±1σ、緑線の範囲内が±2σ、紫線の範囲内が±3σとなります
こう見ると±2σはだいぶ幅が広く、超えることはなかなかなさそうなのが直感で分かりますね
ボリンジャーバンドの見方は様々ありますが、今回は単純に取得した値が±1σをはみ出したら売買のタイミングとします!

では「仮想通貨の情報を取得して売買の判定」をする実装を見ていきましょう
import time
import requests
import pandas as pd
#1分間に一回情報を取得する
interval = 60
#移動平均期間
duration = 5
df = pd.DataFrame()
while True:
time.sleep(interval)
# 最新の情報を取り直す
r = requests.get(url, params = pair)
df = pd.concat(
[df, pd.DataFrame([{'price': r.json()['last']}])], ignore_index=True
)
if len(df) < duration:
continue
df['SMA'] = df['price'].rolling(window=duration).mean()
df['std'] = df['price'].rolling(window=duration).std()
df['-1σ'] = df['SMA'] - df['std']*1
df['+1σ'] = df['SMA'] + df['std']*1
print(df)
# 取引価格が-1σを下回ったら買いを入れる
if df['price'].iloc[-1] < df['-1σ'].iloc[-1]:
print('購入する!')
# 取引価格が+1σを超えたら売りを入れる
if df['+1σ'].iloc[-1] < df['price'].iloc[-1]:
print('売却する!')
urlとpairは先ほど最新情報を取得したときのものです。ループの中で1分ごとに最新情報を取り直しています
- 取得した最新の情報から取引情報(last)を取り出してデータフレームに”price”として格納します(pandas 2.0で
appendがなくなったので、pd.concatで1行ずつ足しています) - データが集まったら、移動平均と標準偏差を算出し、ボリンジャーバンドの計算を行います
- 取引価格がボリンジャーバンド内に収まるか否かを判定します!
やっていることは「データを取得」⇒「計算」⇒「判定」とめちゃくちゃ複雑ではないな~と実感できたかと思います!
実際の自動売買Botでは売買の部分にPrivate APIを用いて仮想通貨の売り買いを実現しています!
ウマたん一通り仮想通貨のデータを取得して手を動かしてみると案外最初に感じてた難しい印象はとれたかな!
売買のロジックを考えるのは大変だけど、ぜひいろんな手法を試してみよう!
ちなみに今回は取引所のAPIを利用しましたが、集計して色んな軸で分析するだけなら、Dune Analyticsなどの分析ツールを利用してSQLで取得するのも一つの手です。
以下の記事で詳しく解説しているので是非チェックしてみてください!
Dune Analyticsの使い方について解説!イーサリアムのオンチェーン分析をしてみよう!当サイト【スタビジ】の本記事では、Dune Analyticsというブロックチェーン上のデータを分析できるツールの使い方について解説していきます。使い方を確認した後に実際にイーサリアムのオンチェーン分析をして可視化までおこなっていきます。ぜひ色んな切り口でデータを見てみましょう!
Python×仮想通貨を勉強する方法
最後にPythonを使って仮想通貨を分析できるようになる勉強法について見ていきましょう。
勉強にはUdemyというプラットフォームがオススメです!
Udemyの講座についていくつか取り上げていきましょう。
【初心者向け】Pythonで分かるブロックチェーン・ビットコインの仕組み!手を動かして学ぼう!
| 【時間】 | 2.5時間 |
|---|---|
| 【レベル】 | 初級 |
手前味噌になりますが、私自身が講師を務める講座です。
コンパクトにブロックチェーン・ビットコインの仕組みについてPythonで手を動かしながら学べる講座になっていますので是非チェックしてみてください!
今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください!
現役シリコンバレーエンジニアが教えるPythonで始めるスクラッチからのブロックチェーン開発入門
| 【オススメ度】 | |
|---|---|
| 【講師】 | シリコンバレーのSplunkで働く現役エンジニア |
| 【時間】 | 4.5時間 |
| 【レベル】 | 中級~上級 |
仮想通貨の基盤技術であるブロックチェーン×Pythonのコースです。
ブロックチェーンのシステムをPythonを使ってスクラッチで開発していきます。
最前線で働く現役エンジニア酒井さんだからこその内容です。
酒井さんの説明は非常に分かりやすく、本当にオススメです!
ブロックチェーンに少しでも興味のある方はぜひ受講してみましょうー!
Pythonで仮想通貨データの分析まとめ
ここまでご覧いただきありがとうございました!
今回は仮想通貨取引所のAPIを利用して、Pythonで「仮想通貨データの取得」から「仮想通貨データの分析」まで学んでいきました!
今回はBotの作成まではいきませんでしたが、手を動かしながら仮想通貨を売買する仕組みに触れられたので、自動売買Botへの難しそうというハードルは下がったかなと思います!
ぜひ、いろんな統計手法を試しながら、自分だけの売買アルゴリズムを作っていきましょう!
ウマたん億万長者も夢じゃないかも!?
以下の記事で仮想通貨以外にも株データ分析をしているのでぜひチェックしてみてください!
【実践】Pythonで株価取得~分析・予測まで実践してみよう!当サイト【スタビジ】の本記事では、データサイエンスの実践として株価データを使った分析を解説していきます!実データをもとに学習・予測モデルを作る手法をマスターしていきましょう!
もっと踏み込んでデータ分析の方法について詳しく学びたい方は当メディアが運営するAIデータサイエンス特化スクールの「スタアカ(スタビジアカデミー)」をチェックしてみてください!
公式サイト:https://toukei-lab.com/achademy/
| 【価格】 | ライトプラン:1,280円/月(全コースが受講し放題) プレミアムプラン:129,800円(通常149,800円・買い切り) |
|---|---|
| 【オススメ度】 | |
| 【サポート体制】 | |
| 【受講形式】 | オンライン形式 |
| 【Pythonの学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ 実際に実データを使った様々なワークを行う |
データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!
当メディアが運営するスクールです。
月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です!
プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1(30分×4回)を実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解などもあわせて学べるボリューム満点のコースになっています!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます!
Pythonを幅広く学びたい方は以下の記事を参考にしてみてください!
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。読んだ内容を、スタアカの「ブロックチェーン×データ分析」コースで身につける
データサイエンス・AIを、動画と課題で体系的に学べるオンラインスクール。






