1、 内 容 简 介 本书本着能让新手快速上手量化交易的原则,循序渐进地讲解了量化交易入门所需要的知识,以及大量的开发技巧与交易技巧,具有很强的实用性。vn.py 是机构级别的量化交易软件,掌握 vn.py 框架原理并且熟练运用,有利于新手快速搭建属于自己的量化交易系统。Python 语言有非常强大的数据分析库,对于交易策略的研发具有天然优势,且其易学性也深受初学者喜爱。本书即以 Python+vn.py 这一流行组合写作,从量化交易的起源及其发展进程入手,在简单介绍 Python 量化编程基础,以及详细解析 vn.py 架构之后,全面地介绍了 CTA 策略、海龟策略,以及新策略的开发流程。相对其
2、他量化交易方面的书,本书不再讲述 Python 语言编程的大量细节,而将笔墨着重放在对量化交易策略的解析、应用与回测之上,这才是新手真正需要学习和实践的地方。本书适合所有对量化交易感兴趣的人员阅读,也适合相关院校和培训机构作为量化交易系统课程的教材。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 Python 量化交易/张杨飞编著.北京:电子工业出版社,2019.5 ISBN 978-7-121-36140-1.P.张.股票交易应用软件.F830.91 中国版本图书馆 CIP 数据核字(2019)第 046455 号 责任编辑:孙学瑛 印
3、 刷:装 订:出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编:100036 开 本:787980 1/16 印张:26 字数:414 千字 版 次:2019 年 5 月第 1 版 印 次:2019 年 5 月第 1 次印刷 定 价:99.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:010-51260888-819,。前 言 在证券交易领域中,量化交易脱胎于传统的主观交易:把投资者的交易理念、交易策
4、略固化成计算机程序,通过算法快速自动下单,有效地防止投资者自身情绪的干扰,让其把精力放在研发交易策略上。量化交易的另一个优点是其成功的方法有迹可循,因为量化交易的过程是,运用现代统计学理论对历史数据进行数据分析,构建数学模型来预测市场未来价格的变化,然后通过计算机语言表达出来,从而实现自动交易。vn.py 是机构级别的量化交易软件,掌握 vn.py 框架原理并且熟练使用,有利于新手快速入门量化交易,搭建属于自己的量化交易系统,也可以在机构中找到与量化岗位相关的工作。为什么写作本书 本书使用的编程语言是 Python。尽管市面上关于 Python 量化交易方面的书籍不少,但是大部分着重讲述 Py
5、thon 编程基础,而且主要是在股票交易中的应用,在期货市场的应用少之又少。就实践的层面来看,股票量化交易对于入门者几乎是不可能实现的,尽管 2019 年重新开放程序化交易 API,但是其资金门槛高达 5 亿元。期货市场上程序化交易接口却无资金门槛,而且量化交易应用发展得比较成熟,这才是新手可以去学习和实践的地方。故本书的写作定位是交易策略在期货领域的应用和开发,力求填补这方面的空白。本书特色 本书尽量以初学者的角度来讲述量化交易的内容,逐步填平量化交易入门要踩的“坑”,力求让读者快速熟悉这方面的知识,能够独立开发交易策略并且尝试进行仿真Python 量化交易 IV交易。如果在 SinNow
6、仿真交易平台能够赢利,那么就可以上实盘去“跑”了。本书的另一个特色是使用机构级别的开源交易软件:vn.py。机构级别软件对应的使用群体是做量化交易的机构投资者,如私募基金、证券自营,以及资管和期货资管等。这类软件虽然上手困难,但是熟练掌握后能更有效地深耕于量化交易领域,并且也有利于初学者入门量化交易。本书主要内容 本书共包括 7 章,每章的主要内容如下。第 1 章“量化交易速览”首先从狭义和广义两个方面介绍了“量化交易”的概念,然后介绍开拓出这个领域的先驱们的故事,接着讲述量化投资在美国与中国的历史发展进程,最后简单地介绍国内常用的量化交易策略及宽客这个专门从事量化交易的职业。第 2 章“Py
7、thon 量化编程基础”介绍了将 Python 作为量化交易入门语言的理由,讲解了 Python 的基础概念,以及常用的数据分析库 NumPy 与 Pandas、机器学习库scikit-learn,最后讲解绘图库 Matplotlib 的基本用法。第 3 章“vn.py 入门”介绍了 vn.py 交易系统的概况、安装步骤、主交易界面的功能,具体讲述 vn.py 应用框架的结构,分别是底层接口、中层引擎及上层应用,最后对这 3 层结构的原理做一个具体说明。第 4 章“在 vn.py 中实现 CTA 策略”介绍 vn.py 提供的数据解决方案,用于生成具体 CTA 策略的相关支出模块,如 K 线生
8、成、K 线管理和策略模板,最后讲述回测和优化模块。第 5 章“经典 CTA 策略”主要介绍 vn.py 官方提供的经典 CTA 策略,包括策略原理、代码解释、策略回测和参数优化。第 6 章“海龟策略本地化实证”首先介绍海龟交易策略的起源、关键要素,然后解析 vn.py 下海龟策略的代码,通过交叉检验与筛选品种构成投资组合,最后基于构 前 言 V 建好的海龟组合对策略的各个关键要素进行研究。第 7 章“新策略实战”首先介绍了开发新策略的流程,然后是搭建投资组合,并进行策略回测为实战做好准备,最后介绍在真实交易情况下接触的 3 套系统,并且分析策略回测与实战中结果不同的成因。致谢 我首先要感谢“猴
9、子聊人物”创始人,他的数据分析的课程让我快速上手 Python语言;然后是“用 Python 的交易员”陈晓优先生,我也是受益于其知乎 Live 上对量化交易的推广才从传统的金融转到该领域的。我还要真诚地感谢电子工业出版社优秀的 IT 编辑孙学瑛女士和电子工业出版社对本书的重视,以及他们为本书出版所做的一切。读者服务 轻松注册成为博文视点社区用户(),扫码直达本书页面。提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一同学习交流。页面入口:
10、http:/ Python 量化交易 VI 目 录 第 1 章 量化交易速览.11.1 为何选择量化交易.11.1.1 量化交易的概念.11.1.2 主观交易与量化交易.21.2 量化交易的先驱们.51.2.1 朱尔斯雷格纳特.51.2.2 爱德华索普.61.2.3 托马斯彼得菲.91.2.4 詹姆斯西蒙斯.141.3 美国量化投资的发展历史.171.3.1 兴起阶段(19701990 年).171.3.2 快速发展阶段(19902000 年).181.3.3 稳步增长阶段(2000 年至今).191.4 中国量化投资的发展历史.201.4.1 ETF 套利时代(2010 年以前).201.4
11、.2 多因子 Alpha 和高频交易称雄时代(20102015 年).211.4.3 多元化投资时代(2016 年至今).231.5 国内常用的量化交易策略.241.5.1 期货 CTA 策略.241.5.2 股票 Alpha 策略.321.5.3 期权波动率套利策略.411.5.4 高频交易策略.451.6 宽客.481.7 宽客的两大阵形:P 宗与 Q 宗.51 目 录 VII1.8 宽客的 3 种职能分类.521.8.1 量化 IT 工程师.521.8.2 量化研究员.531.8.3 量化交易员.541.9 宽客的四大派系.551.9.1 券商资管.551.9.2 公募基金.561.9.
12、3 私募基金.571.9.4 期货市场.57第 2 章 Python 量化编程基础.592.1 Python 运行环境搭建.602.1.1 安装 Anaconda2-5.0.0(32 位).612.1.2 设置 Anancoda 环境.622.1.3 创建共享环境.642.1.4 列出共享环境.642.1.5 安装 Jupyter Notebook.652.2 数据.662.2.1 字符串.662.2.2 数字.682.2.3 容器.682.2.4 布尔值.732.2.5 空值.742.3 函数.742.3.1 自定义函数.742.3.2 第三方库的函数.752.4 条件判断.752.5 循环
13、.772.6 类和实例.792.6.1 定义学生父类.792.6.2 定义父类实例.81Python 量化交易 VIII2.6.3 定义团体子类.822.6.4 定义子类实例.832.7 NumPy 与 Pandas.842.7.1 一维数组.852.7.2 二维数组.882.8 scikit-learn 机器学习库.932.8.1 机器学习的步骤.932.8.2 线性回归.942.8.3 逻辑回归.1012.9 Matplotlib 绘图库.1042.9.1 用列表绘制线条.1052.9.2 用数组绘图.1062.9.3 多个图的绘制.109第 3 章 vn.py 入门.1113.1 vn.
14、py 介绍.1113.2 搭建 vn.py 运行环境.1153.2.1 安装 Visual Studio 2013 社区版(特定版本).1153.2.2 安装代码编辑器工具:Sublime Text.1163.2.3 安装 Wing IDE.1173.2.4 安装 MongoDB 数据库.1173.2.5 安装 Robo 3T.1203.2.6 安装 vn.py.1213.2.7 更新 vn.py.1233.3 VnTrader 界面功能介绍.1243.3.1 连接 CTP.1243.3.2 界面说明.1253.4 vn.py 架构.1263.4.1 底层接口.1273.4.2 中层引擎.12
15、83.4.3 上层应用.129 目 录 IX3.5 底层接口.1303.5.1 CTP API 的工作原理.1303.5.2 CTP API 的 Python 封装设计.1353.5.3 CTP API 对接中层引擎原理.1373.6 事件引擎.1403.6.1 时间驱动.1403.6.2 事件驱动.1413.6.3 事件引擎工作流程.1423.6.4 事件引擎结构.1433.7 上层应用.1453.7.1 PyQt 介绍.1453.7.2 GUI 组件构成.146第 4 章 在 vn.py 中实现 CTA 策略.1494.1 数据解决方案.1494.1.1 CSV 加载模块.1494.1.2
16、 开发新的 CSV 导入模块.1544.1.3 数据下载模块.1574.2 K 线生成模块.1594.2.1 1 分钟 K 线合成.1604.2.2 X 分钟 K 线合成.1634.3 K 线管理模块.1644.3.1 初始化参数.1644.3.2 生成时间序列.1654.3.3 定义属性函数.1664.3.4 生成计算指标.1674.4 CTA 策略模块.1694.4.1 定义成员变量.1704.4.2 构建函数.1714.4.3 回调函数.1724.4.4 主动函数.173Python 量化交易 X4.5 策略回测模块.1764.5.1 CTA 回测引擎.1764.5.2 参数优化设置.1804.5.3 调用回测和优化模块.180第 5 章 经典 CTA 策略.1875.1 双均线策略.1875.1.1 策略原理.1875.1.2 向量回测.1885.1.3 vn.py 回测.1935.2 Dual Thrust 策略.2025.2.1 策略原理.2025.2.2 策略代码解析.2035.2.3 策略回测.2085.2.4 策略优化.2105.2.5 滚动回测.2135.3 Atr