Innovation Tips

Innovation, Data Science, Research, Business, etc.

ビットコイン(Bitcoin)をはじめとした暗号通貨の分析 [データの取得編02]

前回の続きで、アルトコインのデータ取得を行います。
コードは前回からの続きになるので要注意です。(コードを書く際には前回のコードの続きから開始してください。)

データを取得する対象は、ビットコイン取引所のCoincheckで取引されている以下の暗号通貨です。

ビットコイン (BTC)
・イーサリウム (ETH)
・イーサリウムクラシック (ETC)
リップル (XRP)
ネム (XEM)
ライトコイン (LTC)
ダッシュ (DASH)
・モネロ (XMR)

今回のアウトプットイメージは引き続き以下のような感じです。
coincheck_crypt

アルトコインのデータ取得
今回は、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')

ここまでくると、最終的なアウトプットとして、以下のグラフが得られます。

coincheck_crypt

ざっとここまでで、アルトコインのデータを取得し、グラフに描写することができました。
データを取得することはできましたが、現状としては分析のスタートラインにようやく立てたような状態です。
今後は、具体的な分析方法についても触れていきたいと思います。


所感
ライブドアブログソースコードを書くと、どうしても見にくくなってしまうので、Qiitaなどに投稿してリンクをとばすことも検討します。
・暗号通貨について学習するのは、大きなメリットがあるのではと思いました。経済・ファイナンスの勉強になるのはもちろんのこと、データサイエンスやブロックチェーン、セキュリティなど多くの観点から学ぶことができます。また、定量的な視点だけでなく、地政学などの定性的な視点からも学べるなど、暗号通貨は学習素材としてなかなか良いと思いました。

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin