Zipline

Gitter version status travis status appveyor status Coverage Status

Zipline是Pythonic算法交易库. 它是一个事件驱动的回测系统. Zipline当前在生产中用作回溯测试和实时交易引擎,为Quantopian提供了动力-Quantopian是一个免费的,以社区为中心的托管平台,用于构建和执行交易策略.

Features

  • 易于使用: Zipline尝试摆脱束缚,使您可以专注于算法开发. 参见下面的代码示例.
  • "包含电池":可以从用户编写的算法中轻松访问许多常用统计信息,例如移动平均值和线性回归.
  • PyData集成:历史数据的输入和性能统计数据的输出均基于Pandas DataFrames,可以很好地集成到现有的PyData生态系统中.
  • 统计和机器学习库:您可以使用matplotlib,scipy,statsmodels和sklearn之类的库来支持最新交易系统的开发,分析和可视化.

Installation

Installing With pip

假设您具有所有必需的非Python依赖项(请参见下面的注释),则可以通过以下方式通过pip安装Zipline:

$ pip install zipline

注意:通过pip安装Zipline比使用普通的Python软件包要复杂得多. 如果您以前从未安装过任何科学的Python软件包,则仅运行pip install zipline可能会失败.

额外复杂性有两个原因:

  1. Zipline附带了几个C扩展,这些扩展需要访问CPython C API. 为了构建C扩展, pip需要访问CPython头文件以进行Python安装.
  2. Zipline依赖于numpy ,Python中用于数字数组计算的核心库. Numpy取决于是否有LAPACK线性代数例程可用.

因为LAPACK和CPython标头是二进制依赖项,所以安装它们的正确方法因平台而异. 在Linux上,用户通常通过aptyumpacman类的包管理器来获取这些依赖项. 在OSX上, Homebrew是提供相似功能的流行选择.

有关获取特定平台的二进制依赖性的更多信息,请参见完整的Zipline安装文档 .

conda

另一种安装Zipline的方法是通过conda软件包管理器,它是Anaconda的一部分,或者可以通过pip install conda进行pip install conda .

Once set up, you can install Zipline from our Quantopian channel:

$ conda install -c Quantopian zipline

当前支持的平台包括:

  • GNU / Linux 64位
  • OSX 64位
  • Windows 64位

Note

Windows 32位可能有效; 但是,当前不包含在连续集成测试中.

Quickstart

请参阅我们的入门教程 .

以下代码实现了一个简单的双重移动平均算法.

from zipline.api import order_target, record, symbol

def initialize(context):
    context.i = 0
    context.asset = symbol('AAPL')


def handle_data(context, data):
    # Skip first 300 days to get full windows
    context.i += 1
    if context.i < 300:
        return

    # Compute averages
    # data.history() has to be called with the same params
    # from above and returns a pandas dataframe.
    short_mavg = data.history(context.asset, 'price', bar_count=100, frequency="1d").mean()
    long_mavg = data.history(context.asset, 'price', bar_count=300, frequency="1d").mean()

    # Trading logic
    if short_mavg > long_mavg:
        # order_target orders as many shares as needed to
        # achieve the desired number of shares.
        order_target(context.asset, 100)
    elif short_mavg < long_mavg:
        order_target(context.asset, 0)

    # Save values for later inspection
    record(AAPL=data.current(context.asset, 'price'),
           short_mavg=short_mavg,
           long_mavg=long_mavg)

然后,您可以使用Zipline CLI运行此算法. 您将需要Quandl API密钥来提取默认数据包. 拥有密钥后,从命令行运行以下命令:

$ QUANDL_API_KEY=<yourkey> zipline ingest -b quandl
$ zipline run -f dual_moving_average.py --start 2014-1-1 --end 2018-1-1 -o dma.pickle

这将从quandl下载资产定价数据数据,并在指定的时间范围内通过算法将其流式传输. 然后,将产生的性能DataFrame保存在dma.pickle中 ,您可以在Python中加载和分析该数据.

您可以在zipline/examples目录中找到其他示例.

Questions?

如果发现错误,请随时打开问题并填写问题模板.

Contributing

欢迎所有贡献,错误报告,错误修复,文档改进,增强功能和想法. 有关如何设置开发环境的详细信息,请参见我们的开发指南 .

如果您希望开始使用Zipline代码库,请导航至GitHub的问题选项卡,然后开始研究有趣的问题. 有时会出现标记为" 初学者友好"或" 想要帮助"的问题 .

随时在邮件列表Gitter上提问.