Python

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

virtualcoin
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、データサイエンスの実践として仮想通貨のデータを使った分析を解説していきます!実データをもとに仮想通貨の売買手法をマスターしていきましょう!

こんにちは!スタビジ編集部です!

この記事ではデータサイエンスの実践として”仮想通貨“を使った分析を解説していきます!

ロボたん
ロボたん
最近データサイエンス界隈でも、仮想通貨を使った分析って流行っているよね!なんだか難しそうだけど、、、
ウマたん
ウマたん
そうだね!仮想通貨を自動で売買するBotを開発して稼ぐ”botter“という人が増えているね!

せっかくだし勉強してみよう!

今回は実際に手を動かしつつ「仮想通貨データの取得」~「仮想通貨のデータの分析」までの一連の流れをマスターしましょう!

仮想通貨データの取得

まずは仮想通貨のデータを取得していきましょう!

データの取得にはAPIを利用します!

APIとはアプリケーションプログラミングインターフェースの略であり、ソフトウェアを通して機能などをつなげることのできる仕組みです!

APIについて詳しく知りたい方は以下の記事をチェックしてみてください!

Pythonの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}

実行結果を見てみると、データが収集出来ているのがわかりますね!

  • ask:現在の売り注文の最安価格
  • bid:現在の買い注文の最高価格
  • high:24時間での最高取引価格
  • last:最後の取引の価格
  • low:24時間での最安取引価格
  • volume:24時間での取引量
  • timestamp:現在の時刻

Private APIを使うと実際に注文したりビットコインを送信したりできるので是非公式ページを見てみてください!

また、取引所のAPIによって取得できる通貨の種類や情報が異なるので、ぜひ試してみてください!

ウマたん
ウマたん
仮想通貨は利用できるAPIが豊富!ぜひいろんな情報を取得してみよう!

仮想通貨データをPythonで分析!

次は実際に取得した仮想通貨データの値を用いて「買う」or「売る」を判別するアルゴリズムを実装していきたいと思います!

今回は自動仮想通貨Botでよく用いられる”ボリンジャーバンド“という指標を使っていきます!

ボリンジャーバンド“とは、一定期間の価格データの平均(移動平均線)を中心として、値動きの振れ幅を標準偏差として表示するテクニカル指標の一つです

$$ ±nσ=移動平均(ma_i)±標準偏差(s)×n$$

ボリンジャーバンドを可視化するとこんな感じです

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()

仮想通貨のデータだとデータ量が少ないので、説明のため「株データ」を用いています

virtualcoin

統計学的に相場が正規分布に従う場合、価格は以下の確率でボリンジャーバンド内に収まることになります

  • n=1の時、ボリンジャーバンド内に収まる確率⇒約68.3%
  • n=2の時、ボリンジャーバンド内に収まる確率⇒約95.4%
  • n=3の時、ボリンジャーバンド内に収まる確率⇒約99.7%

上の図では赤線の範囲内が±1σ、緑線の範囲内が±2σ、紫線の範囲内が±3σとなります

こう見ると±2σはだいぶ幅が広く、超えることはなかなかなさそうなのが直感で分かりますね

ボリンジャーバンドの見方は様々ありますが、今回は単純に取得した値が±1σをはみ出したら売買のタイミングとします!

virtualcoin

では「仮想通貨の情報を取得して売買の判定」をする実装を見ていきましょう

import time
import pandas as pd

#1分間に一回情報を取得する
interval = 60
#移動平均期間
duration = 5

df = pd.DataFrame()

