Python量化交易实战入门与技巧_第1页
Python量化交易实战入门与技巧_第2页
Python量化交易实战入门与技巧_第3页
Python量化交易实战入门与技巧_第4页
Python量化交易实战入门与技巧_第5页
已阅读5页,还剩355页未读 继续免费阅读

付费阅读全文

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内容简介

本书首先讲解量化交易的基础知识,即量化交易的定义、特点、作用、

主要内容、历史、与传统交易的区别、注意事项、JoinQuant(聚宽)量化交

易平台;然后讲解量化交易开发语言Python,即讲解Python语言的开发环境、

基本语法、基本流程控制、特征数据类型、函数及应用、面向对象程序设计;

接着讲解如何利用Python语言编写量化策略、Python量化策略的常用库和

模块、获取数据函数、回测、因子分析;最后讲解Python量化策略的技术

指标实例和Python量化交易策略实例。

在讲解过程中既考虑读者的学习习惯,又通过具体实例剖析讲解量化交

易过程中的热点问题、关键问题及各种难题。

本书适用于各种不同的投资者,如股民、期民、中小散户、职业操盘手

和专业金融评论人士,更适用于那些有志于在这个充满风险、充满寂寞的征

程上默默前行的征战者和屡败屡战、愈挫愈勇并最终战胜失败、战胜自我的

投资者。

图书在版编目(CIP)数据

Python量化交易实战入门与技巧/王征,李晓波著.—北京:

中国铁道出版社,2018.11

ISBN978-7-113-24877-2

Ⅰ.①P…Ⅱ.①王…②李…Ⅲ.①股票交易-应用软件

Ⅳ.①F830.91

中国版本图书馆CIP数据核字(2018)第191186号

书名:Python量化交易实战入门与技巧

作者:王征 李晓波 著

责任编辑:张亚慧读者热线电话/p>

责任印制:赵星辰封面设计:

出版发行:中国铁道出版社(100054,北京市西城区右安门西街8号)

印刷:三河市兴达印务有限公司

版次:2018年11月第1版2018年11月第1次印刷

开本:700mm×1000mm1/16印张:22.25字数:341千

书号:ISBN978-7-113-24877-2

定价:69.00元

版权所有侵权必究

凡购买铁道版图书,如有印制质量问题,请与本社读者服务部联系调换。电话:(010)51873174

打击盗版举报电话:(010)51873659

PREFACE

前言

成熟资本市场,量化交易占比超过50%,量化对冲基金已经成为资管行

业的翘楚。中国的量化交易起步较晚,量化交易在证券市场占比不足5%。随

着时代的发展,中国的量化交易市场也在快速发展。

目前我国的量化交易主要应用在商品期货上。随着股指期货的上市,

期货市场和证券市场实现了真正意义上的互动,投资者不仅可以在期货市场

上进行投机交易,同时可以在期货与股票之间进行套利交易。利用量化交

易对股指期货进行操作将会是投资者,尤其是机构投资者的一个重要发展

方向。

|本书结构|

本书共15章,具体章节安排如下:

第1章~第2章:讲解量化交易的基础知识和JoinQuant(聚宽)

量化交易平台。量化交易的基础知识包括量化交易的定义、特点、作用、主

要内容、历史、与传统交易的区别、注意事项;JoinQuant(聚宽)量化交

易平台包括账户注册与登录,策略的创建、回测和模拟交易。

第3章~第8章:讲解量化交易开发语言Python,即讲解Python

语言的开发环境、基本语法、基本流程控制、特征数据类型、函数及应用、

面向对象程序设计。

第9章~第13章:讲解如何利用Python语言编写量化策略、Python

量化策略的常用库和模块、获取数据函数、回测、因子分析。

第14章~第15章:讲解Python量化策略的技术指标实例和

Python量化交易策略实例。

.III

|本书特色|

本书的特色归纳如下:

实用性:本书首先着眼于量化交易实战应用,然后再探讨深层次的技巧

问题。

详尽的例子:本书附有大量的例子,通过这些例子介绍知识点。每个例

子都是作者精心选择的,投资反复练习,举一反三,就可以真正掌握量化交

易技巧,从而学以致用。

全面性:本书几乎包含了量化交易的所有知识,分别是量化交易的基础

知识、JoinQuant(聚宽)量化交易平台、Python语言的开发环境、基本语法、

基本流程控制、特征数据类型、函数及应用、面向对象程序设计、Python量

化策略的常用库和模块、获取数据函数、回测、因子分析、Python量化交易

策略实例。

编 者

2018年9月

IV.

|目录|

CONTENTS

第1章初识量化交易/1

1.1 量化交易的基本概念/2

1.1.1 什么是量化交易/2

1.1.2 量化交易的特点/2

1.1.3 为什么要学习量化交易/4

1.1.4 量化交易与其他交易/6

1.2 量化交易的主要内容/7

1.2.1 量化选股/7

1.2.2 量化择时/8

1.2.3 算法交易/8

1.2.4 各种套利交易/8

1.3 量化交易的历史/10

1.3.1 国外量化交易的历史/10

1.3.2 国内量化交易的历史/10

1.4 量化交易的故事/11

1.4.1 朱尔斯·雷格纳特的故事/11

1.4.2 爱德华·索普的故事/13

1.4.3 詹姆斯·西蒙斯的故事/14

1.5 量化交易的潜在风险及应对策略/16

1.6 量化交易与人工交易的比较/16

1.7 量化交易的注意事项/17

第2章JoinQuant(聚宽)量化交易平台/19

2.1 JoinQuant(聚宽)量化交易平台的功能/20

2.2 JoinQuant(聚宽)量化交易平台的账户注册与登录/20

2.2.1 账户注册/21

2.2.2 账户登录/22

2.3 创建量化交易策略/23

2.3.1 向导式策略生成器/25

2.3.2 新建策略/35

2.4 量化交易策略的回测详情/36

2.5 模拟交易/38

2.5.1 新建模拟交易并运行/38

2.5.2 查看模拟交易/39

2.5.3 绑定微信/42

第3章Python语言及其开发环境/45

3.1 Python语言概述/46

3.1.1 Python的发展历程/46

3.1.2 Python的特点/47

3.2 搭建Python开发环境/48

3.2.1 Python的下载和安装/48

3.2.2 Python的环境变量配置/50

3.3 编写Python程序/53

3.4 利用IPythonNotebook编写Python程序/57

第4章Python的基本语法/63

4.1 Python的基本数据类型/64

4.1.1 数值类型/64

4.1.2 字符串/66

4.2 变量与赋值/69

II.

4.2.1 变量命名规则/69

4.2.2 变量的赋值/70

4.3 运算符/71

4.3.1 算术运算符/71

4.3.2 赋值运算符/73

4.3.3 位运算符/74

4.4 常见的数值函数和字符串函数/75

4.4.1 数学函数/76

4.4.2 随机数函数/77

4.4.3 三角函数/79

4.4.4 字符串函数/80

4.5 Python的代码格式/85

4.5.1 代码缩进/85

4.5.2 代码注释/86

4.5.3 空行/86

4.5.4 同一行显示多条语句/86

第5章Python的基本流程控制/87

5.1 选择结构/88

5.1.1 关系运算/88

5.1.2 逻辑运算/90

5.1.3 if语句/91

5.1.4 嵌套if语句/93

5.2 循环结构/94

5.2.1 while循环/95

5.2.2 while循环使用else语句/95

5.2.3 无限循环/96

5.2.4 for循环/97

5.2.5 在for循环中使用range()函数/98

.III

5.3 其他语句/99

5.3.1 break语句/100

5.3.2 continue语句/100

5.3.3 pass语句/101

第6章Python的特征数据类型/103

6.1 列表/104

6.1.1 创建列表/104

6.1.2 访问列表中的值/104

6.1.3 更新列表中的值/105

6.1.4 删除列表中的值/106

6.1.5 列表的函数/106

6.1.6 列表的方法/107

6.2 元组/109

6.2.1 创建元组/109

6.2.2 访问元组中的值/110

6.2.3 连接元组/111

6.2.4 删除整个元组/112

6.2.5 元组的函数/112

6.3 字典/113

6.3.1 创建字典/114

6.3.2 访问字典中的值和键/114

6.3.3 修改字典/115

6.3.4 字典中的函数/116

6.4 集合/117

6.4.1 创建集合/117

6.4.2 集合的两个基本功能/118

6.4.3 集合的运算符/119

6.4.4 集合的方法/120

IV.

第7章Python的函数及应用/123

7.1 函数的定义与调用/124

7.1.1 函数的定义/124

7.1.2 函数的调用/125

7.2 参数传递/126

7.2.1 不可更改对象/126

7.2.2 可更改对象/127

7.3 函数的参数类型/128

7.3.1 必需参数/128

7.3.2 关键字参数/129

7.3.3 默认参数/130

7.3.4 不定长参数/131

7.4 匿名函数/132

7.5 变量作用域及类型/133

7.5.1 变量作用域/133

7.5.2 全局变量和局部变量/135

7.5.3 global和nonlocal关键字/136

第8章Python面向对象的程序设计/139

8.1 面向对象/140

8.1.1 面向对象概念/140

8.1.2 类定义与类对象/141

8.1.3 类的继承/143

8.2 模块/147

8.2.1 自定义模块并调用/147

8.2.2 import语句/148

8.2.3 标准模块/150

8.3 包/151

.V

第9章利用Python语言编写量化策略/153

9.1 股票量化策略的组成/154

9.1.1 初始化函数(initialize)/155

9.1.2 开盘前运行函数(before_market_open)/156

9.1.3 开盘时运行函数(market_open)/157

9.1.4 收盘后运行函数(after_market_close)/158

9.2 股票量化策略的设置函数/158

9.2.1 设置基准函数/159

9.2.2 设置佣金/印花税函数/159

9.2.3 设置滑点函数/161

9.2.4 设置动态复权(真实价格)模式函数/161

9.2.5 设置成交量比例函数/162

9.2.6 设置是否开启盘口撮合模式函数/162

9.2.7 设置要操作的股票池函数/163

9.3 股票量化策略的定时函数/163

9.3.1 定时函数的定义及分类/163

9.3.2 定时函数各项参数的意义/164

9.3.3 定时函数的注意事项/164

9.3.4 定时函数的实例/165

9.4 股票量化策略的下单函数/166

9.4.1 按股数下单函数/166

9.4.2 目标股数下单函数/167

9.4.3 按价值下单函数/168

9.4.4 目标价值下单函数/168

9.4.5 撤单函数/169

9.4.6 获取未完成订单函数/169

9.4.7 获取订单信息函数/169

9.4.8 获取成交信息函数/170

9.5 股票量化策略的日志log/171

VI.

9.5.1 设定log级别/171

9.5.2 /171

9.6 股票量化策略的常用对象/172

9.6.1 Order对象/172

9.6.2 全局对象g/173

9.6.3 Trade对象/173

9.6.4 tick对象/174

9.6.5 Context对象/174

9.6.6 Position对象/176

9.6.7 SubPortfolio对象/176

9.6.8 Portfolio对象/177

9.6.9 SecurityUnitData对象/178

第10章Python量化策略的常用库和模块/179

10.1 Numpy库/180

10.1.1 ndarray数组基础/180

10.1.2 矩阵/187

10.2 Pandas库/188

10.2.1 一维数组Series/188

10.2.2 二维数组DataFrame/189

10.2.3 三维数组Panel/199

10.3 Datetime模块和Time模块/201

10.3.1 利用Datetime模块获得当前的日期和时间/202

10.3.2 利用Time模块获得当前的日期和时间/203

10.3.3 获得当前时间并转换为指定日期格式/204

10.3.4 获得三天前的时间的方法/204

10.3.5 获得三天前的日期的方法/205

10.3.6 获得历史交易日/206

.VII

第11章Python量化策略的获取数据函数/207

11.1 history()函数/208

11.1.1 各项参数的意义/208

11.1.2 history()函数的应用实例/210

11.2 attribute_history()函数/213

11.3 get_current_data()函数/215

11.4 get_fundamentals()函数/216

11.4.1 各项参数的意义/216

11.4.2 get_fundamentals()函数的应用实例/217

11.5 get_fundamentals_continuously()函数/222

11.6 get_index_stocks()函数/223

11.6.1 各项参数的意义/224

11.6.2 get_index_stocks()函数的应用实例/225

11.7 get_industry_stocks()函数/225

11.8 get_concept_stocks()函数/227

11.9 get_all_securities()函数/229

11.9.1 各项参数的意义/229

11.9.2 get_all_securities()函数的应用实例/230

11.10 get_security_info()函数/232

11.11 get_billboard_list()函数/233

11.11.1 各项参数的意义/233

11.11.2 get_billboard_list()函数的应用实例/234

11.12 get_locked_shares()函数/234

第12章Python量化策略的回测/237

12.1 回测的过程/238

12.2 编写双均线量化策略/239

12.2.1 量化策略的编辑页面/239

12.2.2 双均线量化策略的初始化函数/241

VIII.

12.2.3 双均线量化策略的交易程序函数/242

12.3 设置量化策略的回测参数/243

