ML for Trading - 第二版
这本书旨在展示机器学习如何以实际而全面的方式为算法交易策略增值。它涵盖了广泛的机器学习技术,从线性回归到深度强化学习,并展示了如何构建、回测和评估一个由模型预测驱动的交易策略。
这本书分为四部分,共 23 章加附录,内容覆盖 超过 800 页:
- 数据来源、金融特征工程和投资组合管理的重要方面,
- 基于监督和无监督机器学习算法的长短策略的设计和评估,
- 如何从证券交易委员会(SEC)文件、盈利电话会议记录或金融新闻等金融文本数据中提取可交易信号,
- 使用市场和替代数据的深度学习模型,如卷积神经网络(CNN)和循环神经网络(RNN),如何通过生成对抗网络生成合成数据,以及使用深度强化学习训练交易代理
该仓库包含 超过 150 个笔记本,将书中讨论的概念、算法和用例付诸实践。它们提供了许多示例展示:
- 如何处理和从市场、基本面和替代性文本和图像数据中提取信号,
- 如何训练和调整预测不同资产类别和投资期限回报的模型,包括如何复制最近发布的研究,及
- 如何设计、回测和评估交易策略。
我们强烈建议在阅读这本书的同时查看这些笔记本;它们通常处于已执行状态,且通常包含因空间限制未包括的附加信息。
除该仓库中的信息外,书籍的网站(ml4trading.io)包含章节总结和其他信息。
加入ML4T社区!
为了方便读者询问书中内容和代码示例的问题,以及开发和实施自己的策略和行业发展,我们搭建了一个在线平台。
请加入我们的社区,联系对利用机器学习进行交易策略感兴趣的其他交易者,分享您的经验,互相学习!
第二版有哪些新内容?
首先,这本书演示了如何从多种数据来源中提取信号,并使用广泛的监督学习、无监督学习和强化学习算法为不同资产类别设计交易策略。它还提供了相关的数学和统计知识,以便调优化一个算法或解释结果。此外,它涵盖了有助于处理市场和基本面数据、提取信息特征和管理交易策略表现的金融背景知识。
从实用的角度来看,第二版旨在让您掌握开发基于机器学习的交易策略的概念理解和工具。为此,它将机器学习置于一个流程的关键元素,而不是一个独立的练习,从数据源、特征工程和模型优化到策略设计和回测,介绍了端到端的机器学习交易工作流程。
更具体地说,ML4T 工作流程从为一个明确的投资领域生成创意,收集相关数据,并提取信息特征开始。它还包括设计、调整和评估适合预测任务的机器学习模型。最后,它需要开发交易策略以根据模型的预测信号采取行动,并使用回测引擎模拟和评估其在历史数据上的表现。一旦决定在实际市场中执行算法策略,您将发现自己需要反复迭代这个工作流程,以整合新的信息和变化的环境。
第二版的重点在于 ML4T 工作流程的应用,增加了一章关于策略回测,新的附录描述了超过 100 种不同的阿尔法因子,并新增了许多实际应用。我们还重新编写了大部分现有内容,以提高清晰度和可读性。
交易应用现在使用更广泛的数据源,不仅限于每日美国股票价格,还包括国际股票和ETF。它还演示了使用分钟频率股票数据的日内策略如何应用机器学习。此外,它扩展了替代数据源的覆盖范围,包括用于情绪分析和回报预测的 SEC 文件,以及用于土地利用分类的卫星图像。
第二版的另一个创新是复现了最近在顶级期刊上发表的几种交易应用:
- 第 18 章演示了如何将时间序列转化为图像格式,应用卷积神经网络进行回报预测,基于Sezer 和 Ozbahoglu(2018)。
- 第 20 章展示了如何使用自动编码器基于股票特征提取条件风险因子进行资产定价,基于自动编码器资产定价模型,由 Gu Shihao、Bryan T. Kelly 和 Dacheng Xiu(2019)编写。
- 第 21 章展示了如何基于时间序列生成对抗网络,由 Jinsung Yoon、Daniel Jarrett 和 Mihaela van der Schaar(2019)编写,创造合成训练数据。
所有应用现在都使用撰写时最新的软件版本,如 Pandas 1.0 和 TensorFlow 2.2。还有一个定制版的 Zipline,使得在设计交易策略时包含机器学习模型预测变得简单。
安装、数据源和问题报告
代码示例依赖于数据科学和金融领域的广泛 Python 库。
不需要一次性安装所有库,因为这增加了遇到版本冲突的可能性。相反,我们建议您按章节逐步安装所需库。
2022 年 3 月更新:
zipline-reloaded
、pyfolio-reloaded
、alphalens-reloaded
和empyrical-reloaded
现已在conda-forge
频道可用。ml4t
频道仅包含过时版本,很快将被删除。
2021 年 4 月更新:随着 Zipline 的更新,不再需要使用 Docker。安装说明现在引用特定操作系统的环境文件,以简化笔记本的运行。
2021 年 2 月更新:代码示例发布的 2.0 版更新了 Docker 镜像中的 conda 环境,包括 Python 3.8、Pandas 1.2 和 TensorFlow 1.2 等;Zipline 回测环境现在使用 Python 3.6。
- 安装目录包含有关设置和使用 Docker 镜像运行笔记本的详细说明。它还包含配置文件,用于设置各种
conda
环境,并根据您的喜好将笔记本中使用的软件包直接安装到您的机器上(取决于您的系统,可能需要付出额外的努力)。 - 要下载和预处理本书中使用的许多数据源,请参见 README 文件中的说明,位于 data 目录中的各种笔记本旁边。
如果您在安装环境、下载数据或运行代码时遇到任何困难,请在仓库中提出 GitHub 问题(这里)。有关 GitHub 问题的操作描述请参见这里。
更新:您可以这里下载本书中使用的 algoseek 数据。有关预处理的说明,请参见第 2 章,以及第 12 章中使用梯度提升模型的日内示例。
更新:figures 目录包含本书中使用的图表的彩色版本。
大纲和章节摘要
这本书分为四部分,解决了在获取和处理市场、基本和替代数据、开发ML(机器学习)解决方案以适应不同交易环境中的预测任务、以及设计和评估依赖于ML模型预测信号的交易策略时出现的各种挑战。
每章的目录中包含一个README文件,里面有关于内容、代码示例和额外资源的更多信息。
- 06 机器学习过程
- 07 线性模型:从风险因子到回报预测
- 08 ML4T工作流程:从模型到策略回测
- 09 时间序列模型:波动率预测和统计套利
- 10 贝叶斯ML:动态夏普比率和配对交易
- 11 随机森林:日本股票的长短策略
- 12 提升你的交易策略
- 13 数据驱动的风险因子和无监督学习的资产配置
- 17 深度学习交易
- 18 金融时间序列和卫星图像的CNN
- 19 多变量时间序列和情感分析的RNN
- 20 条件风险因子与资产定价的自编码器
- 21 生成对抗网络用于合成时间序列数据
- 22 深度强化学习:构建一个交易代理
- 23 结论与后续步骤
- 24 附录 - Alpha因子库
第一部分:从数据到策略开发
第一部分提供了一个由机器学习(ML)驱动的交易策略开发框架。它主要关注驱动这些ML算法和策略的数据,概述了如何设计并评估适合ML模型的特征,以及在执行交易策略时如何管理和衡量投资组合的表现。
01 机器学习交易:从概念到执行
这章章节探讨了导致ML成为投资行业中竞争优势来源的行业趋势。我们还会看看ML在投资过程中如何适配,以实现算法交易策略。
具体来说,它涵盖了以下主题:
- 推动ML在投资行业崛起的关键趋势
- 利用ML设计和执行交易策略
- ML在交易中的热门用例
02 市场与基本数据:来源和技术
这章章节展示了如何使用市场与基本数据,并描述了它们反映的环境的关键方面。比如,熟悉各种订单类型和交易基础设施不仅有助于理解数据,还能帮助正确设计回测模拟。我们还展示了如何使用Python访问和操作交易与财务数据。
实用例子展示了如何使用NASDAQ逐笔数据和Algoseek分钟级的数据,这些数据包含丰富的属性,捕捉了供需动态,后来我们将这些数据用于基于ML的日内策略中。我们还涵盖了各种数据提供商API以及如何从SEC获取财务报表信息。
特别的是,这章涵盖了:
- 市场数据如何反映交易环境的结构
- 以分钟频率处理日内交易和报价数据
- 使用NASDAQ ITCH从逐笔数据重建限价订单簿
- 使用各种类型的条形图总结逐笔数据
- 使用可扩展商业报告语言(XBRL)编码的电子申报
- 解析和结合市场与基本数据以创建P/E时间序列
- 如何使用Python访问各种市场与基本数据源
03 金融替代数据:类别和用例
这章章节概述了替代数据的类别和用例,描述了评估爆炸性数据源和提供商的标准,并总结了当前的市场格局。
它还展示了如何通过抓取网站创建替代数据集,例如收集盈利电话记录,以便在本书第三部分中使用自然语言处理(NLP)和情感分析算法。
具体而言,这章涵盖了:
- 替代数据革命中出现的新信号来源
- 个人、企业和传感器如何生成多样化的替代数据
- 重要的替代数据类别和提供商
- 评估不断增长的替代数据供应如何用于交易
- 使用Python处理替代数据,例如通过抓取互联网数据
04 金融特征工程:如何研究Alpha因子
如果你已经对ML有所了解,你就会知道特征工程是成功预测的重要因素。在交易领域也同样重要,在这个领域,学术界和行业研究者们数十年来一直在研究是什么驱动资产市场和价格,以及哪些特征有助于解释或预测价格变化。
这章章节概述了这方面研究的关键要点,作为你自己寻找Alpha因子的起点。它还介绍了计算和测试Alpha因子的基本工具,强调了如何利用NumPy,pandas和TA-Lib库来操作数据,并展示了如小波和卡尔曼滤波器等流行的平滑技术,帮助减少数据中的噪音。读完这章,你将了解:
- 存在哪些类别的因子,为什么它们有效,以及如何衡量它们
- 使用NumPy、pandas和TA-Lib创建Alpha因子
- 使用小波和卡尔曼滤波器去噪数据
- 使用Zipline测试单个和多个Alpha因子
- 如何使用Alphalens评估预测性能
05 投资组合优化和绩效评估
Alpha因子生成信号,一个算法策略将这些信号转化为交易,从而产生多头和空头头寸。由此产生的投资组合的回报和风险决定了该策略是否满足投资目标。
优化投资组合有几种方法。这些方法包括应用机器学习(ML)来学习资产之间的层次关系,在设计投资组合的风险概况时将它们视为互补或替代品。这章章节涵盖了:
- 如何衡量投资组合的风险和回报
- 通过均值方差优化和替代方法管理投资组合权重
- 使用机器学习优化投资组合中的资产配置
- 使用Zipline模拟交易并创建基于Alpha因子的投资组合
- 如何使用pyfolio评估投资组合绩效
第二部分:交易中的机器学习:基础
第二部分介绍了基本的监督和无监督学习算法,并展示了它们在交易策略中的应用。它还介绍了Quantopian平台,使你可以利用和结合本书中开发的数据和ML技术来实现进行实时交易的算法策略。
06 机器学习过程
这章章节开启了第二部分,展示了如何使用一系列监督和无监督的ML模型进行交易。我们将解释每种模型的假设和用例,然后使用各种Python库展示相关应用。
许多模型及其应用有几个共同点。这章涵盖了这些共同点,以便我们在后续章节中专注于模型特定的用法。它通过概述如何系统地设计、训练、调整和评估ML模型的预测性能来奠定基础。内容包括:
- 如何从数据中进行监督和无监督学习
- 培训和评估回归和分类任务的监督学习模型
- 偏差-方差权衡如何影响预测性能
- 如何诊断和解决过拟合引起的预测错误
- 为时序数据使用交叉验证优化超参数
- 为什么在测试样本外的数据时金融数据需要额外关注
07 线性模型:从风险因子到回报预测
线性模型是回归和分类情境中进行推断和预测的标准工具。许多广泛使用的资产定价模型依赖于线性回归。诸如岭回归和Lasso回归等正则化模型通过限制过拟合的风险,通常能产生更好的预测效果。典型的回归应用中,会识别驱动资产收益的风险因素,以管理风险或预测收益。另一方面,分类问题则包括方向性价格预测。
第七章涵盖以下主题:
- 线性回归的工作原理及其假设
- 训练和诊断线性回归模型
- 使用线性回归预测股票收益
- 使用正则化提高预测性能
- 逻辑回归的工作原理
- 将回归转换为分类问题
08 机器学习在交易中的工作流:从模型到策略回测
这一章节从设计、模拟和评估由机器学习算法驱动的交易策略的全过程角度进行介绍。 我们将详细演示如何在历史市场情境中,使用Python库backtrader和Zipline来回测一个由机器学习驱动的策略。 ML4T工作流的最终目的是从历史数据中收集证据,以帮助决定是否在实时市场中部署候选策略并投入金融资源。对策略的现实模拟需要忠实地代表证券市场的运行方式和交易的执行情况。此外,几个方法方面的问题需要注意,以避免引致偏差的结果和错误的发现,从而导致糟糕的投资决策。
具体来说,通过学习本章节,你将能够:
- 规划和实施端到端的策略回测
- 理解并避免回测实施中至关重要的陷阱
- 讨论向量化与事件驱动回测引擎的优缺点
- 识别和评估事件驱动回测器的关键组件
- 使用分分和日频的数据源设计并执行ML4T工作流,单独训练机器学习模型或作为回测的一部分
- 使用Zipline和backtrader设计和评估你的策略
09 时间序列模型:波动率预测和统计套利
本章节重点介绍从时间序列历史中提取信号,以预测相同时间序列的未来值的模型。 由于交易内在的时间维度,时间序列模型被广泛使用。它介绍了诊断时间序列特征(如平稳性)以及提取可能有用模式的特征的工具。还介绍了单变量和多变量时间序列模型,以预测宏观数据和波动性模式。 最后,它解释了协整如何识别时间序列间的共同行趋势,并展示了如何基于这一关键概念开发配对交易策略。
具体来说,它涵盖了:
- 如何使用时间序列分析来准备和指导建模过程
- 估计和诊断单变量自回归和移动平均模型
- 构建自回归条件异方差(ARCH)模型以预测波动率
- 如何构建多变量向量自回归模型
- 使用协整开发配对交易策略
10 贝叶斯机器学习:动态夏普比率和配对交易
贝叶斯统计使我们能够量化对未来事件的不确定性,并随着新信息的到来以有原则的方式优化估计。这一动态方法很好地适应了金融市场的变化性质。 贝叶斯机器学习方法能够对统计指标、不确定性、参数估计和预测提供新的见解。从更细粒度的风险管理到动态更新结合市场环境变化的预测模型,应用场景广泛。
具体来说,本章节包括:
- 贝叶斯统计如何应用于机器学习
- 使用PyMC3进行概率编程
- 定义和训练使用PyMC3的机器学习模型
- 如何运行最先进的采样方法进行近似推断
- 贝叶斯机器学习应用于计算动态夏普比率、动态配对交易对冲比率以及估计随机波动率
11 随机森林:日本股市的多空策略
本章节将决策树和随机森林应用于交易。决策树从数据中学习规则,这些规则编码了非线性输入与输出的关系。我们展示如何训练决策树以进行回归和分类预测,如何可视化和解释模型学到的规则,并通过调优模型的超参来优化偏差-方差的权衡以防止过拟合。
本章节的第二部分介绍了集成模型,它将多个决策树随机组合以生成具有较低错误的单一预测。最后,以基于随机森林模型生成的交易信号,介绍了一种针对日本股票的多空策略。
简而言之,本章节涵盖:
- 使用决策树进行回归和分类
- 从决策树中获得洞见并可视化从数据中学到的规则
- 理解为什么集成模型往往能带来更优的结果
- 使用Bootstrap聚合法解决决策树的过拟合问题
- 训练、调优并解释随机森林
- 使用随机森林设计和评估盈利的交易策略
12 提升你的交易策略
梯度提升是一种替代的基于树的集成算法,通常能产生比随机森林更好的结果。关键区别在于提升根据模型累计的错误来修改用于训练每棵树的数据。虽然随机森林使用数据的随机子集独立地训练多棵树,提升则按顺序进行并重新加权数据。 本章节展示了先进的库如何实现令人印象深刻的性能,并应用提升算法在日内和高频数据上回测日内交易策略。
具体来说,我们将涵盖以下主题:
- 提升与袋装的区别及梯度提升从自适应提升中演变而来
- 使用scikit-learn设计并调优自适应和梯度提升模型
- 在大数据集上用最先进的实现XGBoost、LightGBM和CatBoost构建、优化和评估梯度提升模型
- 使用SHAP值解释和获得梯度提升模型的洞见
- 使用提升算法设计日内策略并处理高频数据
13 数据驱动的风险因素和无监督学习的资产分配
降维和聚类是无监督学习的主要任务:
- 降维将现有特征转换成新的、更小的集合,同时尽量减少信息损失。存在一系列广泛的算法,区别在于它们如何衡量信息损失,是否应用线性或非线性变换,以及对新特征集施加的约束。
- 聚类算法识别并分组相似的观测值或特征,而不是识别新特征。算法在定义观测值相似性及其对结果组的假设上有所不同。
具体来说,本章节涵盖:
- 主成分分析(PCA)和独立成分分析(ICA)如何执行线性降维
- 使用PCA从资产回报中识别数据驱动的风险因素和特征组合
- 使用流形学习有效地可视化非线性、高维数据
- 使用T-SNE和UMAP探索高维图像数据
- K均值、层次聚类和基于密度的聚类算法的工作原理
- 使用凝聚聚类,以层次风险平衡构建稳健的投资组合
第三部分:交易中的自然语言处理
文本数据内容丰富,但由于格式非结构化,因此需要更多的预处理,以便机器学习算法能够提取潜在信号。关键的挑战在于将文本转换为可由算法使用的数值格式,同时表达内容的语义或含义。
接下来的三个章节涵盖了一些技术,这些技术能够捕捉人类容易理解的语言细节,以便机器学习算法也能解释它们。
14 交易中的文本数据:情感分析
文本数据内容丰富但高度非结构化,因此需要更多的预处理,以使机器学习算法能够提取相关信息。主要挑战在于在不损失其意义的情况下将文本转换为数值格式。 本章节展示了如何通过创建文档-词项矩阵来将文档表示为标记计数向量,该矩阵反过来可用作文本分类和情感分析的输入。还介绍了朴素贝叶斯算法,并将其与线性模型和基于树的模型的性能进行比较。
具体来说,本章节涵盖:
- 基本的NLP工作流程是什么样子
- 如何使用spaCy和TextBlob构建多语言特征提取管道
- 执行词性标注或命名实体识别等NLP任务
- 通过文档-词项矩阵将标记转换为数字
- 使用朴素贝叶斯模型对新闻进行分类
- 如何使用不同的机器学习算法进行情感分析
15 主题建模:总结财经新闻
本章节使用无监督学习对潜在主题进行建模,并从文档中提取隐藏的主题。这些主题可以生成对大量金融报告的详细见解。 主题模型自动创建复杂且可解释的文本特征,进而有助于从大量文本中提取交易信号。它们加快了文档审核,能够对相似文档进行聚类,并生成对预测建模有用的注释。 应用包括识别公司披露、盈利电话会议记录或合同中的关键主题,以及基于情感分析或使用相关资产的回报进行注释。
具体来说,它涵盖:
- 主题建模如何演变,能实现什么以及为何重要
- 使用潜在语义索引(LSI)减少DTM的维度
- 使用概率潜在语义分析(pLSA)提取主题
- 潜在狄利克雷分配(LDA)如何改进pLSA成为最流行的主题模型
- 可视化并评估主题建模结果
- 使用scikit-learn和gensim运行LDA
- 如何将主题建模应用于收益电话会议和财经新闻文章的集合
16 词嵌入:收益电话会议和SEC文件
本章节使用神经网络学习单个语义单元(如单词或段落)的向量表示。这些向量是稠密的,具有几百个实值条目,相比之下,词袋模型的向量是高维稀疏的。因此,这些向量在连续向量空间中嵌入或定位每个语义单元。
嵌入的结果来自于训练模型,将标记与它们的上下文相关联,其好处是相似的使用方式意味着相似的向量。因此,它们通过相对位置编码了语义方面的关系。它们是强大的特征,我们将在后续章节中将其与深度学习模型结合使用。
更具体地说,在本章节中,我们将涵盖: - 什么是词嵌入以及它们如何捕捉语义信息 - 如何获得和使用预训练的词向量 - 哪些网络架构对训练word2vec模型最有效 - 如何使用TensorFlow和gensim训练word2vec模型 - 可视化和评估词向量的质量 - 如何在SEC文件上训练word2vec模型以预测股票价格变动 - doc2vec如何扩展word2vec并帮助进行情感分析 - 为什么transformer的注意力机制对NLP产生了如此大的影响 - 如何在金融数据上微调预训练的BERT模型
第四部分:深度学习与强化学习
第四部分解释并展示了如何利用深度学习进行算法交易。深度学习算法强大的能力在于识别非结构化数据中的模式,使其特别适用于图像和文本等替代数据。
示例应用展示了如何将文本和价格数据结合起来,从SEC文件中预测收益意外,生成合成时间序列以扩大训练数据量,并使用深度强化学习训练交易代理。多个这些应用重现了最近在顶级期刊中发表的研究。
第17章 交易中的深度学习
本章节介绍了前馈神经网络(NN)并展示了如何使用反向传播高效地训练大型模型,同时管理过拟合的风险。它还展示了如何使用TensorFlow 2.0和PyTorch以及如何优化NN架构以生成交易信号。 在接下来的章节中,我们将在此基础上应用各种架构到不同的投资应用中,重点是替代数据。这些包括适用于时间序列或自然语言等顺序数据的循环神经网络(RNN)和特别适用于图像数据的卷积神经网络(CNN)。我们还将介绍深度无监督学习,例如如何使用生成对抗网络(GAN)创建合成数据。此外,我们将讨论强化学习,以训练从其环境中互动学习的代理。
特别是,本章节将涵盖:
- DL如何解决复杂领域中的AI挑战
- 推动DL当前受欢迎的关键创新
- 前馈网络如何从数据中学习表示
- 在Python中设计和训练深度神经网络(NNs)
- 使用Keras,TensorFlow和PyTorch实现深度NNs
- 构建和调优深度NN以预测资产回报
- 设计和回测基于深度NN信号的交易策略
第18章 金融时间序列和卫星图像的CNN
CNN架构不断演变。本章节描述了成功应用的常见构建块,演示了迁移学习如何加速学习,以及如何使用CNN进行目标检测。 CNN可以从图像或时间序列数据中生成交易信号。卫星数据可以通过农业地区,矿山或运输网络的空中图像预测商品趋势。摄像机画面可以帮助预测消费者活动;我们展示了如何构建一个CNN来分类卫星图像中的经济活动。 CNN还可以通过利用与图像的结构相似性来提供高质量的时间序列分类结果,并且我们设计了一种基于像图像一样格式化的时间序列数据的策略。
更具体地说,本章节涵盖:
- CNN如何使用多个构建块高效地建模网格状数据
- 使用TensorFlow对图像和时间序列数据进行训练,调优和正则化
- 利用迁移学习精简CNN,甚至在数据较少的情况下
- 使用基于格式化为图像的时间序列数据的CNN的回报预测设计交易策略
- 如何基于卫星图像分类经济活动
第19章 变量时间序列和情感分析的RNN
循环神经网络(RNN)将每个输出计算为先前输出和新数据的函数,有效地创建了一个具有记忆的模型,它在更深的计算图中共享参数。主要架构包括长短期记忆(LSTM)和门控循环单元(GRU),这些架构解决了学习长程依赖的问题。 RNN旨在将一个或多个输入序列映射到一个或多个输出序列,特别适合于自然语言。它们还可以应用于单变量和多变量时间序列,以预测市场或基本数据。本章节介绍了如何使用第16章讨论的词嵌入,使用RNN建模替代文本数据以分类文档中表达的情感。
更具体地说,本章节涵盖:
- 循环连接如何允许RNN记住模式并建模隐藏状态
- RNN的计算图展开和分析
- 门控单元如何从数据中学习调节RNN记忆以实现长程依赖
- 在Python中设计和训练单变量和多变量时间序列的RNN
- 如何学习词嵌入或使用预训练词向量进行情感分析
- 构建一个双向RNN以使用自定义词嵌入预测股票回报
第20章 条件风险因素和资产定价的自动编码器
本章节展示了如何利用无监督深度学习进行交易。我们还讨论了自动编码器,即训练一个神经网络来重现输入的同时,学习由隐藏层参数编码的新表示。自动编码器长期以来被用于非线性降维,利用了我们在前三章中介绍的NN架构。 我们复制了最近AQR的一篇论文,该论文展示了自动编码器如何支持一种交易策略。我们将使用一个依赖于自动编码器的深度神经网络来提取风险因素并根据一系列股票属性预测股票回报。
更具体地说,在本章节中你将学习到:
- 哪些类型的自动编码器具有实际用途以及它们如何工作
- 使用Python构建和训练自动编码器
- 使用自动编码器提取数据驱动的风险因素,考虑资产特征以预测回报
第21章 生成对抗网络生成合成时间序列数据
本章节介绍了生成对抗网络(GAN)。GAN通过生成器和判别器网络在竞争环境中训练,使生成器学习产生判别器无法区分的样本,目标是生成出能够代表特定训练数据类的样本的生成模型。 尽管主要流行于图像数据,GAN也被用于在医疗领域生成合成时间序列数据。对于金融数据的后续实验探讨了GAN是否可以生成对ML训练或策略回测有用的替代价格轨迹。我们复现2019 NeurIPS时间序列GAN论文以说明这一方法并展示结果。
更具体地说,本章节中你将学习到:
- GAN的工作原理,为什么它们有用以及它们如何应用于交易
- 使用TensorFlow 2设计和训练GAN
- 生成合成金融数据以扩展ML模型训练和回测的输入数据
第22章 深度强化学习:构建交易代理
强化学习(RL)通过与随机环境互动,模拟代理有目标的学习。RL通过从奖励信号中学习状态和动作的价值来优化代理关于长期目标的决策。最终目标是推导出一个策略,编码行为规则并将状态映射到动作。 本章节展示了如何定义和解决RL问题。它涵盖了基于模型和无模型的方法,介绍了OpenAI Gym环境,并结合深度学习与RL训练一个能够在复杂环境中导航的代理。最后,我们将演示如何通过建模一个与金融市场互动并尝试优化目标函数的代理来适应算法交易。
更具体地说,本章节将涵盖:
- 定义马尔可夫决策问题(MDP)
- 使用值和策略迭代解决MDP
- 在具有离散状态和动作的环境中应用Q学习
- 在连续环境中构建和训练深度Q学习代理
- 使用OpenAI Gym设计自定义市场环境并训练RL代理进行股票交易
第23章 结论与下一步
在本总结章节中,我们将简要总结在整本书中学到的核心工具、应用程序和经验教训,以避免在详细内容中失去大局观。 然后我们将指出一些我们没有涵盖的但值得关注的领域,以便您在扩展我们介绍的众多机器学习技术时更有效地使用它们。
总之,本章节中我们将:
- 回顾关键要点和所学到的经验教训
- 指出基于本书中技术的下一步
- 提出将机器学习整合到投资过程中的方法
第24章 附录 - Alpha因子库
在整本书中,我们强调特征设计的重要性,包括适当的预处理和去噪,通常会导致有效的策略。此附录总结了一些特征工程方面的经验教训,并提供了关于这个重要主题的额外信息。
为此,我们关注TA-Lib实现的广泛指标(参见第4章)和WorldQuant的101公式化Alphas论文(Kakushadze 2016),该论文展示了生产中使用的现实量化交易因子,平均持有期为0.6-6.4天。
本章节涵盖:
- 如何使用TA-Lib和NumPy/pandas计算数十个技术指标,
- 创建上述论文中描述的公式Alphas,并
- 使用从秩相关和互信息到特征重要性,SHAP值和Alphalens的各种指标评估结果的预测质量。