Zipline学习笔记
Update on 20181227 re-install the zipline based on Unbuntu 18.04
Steps:
Install:
sudo pip uninstall zipline
sudo apt install python3-pip
sudo pip3 install zipline
QUANDL_API_KEY=[QUANDL_KEY] zipline ingest -b quandl
Run:
zipline run --bundle quantopian-quandl -f buyapple.py -s 2016-01-01 -e 2018-12-01 -o apple.pickle
Plot with Pandas:
with python3
>>> import pandas as pd
>>> perf = pd.read_pickle('apple.pickle')
>>> perf.head()
Plot with Matplot
sudo pip3 install matplotlib
zipline run -f mavggoogle.py -s 2016-01-01 -e 2018-12-01
plot function:
def analyze(context, perf):
ax1 = plt.subplot(211)
perf.portfolio_value.plot(ax=ax1)
ax1.set_ylabel('portfolio value in $')
ax1.set_xlabel('time in years')
ax2 = plt.subplot(212, sharex=ax1)
perf['GOOG'].plot(ax=ax2)
perf[['short_mavg', 'long_mavg']].plot(ax=ax2)
perf_trans = perf.ix[[t != [] for t in perf.transactions]]
buys = perf_trans.ix[[t[0]['amount'] > 0 for t in perf_trans.transactions]]
sells = perf_trans.ix[[t[0]['amount'] < 0 for t in perf_trans.transactions]]
ax2.plot(buys.index, perf.short_mavg.ix[buys.index], '^', markersize=10, color='m')
ax2.plot(sells.index, perf.short_mavg.ix[sells.index],'v', markersize=10, color='k')
ax2.set_ylabel('price in $')
ax2.set_xlabel('time in years')
plt.legend(loc=0)
plt.show()
Plot with pyfolio:
sudo pip3 install pyfolio
import pyfolio as pf
import pandas as pd
results = pd.read_pickle('apple.pickle')
returns, positions, transactions = pf.utils.extract_rets_pos_txn_from_zipline(results)
pf.plot_drawdown_periods(returns, top=5).set_xlabel('Date')
pf.create_full_tear_sheet(returns, positions=positions, transactions=transactions, live_start_date='2018-01-01', round_trips=True)
Python3 没有兼容问题。只有Python2才有下面的问题:
目前遇到一个问题就是zipline和pyfolio使用的pandas版本不兼容。需要在不同的环境下运行才可以。这里也有记录
但是有一个图形问题: https://github.com/quantopian/pyfolio/issues/485
Comments