仮想通貨のポテンシャルをpythonでまとめて取得してみた
使用環境
- python 3.5.1
- Anaconda 4.0.0
前置き
CoinMarketCapというサイトに記載されている情報を元に、仮に他のアルトがビットコインの時価総額に到達した場合、対BTC比でどのぐらいのポテンシャル(現在価格からどのぐらいの倍率で伸びるのか)があるのかをみることで今後のアルトコインのポテンシャル測ることが出来ます。
これは他の上位アルトコインがビットコインのドミナンスを食いつぶした場合のエグジットのポイントの目安にも約に立つと個人的に思っております。
そんなわけで、やっていきたいと思います。
導出手順
APIの取得
まず、CoinMarketCap JSON API Documentation Version1のTicker(相場一覧)を取得するため、APIにGETメソッドをリクエストします。
import urllib.request
import json
url = 'https://api.coinmarketcap.com/v1/ticker/?limit=100'
response = urllib.request.urlopen(url)
cmc_ticker = json.loads(response.read().decode('utf8'))
?limit=
のパラメータの数値を変更することで、取得したい数を変更することができます。ここでは2-100位のポテンシャルを調べたいので100を指定しています。
次にurllib.request.urlopen
にてurl
にリクエストを投げて、返ってきたデータをresponse
に格納します。
これはhttp.client.HTTPResponse
型で格納されているため、.read()
で読み込み、json.loads
にてpythonで扱えるデータ型に変換します。
中身はリスト型にそれぞれのコインが辞書型で格納されています。
以下が実際のデータになります。
[{
"id": "bitcoin",
"name": "Bitcoin",
"symbol": "BTC",
"rank": "1",
"price_usd": "15424.4",
"price_btc": "1.0",
"24h_volume_usd": "22149000000.0",
"market_cap_usd": "258868090810",
"available_supply": "16783025.0",
"total_supply": "16783025.0",
"max_supply": "21000000.0",
"percent_change_1h": "-0.78",
"percent_change_24h": "1.89",
"percent_change_7d": "3.84",
"last_updated": "1515129861"
},
{
"id": "ripple",
"name": "Ripple",
"symbol": "XRP",
"rank": "2",
"price_usd": "3.18734",
"price_btc": "0.00021254",
"24h_volume_usd": "7896020000.0",
"market_cap_usd": "123474825937",
"available_supply": "38739144847.0",
"total_supply": "99993093880.0",
"max_supply": "100000000000",
"percent_change_1h": "-1.3",
"percent_change_24h": "-9.92",
"percent_change_7d": "106.57",
"last_updated": "1515129841"
}]
導出方法
ポテンシャルはビットコイン価格からビットコインとの発行枚数を比較した倍率を割り、更にそれの結果をそれぞれの通貨の価格で割って算出します。って言ってもわかりませんよね。
参考までに、式を記載しておきます。
(BTC価格 ÷ (アルト発行枚数 ÷ BTC発行枚数)) ÷ アルト価格
これを上位100位までに当てはめて実行します。
btc_supply = float(cmc_ticker[0]['available_supply'])
btc_price_usd = float(cmc_ticker[0]['price_usd'])
all_id = []
all_supply = []
all_price = []
potential_result = []
for i in range(len(cmc_ticker) - 1):
all_id.append(cmc_ticker[i + 1]['id'])
all_supply.append(float(cmc_ticker[i + 1]['available_supply']))
all_price.append(float(cmc_ticker[i + 1]['price_usd']))
potential_result.append(round(((btc_price_usd / (all_supply[i] / btc_supply)) / all_price[i]), 2))
まず、はじめにリストの先頭にあるBTCの供給量と価格をそれぞれbtc_supply
, btc_price_usd
に格納します。この際、取り出される情報が文字列であったので、float()
を使って変換しています。
次に上位アルトの名前all_id
(後で、書き出しの際に使用します)、供給量all_supply
、価格all_price
を格納するリストを作成し、.append()
を使用してリストに全てのアルトコインの情報を追加しています。この際、ビットコインの情報が入らないように要素の数を1つずらしています。
それらの情報からポテンシャルを算出し、potential_result
に結果を追加していきます。
書き出し
書き出しには、Pandas
の書き出しが楽なので、それを使用しました。
import pandas as pd
potential_df = pd.DataFrame({'id': all_id, 'potential_result': potential_result}, index=list(range(2, len(cmc_ticker) + 1)))
potential_df.to_csv('cmc_coin_potential.csv')
id
と、potential_result
のデータフレームを作成し、csv
ファイルにて書き出しています。
出力結果は以下のようになります。(見やすいようにPDFで出力しています)
6位でテンバガー、21位でハンドレットバガーを狙えるポテンシャルがあるという結果になりました。勿論、ビットコインと同等の価値になったらの話なんですが、それでも凄いポテンシャルですね。
備考
float
で全て変換しているのは冗長だな、と書いてから思いました。
また、何かアドバイスがあればコメント残して頂ければ幸いです。
では。
Author And Source
この問題について(仮想通貨のポテンシャルをpythonでまとめて取得してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/skikkh/items/bb4234c56b1c9a623d7b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .