見出し画像

Pythonでスクレイピングして、仮想通貨・有望アルトコインを探してみたら?

この一年Aidemyなどを利用してpython&機械学習を勉強しているのだけれど、年末の休みになったのでちょっと復習がてら、新しいプロジェクトをしてみた!ターゲットは仮想通貨

仮想通貨の指標として注目される

「買いサポート(Buy Support)」

このところビットコインの値下がりですっかり熱が冷めてきた仮想通貨ですがテクノロジーとしては興味深く、発展の余地のあるものであるので、じっくり勉強するいい機会かなと思って仮想通貨のことを今研究中です!

去年実はビットコインなどの仮想通貨に投資していてそこそこゲインは得たのですが、その時やっていたのは自分の感覚を頼りにする投資。今一つ上がり下がり原因がわからず、コイン価格ののボラティリティが大きそうなものをネットで調べながら、感覚を頼りに投資するのが自分としては嫌でした。

もう少し合理的に投資する方法がないかなと思って調べていたら、twitterなどで積極的に発信されているRYUさんの面白い投稿が!

紹介されていた一つの意見が、

買いサポートを見る方が、時価総額よりコインを

評価するのに有効

です(*1)。

買いサポートとは「買いオーダーの最高値と、最高値から10%低い値段の間にあるオーダーの合計(ドル)」と定義され、実際に売買されている範囲の買いオーダーがどのくらいあるかを評価するものです。

この買いサポートは実際に以下のサイトでみることができるので興味のある方はご覧になってください。

この指標すごく面白くて、このサイトも興味深いですが、一つ問題があります。

この点はRYUさんもmediumですこし述べられているのですが

各種コインの買いサポート額(上のテーブルのBuy Suport)をビットコインの買いサポート額割った値(上のテーブルBuy Support Rating)しかでていないので、買いサポートのインパクトを時価総額が違うコイン同士で比べることが難しいのです。

このため各種コイン同士で比べるには、買いサポート/時価総額で割った値、いわば標準化買いサポート額で比べるべきです(注2)。

このサイト開いていちいち計算するのも面倒ですし、あと興味ある通貨については可能でも、2018年12月27日現在、このサイトにある177種の仮想通貨全体を網羅的に標準化買いサポート額を出すことは難しいです。

そこでpython&スクレイピングの活躍です。

Pythonで草アルトコインを分析してみよう!!

Tinderの自動化ツールでもお世話になったSeleniumを利用したスクレイピングでcoinmarketbookサイトの情報をゲットします。

ライブラリインポート部分はこんな感じ

from selenium import webdriver
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os
import datetime as dt

次にSelenium経由でサイトを開きます。webdriverは前もってダウンロードして任意の場所に置いておいてください。この例ではGoogle Chrome用のドライバーのフォルダーをDesktopに置いてあります。

url = "https://coinmarketbook.cc/"
browser = webdriver.Chrome("/Users/USERNAME/Desktop/chromedriver_win32/chromedriver")
browser.get(url)

実際のデータ取得は、興味のある方には課金部分でご紹介します。

簡単にはseleniumのfind_elements機能をつかってほしい要素のcss_selectorを指定して情報を取ってきます。BSR:Buy Support Rating, BS: Buy Supoort (買いサポート額), MC: Market Cap (時価総額), CP: Current Price(コイン価格), URL(各種コインの情報ページ)ですね。

これを利用して、BS/MC(BSR2):標準化買いサポート額2, MC/BitcoinMC(MCR) :Market Cap Rating, BSR/MCR:標準化買いサポート額(Bitcoinを1としています)を計算し、データフレームに格納し、それを日付時間のついたcsvファイルに出力します。

出力結果はこんな感じ

これだとわかりにくいので、データフレームを表示させると

買いサポートRatingのランキング順ですが、大体メジャーなコインが入っています。そのうち標準化買いサポートが高いのはPundi X, Holo, NEO, Ethereum Classic, EOS, Siacoinとなるのでしょうか?

次に標準化買いサポートの大きい順に並べてみると

時価総額で標準化した買いサポートの大きさをビットコインと比べていることになりますが、Nucleus Vision, Pundi X, Dento, Holo, Odyssey, Neo, Mainframe, metalとちょっと面白い感じのランキングになってきますね!上位層は比較的時価総額が低めなものが多いです。小さくてもキラリとひかるということでしょうか?

ただこれだけだとわかりにくいので、データを可視化してみましょう!

コインデータの可視化

時価総額のlog10値(X軸)、標準化買いサポート値(Y軸)によるとこんな感じになります。

コイン名をオーバレイしてみるとこうなります。

ちょっと意味深なグラフになりましたね。解釈するとこんな感じでしょうか?

・赤は時価総額は低いものの買いサポートの大きいルーキ的なコイン

・緑は時価総額がそこそこ高く買いサポートが大きい有望株

・ピンクは時価総額は大きいものの買いサポートが大きくない(時価総額が大きすぎて標準化買いサポートが伸びない)安定株

・青は時価総額も小さく買いサポートも小さい正真正銘草コイン

といった具合です。

ルーキ的なところをもう少し詳しく見てみると

Nucleus Vison, Dent, Pundi X, Odyssey, Holo, Mainframe, Metal, Moeda Loyalty  Points, Raiden Network Tokon, Cyber Miles

となりますね。

このルーキ的なもの時価総額が小さいと仕手筋的な動きもあるかとちょっとRYUさんにも聞いてみました(この時はEnigmaもなぜかはいっていました)。

Holo, mainframeと良いプロジェクトが抽出できているようですね。

また有望株についてもみてみると

Neo, Ethereum Classic, Eos, OmiseGo, Siacoin, Paxos Standard Token, Zcash

が入ってきます。Zcashは匿名通貨として有名なものとしてしばしばRYUさんもとりあげているものですね。

確かに標準買いサポートだけでものをいうことは難しいのですが、相対的に人気のあるコインをセレクトできる手法なので、これを一時スクリーニング手段として、引っかかってきた個々のコインのプロジェクトを精査して有望なものに投資するというのはありかもしれませんね。

あとRYUさんも指摘されていたのですが、買いサポート額、時価総額ともに日々刻々と変化していくものなので、経時的にチェックして、安定的に買いサポートがあるか、またコイン価格などとの相関をみていくことも重要かもしれません。

最後に一つ僕自身がこの買いサポートを分析する過程で気が付いたのは今まで感覚的に行っていた仮想通貨投資に、簡単ながら地図のようなものがつくれるなということでした。

”Buy support rating separates investments from gambles.”ではないですが、”Normalized buy support separates investments from gambles."だななんて実感しています。

今後ともいろいろな指標を取り入れながら、もう少し精緻に地図をつくり、アルトコイン投資を行っていけたらなと思っています。

注1:ご紹介したcoinmarketbookのサイトには”Market cap is a lie.
Buy support tells the true story. Buy support rating separates investments from gambles.”とあります。

注2:最後まで読んでいただいて次の図を見ていただくとわかるのですが、Buy Support RatingをY軸にとって分析してみると時価総額の要素が多くてコインごとの乖離が悪くなります。

草コイン分析ツールの実装

最後にこの分析でつかったpython codeを有料でシェアします。興味のある方は是非よろしくお願いいたします。

ここから先は

3,290字 / 5画像

¥ 200

この記事が気に入ったらサポートをしてみませんか?