stefan-jansen/machine-learning-for-trading

GitHub: stefan-jansen/machine-learning-for-trading

提供机器学习算法交易策略开发与优化的代码库。

Stars: 19056 | Forks: 5284

# 机器学习交易 - 第2版 这本书[链接](https://www.amazon.com/Machine-Learning-Algorithmic-Trading-alternative/dp/1839217715?pf_rd_r=GZH2XZ35GB3BET09PCCA&pf_rd_p=c5b6893a-24f2-4a59-9d4b-aff5065c90ec&pd_rd_r=91a679c7-f069-4a6e-bdbb-a2b3f548f0c8&pd_rd_w=2B0Q0&pd_rd_wg=GMY5S&ref_=pd_gw_ci_mcx_mr_hp_d)旨在以实用且全面的方式展示机器学习如何为算法交易策略增加价值。它涵盖了从线性回归到深度强化学习的广泛机器学习技术,并展示了如何构建、回测和评估由模型预测驱动的交易策略。 它分为四个部分,包含**23章加上一个附录**,共**超过800页**: - 数据来源、**金融特征工程**和投资组合管理的重要方面, - 基于监督和未监督机器学习算法的**多空策略**的设计和评估, - 如何从**金融文本数据**(如SEC文件、收益电话会议记录或金融新闻)中提取可交易的信号, - 使用**深度学习**模型(如CNN和RNN)和市场及替代数据,如何使用生成对抗网络生成合成数据,以及使用深度强化学习训练交易代理。

此存储库包含**超过150个笔记本**,将书中讨论的概念、算法和用例付诸实践。它们提供了许多示例,展示了: - 如何处理和从市场、基本面和替代文本和图像数据中提取信号, - 如何训练和调整模型以预测不同资产类别和投资期限的回报,包括如何复制最近发表的研究, - 如何设计、回测和评估交易策略。 除了此存储库中的信息外,本书的[网站](ml4trading.io)还包含章节摘要和附加信息。 ### 12 提升交易策略 梯度提升是一种基于树的集成算法,通常比随机森林产生更好的结果。关键的区别在于,提升根据模型累积的错误修改每个树使用的训练数据。虽然随机森林使用随机数据子集独立训练许多树,但提升是顺序进行的,并重新加权数据。 这一[章节](12_gradient_boosting_machines)展示了最先进的库如何实现令人印象深刻的性能,并将提升应用于每日和高频数据以回测日内交易策略。

更具体地说,我们将涵盖以下主题: - 提升与袋装的区别,以及梯度提升如何从自适应提升演变而来, - 使用scikit-learn设计和调整自适应和梯度提升模型, - 使用XGBoost、LightGBM和CatBoost等最先进的实现,在大型数据集上构建、优化和评估梯度提升模型, - 使用[SHAP](https://github.com/slundberg/shap)值解释和从梯度提升模型中获得见解, - 使用提升和高频数据设计日内策略。 ### 13 使用无监督学习进行数据驱动风险因素和资产配置 降维和聚类是无监督学习的主要任务: - 降维将现有特征转换为新的、更小的集合,同时最小化信息损失。存在广泛的算法,它们在衡量信息损失的方式、是否应用线性或非线性转换以及它们对新特征集施加的约束方面有所不同。 - 聚类算法识别并分组相似的观察结果或特征,而不是识别新特征。算法在定义观察结果的相似性及其对结果组的假设方面有所不同。

更具体地说,这一[章节](13_unsupervised_learning)涵盖了: - 主成分分析(PCA)和独立成分分析(ICA)如何执行线性降维 - 使用PCA从资产回报中识别数据驱动的风险因素和特征组合 - 使用流形学习有效地可视化非线性、高维数据 - 使用T-SNE和UMAP探索高维图像数据 - k-means、层次和基于密度的聚类算法如何工作 - 使用层次聚类构建具有层次风险平权的稳健投资组合 ## 第3部分:自然语言处理交易 文本数据内容丰富,但格式未结构化,因此需要更多预处理,以便机器学习算法可以提取潜在信号。关键挑战在于将文本转换为数值格式以供算法使用,同时同时表达内容的语义或含义。 接下来的三个章节涵盖了几个技术,这些技术捕捉了人类容易理解的语言细微差别,以便机器学习算法也可以解释它们。 ### 14 交易文本数据:情感分析 文本数据内容非常丰富,但高度未结构化,因此需要更多预处理才能使机器学习算法能够提取相关信息。关键挑战在于将文本转换为数值格式,同时不丢失其含义。 这一[章节](14_working_with_text_data)展示了如何通过创建文档-词矩阵将文档表示为词计数向量,该矩阵反过来又作为文本分类和情感分析的输入。它还介绍了朴素贝叶斯算法,并将其性能与线性模型和基于树的模型进行了比较。 特别是,这一章节涵盖了: - 基本NLP工作流程是什么样的 - 如何使用spaCy和TextBlob构建多语言特征提取管道 - 执行NLP任务,如词性标注或命名实体识别 - 使用文档-词矩阵将标记转换为数字 - 使用朴素贝叶斯模型对新闻进行分类 - 如何使用不同的机器学习算法执行情感分析 ### 15 主题建模:总结金融新闻 这一[章节](15_topic_modeling)使用无监督学习来对潜在主题进行建模,并从文档中提取隐藏的主题。这些主题可以生成对大量金融报告的深入见解。 主题模型自动化了创建复杂、可解释的文本特征的过程,这些特征反过来可以帮助从大量文本中提取交易信号。它们加快了文档审查,使相似文档的聚类成为可能,并产生对预测建模有用的注释。 应用包括识别公司披露、收益电话会议记录或合同中的关键主题,以及基于情感分析或相关资产回报的注释。

更具体地说,它涵盖了: - 主题建模是如何演变的,它实现了什么,为什么它很重要 - 使用潜在语义索引降低DTM的维度 - 使用概率潜在语义分析(pLSA)提取主题 - 如何使用潜在狄利克雷分配(LDA)改进pLSA,使其成为最流行的主题模型 - 可视化和评估主题建模结果 - 使用scikit-learn和gensim运行LDA - 如何将主题建模应用于收益电话和金融新闻文章集合 ### 16 收益电话和SEC文件中的词嵌入 这一[章节](16_word_embeddings)使用神经网络学习单个语义单元(如单词或段落)的向量表示。与词袋模型的更高维稀疏向量相比,这些向量密集,只有几百个实值条目。因此,这些向量将每个语义单元嵌入或定位在连续的向量空间中。 嵌入是通过训练一个模型来关联标记及其上下文而产生的,其好处是相似的用法意味着相似的向量。因此,它们通过它们的相对位置编码语义方面,如单词之间的关系。它们是强大的特征,我们将在以下章节中使用它们与深度学习模型。

更具体地说,在这一章节中,我们将涵盖: - 词嵌入是什么以及它们如何捕获语义信息 - 如何获取和使用预训练的词向量 - 哪些网络架构在训练word2vec模型方面最有效 - 如何使用TensorFlow和gensim训练word2vec模型 - 可视化和评估词向量的质量 - 如何在SEC文件上训练word2vec模型以预测股价走势 - 如何使用doc2vec扩展word2vec并帮助进行情感分析 - 为什么Transformer的注意力机制对NLP产生了如此大的影响 - 如何在金融数据上微调预训练的BERT模型 ## 第4部分:深度与强化学习 第四部分解释并演示了如何利用深度学习进行算法交易。 深度学习算法在识别非结构化数据中的模式方面的强大能力使其特别适合于图像和文本等替代数据。 示例应用展示了如何结合文本和价格数据来预测SEC文件中的收益惊喜,生成合成时间序列以扩展训练数据量,以及使用深度强化学习训练交易代理。 其中一些应用复制了最近在顶级期刊上发表的研究。 ### 17 交易中的深度学习 这一[章节](17_deep_learning)介绍了前馈神经网络(NN),并展示了如何使用反向传播有效地训练大型模型,同时管理过拟合的风险。它还展示了如何使用TensorFlow 2.0和PyTorch,以及如何优化NN架构以生成交易信号。 在接下来的章节中,我们将在此基础上构建,将各种架构应用于不同的投资应用,重点关注替代数据。这包括针对时间序列或自然语言等顺序数据而设计的循环神经网络(RNN),以及特别适合于图像数据的卷积神经网络(CNN)。我们还将涵盖深度无监督学习,例如如何使用生成对抗网络(GAN)创建合成数据。此外,我们将讨论强化学习,以训练从其环境中交互式学习的代理。

特别是,这一章节将涵盖: - DL如何解决复杂领域的AI挑战 - 推动DL达到当前流行程度的创新 - 前馈网络如何从数据中学习表示 - 在Python中设计和训练深度神经网络(NN) - 使用Keras、TensorFlow和PyTorch实现深度神经网络 - 构建和调整深度神经网络以预测资产回报 - 设计和回测基于深度神经网络信号的交易策略 ### 18 CNN用于金融时间序列和卫星图像 CNN架构持续发展。这一章节描述了成功应用中常见的构建块,展示了迁移学习如何加快学习速度,以及如何使用CNN进行目标检测。 CNN可以从图像或时间序列数据中生成交易信号。卫星数据可以通过农业区域、矿山或交通网络的航空图像来预测商品趋势;摄像头录像可以帮助预测消费者活动;我们展示了如何构建一个CNN,该CNN根据卫星图像中的经济活动进行分类。 CNN还可以通过利用其与图像的结构相似性来提供高质量的时序分类结果,我们设计了一个基于图像格式的时间序列数据的策略。

更具体地说,这一[章节](18_convolutional_neural_nets)涵盖了: - CNN如何使用几个构建块来有效地对网格状数据进行建模 - 使用TensorFlow对图像和时间序列数据训练、调整和正则化CNN - 使用迁移学习简化CNN,即使数据较少 - 使用CNN根据图像格式的时间序列数据格式化的时间序列数据生成交易策略 - 如何根据卫星图像对经济活动进行分类 ### 19 RNN用于多元时间序列和情感分析 循环神经网络(RNN)计算每个输出作为先前输出和新数据的功能,从而有效地创建一个具有记忆的模型,该模型在更深的计算图中共享参数。突出的架构包括解决学习长距离依赖性挑战的长短期记忆(LSTM)和门控循环单元(GRU)。 RNN旨在将一个或多个输入序列映射到一个或多个输出序列,并且特别适合于自然语言。它们还可以应用于单变量和多变量时间序列,以预测市场或基本面数据。这一章节涵盖了如何使用我们在第16章中介绍的词嵌入来对替代文本数据进行建模,以分类文档中表达的情感。

更具体地说,这一章节涵盖了: - 循环连接如何允许RNN记住模式并建模隐藏状态 - 展开和分析RNN的计算图 - 门控单元如何学习从数据中调节RNN记忆以实现长距离依赖性 - 在Python中设计和训练用于单变量和多变量时间序列的RNN - 如何使用RNN进行情感分析,使用自定义词嵌入学习词嵌入或使用预训练的词向量 - 使用自定义词嵌入构建双向RNN以预测股票回报 ### 20 条件风险因素和资产定价的自动编码器 这一[章节](20_autoencoders_for_conditional_risk_factors)展示了如何利用无监督深度学习进行交易。我们还讨论了自动编码器,即一个训练以复制输入同时学习由隐藏层参数编码的新表示的神经网络。自动编码器长期以来一直用于非线性降维,利用我们在过去三章中介绍的神经网络架构。 我们复制了一篇最近AQR论文,该论文展示了自动编码器如何支撑交易策略。我们将使用一个依赖于自动编码器的深度神经网络来提取风险因素并预测基于一系列股票属性的股票回报。

更具体地说,在这一章节中,您将了解: - 哪种类型的自动编码器具有实际用途以及它们的工作原理 - 使用Python构建和训练自动编码器 - 使用自动编码器提取考虑资产特征的数据驱动风险因素以预测回报 ### 21 生成对抗网络用于合成时间序列数据 这一章节介绍了生成对抗网络(GAN)。GAN在竞争环境中训练生成器和判别器网络,以便生成器学习产生判别器无法区分的给定类别的训练数据的样本。目标是产生一个生成模型,能够产生代表此类别的合成样本。 虽然GAN在图像数据中最受欢迎,但它们也已在医疗领域用于生成合成时间序列数据。随后的金融数据实验探讨了GAN是否可以产生对ML训练或策略回测有用的替代价格轨迹。我们复制了2019年NeurIPS时间序列GAN论文,以说明这种方法并展示结果。

更具体地说,在这一章节中,您将了解: - GAN是如何工作的,为什么它们有用,以及它们如何应用于交易 - 使用TensorFlow 2设计并训练GAN - 生成合成金融数据以扩展可用于训练ML模型和回测的输入 ### 22 深度强化学习:构建交易代理 强化学习(RL)模型通过代理与随机环境交互进行目标导向的学习。RL通过从奖励信号中学习状态和动作的价值来优化代理关于长期目标的决策。最终目标是推导出一种策略,该策略编码行为规则并将状态映射到动作。 这一[章节](22_deep_reinforcement_learning)展示了如何制定和解决RL问题。它涵盖了基于模型的和无模型的方
标签:Apex, BSD, 书籍, 凭据扫描, 卷积神经网络, 合成数据, 回测, 学习资源, 实践案例, 市场数据, 强化学习, 循环神经网络, 技术栈, 投资策略, 投资组合管理, 数据挖掘, 文本分析, 无监督学习, 替代数据, 机器学习, 模型预测, 深度学习, 特征工程, 生成对抗网络, 监督学习, 神经网络, 算法交易, 算法交易策略, 算法实现, 评估, 逆向工具, 金融科技