zipline初学者指南

原创 2018年04月17日 16:24:39

0. 什么是zipline

zipline是pyhton版的算法策略库。它是基于事件驱动的回测系统。当前zipline使用在QuantPian,作为quantpian的回测和实时交易引擎。研究量化交易平台,绕不开要熟悉zipline。

1. 安装zipline

熟悉pip的伙伴们,安装zipline就是小菜一碟。这里安装推荐使用virtualenv。先建立Python虚拟开发环境,只要敲命令:

virtualenv ZiplineEnv

使用source ZiplineEnv/bin/activate进入虚拟开发环境,然后使用pip安装即可:

pip install zipline

安装的时间可能稍微长些,我安装过程中未出现什么异常情况。本人使用的开发机为Mac。

2. 一个简单的策略

既然zipline是一个回测平台,我们要做的就是输入我们的量化交易算法策略,然后通过zipline跑历史数据,去验证我们的算法质量。是不是想开始code了,好,满足你!我们先从一个简单的例子开始吧!下面给出一个样例:

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)

根据官方文档,实现一个策略至少要实现两个函数:initializehandle_datainitialize是策略开始跑之前要初始化的数据,可以将一些数据保存在context,context在整个策略生命周期里都有效。handle_data可以具体实现我们的交易算法,这里的例子实现的算法是:取得一个long周期的均值和一个short周期的均值,如果short周期的均值大于长周期的均值,则买入股票。

3. 运行前准备

策略写好了,可以跑了吧?哈哈,别急,跑策略还需要什么,当然是数据了,没有数据怎么能行。zipline推荐使用Quandl的数据。那怎么获取数据呢?你需要去Quandl上申请一个api key。推荐使用gmail(本人使用gmail成功建立了账号,163没有成功)。申请好api key就可以获取数据了!输入以下命令:

QUANDL_API_KEY=yourkey zipline ingest -b quandl

把youkey替换成你的API key就可以了,这个命令执行的时间可能比较久,但是为了跑我们的算法,这点时间是值得的。

4. 让zipline运行起来

好了,万事俱备了,我们开始干正事吧!这里假如你的策略文件为dual_moving_avg.py。在控制台敲入以下命令:

zipline run -f dual_moving_avg.py -s2014-1-1 -s 2018-1-1 -o dma.pickle

f指定策略文件,s指定开始日期,e指定结束日期,o指定输出文件。不出意外的话你可以正常获得dma.pickle文件。

那拿到这个文件怎么使呢?别慌,python有自带的pickle库。你可以使用以下脚本:

import pickle

with open('buy_apple.pickle', 'r') as f:
    data = f.read()
    pk = pickle.loads(data)
    print pk

或者通过pandas去显示:

import pandas as pd

perf = pd.read_pickle('buy_apple.pickle')
print perf

好了,看了这个教程你就入门了,关于zipline的其他信息,稍后会一一陈述。大家有什么想法,可以交流,共同进步!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leel0330/article/details/79976048

量化交易-4-zipline回测例子

量化交易-4-zipline回测例子@(金融)上一篇讲到,自己有了一个策略,两根线,上穿买入,下穿,卖出。因此需要一个回测工具,评判策略优劣。在网上寻找了一下, 初步打算使用zipline来进行回测。...
  • linluyisb
  • linluyisb
  • 2015-10-31 20:27:02
  • 12571

Zipline的安装教程

zipline安装教程
  • stefanie927
  • stefanie927
  • 2017-03-05 23:24:33
  • 1338

Zipline框架初探(上)

为了朝着量化交易的方向努力行进,数学和编码是必须提高的垫脚石,财务分析则属于业余爱好加分项。数学方面借着报名“七月在线 — 机器学习数学班”重温数学基础以图从机器学习的角度入手,而编码则再次翻开数据结...
  • Trader_Python
  • Trader_Python
  • 2016-10-19 10:17:32
  • 7794

针对Quant的Python快速入门指南

作者:用Python的交易员 原创文章,转载请注明出处 最近有越来越多的朋友在知乎或者QQ上问我如何学习入门Python,就目前需求来看,我需要写这么一篇指南。 针对整个vn.p...
  • Trader_Python
  • Trader_Python
  • 2016-10-19 10:12:54
  • 3495

zipline的api包详解

1、history 函数形式:history(bar_count, frequency, field, ffill=True) 函数说明:已经不用了,用data.history替代 2、order_t...
  • xf_87
  • xf_87
  • 2017-03-02 16:25:55
  • 712

zipline替换命令行运行

0. 问题 我们可以通过敲命令行zipline run ...来运行我们的策略程序,那么我们可以通过代码运行我们的策略程序吗? 1. 解释 当然可以!命令行也是通过配置参数,然后通过某个入口...
  • leel0330
  • leel0330
  • 2018-04-17 19:55:08
  • 12

zipline初学者指南

0. 什么是zipline zipline是pyhton版的算法策略库。它是基于事件驱动的回测系统。当前zipline使用在QuantPian,作为quantpian的回测和实时交易引擎。研究量化交...
  • leel0330
  • leel0330
  • 2018-04-17 16:24:39
  • 28

将非美国数据导入Zipline

如何将非美国数据导入到zipline中进行回测
  • stefanie927
  • stefanie927
  • 2017-03-14 22:38:43
  • 917

用Zipline回测国内数据

我们都知道zipline目前只能很好的支持国外市场,针对国内市场如何修改来进行回测,我看了一些文章来简单的说下自己的看法。...
  • stefanie927
  • stefanie927
  • 2017-03-25 22:28:36
  • 1278
收藏助手
不良信息举报
您举报文章:zipline初学者指南
举报原因:
原因补充:

(最多只允许输入30个字)