環境
- MacOS Sierra 10.12.6
- Python 3.5.3 :: Anaconda 4.4.0 (x86_64)
- Jupyter 4.3.0
背景
- ここ数ヶ月、Bitcoinよりも値上がりすることを期待して色々なアルトコイン(Bitcoin以外の仮想通貨)を売買してきたが、振り返ってみると最初にBitcoinを買ってそのままにしておいた方が儲かっていたことに気づいてしまった。
問題
- 仮想通貨は種類が多い上、ほとんどは日本円や米ドルではなく、Bitcoinとしかペアで購入できないため、パフォーマンスがわかりづらい。
- 仮想通貨は価格帯がバラバラ(2017年9月現在Bitcoinは45万円前後、Rippleは22円前後、など)のため、横並びでパフォーマンスを比較しづらい。
解決
- 価格ではなく騰落率にフォーカスするため、パフォーマンスを比較したい複数の仮想通貨について、ある時点の価格を0に揃えてそこからの騰落率をチャートにした。
- **作成したものはこちら(チャートは10分おきに更新):**https://cryptocurrencynews.hatenablog.com/
仕様
- pandas、matplotlib、poloniexなど必要となるモジュールをインポート
import pandas as pd
from pandas import Series,DataFrame
from datetime import datetime
import time
import matplotlib.pyplot as plt
from matplotlib.pylab import rcParams
%matplotlib inline
import seaborn as sns
sns.set_style('whitegrid')
rcParams['figure.figsize'] = 20, 10
# PoloniexのAPIを使うためのモジュール
import poloniex
- PoloniexのAPIを使って過去1週間分の30分毎の価格を取得(下記はBTCのみ記述、他の仮想通貨も同様)
polo = poloniex.Poloniex()
# 過去7日間の価格を取得
d = 7
# 30分毎の価格を取得(単位は秒)
p = 1800
# Poloniexより価格を取得
btc_chart_data = polo.returnChartData('USDT_BTC', period=p, start=time.time()-polo.DAY*d, end=time.time())
btc_df = pd.DataFrame(btc_chart_data)
- 取得した価格より騰落率を算出(下記はBTCのみ記述、他の仮想通貨も同様)
# 直前の値からの騰落率を算出
btc_list = [0]
j = len(btc_df.index) - 1
for i in range(j ):
l = (float(btc_df['close'].iloc[i + 1]) / float(btc_df['close'].iloc[i ]) -1) * 100
btc_list.append(l)
# 最初の時点から通しの騰落率を算出
m = 0
btc0_list = []
for i in range(j):
m = m + float(btc_list[i])
btc0_list.append(m)
btc_losers_df = pd.DataFrame(btc0_list)
- 各仮想通貨の1週間前からの騰落率を一つのチャートに表示(下記はBTCのみ記述、他の仮想通貨も同様)
# BTCの騰落率をチャートに表示
plt.plot(btc_losers_df.astype(float), label = 'BTC')
# 他の仮想通貨についても同様に記述(plt.plot(eth_losers_df.astype(float), label = 'ETH') ...など)
plt.legend(loc='best',
fontsize=14,
borderaxespad=0.,)
plt.tick_params(labelsize=14)
# 生成したチャートを画像として保存
plt.savefig("/var/www/html/all.png")
plt.show()
まとめ
- 上記チャートの例からは、1週間前にBCHかLTCを購入しておけば10~15%前後の利益を得られていたことなどが読み取れる。
- 時期によってはBTCとアルトコインの相対的な値動きが激しいため、これを意識してBTC建てでの売買を行うことで、日本円を投入せず既に持っているBTCの枚数を増やすことができる可能性がある。
- **現時点のチャートはこちら(チャートは10分おきに更新):**http://www.cryptocurrencies.tokyo/