由于机缘巧合的机会,我离开了从事多年的互联网/移动互联网行业,进入了金融领域,就职与一家金融IT公司,虽然我毕业后第一份工作就在雅虎中国的财经频道从事开发工作(雅虎中国被雅虎收购之后,我就转到其它的部门),但是之前对于金融领域还是涉猎不深,这次加入后认真的补了这方面的知识,为了更加深入的了解量化相关的技术领域的问题,我准备从一些优秀的开源量化框架入手,从我熟悉的代码角度了解这个行业的业务和技术细节。
经过简单的调研,从交易频度方面,现有的量化框架大概有两类:
- 高频量化交易框架 (大部分是event base的)
- 中低频量化交易框架 (大部分是bar base的)
高频和中低频现在在实际的生产领域各有侧重,此外中低频框架由于逻辑相对简单,在很多教学和研究领域使用也较多,比如我当下在研究的zipline
。 除此之外,以后如果有时间的话还想研究一下apama
,但由于apama
不是开源软件,考虑只了解一下它的机制之后看看能不能基于Apache Spark Streaming
或Storm
来实现。好像说的有点远了,那我们回来继续来谈zipilne
。
zipline是美国Quantopian 公司开源的量化交易回测引擎,它使用Python
语言开发,部分代码使用cython
融合了部分c语言代码。Quantopian
在它的网站上的回测系统就是基于zipline
的,经过生产环境的长期使用,已经比完善,并且在持续的改进中。
目前我研究的对象基于当前zipline
的最新版本是 1.0.2 ,由于zipline
的版本更新较快,后面可能会有些变化。请知晓。
zipline
默认是不支持国内市场的股票数据的,我的研究过程是讲zipline
引入国内股票市场的数据,时期可以进行国内市场的回测,在这个过程中进一步了解整个框架。
这篇文章不是一篇入门文章,所以想要了解zipline
的基本使用方法,请参考zipline
和quantopian
的官方文档。
http://www.zipline.io/beginner-tutorial.html
后面的这些文档是我再研究过程中逐步整理而成,更像一个笔记的形式而不是系统化的介绍。
如果文档中出现了错误信息需要更正,欢迎到github上来发issue
https://github.com/rainx/inside-zipline