楼主: zjm123000888
7531 4

[交易平台及行情软件] Zipline框架初探(上) [推广有奖]

  • 0关注
  • 4粉丝

高中生

67%

还不是VIP/贵宾

-

威望
0
论坛币
402 个
通用积分
0.8500
学术水平
28 点
热心指数
25 点
信用等级
17 点
经验
555 点
帖子
22
精华
0
在线时间
26 小时
注册时间
2012-3-31
最后登录
2024-1-27

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

为了朝着量化交易的方向努力行进,数学和编码是必须提高的垫脚石,财务分析则属于业余爱好加分项。数学方面借着报名“七月在线 — 机器学习数学班”重温数学基础以图从机器学习的角度入手,而编码则再次翻开数据结构和算法导论用以弥补计算机基础不足的同时,一方面尝试配合小伙伴重写C++版本vn.py用于实盘交易框架储备,另一方面则研究Zipline用于指标及策略回测框架学习研究。Zipline是一个自动化交易回测框架,同时国外Quantopian,国内优矿、米筐和聚宽等web平台都基于它提供服务,它的成熟性自不必说。但它由Quantopian开发维护并不断迭代,默认只支持欧美市场,如果要将其应用于国内市场,即使国内已有成熟的web服务,但相关资料却甚为匮乏,看看StackOverflow上的问答就能窥见一二。因此,对个人用户而言,对它的研究仍有很多的坑要踩,今天我就想分享一下最近填好的坑。


开发环境:64位Win7 + PyCharm


1、首先下载并安装64位Anaconda,CMD运行”conda install -c Quantopian zipline”,将Zipline作为第三方库安装至Anaconda,再将PyCharm的解释器设置为Anaconda下的python.exe,至此准备工作一切就绪。


2、Zipline的本地化回测应用主要涉及2大块内容:TradingEnvironment和TradingAlgorithm。TradingEnvironment主要用于本地化交易环境设置,而TradingAlgorithm则是Zipline回测框架的主对象,可以理解为回测入口。本文将介绍TradingEnvironment的详细设置,同时初探TradingAlgorithm实现,它的具体实现则放在以后的博文中介绍。


3、TradingEnvironment本地化最重要的就是设置tradingcalendar、benchmarke_return和treasury_return。tradingcalendar用于设置tradingdays,其默认已排除周六周日,因此用户只需要重写一个py文件将每年对应的holiday从tradingdays除去即可。而benchmarke_return和treasury_return则作为策略回报的比较基准,将国内沪深300和对应各期限国债收益率通过重载load函数导入,将load函数对象传入至TradingEnvironment即可,注意benchmarke_return为Pandas的Series对象,treasury_return为DataFrame对象,各期限必须包含1month ~ 10year间所有。


4、TradingAlgorithm的本地化则需要重点设置simulation_parameters、initialize函数对象,handle_data函数对象。simulation_parameters包括策略回测的起始日期和回测频率,回测起始日期必须通过Pandas的tz_localize本地化,而回测频率包含daily和minute两种方式。而initialize函数与handle_data函数则用于策略初始化和模拟Bar周期反复回调所用,具体作用可参考国内优矿、米筐和聚宽任意一款服务。


5、数据的准备:理论上Zipline只支持其内置的DataPortal类型,它是其回测模拟所有数据的接口。考虑到通用性,Zipline目前也支持pandas的DataFrame和Panel,只不过它对DataFrame的支持就是将其很粗暴的转换为Panel来实现的。因此,就目前来说,Zipline只支持内置DataPortal和Pandas的Panel两种类型。


所以,用户可以将任何本地可获取的数据首先转换为DataFrame,其index按日递增,columns为小写的open、high、low、close和volume等。然后以DataFrame为value,数据ticker为key来构建相对应的Panel作为回测本地化的标准数据输入。

至此,用户就已经可以利用Zipline跑通一个完整的本地化回测Demo,这也解决了StackOverflow上关于Zipline提出70%以上问题,希望对大家有用。


Demo详细代码:https://github.com/FlyCatZout/OpenSource_BSD

博客地址: www.zoujiamin.com


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:line Lin zip environment parameters 计算机基础 数学班 小伙伴 在线 报名

已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 33 + 33 精彩帖子

总评分: 经验 + 33  论坛币 + 33   查看全部评分

沙发
一缕阳光等你 学生认证  发表于 2016-7-6 10:47:17 |只看作者 |坛友微信交流群
谢谢楼主分享,好资料大家一起学习

使用道具

藤椅
xcjdezh 发表于 2016-7-11 22:51:10 |只看作者 |坛友微信交流群
优矿用的不是他自己做的quartz吗。。。聚宽好像用的是zipline,问下聚宽的函数用法和zipline的函数用法通不通用,国内zipline学习资料真是少的可怜

使用道具

板凳
acy925 发表于 2016-7-14 16:00:14 |只看作者 |坛友微信交流群
楼主厉害,赞一个!

使用道具

报纸
witss 发表于 2016-10-5 10:12:45 |只看作者 |坛友微信交流群
可以请教一下楼主,本地的trading_calendar应该怎么设置吗,你的code里面没有看到啊?多谢了!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 16:44