Zipline 是一个 Pythonic 算法交易库。 它是一个事件驱动的系统,支持回测检验和实时交易。
Zipline 目前在生产中用作 Quantopian(托管平台) 的测试和实时交易引擎。
使用简单,以便你可以专注于算法开发
带有许多常见的统计数据,包括常用统计方法如移动平均和线性回归
历史数据的输入和性能统计的输出基于 Pandas DataFrames,与现有 python 生态圈能很好融合
一些常用统计和机器学习库,如 matplotlib、scipy、statsmodels 和 sklearn,支持交易系统的开发、数据分析和可视化
下面的代码实现了一个简单的双重移动平均算法。
from zipline.api import ( history, order_target, record, symbol, ) def initialize(context): context.i = 0 def handle_data(context, data): # Skip first 300 days to get full windows context.i += 1 if context.i < 300: return # Compute averages # history() has to be called with the same params # from above and returns a pandas dataframe. short_mavg = history(100, '1d', 'price').mean() long_mavg = history(300, '1d', 'price').mean() sym = symbol('AAPL') # Trading logic if short_mavg[sym] > long_mavg[sym]: # order_target orders as many shares as needed to # achieve the desired number of shares. order_target(sym, 100) elif short_mavg[sym] < long_mavg[sym]: order_target(sym, 0) # Save values for later inspection record(AAPL=data[sym].price, short_mavg=short_mavg[sym], long_mavg=long_mavg[sym])