12.4 双均线量化策略的回测详情/245

12.5 量化策略的风险指标/248

12.5.1 Alpha(阿尔法)/249

12.5.2 Beta(贝塔)/250

12.5.3 Sharpe(夏普比率)/251

12.5.4 Sortino(索提诺比率)/251

12.5.5 InformationRatio(信息比率)/252

12.5.6 Volatility(策略波动率)/253

12.5.7 BenchmarkVolatility(基准波动率)/254

12.5.8 MaxDrawdown(最大回撤)/255

第13章Python量化策略的因子分析/257

13.1 初识因子分析/258

13.1.1 因子的分类/258

13.1.2 因子分析的作用/258

13.2 因子分析的实现代码/258

13.2.1 因子分析中变量的含义/259

13.2.2 因子分析中可以使用的基础因子/259

13.2.3 calc的参数及返回值/261

13.3 因子分析的结果/261

13.3.1 新建因子/261

13.3.2 收益分析/264

13.3.3 IC分析/268

13.3.4 换手分析/269

13.4 因子在研究和回测中的使用/270

13.5 基本面因子应用实例/273

.IX

第14章Python量化策略的技术指标实例/277

14.1 均线型技术指标实例/278

14.1.1 传统平均线/278

14.1.2 高价平均线/280

14.1.3 低价平均线/281

14.1.4 变异平均线/282

14.1.5 成本价均线/283

14.2 超买超卖型技术指标实例/285

14.2.1 随机指标KD/285

14.2.2 资金流量指标MFI/286

14.2.3 相对强弱指标RSI/288

14.2.4 变动速率线OSC/289

14.2.5 威廉指标WR/290

14.2.6 顺势指标CCI/291

14.3 趋势型技术指标实例/292

14.3.1 平滑异同平均线MACD/293

14.3.2 趋向指标DMI/294

14.3.3 简易波动指标EMV/295

14.3.4 终极指标UOS/296

14.4 能量型技术指标实例/298

14.4.1 情绪指标BRAR/298

14.4.2 带状能量线CR/299

14.4.3 成交量变异率VR/300

14.4.4 梅斯线MASS/301

14.4.5 累积能量线OBV/302

14.4.6 相对强弱量VRSI/303

14.5 压力支撑型技术指标实例/305

14.5.1 布林通道线BOLL/305

X.

14.5.2 麦克支撑压力线MIKE/306

14.5.3 薛斯通道线XS/307

第15章Python量化交易策略实例/311

15.1 MACD指标量化交易策略/312

15.1.1 编写初始化函数/312

15.1.2 编写单位时间调用的函数/313

15.1.3 MACD指标量化交易策略的回测/315

15.2 能量型指标量化交易策略/316

15.2.1 编写初始化函数/316

15.2.2 编写单位时间调用的函数/317

15.2.3 能量型指标量化交易策略的回测/318

15.3 KD指标量化交易策略/320

15.3.1 编写初始化函数/320

15.3.2 编写开盘前运行函数/321

15.3.3 编写开盘时运行函数/321

15.3.4 编写收盘后运行函数/322

15.3.5 KD指标量化交易策略的回测/322

15.4 多股票持仓量化交易策略/324

15.4.1 编写初始化函数/324

15.4.2 编写单位时间调用的函数/324

15.4.3 多股票持仓量化交易策略的回测/325

15.5 多股票追涨量化交易策略/327

15.5.1 编写初始化函数/327

15.5.2 编写每天早上开盘时执行函数/327

15.5.3 编写开始交易前被调用函数/328

15.5.4 编写单位时间调用的函数/328

15.5.5 多股票追涨量化交易策略的回测/329

.XI

15.6 银行股轮动量化交易策略/331

15.6.1 编写初始化函数/331

15.6.2 编写选股函数/332

15.6.3 编写交易函数/332

15.6.4 银行股轮动量化交易策略的回测/333

15.7 小市值股票量化交易策略/334

15.7.1 编写初始化函数/334

15.7.2 编写选股函数/335

15.7.3 编写过滤停牌股票函数/336

15.7.4 编写交易函数/336

15.7.5 小市值股票量化交易策略的回测/337

XII.

第1章

初识量化交易

越来越多的投资者开始尝试量化交易。量化投资者,就是那些

靠数学模型分析金融市场,并用复杂的数学公式和计算机在稍纵即

逝的市场机会中挖掘利润的人,这些人又称宽客(Quant)。在强大

的Python语言和数据库的支持下,量化交易已不再是一个神秘的 

领域。

本章主要内容包括:

量化交易的定义和特点量化交易的潜在风险及应对策略

量化交易的作用量化交易与人工交易的比较

量化选股和量化择时量化交易的注意事项

算法交易和各种套利交易

国外和国内量化交易的历史

朱尔斯·雷格纳特的故事

爱德华·索普的故事

詹姆斯·西蒙斯的故事

Python量化交易实战入门与技巧

1.1 量化交易的基本概念

要进行量化交易,首先就要知道什么是量化交易及量化交易的特点,还要知

道为什么要学习量化交易、量化交易与其他交易的关系,下面就来具体讲解一下。

1.1.1 什么是量化交易

量化交易是指投资者利用计算机技术、金融工程建模等手段将自己的金

融操作方式,用很明确的方式去定义和描述,用以协助投资者进行投资决策,

并且严格按照所设定的规则去执行交易策略(买、卖)的交易方式。帮助投

资者制定投资决策、减少执行成本、进行套利、风险对冲和帮助做市商实现

报价的功能。

1.1.2 量化交易的特点

量化交易的特点表现在4个方面,分别是严格的纪律性、完备的系统性、

妥善运用套利的思想、靠概率取胜,如图1.1所示。

●●图1.1 量化交易的特点

2.

第1章

Python量化交易实战入门与技巧初识量化交易

1.严格的纪律性

量化交易有着严格的纪律性,这样就可以克服人性的弱点,如贪婪、恐

惧、侥幸心理,也可以克服认知偏差。一个优秀的投资方法应该是一个“透

明的盒子”,所以投资者的每一个决策都应该是有理有据,特别是有数据

支持。

例如,如果有人问你,某年某月某一天,你为什么购买某只股票的话,

你就可以打开量化交易系统,系统会显示出当时被选择的这只股票与其他的

股票相比在成长面、估值、资金、技术、买卖时机上的综合评价情况,而且

这个评价是非常全面的,比普通投资者拍脑袋或者简单看某一个指标买卖更

具有说服力。

2.完备的系统性

完备的系统性具体表现为“三多”。首先表现在多层次,包括在大类资

产配置、行业选择、精选个股三个层次上我们都有模型;其次是多角度,

量化交易的核心投资思想包括宏观周期、市场结构、估值、成长、盈利质

量、分析师盈利预测、市场情绪等多个角度;再者就是多数据,海量数据的

处理。

人脑处理信息的能力是有限的,当一个资本市场只有几十只股票,这对

定性投资基金经理是有优势的,他可以深刻分析这几十家公司。但在一个很

大的资本市场,比如有成千上万只股票的时候,强大的定量化交易的信息处

理能力能反映它的优势,能捕捉到更多的投资机会,拓展更大的投资空间。

3.妥善运用套利的思想

量化交易正是在寻找估值洼地,通过全面、系统性的扫描捕捉错误定价、

错误估值带来的机会。定性投资大部分时间在琢磨哪一个企业是伟大的企业,

哪只股票是可以翻倍的股票;与定性投资不同,量化交易大部分精力花在分

析哪里是估值洼地,哪一个品种被低估了,买入低估的,卖出高估的。

4.靠概率取胜

靠概率取胜表现在两个方面,一是定量投资不断从历史中挖掘有望在未

来重复的历史规律并且加以利用,二是在股票实际操作过程中,运用概率分

.3

Python量化交易实战入门与技巧

析,提高买卖成功的概率和仓位控制。

1.1.3 为什么要学习量化交易

很多投资者可能会觉得,我做的是基本面分析,是做价值投资的,量化

交易跟我有什么关系呢?确实,即使从没听说过量化交易,你也可能成为

一名出色的投资者。但是,随着

市场和技术的发展,无论是投资

者,还是证券公司等中介公司,

对量化交易有所了解是非常有必

要的。量化交易的作用如图1.2

所示。●●图1.2 量化交易的作用

1.发现新的空间和机会

无论你采用什么投资策略,和做任何事情一样,决定成败的重要因素之

一就是你所面临的竞争。在1996年,几乎人人都在数波浪,根本没人关心公

司的基本面。像四川长虹、青岛海尔等很多上市公司,利润持续翻番,市盈

率却是个位数。到上市公司进行调研,人家都不知道你是来干什么的,开股

东大会也见不到几个股东。那时候做价值投资,可以说确实是好时光,因为

几乎没有竞争。

可是在今天,人人都是价值投资者,大家都在研究财务报表,人人都在

进行公司调研。很显然,价值投资的竞争已经大大激化了。而与此同时,量

化交易可以说还处在相当初级的阶段,尽管也有一些人在进行这方面的尝试,

但整体而言,规模还相当小,还有很大的进入空间。尤其是推出股指期货之

后,更是大大拓宽了应用量化交易策略的空间,提供了新的可能性。可以说

目前中国进行量化交易所面临的竞争还是比较小的,这就给量化交易者提供

了发挥的空间。

2.优化当前的投资策略

当前最成功的量化交易基金——“文艺复兴(RenaissanceTechnologies)”

的创始人詹姆斯·西蒙斯(JamesSimons)说过,那些从事量化交易的数学

4.

第1章

Python量化交易实战入门与技巧初识量化交易

家和物理学家,最大的贡献并不在于他们所掌握的理论知识,而是他们所带

来的科学精神。投资者需要知道的是,绝大部分的量化交易策略实际上都是

源于已有的策略。但是,当你必须把一项投资策略的所有方面都以量化形式

来加以确定的话,你就不得不对这项策略的各个方面进行更深入地思考。

巴菲特和芒格看上去和量化交易压根挨不上边,但在某种程度上,可以

说他们本身就是“人肉版”的量化交易机器。巴菲特一直强调,投资最重要

的是要理性,不能让情绪影响你的投资决策。芒格强调要以“清单”的形式

来进行投资判断。这些都是与量化交易相类似的原则。当你还没有练就巴菲

特和芒格那样理性判断的功力时,了解量化交易的原则,可以有效地帮助你

提高当前投资策略的合理性。

实际上,有研究显示,基于客观性标准的交易策略,整体而言,能比人

工判断的交易策略创造更多的超额收益。当然这并不是说让你完全放弃主观

判断,毕竟有些东西是很难量化的。但是,通过学习量化交易的策略,可以

帮助你重新思考你现有投资策略的各个环节,哪些地方可以更具备客观性,

减少主观判断的错误。同时,也可以让你更加明确,哪些环节是真正依赖于

你的主观判断能力。

3.降低交易成本

对于机构投资者来说,除了前面对所有投资者都适用的两个原因之外,

还有一个更直接的原因,那就是量化交易策略可以帮助机构投资者有效地降

低自己的交易成本。

对于拥有大资金的机构投资者来说,自己的买单和卖单对市场造成冲击

所产生的流动性成本是一项重要的交易成本。而量化交易的一个重要功能,

就是通过特定的算法交易有效地减少自己的买卖委托对市场产生的冲击,以

降低自己的交易成本。

据统计,2017年中国基金的平均周转率为2.9倍。假如交易成本平均降

低0.1个百分点,就相当于多增加了0.1%×2.9=0.29%的收益率。而在基金

排行榜上,这可能意味着好几位排名的差异。实际上,策略得当的话,所能

降低的交易成本很可能不止0.1个百分点。

.5

Python量化交易实战入门与技巧

1.1.4 量化交易与其他交易

在学习量化交易时,你常常听到其他的一些概念,如算法交易、黑匣子

交易、程序化交易等,这些交易与量化交易有什么关系呢?下面具体来讲解

一下。

1.量化交易与算法交易

在当前的投资界,你听到“算法交易(AlgorithmicTrading)”的次数,

可能会比听到“量化交易”的次数更多。确实,在大多数情况下,这两种称

谓基本上可以替换着使用,因为目前最流行的量化交易策略,基本上可以说

属于“算法交易”的范畴。

不过,量化交易和算法交易还是有所区别的。因为算法交易通常意味着

高度自动化的交易发现和交易执行,因此算法交易往往也被称为“自动交

易(AutomatedTrading)”,或者是更形象化的“黑匣子交易(Black-box

Trading)”。

而且,人们在说“算法交易”的时候,往往并不仅仅是泛指所有高度自

动化的量化交易策略,而是专门指那些持有期很短、交易相当频繁的交易策

略,甚至专门指那些以降低交易成本为目的的交易策略。

所以,本书所讲的量化交易,特意让它的范围更广一些,不仅包括算法交

易,而且也包括自动化程度和交易频率不是那么高的其他一些交易策略。

2.量化交易与黑匣子交易

前面已经说过,“黑匣子交易”是人们对算法交易的一种形象化说法,所

以量化交易与黑匣子交易的关系,就和量化交易与算法交易的关系差不多。

不过,当人们说黑匣子交易时,更加突出的是一个“黑”字,也就是这些交

易策略的神秘性。所以,像ETF套利、现期套利这样一些经典的套利策略,

人们似乎觉得它们不够“黑”,一般不会称之为黑匣子。

3.量化交易与程序化交易

单从字面上来讲,程序化交易是指所有的高度自动化的量化交易策略,

包括算法交易。在大多数情况下,人们也确实是这么用这个名称的。不过,

纽约交易所对程序交易有专门的定义,指的是同时涉及15个及以上的证券、

6.

第1章

Python量化交易实战入门与技巧初识量化交易

总交易额至少为100万美元的电子交易。而这类交易很大一部分都是套利,

因此当人们说程序化交易时,往往特指套利交易策略。

4.量化交易与技术分析

投资者很容易把量化交易和技术分析联系在一起,确实,技术分析中会

使用很多的量化指标,量化交易中也会用到一些我们常用的技术指标。而且,

相当一部分的量化交易策略和技术分析一样,几乎都是依赖于对价格、成交

额等交易信息的分析。不过,量化交易与技术分析还是有所区别的。

首先,一些技术分析方法很难被量化。例如,图形分析是技术分析的一

个重要部分,可是,一些图形很难被量化定义,比如波浪,这些技术分析手

段就无法应用在量化交易中。

其次,量化交易并不仅限于技术分析所涉及的交易信息。基本面的信息

数据,如收入、利润、购并等公司基本面信息,以及利率、通胀等宏观基本

面信息,都可能被量化交易策略参考。

因此,量化交易和技术分析的关系可以概括为:二者既有相互重叠的地

方,也有相互独立的地方。

1.2 量化交易的主要内容

量化交易的主要内容包括4种,

分别是量化选股、量化择时、算

法交易、各种套利交易,如图1.3

所示。

1.2.1 量化选股

量化选股就是利用量化的方法

●●图1.3 量化交易的主要内容

判断某上市公司是否适合买进。根

据某个量化的方法,如果某上市公司满足该量化方法的条件,就把该股票放

到自选股中;如果不满足该量化方法的条件,就不加入自选股或从自选股中

.7

Python量化交易实战入门与技巧

删除。常用的量化选股方法有多因子选股、行业轮动选股、趋势跟踪选股、

筹码选股等。

1.2.2 量化择时

量化择时是指采用量化的方式判断买点和卖点。如果判断行情是上涨行

情,即牛市,则可以买进后持有;如果判断行情是下跌行情,则要果断卖出

空仓;如果判断行情是震荡行情,则可以进行高抛低吸,灵活操作。常用的

量化择时方法有趋势量化择时、市场情绪量化择时、有效资金量化择时等。

1.2.3 算法交易

算法交易,也称为自动交易或黑盒交易,是利用电子平台,输入涉及算

法的交易指令,以执行预先设定好的交易策略。算法中包含许多变量,包括

时间,价格,交易量,或者在许多情况下,由“机器人”发起指令,无须人

工干预。

算法交易的内在逻辑在于应用市场买卖量的特性。经过一定的数量统计

办法,在风险可控、资金可控条件下执行订单。算法交易系统的中心是经过

一套计算机程序,在一秒钟内产生若干买卖指令(其中许多指令瞬时就能够

被取消或被新的指令取代),来寻求最佳的成交执行途径,从而减少对市场的

冲击,并降低买卖成本。

1.2.4 各种套利交易

套利交易是指利用相关市场或相关

电子合同之间的价差变化,在相关市场

或相关电子合同上进行交易方向相反的

交易,以期望价差发生变化而获利的交

易行为。套利交易模式主要分为4大

类型,分别为股指期货套利、商品期货

套利、统计套利和期权套利,如图1.4

所示。●●图1.4 套利交易模式

8.

第1章

Python量化交易实战入门与技巧初识量化交易

1.股指期货套利

股指期货套利是指利用股指期货市场存在的不合理价格,同时参与股指

期货与股票现货市场交易,或者同时进行不同期限、不同(但相近)类别股

票指数合约交易,以赚取差价的行为。股指期货套利主要分两种,分别是期

现套利和跨期套利。

2.商品期货套利

与股指期货对冲相似,商品期货同样存在套利策略,在买入或卖出某种

期货合约的同时,卖出或买入相关的另一种合约,并在某个时间同时将两种

合约平仓。

在交易形式上它与套期保值有些相似,但套期保值是在现货市场买入