while True:
    time.sleep(interval)
    df = df.append(
        {'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('売却する!')

rは先ほどの取得した最新情報(r = requests.get(url, params = pair))です

  1. 取得した最新の情報から取引情報(last)を取り出してデータフレームに”price”として格納します
  2. データが集まったら、移動平均と標準偏差を算出し、ボリンジャーバンドの計算を行います
  3. 取引価格がボリンジャーバンド内に収まるか否かを判定します!

やっていることは「データを取得」⇒「計算」⇒「判定」とめちゃくちゃ複雑ではないな~と実感できたかと思います!

実際の自動売買Botでは売買の部分にPrivate APIを用いて仮想通貨の売り買いを実現しています!

ウマたん
ウマたん
一通り仮想通貨のデータを取得して手を動かしてみると案外最初に感じてた難しい印象はとれたかな!

売買のロジックを考えるのは大変だけど、ぜひいろんな手法を試してみよう!

ちなみに今回は取引所のAPIを利用しましたが、集計して色んな軸で分析するだけなら、Dune Analyticsなどの分析ツールを利用してSQLで取得するのも一つの手です。

以下の記事で詳しく解説しているので是非チェックしてみてください!

Dune Analyticsの使い方について解説!イーサリアムのオンチェーン分析をしてみよう!当サイト【スタビジ】の本記事では、Dune Analyticsというブロックチェーン上のデータを分析できるツールの使い方について解説していきます。使い方を確認した後に実際にイーサリアムのオンチェーン分析をして可視化までおこなっていきます。ぜひ色んな切り口でデータを見てみましょう!...

Python×仮想通貨を勉強する方法

最後にPythonを使って仮想通貨を分析できるようになる勉強法について見ていきましょう。

勉強にはUdemyというプラットフォームがオススメです!

Udemyの講座についていくつか取り上げていきましょう。

【初学者向け】データ分析コンペで楽しみながら学べるPython×データ分析講座

Udemy-course
【オススメ度】
【講師】ウマたん
【時間】4時間
【レベル】初級~中級

手前味噌ですが、データ分析用のコースを私自身が展開しているので是非見てみてください!

分析についてはこのコースを一通り学べば身につけられるようになっています。

\30日以内なら返金無料/

現役シリコンバレーエンジニアが教えるPythonで始めるスクラッチからのブロックチェーン開発入門

Udemy コース ブロックチェーン
【オススメ度】
【講師】シリコンバレーのSplunkで働く現役エンジニア
【時間】4.5時間
【レベル】中級~上級

仮想通貨の基盤技術であるブロックチェーン×Pythonのコースです。

ブロックチェーンのシステムをPythonを使ってスクラッチで開発していきます。

最前線で働く現役エンジニア酒井さんだからこその内容です。

酒井さんの説明は非常に分かりやすく、本当にオススメです!

ブロックチェーンに少しでも興味のある方はぜひ受講してみましょうー!

\30日以内なら返金無料/このコースを見てみる

Pythonで仮想通貨データの分析まとめ

今回は仮想通貨取引所のAPIを利用して、Pythonで「仮想通貨データの取得」から「仮想通貨データの分析」まで学んでいきました!

今回はBotの作成まではいきませんでしたが、手を動かしながら仮想通貨を売買する仕組みに触れられたので、自動売買Botへの難しそうというハードルは下がったかなと思います!

ぜひ、いろんな統計手法を試しながら、自分だけの売買アルゴリズムを作っていきましょう!

ウマたん
ウマたん
億万長者も夢じゃないかも!?
以下の記事で仮想通貨以外にも株データ分析をしているのでぜひチェックしてみてください!
stock
【実践】Pythonで株価取得~分析・予測まで実践してみよう!当サイト【スタビジ】の本記事では、データサイエンスの実践として株価データを使った分析を解説していきます!実データをもとに学習・予測モデルを作る手法をマスターしていきましょう!...

もっと踏み込んでデータ分析の方法について詳しく学びたい方は当メディアが運営するAIデータサイエンス特化スクールの「スタアカ(スタビジアカデミー)」をチェックしてみてください!

スタアカ(スタビジアカデミー)

スタアカトップ公式サイト:https://toukei-lab.com/achademy/

【価格】ライトプラン:1280円/月
プレミアムプラン:149,800円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【Pythonの学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
実際に実データを使った様々なワークを行う

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!

当メディアが運営するスクールです。

24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解などもあわせて学べるボリューム満点のコースになっています!

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます!

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定

Pythonを幅広く学びたい方は以下の記事を参考にしてみてください!

Python独学勉強法
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...
スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら