本书由浅入深地讲解了算法交易的相关知识,先从基础知识和环境配置讲起,其次讲解如何通过编程完成交易信息的生成与交易策略的实施,随后介绍众多算法交易策略,以及如何管理算法策略中的风险,然后带领读者用Python建立自己交易系统,并迎接算法交易的深层挑战。
全书共分为10章,包括算法交易的基础原理、通过技术分析解读市场、通过基础机器学习预测市场、人类直觉驱动的交易策略、复杂的算法策略、管理算法策略中的风险、用Python构建交易系统、连接到交易所、在Python中创建回测器、适应市场参与者和环境。
《Python算法交易实战》一书是金融科技系列图书的力作,带领读者深入理解现代电子交易市场和市场参与者之间的交互与运作方式,包含建模、交易、风控等重要主题,以及通过基于Python的机器学习和数据分析等技术实现算法交易的相关知识和实践技巧,从而让读者实现有竞争力的算法交易,华丽变身金融交易大神。
通过阅读本书,你将能够:
● 了解现代算法交易系统和策略的组成部分;
● 掌握一些有代表性的交易策略的运作、实施和分析方法;
● 使用 Python 在交易信号和策略中应用机器学习算法;
● 量化并构建 Python 交易策略的风险管理系统;
● 构建回测器来运行模拟交易策略,以提高交易系统的性能;
● 在实际市场中部署和整合交易策略,以维持和提高赢利能力;
● 使用 Python 设计、构建一个实用并能带来盈利的算法交易机器人。
本书包含丰富实用的案例和代码示例,读者可以根据本书前言中的指导下载本书配套的代码和彩图资源,以便充分理解书中所讲的算法及交易知识。
塞巴斯蒂安·多纳迪奥(Sebastien Donadio)是 Tradair 公司的技术官,负责技术指导。他具有丰富的专业技术从业经验,曾担任 HC Technologies 公司的软件工程负责人、高频 FX 公司的合伙人和技术总监、Sun Trading 公司的定量交易策略软件开发商。他还拥有 Bull SAS 公司的研究经验,并且曾在法国兴业银行(Société Générale)担任 IT 信用风险经理。在过去的十年中,他曾在美国芝加哥大学、纽约大学和哥伦比亚大学教授过各种计算机科学课程。他的主要爱好是技术,除此之外,他还是一名潜水教练和经验丰富的攀岩运动员。
苏拉夫?戈什(Sourav Ghosh)在过去十年中曾在多家高频算法交易公司工作。他为世界各地的交易所建立和部署了极低延迟、高吞吐量的算法交易系统,涉及多个资产类别。他擅长统计套利做市策略,以及全球流动性强的期货合约的配对交易策略。他在美国芝加哥一家贸易公司担任量化开发人员,拥有美国南加州大学的计算机科学硕士学位。他感兴趣的领域包括计算机结构、金融科技、概率论和随机过程、统计学习和推理方法,以及自然语言处理。
第 1 部分 基础知识和环境配置
第 1 章 算法交易的基础原理 2
1.1 为什么要交易 2
1.2 有关现代交易的基本概念 3
1.2.1 市场板块 3
1.2.2 资产类别 4
1.2.3 现代交易市场的基本情况 5
1.3 了解算法交易概念 7
1.3.1 交换订单簿 7
1.3.2 交换匹配算法 7
1.3.3 限价订单簿 9
1.3.4 交换市场数据协议 9
1.3.5 市场数据提供处理程序 9
1.3.6 订单类型 10
1.3.7 交换订单输入协议 10
1.3.8 订单输入网关 10
1.3.9 头寸和损益管理 11
1.4 从直觉到算法交易 11
1.4.1 为什么需要自动化交易 12
1.4.2 算法交易的演变—从基于规则的交易到全自动算法交易 12
1.5 算法交易系统的组成部分 14
1.5.1 市场数据订阅 15
1.5.2 限价订单簿 15
1.5.3 信号 15
1.5.4 信号聚合器 16
1.5.5 执行逻辑 16
1.5.6 头寸和损益管理 17
1.5.7 风险管理 17
1.5.8 回测 17
1.6 为什么选择 Python 18
1.6.1 选择 IDE—PyCharm 或 Jupyter Notebook 19
1.6.2 第 一个算法交易 20
1.6.3 设置你的工作区 20
1.6.4 PyCharm 20
1.6.5 获取数据 21
1.6.6 准备数据——信号 22
1.6.7 信号可视化 24
1.6.8 回测 25
1.7 总结 27
第 2 部分 交易信息生成与交易策略
第 2 章 通过技术分析解读市场 30
2.1 基于趋势和动量指标设计交易策略 31
2.2 基于基本技术分析创建交易信号 37
2.2.1 简单移动平均线 37
2.2.2 指数移动平均线 39
2.2.3 绝对价格振荡器 42
2.2.4 异同移动平均线 44
2.2.5 布林带 47
2.2.6 相对强弱指标 49
2.2.7 标准偏差 53
2.2.8 动量 55
2.3 在交易工具中贯彻高级概念,如季节性 57
2.4 总结 63
第 3 章 通过基础机器学习预测市场 65
3.1 了解术语和符号 66
3.2 使用线性回归方法创建预测模型 70
3.2.1 普通最小二乘法 70
3.2.2 正规化和收缩——LASSO 和 Ridge 回归 75
3.2.3 决策树回归 77
3.3 使用线性分类方法创建预测模型 77
3.3.1 K 近邻 77
3.3.2 支持向量机 79
3.3.3 逻辑回归 81
3.4 总结 81
第 3 部分 算法交易策略
第 4 章 人类直觉驱动的经典交易策略 84
4.1 创建基于动量和趋势跟踪的交易策略 84
4.2 创建适用于具有回归行为的交易策略 91
4.3 创建在线性相关的交易工具组上操作的交易策略 92
4.4 总结 107
第 5 章 复杂的算法策略 108
5.1 创建根据交易工具的波动性进行调整的交易策略 108
5.1.1 调整技术指标中交易工具的波动率 109
5.1.2 调整交易策略中交易工具的波动率 109
5.1.3 波动率调整后的均值回归交易策略 110
5.2 制定经济事件的交易策略 127
5.2.1 经济发布 127
5.2.2 经济发布格式 128
5.2.3 电子化经济发布服务 129
5.2.4 交易中的经济发布 129
5.3 实施基本的统计套利交易策略 131
5.3.1 StatArb 的基础 131
5.3.2 StatArb 中的领先滞后 132
5.3.3 调整投资组合的构成和关系 132
5.3.4 StatArb 的基础设施费用 133
5.3.5 Python 中的 StatArb 133
5.4 总结 148
第 6 章 管理算法策略中的风险 149
6.1 区分风险类型和风险因素 149
6.1.1 交易损失的风险 150
6.1.2 违反法规的风险 150
6.1.3 欺骗 151
6.1.4 报价填充 151
6.1.5 操纵收盘价 152
6.1.6 风险来源 152
6.1.7 量化风险 154
6.2 区分风险措施 155
6.2.1 止损 156
6.2.2 最大跌幅 158
6.2.3 头寸限制 160
6.2.4 持仓时间 161
6.2.5 PnL 的差异 162
6.2.6 夏普比率 163
6.2.7 每周期最大执行量 165
6.2.8 最大交易规模 167
6.2.9 数量限制 167
6.3 制定风险管理算法 168
6.4 总结 180
第 4 部分 建立交易系统
第 7 章 用 Python 构建交易系统 182
7.1 了解交易系统 182
7.1.1 网关 183
7.1.2 订单簿管理 185
7.1.3 策略 186
7.1.4 订单管理系统 187
7.1.5 关键组件 188
7.1.6 非关键组件 188
7.2 构建交易系统 190
7.2.1 流动性提供者类 191
7.2.2 策略类 193
7.2.3 订单管理器类 198
7.2.4 市场模拟器类 202
7.2.5 测试交易模拟类 205
7.3 设计限价订单簿 207
7.4 总结 214
第 8 章 连接到交易所 215
8.1 使交易系统可与交易所进行交易 215
8.2 审查通信 API 217
8.2.1 网络基础知识 217
8.2.2 交易协议 218
8.2.3 FIX 协议 219
8.3 接收价格更新 221
8.4 发送订单和接收市场响应 226
8.4.1 接收器代码示例 228
8.4.2 其他交易 API 232
8.5 总结 233
第 9 章 在 Python 中创建回测器 234
9.1 学习如何构建回测器 235
9.1.1 样本内数据与样本外数据的比较 235
9.1.2 模拟交易 236
9.1.3 单纯的数据存储 236
9.1.4 HDF5 文件 236
9.1.5 数据库 238
9.2 学习如何选择正确的假设 241
9.2.1 for 循环回测系统 243
9.2.2 事件驱动的回测系统 244
9.3 评估时间价值 246
9.4 回测双移动平均线交易策略 250
9.4.1 for 循环回测器 250
9.4.2 基于事件的回测器 253
9.5 总结 260
第 5 部分 算法交易的挑战
第 10 章 适应市场参与者和环境 262
10.1 回测器与实际市场的策略表现 263
10.1.1 回测器失调的影响 264
10.1.2 仿真失调的原因 266
10.1.3 根据实时交易调整回测和策略 268
10.2 算法交易的持续赢利能力 272
10.2.1 算法交易策略中的利润衰减 272
10.2.2 适应市场条件和不断变化的市场参与者 276
10.3 总结 286
后记 287