コードは前回からの続きになるので要注意です。(コードを書く際には前回のコードの続きから開始してください。)
データを取得する対象は、ビットコイン取引所のCoincheckで取引されている以下の暗号通貨です。
・ビットコイン (BTC)
・イーサリウム (ETH)
・イーサリウムクラシック (ETC)
・リップル (XRP)
・ネム (XEM)
・ライトコイン (LTC)
・ダッシュ (DASH)
・モネロ (XMR)
今回のアウトプットイメージは引き続き以下のような感じです。
■アルトコインのデータ取得
今回は、Poloniexからデータを引っ張ってきます。
少し、一気にコードを書いていきます。
def get_json_data(json_url, cache_path):
'''Download and cache JSON data, return as a dataframe.'''
try:
f = open(cache_path, 'rb')
df = pickle.load(f)
print('Loaded {} from cache'.format(json_url))
except (OSError, IOError) as e:
print('Downloading {}'.format(json_url))
df = pd.read_json(json_url)
df.to_pickle(cache_path)
print('Cached {} at {}'.format(json_url, cache_path))
return df
base_polo_url = 'https://poloniex.com/public?command=returnChartData¤cyPair={}&start={}&end={}&period={}'
start_date = datetime.strptime('2015-01-01', '%Y-%m-%d') # get data from the start of 2015
end_date = datetime.now() # up until today
pediod = 86400 # pull daily data (86,400 seconds per day)
def get_crypto_data(poloniex_pair):
'''Retrieve cryptocurrency data from poloniex'''
json_url = base_polo_url.format(poloniex_pair, start_date.timestamp(), end_date.timestamp(), pediod)
data_df = get_json_data(json_url, poloniex_pair)
data_df = data_df.set_index('date')
return data_df
altcoins = ['ETH','LTC','XRP','ETC','DASH','XMR','XEM']
altcoin_data = {}
for altcoin in altcoins:
coinpair = 'BTC_{}'.format(altcoin)
crypto_price_df = get_crypto_data(coinpair)
altcoin_data[altcoin] = crypto_price_df
for altcoin in altcoin_data.keys():
altcoin_data[altcoin]['price_usd'] = altcoin_data[altcoin]['weightedAverage'] * btc_usd_datasets['avg_btc_price_usd']
combined_df = merge_dfs_on_column(list(altcoin_data.values()), list(altcoin_data.keys()), 'price_usd')
combined_df['BTC'] = btc_usd_datasets['avg_btc_price_usd']
df_scatter(combined_df, 'Cryptocurrency Prices (USD)', seperate_y_axis=False, y_axis_label='Coin Value (USD)', scale='log')
ここまでくると、最終的なアウトプットとして、以下のグラフが得られます。
ざっとここまでで、アルトコインのデータを取得し、グラフに描写することができました。
データを取得することはできましたが、現状としては分析のスタートラインにようやく立てたような状態です。
今後は、具体的な分析方法についても触れていきたいと思います。
所感
・ライブドアブログでソースコードを書くと、どうしても見にくくなってしまうので、Qiitaなどに投稿してリンクをとばすことも検討します。
・暗号通貨について学習するのは、大きなメリットがあるのではと思いました。経済・ファイナンスの勉強になるのはもちろんのこと、データサイエンスやブロックチェーン、セキュリティなど多くの観点から学ぶことができます。また、定量的な視点だけでなく、地政学などの定性的な視点からも学べるなど、暗号通貨は学習素材としてなかなか良いと思いました。