无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx
这么多python开源的量化平台中,zipline应该是应用最广泛的一个了,而且在quantopian的体系下,可以和pyfolio和alphalen无缝衔接。但是相比于之前笔者使用的backtrader量化回测平台,zipline在本地的实用化更加复杂。当然,如果用joinquant和ricequant下,其实很easy,但是云端运行策略,很多方面都会有限制。
所以,zipline想真正用起来,第一步就是本地化。之前了解过本地化的过程,浅尝辄止了,而近来发现,zipline的受众太多了,但是国内的资料几乎是空白。所以笔者尝试进行一下本地化。
这篇教程,并没有成功的本地化,碰到了一些问题,但是想必已经很接近了,仅此作为一个记录。
1.zipline安装
这里,笔者建议安装zipline之前先安装最新的anaconda,然后用
conda install -c Quantopian zipline
如果不是最新的anaconda,可能会有各种各样的问题。笔者用的是python2.7的版本,似乎3.X也是可以的。
2.zipline教程中的运行方法
在zipline的官方教程中,重点讲了命令行的运行方法,如下:
zipline run -f ../../zipline/examples/buyapple.py --start 2000-1-1 --end 2014-1-1 -o buyapple_out.pickle
zipline的ipython格式的教程中,还介绍了ipython中的运行方式,唯独没有介绍如何在pycharm这样的ide中运行的方式。
3.zipline在ide中运行的方式
首先,在zipline中,我们需要两个关键函数来完成一个策略。教程中有如下这样段代码。
from zipline.api import order, record, symbol
def initialize(context):
pass
def handle_data(context, data):
order(symbol('AAPL'), 10)
record(AAPL=data.current(symbol('AAPL'), 'price'))
如果不知道这两个函数分别是干嘛的,大家可以先去joinquant上了解一下基本教程。
那么,我们怎么在ide中运行这样的一个策略呢?
方法就是我们构建一个TradingAlgorithm类,然后run这个类。
algor_obj = TradingAlgorithm(initialize=initialize, handle_data=handle_data)
然后,我们run一下
perf_manual = algor_obj.run(data_c)
这样我们的策略就完成了。
一个完整的例子如下:
#-*- coding: utf-8 -*-
from datetime import datetime
from zipline.algorithm import TradingAlgorithm
from zipline.finance.trading import TradingEnvironment
from zipline.api import order, record, symbol, history
from zipline.finance import trading
from zipline.utils.factory import create_simulation_parameters
import pandas as pd
import numpy as np
n = 0
# Define algorithm
def initialize(context):
context.asset = symbol('AAPL')
print "initialization"
pass
def handle_data(context, data):
global n
print "handle", n
print data.history(context.asset, 'price', 1, '1d')#close price
# print history(1, '1d', 'price').mean()
n += 1
order(symbol('AAPL'), 10)
rec