zipline量化平台----本地化(上)

本文介绍了zipline量化平台的本地化过程,包括安装、命令行及IDE中的运行方法。作者通过一个具体策略展示了在pycharm等IDE中运行zipline的步骤,并探讨了zipline在处理真实数据时遇到的交易日历问题。
摘要由CSDN通过智能技术生成

         无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接: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
股票回测是量化交易中非常重要的一环,它可以通过历史数据对交易策略进行模拟和评估,从而评估策略的可行性和优劣性。在Python中,有很多开源的量化交易框架可以用来进行股票回测,如zipline、backtrader等。 下面是一个使用zipline框架进行简单交易策略回测的例子: 1. 安装zipline ```python pip install zipline ``` 2. 编写交易策略代码 ```python from zipline.api import order_target_percent, record, symbol def initialize(context): context.asset = symbol('AAPL') def handle_data(context, data): # 获取过去10天的收盘价 prices = data.history(context.asset, 'price', 10, '1d') # 计算平均价 mean_price = prices.mean() # 如果当前价格低于平均价,则买入 if data.current(context.asset, 'price') < mean_price: # 调整持仓比例至100% order_target_percent(context.asset, 1.0) # 否则卖出 else: # 调整持仓比例至0% order_target_percent(context.asset, 0.0) # 记录当前持仓比例 record(position=context.portfolio.positions[context.asset].amount) ``` 3. 运行回测 ```python from zipline import run_algorithm from zipline.api import symbol from datetime import datetime start = datetime(2016, 1, 1) end = datetime(2017, 1, 1) result = run_algorithm( start=start, end=end, initialize=initialize, capital_base=10000, handle_data=handle_data, bundle='quandl' ) ``` 在上述代码中,我们定义了一个简单的交易策略,即如果当前价格低于过去10天的平均价,则买入,否则卖出。然后我们使用zipline框架进行回测,设定回测开始和结束时间、初始资本、数据来源等参数,最终得到回测结果。 需要注意的是,这只是一个简单的例子,实际的交易策略可能会更加复杂,需要考虑更多的因素。另外,在进行股票回测时,也需要注意避免过度拟合或过度优化,以免出现回测虚高的情况。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钱塘小甲子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值