从零开始学Python:大数据与量化交易
作者:周峰,王可群 编著
出版时间:2019年版
内容简介
《从零开始学Python 大数据与量化交易》首先讲解量化交易的基础知识,如量化交易的优势、应用、注意事项、历史、量化交易平台等;然后讲解量化交易开发语言Python,即讲解Python 语言的开发环境、基本语法及流程控制、特征数据类型、内置函数与自定义用户函数、面向对象编程;接着讲解大数据分析和可视化的3 个包,分别是Numpy 包、Pandas 包、Matplotlib 包;然后讲解量化交易策略的编写、获取数据函数、基本面量化选股、量化择时的技术指标函数、回测技巧、因子分析技巧;*后讲解Python 量化交易策略的实战案例。在讲解过程中既考虑读者的学习习惯,又通过具体实例剖析讲解Python 大数据与量化交易过程中的热点问题、关键问题及种种难题。《从零开始学Python 大数据与量化交易》适用于各种不同的投资者,如新老股民、中小散户、股票操盘手、基金操盘手和专业股票评论人士以及经济财经类专业的大学生,更适用于那些有志于在这个充满风险、充满寂寞的征程上默默前行的征战者阅读。
目录
目 录
第1 章 量化交易快速入门 1
1.1 初识量化交易 2
1.1.1 量化交易的定义 2
1.1.2 量化交易与算法交易 2
1.1.3 量化交易与黑匣子交易 3
1.1.4 量化交易与程序化交易 3
1.1.5 量化交易与技术分析 3
1.2 量化交易的优势 4
1.2.1 严格的纪律性 4
1.2.2 完备的系统性 4
1.2.3 妥善运用套利的思想 5
1.2.4 靠概率取胜 5
1.3 量化交易的应用 6
1.3.1 投资品种选择 6
1.3.2 投资时机选择 6
1.3.3 算法交易 7
1.3.4 各种套利交易 8
1.3.5 资产配置 9
1.4 量化交易与人工交易的对比 10
1.5 量化交易的注意事项 11
1.6 量化交易的发展过程 11
1.6.1 国外量化交易的发展过程 11
1.6.2 国内量化交易的发展过程 12
1.7 量化交易的平台 12
1.7.1 聚宽JoinQuant 量化交易平台的功能 12
1.7.2 账户注册、登录及策略创建 13
1.7.3 量化交易策略的选股 18
1.7.4 量化交易策略的买卖条件 24
1.7.5 量化交易策略的风险控制 27
1.7.6 量化交易策略的其他参数 28
1.7.7 编写Python 代码来创建量化交易策略 29
1.7.8 量化交易策略的回测详情 30
1.7.9 量化交易策略的模拟交易 32
1.8 量化交易的潜在风险及应对策略 38
第2 章 Python 量化交易的开发环境 39
2.1 初识Python 语言 40
2.1.1 Python 的历史由来 40
2.1.2 Python 的特点 40
2.1.3 Python 的应用 41
2.2 Python 开发环境及配置 42
2.2.1 Python 的下载 42
2.2.2 Python 的安装 43
2.2.3 Python 的环境变量配置 44
2.3 Python 程序的编写 48
2.3.1 利用系统自带的开发软件IDEL直接编写程序并运行 48
2.3.2 创建Python 文件并运行 50
2.4 利用量化交易平台编写Python程序 52
2.4.1 初识IPython Notebook研究平台 52
2.4.2 利用Python Notebook 编写Python 程序 56
第3 章 Python 的基本语法及流程控制 59
3.1 Python 的基本数据类型 60
3.1.1 数值类型 60
3.1.2 字符串类型 62
3.2 变量及赋值 66
3.2.1 变量命名规则 66
3.2.2 变量的赋值 67
3.3 运算符 68
3.3.1 算术运算符 68
3.3.2 赋值运算符 70
3.3.3 位运算符 71
3.4 选择结构 72
3.4.1 关系运算符 73
3.4.2 逻辑运算符 74
3.4.3 if 语句 75
3.4.4 嵌套 if 语句 77
3.5 循环结构 78
3.5.1 while 循环 79
3.5.2 while 循环使用else 语句 79
3.5.3 无限循环 80
3.5.4 for 循环 81
3.5.5 在for 循环中使用range()函数 82
3.6 其他语句 83
3.6.1 break 语句 83
3.6.2 continue 语句 84
3.6.3 pass 语句 85
3.7 Python 的代码格式 86
3.7.1 代码缩进 86
3.7.2 代码注释 86
3.7.3 空行 87
3.7.4 同一行显示多条语句 87
第4 章 Python 的特征数据类型 89
4.1 列表 90
4.1.1 列表的创建 90
4.1.2 3 种方法访问列表中的值 90
4.1.3 两种方法更新列表中的值 91
4.1.4 del 语句删除列表中的值 92
4.1.5 列表的4 个函数 93
4.1.6 列表的方法 94
4.2 元组 95
4.2.1 元组的创建 96
4.2.2 3 种方法访问元组中的值 96
4.2.3 元组的连接 97
4.2.4 整个元组的删除 99
4.2.5 元组的4 个函数 100
4.3 字典 101
4.3.1 字典的创建 101
4.3.2 访问字典中的值和键 101
4.3.3 字典的修改 103
4.3.4 字典中的3 个函数 104
4.4 集合 105
4.4.1 集合的创建 105
4.4.2 集合的两个基本功能 105
4.4.3 集合的运算符 106
4.4.4 集合的方法 108
第5 章 Python 的函数及应用技巧 111
5.1 初识函数 112
5.2 内置函数 112
5.2.1 数学函数 112
5.2.2 随机数函数 113
5.2.3 三角函数 115
5.2.4 字符串函数 117
5.3 用户自定义函数 120
5.3.1 函数的定义 120
5.3.2 调用自定义函数 121
5.3.3 函数的参数传递 122
5.3.4 函数的参数类型 125
5.3.5 匿名函数 128
第6 章 Python 的面向对象编程基础 129
6.1 面向对象 130
6.1.1 面向对象概念 130
6.1.2 类定义与类对象 131
6.1.3 类的继承 133
6.2 模块 136
6.2.1 自定义模块和调用 136
6.2.2 import 语句 138
6.2.3 太阳城
模块 139
6.3 包 140
6.4 变量作用域及类型 141
6.4.1 变量作用域 142
6.4.2 全局变量和局部变量 143
6.4.3 global 和nonlocal 关键字 144
第7 章 Python 大数据分析的Numpy 包 147
7.1 初识Numpy 包 148
7.2 ndarray 数组基础 148
7.2.1 创建Numpy 数组 148
7.2.2 Numpy 特殊数组 152
7.2.3 Numpy 序列数组 155
7.2.4 Numpy 数组索引 156
7.2.5 Numpy 数组运算 157
7.2.6 Numpy 数组复制 158
7.3 Numpy 的矩阵 159
7.4 Numpy 的线性代数 160
7.4.1 两个数组的点积 160
7.4.2 两个向量的点积 161
7.4.3 一维数组的向量内积 162
7.4.4 矩阵的行列式 162
7.4.5 矩阵的逆 164
7.5 Numpy 的文件操作 164
第8 章 Python 大数据分析的Pandas 包 169
8.1 Pandas 的数据结构 170
8.2 一维数组系列 170
8.2.1 创建一个空的系列 170
8.2.2 从ndarray 创建一个系列 171
8.2.3 从字典创建系列 172
8.2.4 从有位置的系列中访问数据 173
8.2.5 使用标签检索数据 174
8.3 二维数组DataFrame 174
8.3.1 创建DataFrame 174
8.3.2 数据的查看 175
8.3.3 数据的选择 179
8.3.4 数据的处理 185
8.4 三维数组Panel 187
第9 章 Python 大数据可视化的Matplotlib 包 189
9.1 Matplotlib 包的优点 190
9.2 figure()函数的应用 190
9.2.1 figure()函数的各参数意义 190
9.2.2 figure()函数的示例 190
9.3 plot()函数的应用 192
9.3.1 plot()函数的各参数意义 192
9.3.2 plot()函数的实例 194
9.4 subplot()函数的应用 195
9.4.1 subplot()的各参数意义 196
9.4.2 subplot()的示例 196
9.5 add_axes 方法的应用 197
9.6 legend()函数的应用 198
9.7 设置字体格式 200
9.8 设置线条的宽度和颜色 201
9.9 坐标轴网格 202
9.10 绘制柱状图 203
9.11 绘制色图和等高线图 204
9.12 绘制立体三维图形 206
第10 章 Python 量化交易策略的编写 209
10.1 股票量化交易策略的组成 210
10.1.1 初始化函数 211
10.1.2 开盘前运行函数 212
10.1.3 开盘时运行函数 212
10.1.4 收盘后运行函数 213
10.2 设置函数 213
10.2.1 设置基准函数 214
10.2.2 设置佣金/印花税函数 214
10.2.3 设置滑点函数 215
10.2.4 设置动态复权(真实价格)模式函数 216
10.2.5 设置成交量比例函数 216
10.2.6 设置是否开启盘口撮合模式函数 217
10.2.7 设置要操作的股票池函数 217
10.3 定时函数 217
10.3.1 定时函数的定义及分类217
10.3.2 定时函数各项参数的意义 218
10.3.3 定时函数的注意事项 219
10.3.4 定时函数的实例 220
10.4 下单函数 220
10.4.1 按股数下单函数 220
10.4.2 目标股数下单函数 221
10.4.3 按价值下单函数 221
10.4.4 目标价值下单函数 222
10.4.5 撤单函数 222
10.4.6 获取未完成订单函数 222
10.4.7 获取订单信息函数 223
10.4.8 获取成交信息函数 223
10.5 日志log 224
10.5.1 设定log 的级别 224
10.5.2 log.info 225
10.6 常用对象 225
10.6.1 Order 对象 225
10.6.2 全局对象g 225
10.6.3 Trade 对象 226
10.6.4 tick 对象 226
10.6.5 Context 对象 227
10.6.6 Position 对象 228
10.6.7 SubPortfolio 对象 229
10.6.8 Portfolio 对象 229
10.6.9 SecurityUnitData 对象 230
第11 章 Python 量化交易策略的获取数据函数 231
11.1 获取股票数据的history()函数 232
11.1.1 各项参数的意义 232
11.1.2 history()函数的应用实例 233
11.2 获取一只股票数据的attribute_
history()函数 236
11.3 查询一个交易日股票财务数据的get_fundamentals()函数 237
11.3.1 各项参数的意义 237
11.3.2 get_fundamentals ()函数的应用实例 238
11.4 查询股票财务数据的get_fundamentals_continuously()函数 242
11.5 获取股票特别数据的get_current_data()函数 243
11.6 获取指数成分股代码的get_index_stocks()函数 244
11.6.1 各项参数的意义 244
11.6.2 get_index_stocks()函数的应用示例 245
11.7 获取行业成分股代码的get_industry_stocks()函数 246
11.8 获取概念成本股代码的get_concept_stocks()函数 247
11.9 获取所有数据信息的get_all_securities()函数 249
11.9.1 各项参数的意义 249
11.9.2 get_all_securities()函数的应用实例 250
11.10 获取一只股票信息的get_security_info()函数 252
11.11 获取龙虎榜数据的get_billboard_list()函数 252
11.11.1 各项参数的意义 252
11.11.2 get_billboard_list()函数的应用实例 253
11.12 获取限售解禁数据的get_locked_shares()函数 254
第12 章 Python 基本面量化选股 255
12.1 初识量化选股 256
12.2 成长类因子选股 256
12.2.1 营业收入同比增长率选股 256
12.2.2 营业收入环比增长率选股 258
12.2.3 净利润同比增长率选股 259
12.2.4 净利润环比增长率选股 259
12.2.5 营业利润率选股 260
12.2.6 销售净利率选股 261
12.2.7 销售毛利率选股 262
12.3 规模类因子选股 263
12.3.1 总市值选股 263
12.3.2 流通市值选股 264
12.3.3 总股本选股 265
12.3.4 流通股本选股 266
12.4 价值类因子选股 267
12.4.1 市净率选股 267
12.4.2 市销率选股 268
12.4.3 市现率选股 269
12.4.4 动态市盈率选股 270
12.4.5 静态市盈率选股 270
12.5 质量类因子选股 271
12.5.1 净资产收益率选股 271
12.5.2 总资产净利率选股 272
12.6 基本面多因子量化选股的注意事项 273
第13 章 Python 量化择时的技术指标函数 275
13.1 初识量化择时 276
13.2 趋向指标函数 276
13.2.1 MACD 指标函数 277
13.2.2 EMV 指标函数 278
13.2.3 UOS 指标函数 279
13.2.4 GDX 指标函数 280
13.2.5 DMA 指标函数 281
13.2.6 JS 指标函数 283
13.2.7 MA 指标函数 284
13.2.8 EXPMA 指标函数 285
13.2.9 VMA 指标函数 286
13.3 反趋向指标函数 287
13.3.1 KD 指标函数 287
13.3.2 MFI 指标函数 288
13.3.3 RSI 指标函数 289
13.3.4 OSC 指标函数 290
13.3.5 WR 指标函数 291
13.3.6 CCI 指标函数 293
13.4 压力支撑指标函数 293
13.4.1 BOLL 指标函数 294
13.4.2 MIKE 指标函数 295
13.4.3 XS 指标函数 296
13.5 量价指标函数 297
13.5.1 OBV 指标函数 297
13.5.2 VOL 指标函数 298
13.5.3 VR 指标函数 299
13.5.4 MASS 指标函数 300
第14 章 Python 量化交易策略的回测技巧 303
14.1 量化交易策略回测的流程 304
14.2 利用Python 编写MACD 指标量化策略 304
14.2.1 量化交易策略的编辑页面 304
14.2.2 编写初始化函数 307
14.2.3 编写单位时间调用的函数 307
14.3 设置MACD 指标量化策略的回测参数 308
14.4 MACD 指标量化策略的回测详情 310
14.5 MACD 指标量化策略的风险指标 313
14.5.1 Alpha(阿尔法) 314
14.5.2 Beta(贝塔) 314
14.5.3 Sharpe(夏普比率) 315
14.5.4 Sortino(索提诺比率) 316
14.5.5 Information Ratio(信息比率) 317
14.5.6 Volatility(策略波动率) 318
14.5.7 Benchmark Volatility(基准波动率) 318
14.5.8 Max Drawdown(回撤) 319
第15 章 Python 量化交易策略的因子分析技巧 321
15.1 因子分析概述 322
15.1.1 因子的类型 322
15.1.2 因子分析的作用 322
15.2 因子分析的实现代码 322
15.2.1 因子分析中变量的含义 322
15.2.2 因子分析中可以使用的基础因子 323
15.2.3 calc 的参数及返回值 324
15.3 因子分析的结果 324
15.3.1 新建因子 325
15.3.2 收益分析 327
15.3.3 IC 分析 330
15.3.4 换手分析 331
15.4 因子在研究和回测中的使用 332
15.5 基本面因子应用实例 334
第16 章 Python 量化交易策略的实战案例 337
16.1 MA 均线量化交易策略实战案例 338
16.1.1 编写初始化函数 338
16.1.2 编写单位时间调用的函数 339
16.1.3 MA 均线量化交易策略的回测 340
16.2 多均线量化交易策略实战案例 341
16.2.1 编写初始化函数 341
16.2.2 编写交易程序函数 342
16.2.3 多均线量化交易策略的回测 343
16.3 能量型指标量化交易策略实战案例 344
16.3.1 编写初始化函数 344
16.3.2 编写单位时间调用的函数 345
16.3.3 能量型指标量化交易策略的回测 346
16.4 KD 指标量化交易策略实战案例 347
16.4.1 编写初始化函数 347
16.4.2 编写开盘前运行函数 348
16.4.3 编写开盘时运行函数 348
16.4.4 编写收盘后运行函数 349
16.4.5 KD 指标量化交易策略的回测 349
16.5 BOLL 指标量化交易策略实战案例 350
16.5.1 编写初始化函数 350
16.5.2 编写开盘前运行函数 351
16.5.3 编写开盘时运行函数 351
16.5.4 编写收盘后运行函数 352
16.5.5 BOLL 指标量化交易策略的回测 352
16.6 多股票持仓量化交易策略实战案例 353
16.6.1 编写初始化函数 353
16.6.2 编写单位时间调用的函数 354
16.6.3 多股票持仓量化交易策略的回测 354
16.7 医药股轮动量化交易策略实战案例 355
16.7.1 编写初始化函数 355
16.7.2 编写选股函数 356
16.7.3 编写交易函数 356
16.7.4 医药股轮动量化交易策略的回测 357
16.8 中市值股票量化交易策略实战案例 358
16.8.1 编写初始化函数 358
16.8.2 编写选股函数 358
16.8.3 编写过滤停牌股票函数 359
16.8.4 编写交易函数 359
16.8.5 中市值股票量化交易策略的回测 360
16.9 低估价值股量化交易策略实战案例 360
16.9.1 编写初始化函数 361
16.9.2 编写选股函数 361
16.9.3 编写交易函数 362
16.9.4 低估价值股量化交易策略的回测 363