大家好,我是用Python的交易员。接下来准备做一个Python在量化交易领域的应用的专辑,今天的内容主要就是做一些前期铺垫。介绍一下我学习用Python进行量化交易的经历、这张专辑的核心内容,以及进入这张专辑前你需要做的准备。

挺多人问过我,“作为一个非计算机也非理工科背景出身的金融硕士生,怎么能慢慢能写出vn.py这么一个开源项目?”首先,分享一下我个人在Python学习中的经历。

1.大学无编程经验,研究生学习了Matlab、Excel和VBA - 01分00秒

我大学本科念的是经济和金融学,这是一门偏文科的专业,完全没有任何编程的课程。硕士时选修了金融工程,稍微涉猎到了和Excel、VBA、Matlab相关的开发和学习,但是主要也仅限于偏脚本分析,比如说做Black-Scholes期权定价、Monte Calo Simulation(蒙特卡罗模拟)等等相关的任务,从来没有实现过复杂的事件驱动的交易程序。期间,我在国外一家对冲基金实习,接触到了MC这款软件,发现MC对CTA类量化交易策略非常合适。

2.毕业后在工作中使用TB和MC居多,但发现限制较多,为了交易期权,开始学习一门新的语言,综合考虑难度、功能、性能后选择了Python - 02分20秒

毕业回国后,起初在一家期货公司工作,当时程序化交易在国内刚刚兴起,公司内部使用的是TB,但TB早期在功能、细节上做得不是太好。同时我仍然也在用MC做一些研发相关的工作。后来的使用中越来越发现,这两款软件毕竟还是针对单一CTA策略类型开发,限制还是挺多。到后来国内开始推出期权的时候,并没有太好的量化交易软件,所以我就选择开始学习一门新的语言。因为我在硕士期间有Matlab学习经验,最早就想找一门和Matlab的语法比较接近、但在功能上更加全面一些、能够实现比较复杂的逻辑的编程语言。当时一开始考虑了Python、Ruby、SQL这么几种动态语言,当然也考虑了C++和JAVA,但是最后综合考量下来选择了Python,因为它在语法、库的丰富性等方面都远远超过其它几种编程语言。

3.从Learn Python The Hard Way开始入门,掌握基础的Python编程方法 - 03分44秒

在学习过程中,因为我也没有太专业的学习背景,就在网上搜了一个教程,叫作Learn Python The Hard Way,从此开始入门。当时大概有52节课,每节课都有非常详细的描述和完整的代码,只要按照它的描述把代码一点一点敲到Python环境里把它运行起来,就可以很快地了解到语言的大体逻辑。52节课我花了4天大概就敲完了,也是很快就掌握了Python的基础、语法和一些编程操作的手法。

4.结合盈佳CTPCOM接口,写出了第一个实时收取期权行情并计算打印波动率的纯CMD程序 - 04分50秒

后来,结合国内的一个叫作盈佳的CTPCOM接口,这个接口最早是为了实现C#、VB.net架构上语言,去调用和CTP接口相关的功能来做的一个封装。Python对.net、.com有相当好的支持,当时也就使用了Python上一个工具调用CTPCOM接口,写出了简单的交易程序,其功能非常简单:实时搜取期货、期权(当时还没有实盘,而是各大交易所的仿真比赛)的行情,并基于自己定的Black-Scholes定价公式计算,把期权价格实时对应的银行波动率输出在屏幕上。

5.基于PyQt实现了一套简单的界面,并在此基础上逐步扩展出了自己的Python交易系统 - 06分07秒

后来慢慢熟练了,就开始逐渐从纯命令行过渡到图形界面,也是同样感谢Python强大的生态环境,直接去PYQT很快就实现了一套简单界面,前后就花了一个星期不到的时间,这也充分体现了Python语言在应用上的强大之处。在界面的基础上一点一点增加了更多的强大功能,比如实时持仓期待值风险度的计算、实时的银行波动率曲线的计算,还有一些简单的看到明显套利机会就把单子吃掉的交易逻辑。

6.2014年底开始构思开源项目,2015年初发布,初期发布的是交易系统剥离出来的底层交易接口和事件引擎 - 07分10秒

国内最早的量化交易开源项目应该是海风做的API封装,以及它作的一些比较易用的交易框架,比如海风套利宝、海风AT交易平台等等。也是基于这些前辈的分享精神,我在2015年做了一套基于Python的交易系统给发布到了网上。早期没有那么强大的自信,其次自己主要是做期权交易这块,上层的交易逻辑对于我和公司而言有一定的商业机密的价值,所以不能分享出来。那么也就选择把交易系统底层剥离出来的这么一个交易接口Python封装以及核心的Python事件驱动引擎给开源了出来。

7.经过两年的发展,vn.py目前初具规模,在为开源项目贡献的过程中,我自己也学习到了很多经验并反馈到工作中 - 08分34秒

后续2年半的发展过程中,vn.py也是一点一点基于社区里各位用户的反馈逐渐地增加功能,现在基本上形成了既有非常丰富的底层交易结构,覆盖了国内的股票、期货、期权、上金所的黄金现货以及一些外汇、比特币的结构,同时在行情方面添加了一个万得的接口,用于获取一些特别的数据。中层的事件引擎也是不断的完善,以及基于底层工具开发出的上层应用vn.trader。在为整个开源项目贡献的过程中,我自己也是学习到了非常多的经验,因此希望做这么一个Python在量化交易中的应用的系列,把我自己所学分享给大家,也帮助更多的人少走一些我在早期时期走过的弯路。

在进入这张专辑的正式学习之前,你需要作好如下的软硬件配置准备

1. 电脑配置:4核主频3G以上的CPU、8G以上内存

2. 操作系统:Windows 7+ (不建议Windows 10,部分组件有兼容性问题)

3. 软件安装参考:http://www.vnpy.org/pages/quickstart.html

该专辑的结构框架

1.准备 – 工具的选择

a)商业软件vs开源软件

b)编程语言的特点

i.C++

ii.Java、C#

iii.Matlab、R

iv.Python

v.自主语言

c)为什么选择Python

d)Python的量化生态

2.入门 – 掌握Python

a)基本使用、交互式开发

b)数据获取(tushare)

c)策略框架使用

3.交易通道介绍

a)期货

b)股票

c)期权

d)外汇

e)外盘其他

4.主流经典策略介绍

a)DoubleEma

b)DualThrust

c)KingKeltner

d)ATR_RSI

5.策略开发实战

a)建立数据库

b)基于模板开发策略

c)策略的回测、研究

d)实盘运行

e)交易风控

6.开发复杂策略

a)事件驱动架构

b)策略逻辑开发

c)GUI界面设计