(或卖出)实货、同时在期货市场上卖出(或买入)期货合约;而套利却只在

期货市场上买卖合约,并不涉及现货交易。商品期货套利主要分为4种,分

别是期现套利、跨期套利、跨市场套利和跨品种套利。

3.统计套利

有别于无风险套利,统计套利是利用证券价格的历史统计规律进行套利

的,是一种风险套利,其风险在于这种历史统计规律在未来一段时间内是否

继续存在。

统计对冲的主要思路是先找出相关性最好的若干对投资品种(股票或

者期货等),再找出每一对投资品种的长期均衡关系(协整关系),当某一

对品种的价差(协整方程的残差)偏离到一定程度时开始建仓——买进被

相对低估的品种、卖空被相对高估的品种,等到价差回归均衡时获利了结

即可。

4.期权套利

期权(Option)又称选择权,是在期货的基础上产生的一种衍生性金融

工具。从其本质上讲,期权实质上是在金融领域将权利和义务分开进行定价,

使得权利的受让人在规定时间内对于是否进行交易行使其权利,而义务方

必须履行。

在期权交易时,购买期权的一方称为买方,而出售期权的一方则称为卖

.9

Python量化交易实战入门与技巧

方;买方即权利的受让人,而卖方则是必须履行买方行使权利的义务人。

期权的优点在于收益无限的同时风险损失有限,因此在很多时候,利用

期权来取代期货进行做空、套利交易,会比单纯利用期货套利具有更小的风

险和更高的收益率。

1.3 量化交易的历史

量化交易的历史可以分两部分,分别是国外量化交易的历史和国内量化

交易的历史。

1.3.1 国外量化交易的历史

国外量化交易可分为三个阶段,具体如下:

第一阶段(1971-1977年):1971年,世界第一只被动量化基金由巴克

利国际投资管理公司发行。1977年世界上第一只主动量化基金也是由巴克利

发行,发行规模达到70亿美元,算是美国量化投资的开端。

第二阶段(1977-1995年):这段时间,量化投资在海外发展较为缓慢,

但随着信息技术和计算机技术方面取得巨大进步,量化投资迎来了高速发展

的时代。

第三阶段(1995-至今):从1995年至今,量化投资技术逐渐趋于成熟,

在目前全部的投资中,量化投资大约占比50%,指数类投资全部采用定量技

术,主动投资中20%-30%采用定量技术。

1.3.2 国内量化交易的历史

与海外市场量化交易的蓬勃发展相比,量化基金在国内尚处于起步阶段。

2004年8月光大保德信量化核心基金是国内第一只量化基金。在随后的近5

年时间里,量化基金的发展一度长期处于空窗期。从2009年开始,量化基金

每年以4至5只的发行速度缓慢前行。2014-2015年的牛市阶段,促使了量

化基金正式进入投资者的视野。自2015年起,量化基金市场规模迅速扩张,

10.

第1章

Python量化交易实战入门与技巧初识量化交易

数量及管理规模均快速增长,以公募量化基金为例,已经超过1 000亿元的

规模。

量化私募基金的发展则更为迅速。截至2017年12月底,中国证券投资

基金业协会已备案私募基金管理人22 446家,同比增长28.76%,已备案私

募基金66 418只,同比增长42.82%,管理基金规模11.1万亿元,同比增长

约41%。

与此同时,国内证券研究生金融工程研究如雨后春笋般兴起,纷纷推出

了自行研究的数量化股票投资模型,按照一定的选股标准,如Beta值、市

值、每股收益、市盈率等,以及市场的动态特征对市场行为和投资进行量化,

帮助投资者实现证券投资组合管理,为未来数量化投资的进一步发展奠定了

基础。

1.4 量化交易的故事

下面通过三个量化交易故事,讲解量化交易的起源、算法基石、优势与

风险。

1.4.1 朱尔斯·雷格纳特的故事

从现存资料来看,最早采用科学方法来研究和发现股票价格涨跌规律的

人,既不是股票和股市交易起源地的荷兰人,也不是将金融实践发扬光大的

英国人,更不是一开始就和金融共生在一起的美国人,而是看起来有些不

“靠谱”的法国人。

最早采用量化方法来分析数据变化并从中挖掘市场价格涨跌规律的,是

1834年出生于法国贝当的朱尔斯·雷格纳特(JulesRegnault)。雷格纳特

出身贫寒,成年后到巴黎证券交易所成为股票经纪人助理,跑腿送信的日

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论