内容简介
本书本着能让新手快速上手量化交易的原则,循序渐进地讲解了量化交易入门所需要的知识,以及大量的开发技巧与交易技巧,具有很强的实用性。vn.py是机构级别的量化交易软件,掌握vn.py框架原理并且熟练运用,有利于新手快速搭建属于自己的量化交易系统。Python语言有非常强大的数据分析库,对于交易策略的研发具有天然优势,且其易学性也深受初学者喜爱。本书即以Python+vn.py这一流行组合写作,从量化交易的起源及其发展进程入手,在简单介绍Python量化编程基础,以及详细解析vn.py架构之后,深入且全面地介绍了CTA策略、海龟策略,以及新策略的开发流程。
相对其他量化交易方面的书,本书不再讲述Python语言编程的大量细节,而将笔墨着重放在对量化交易策略的解析、应用与回测之上,这才是新手真正需要学习和实践的地方。本书适合所有对量化交易感兴趣的人员阅读,也适合相关院校和培训机构作为量化交易系统课程的教材。
目录
目 录
第1章 量化交易速览 1
1.1 为何选择量化交易 1
1.1.1 量化交易的概念 1
1.1.2 主观交易与量化交易 2
1.2 量化交易的先驱们 5
1.2.1 朱尔斯?雷格纳特 5
1.2.2 爱德华?索普 6
1.2.3 托马斯?彼得菲 9
1.2.4 詹姆斯?西蒙斯 14
1.3 美国量化投资的发展历史 17
1.3.1 兴起阶段(1970―1990年) 17
1.3.2 快速发展阶段(1990―2000年) 18
1.3.3 稳步增长阶段(2000年至今) 19
1.4 中国量化投资的发展历史 20
1.4.1 ETF套利时代(2010年以前) 20
1.4.2 多因子Alpha和高频交易称雄时代(2010―2015年) 21
1.4.3 多元化投资时代(2016年至今) 23
1.5 国内常用的量化交易策略 24
1.5.1 期货CTA策略 24
1.5.2 股票Alpha策略 32
1.5.3 期权波动率套利策略 41
1.5.4 高频交易策略 45
1.6 宽客 48
1.7 宽客的两大阵形:P宗与Q宗 51
1.8 宽客的3种职能分类 52
1.8.1 量化IT工程师 52
1.8.2 量化研究员 53
1.8.3 量化交易员 54
1.9 宽客的四大派系 55
1.9.1 券商资管 56
1.9.2 公募基金 56
1.9.3 私募基金 57
1.9.4 期货市场 57
第2章 Python量化编程基础 59
2.1 Python运行环境搭建 60
2.1.1 安装Anaconda2-5.0.0(32位) 61
2.1.2 设置Anancoda环境 62
2.1.3 创建共享环境 64
2.1.4 列出共享环境 64
2.1.5 安装Jupyter Notebook 65
2.2 数据 66
2.2.1 字符串 66
2.2.2 数字 67
2.2.3 容器 68
2.2.4 布尔值 73
2.2.5 空值 73
2.3 函数 74
2.3.1 自定义函数 74
2.3.2 第三方库的函数 75
2.4 条件判断 75
2.5 循环 76
2.6 类和实例 79
2.6.1 定义学生父类 79
2.6.2 定义父类实例 81
2.6.3 定义团体子类 82
2.6.4 定义子类实例 83
2.7 NumPy与Pandas 84
2.7.1 一维数组 84
2.7.2 二维数组 88
2.8 scikit-learn机器学习库 92
2.8.1 机器学习的步骤 93
2.8.2 线性回归 94
2.8.3 逻辑回归 100
2.9 Matplotlib绘图库 103
2.9.1 用列表绘制线条 103
2.9.2 用数组绘图 105
2.9.3 多个图的绘制 108
第3章 vn.py入门 109
3.1 vn.py介绍 109
3.2 搭建vn.py运行环境 113
3.2.1 安装Visual Studio 2013社区版(特定版本) 113
3.2.2 安装代码编辑器工具:Sublime Text 114
3.2.3 安装Wing IDE 115
3.2.4 安装MongoDB数据库 115
3.2.5 安装Robo 3T 118
3.2.6 安装vn.py 119
3.2.7 更新vn.py 121
3.3 VnTrader界面功能介绍 122
3.3.1 连接CTP 122
3.3.2 界面说明 123
3.4 vn.py架构 124
3.4.1 底层接口 125
3.4.2 中层引擎 126
3.4.3 上层应用 127
3.5 底层接口 128
3.5.1 CTP API的工作原理 128
3.5.2 CTP API的Python封装设计 133
3.5.3 CTP API对接中层引擎原理 135
3.6 事件引擎 138
3.6.1 时间驱动 138
3.6.2 事件驱动 139
3.6.3 事件引擎工作流程 140
3.6.4 事件引擎结构 141
3.7 上层应用 143
3.7.1 PyQt介绍 143
3.7.2 GUI组件构成 144
第4章 在vn.py中实现CTA策略 147
4.1 数据解决方案 147
4.1.1 CSV加载模块 147
4.1.2 开发新的CSV导入模块 152
4.1.3 数据下载模块 155
4.2 K线生成模块 157
4.2.1 1分钟K线合成 158
4.2.2 X分钟K线合成 161
4.3 K线管理模块 162
4.3.1 初始化参数 162
4.3.2 生成时间序列 163
4.3.3 定义属性函数 164
4.3.4 生成计算指标 165
4.4 CTA策略模块 167
4.4.1
前言/序言
在证券交易领域中,量化交易脱胎于传统的主观交易:把投资者的交易理念、交易策略固化成计算机程序,通过算法快速自动下单,有效地防止投资者自身情绪的干扰,让其把精力放在研发交易策略上。量化交易的另一个优点是其成功的方法有迹可循,因为量化交易的过程是,运用现代统计学理论对历史数据进行数据分析,构建数学模型来预测市场未来价格的变化,然后通过计算机语言表达出来,从而实现自动交易。
vn.py是机构级别的量化交易软件,掌握vn.py框架原理并且熟练使用,有利于新手快速入门量化交易,搭建属于自己的量化交易系统,也可以在机构中找到与量化岗位相关的工作。
为什么写作本书
本书使用的编程语言是Python。尽管市面上关于Python量化交易方面的书籍不少,但是大部分着重讲述Python编程基础,而且主要是在股票交易中的应用,在期货市场的应用少之又少。就实践的层面来看,股票量化交易对于入门者几乎是不可能实现的,尽管2019年重新开放程序化交易API,但是其资金门槛高达5亿元。
期货市场上程序化交易接口却无资金门槛,而且量化交易应用发展得比较成熟,这才是新手可以去学习和实践的地方。故本书的写作定位是交易策略在期货领域的应用和开发,力求填补这方面的空白。
本书特色
本书尽量以初学者的角度来讲述量化交易的内容,逐步填平量化交易入门要踩的“坑”,力求让读者快速熟悉这方面的知识,能够独立开发交易策略并且尝试进行仿真交易。如果在SinNow仿真交易平台能够赢利,那么就可以上实盘去“跑”了。
本书的另一个特色是使用机构级别的开源交易软件:vn.py。机构级别软件对应的使用群体是做量化交易的机构投资者,如私募基金、证券自营,以及资管和期货资管等。这类软件虽然上手困难,但是熟练掌握后能更有效地深耕于量化交易领域,并且也有利于初学者入门量化交易。
本书主要内容
本书共包括7章,每章的主要内容如下。
第1章“量化交易速览”首先从狭义和广义两个方面介绍了“量化交易”的概念,然后介绍开拓出这个领域的先驱们的故事,接着讲述量化投资在美国与中国的历史发展进程,最后简单地介绍国内常用的量化交易策略及宽客这个专门从事量化交易的职业。
第2章“Python量化编程基础”介绍了将Python作为量化交易入门语言的理由,讲解了Python的基础概念,以及常用的数据分析库NumPy与Pandas、机器学习库scikit-learn,最后讲解绘图库Matplotlib的基本用法。
第3章“vn.py入门”介绍了vn.py交易系统的概况、安装步骤、主交易界面的功能,具体讲述vn.py应用框架的结构,分别是底层接口、中层引擎及上层应用,最后对这3层结构的原理做一个具体说明。
第4章“在vn.py中实现CTA策略”介绍vn.py提供的数据解决方案,用于生成具体CTA策略的相关支出模块,如K线生成、K线管理和策略模板,最后讲述回测和优化模块。
第5章“经典CTA策略”主要介绍vn.py官方提供的经典CTA策略,包括策略原理、代码解释、策略回测和参数优化。
第6章“海龟策略本地化实证”首先介绍海龟交易策略的起源、关键要素,然后解析vn.py下海龟策略的代码,通过交叉检验与筛选品种构成投资组合,最后基于构建好的海龟组合对策略的各个关键要素进行研究。
第7章“新策略实战”首先介绍了开发新策略的流程,然后是搭建投资组合,并进行策略回测为实战做好准备,最后介绍在真实交易情况下接触的3套系统,并且分析策略回测与实战中结果不同的成因。
致谢
我首先要感谢“猴子聊人物”创始人,他的数据分析的课程让我快速上手Python语言;然后是“用Python的交易员”陈晓优先生,我也是受益于其知乎Live上对量化交易的推广才从传统的金融转到该领域的。
我还要真诚地感谢电子工业出版社优秀的IT编辑孙学瑛女士和电子工业出版社对本书的重视,以及他们为本书出版所做的一切。