标签归档:zipline

Zipline-Zipline,一个Python算法交易库

Zipline是一个Pythonic算法交易库。它是用于回溯测试的事件驱动系统。Zipline目前在生产中用作回测和现场交易引擎供电Quantopian–建立和执行交易策略的免费、以社区为中心的托管平台。Quantopian还提供fully managed service for professionals其中包括Zipline、Alphalens、Pyfolio、FactSet数据等

功能

  • 易用性:Zipline试图为您让路,这样您就可以专注于算法开发。有关代码示例,请参见下面的内容
  • “含电池”:许多常见的统计数据,如移动平均和线性回归,都可以很容易地从用户编写的算法中访问
  • PyData集成:历史数据的输入和性能统计数据的输出基于Pandas DataFrames,可以很好地集成到现有的PyData生态系统中
  • 统计和机器学习库:您可以使用matplotlib、scipy、statsmodel和skLearning等库来支持最先进的交易系统的开发、分析和可视化

安装

Zipline目前支持Python 2.7、3.5和3.6,可以通过pip或conda安装

注:安装Zipline比一般的Python包稍微复杂一些。查看完整内容Zipline Install Documentation有关详细说明,请参阅

对于开发安装(用于开发Zipline本身),创建并激活一个viralenv,然后运行etc/dev-install脚本

快速入门

请参阅我们的getting started tutorial

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

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运行此算法。首先,您必须下载一些定价和资产数据示例:

$ zipline ingest
$ zipline run -f dual_moving_average.py --start 2014-1-1 --end 2018-1-1 -o dma.pickle --no-benchmark

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

您可以在zipline/examples目录

有问题吗?

如果您发现了错误,请随时open an issue并填写问题模板

贡献

欢迎所有贡献、错误报告、错误修复、文档改进、增强和想法。有关如何设置开发环境的详细信息,请参阅我们的development guidelines

如果您希望开始使用Zipline代码库,请导航到GitHub问题选项卡,开始查看有趣的问题。有时会有一些问题被标记为Beginner FriendlyHelp Wanted

您可以随时在mailing list或打开Gitter

注意事项

请注意,Zipline不是一个由社区主导的项目。Zipline是由Quantopian工程团队维护的,我们很小,经常很忙

正因为如此,我们想警告您,我们可能在几个月甚至几年内不会处理您的拉请求、问题或直接提及。我们希望您能理解,我们希望这封信能帮助您减少任何挫败感或浪费时间。