machine-learning-for-trading

GitHub
17k 5.1k 中等 1 次阅读 今天数据工具其他开发框架Agent
AI 解读 由 AI 自动生成,仅供参考

machine-learning-for-trading 是《机器学习算法交易(第 2 版)》一书的官方配套代码库,旨在帮助读者将机器学习技术实际应用于量化交易策略的开发。它解决了从理论到实践的跨越难题,提供了超过 150 个可执行的 Jupyter Notebook,涵盖数据获取、金融特征工程、模型训练、回测及策略评估的全流程。

无论是希望深入量化领域的开发者、金融研究人员,还是对算法交易感兴趣的数据科学家,都能从中获益。该项目不仅演示了如何利用线性回归、深度学习(如 CNN、RNN)和深度强化学习等先进算法预测资产收益,还独特地展示了如何从 SEC 文件、财报会议记录等非结构化文本数据中提取交易信号,甚至利用生成对抗网络(GAN)合成数据。

通过复现前沿研究成果并构建多空策略,machine-learning-for-trading 为用户提供了一套全面且实用的工具箱。建议配合原书阅读,以便更好地理解数学统计原理与金融背景知识,从而设计出属于自己的智能化交易系统。此外,项目还拥有活跃的在线社区,方便用户交流心得与解决实战问题。

使用场景

某量化团队试图利用财报电话会议录音文本和另类数据,构建一个针对科技股的多因子对冲策略。

没有 machine-learning-for-trading 时

  • 特征工程盲目:缺乏成熟的金融特征提取框架,团队需从零编写代码处理 SEC 文件和转录稿,难以从非结构化文本中有效提取情绪信号。
  • 模型验证困难:缺少标准化的回测流程,无法科学评估深度学习模型(如 CNN、RNN)在不同资产类别上的预测能力,容易陷入过拟合陷阱。
  • 策略落地脱节:算法研究与实际交易执行割裂,难以将复杂的强化学习代理(Trading Agent)转化为可实盘运行的长短仓策略。
  • 复现成本高昂:面对前沿学术论文中的交易思路,缺乏参考代码进行快速复现和调优,研发周期被大幅拉长。

使用 machine-learning-for-trading 后

  • 高效信号提取:直接复用书中提供的 150+ 个笔记示例,快速掌握从财务文本和图像数据中提取高价值因子的标准方法。
  • 严谨策略评估:利用内置的完整回测框架,系统地设计并验证基于监督学习和无监督学习的策略,确保模型在不同投资周期下的稳健性。
  • 端到端实战闭环:参考深度强化学习章节的代码,成功训练出能自动执行交易的智能体,实现了从数据清洗到策略生成的全流程打通。
  • 加速创新迭代:基于书中复现的最新研究成果进行二次开发,迅速将理论转化为具备超额收益潜力的实盘策略。

machine-learning-for-trading 通过提供系统化的代码库和实战案例,将机器学习从理论概念转化为可落地的量化交易生产力,显著降低了策略研发的门槛与风险。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明 (项目涵盖深度学习如 CNN, RNN, GAN,通常建议配备 NVIDIA GPU,但 README 未明确具体型号或显存要求)

内存

未说明

依赖
notes1. 强烈建议使用 Docker 镜像运行,或通过 conda 按章节单独安装依赖以避免版本冲突。2. 旧版 'ml4t' conda 频道已废弃,请使用 'conda-forge' 安装 zipline-reloaded 等包。3. 不再强制要求使用 Docker(自 2021 年 4 月更新),提供了针对各操作系统的特定环境配置文件。4. 书中使用的 Algoseek 数据需单独下载并按指南预处理。
python3.6 - 3.8 (Zipline 回测环境使用 Python 3.6,Conda 环境已更新至 Python 3.8)
pandas>=1.0
tensorflow>=2.2
zipline-reloaded
pyfolio-reloaded
alphalens-reloaded
empyrical-reloaded
scikit-learn
numpy
machine-learning-for-trading hero image

快速开始

机器学习与交易——第2版

本书旨在以实用且全面的方式展示机器学习如何为算法交易策略创造价值。书中涵盖了从线性回归到深度强化学习的广泛机器学习技术,并详细演示了如何基于模型预测构建、回测和评估交易策略。

全书共分为四部分,包含23章及附录,超过800页,内容涵盖:

  • 数据获取、金融特征工程和投资组合管理的重要方面;
  • 基于监督与非监督机器学习算法的多空策略的设计与评估;
  • 如何从SEC文件、财报电话会议记录或财经新闻等金融文本数据中提取可交易信号;
  • 使用CNN、RNN等深度学习模型处理市场数据和另类数据,利用生成对抗网络生成合成数据,以及通过深度强化学习训练交易智能体。

本仓库包含150多个Notebook,将书中讨论的概念、算法和应用场景付诸实践。这些Notebook提供了大量示例,展示了:

  • 如何处理并从市场数据、基本面数据以及另类文本和图像数据中提取信号;
  • 如何训练和调优能够预测不同资产类别及不同投资期限收益的模型,包括复现近期发表的研究成果;
  • 如何设计、回测和评估交易策略。

我们强烈建议在阅读本书的同时参考这些Notebook;它们通常已执行完毕,并且常常包含因篇幅限制而未收录的补充信息。

除本仓库中的内容外,本书的官网还提供了各章节的概要及其他补充信息。

加入ML4T社区!

为了方便读者就本书内容、代码示例,以及自身策略的开发与实施和行业动态进行交流,我们搭建了一个在线平台

请立即加入我们的社区,与同样对利用机器学习构建交易策略感兴趣的同行互动,分享您的经验,互相学习!

第2版有哪些新内容?

首先,本书链接展示了如何从多样化的数据源中提取信号,并利用广泛的监督学习、无监督学习和强化学习算法为不同资产类别设计交易策略。书中还提供了相关的数学和统计学知识,以帮助调优算法或解释结果。此外,本书涵盖了金融背景知识,有助于读者处理市场和基本面数据、提取有用特征,并管理交易策略的绩效。

从实践角度来看,第2版旨在为你提供概念性理解和工具,以开发自己的基于机器学习的交易策略。为此,本书将机器学习视为一个流程中的关键环节,而非孤立的操作,介绍了端到端的机器学习交易工作流,涵盖数据获取、特征工程、模型优化、策略设计以及回测等环节。

具体而言,ML4T工作流始于为明确的投资标的池构思策略思路、收集相关数据并提取有效特征;接着是针对预测任务设计、调优和评估机器学习模型;最后则是根据模型的预测信号制定交易策略,并使用回测引擎在历史数据上模拟和评估策略表现。一旦决定在真实市场中执行算法策略,你就会发现自己需要反复迭代这一工作流,以融入新信息和适应不断变化的市场环境。

第二版对ML4T工作流的强调,体现在新增了关于策略回测的一章、描述了100多种阿尔法因子的新附录,以及许多新的实际应用。我们还为了提高清晰度和可读性重写了大部分现有内容。

当前的交易应用不仅使用美国股市的日频数据,还扩展到了国际股票和ETF等更广泛的数据来源。书中还演示了如何利用分钟级的股票数据构建日内交易策略。此外,对另类数据源的覆盖范围也进一步扩大,包括用于情绪分析和收益预测的美国证监会文件,以及用于土地利用分类的卫星图像。

第二版的另一项创新是复现了几篇近期发表于顶级期刊的交易应用:

  • 第18章展示了如何将时间序列转换为图像格式后,运用卷积神经网络进行收益预测,其方法基于Sezer和Ozbahoglu(2018)的研究成果。
  • 第20章介绍了如何利用自编码器提取与股票特征相关的风险因子,从而实现资产定价,该方法源自Shihao Gu、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-reloadedpyfolio-reloadedalphalens-reloadedempyrical-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环境的文件,如果你愿意(并根据你的系统情况做好额外准备),可以直接在本地机器上安装笔记本中使用的软件包。
  • 要下载并预处理本书中使用的大量数据源,请参阅data目录下各笔记本旁的README文件中的说明。

如果你在安装环境、下载数据或运行代码时遇到任何困难,请在仓库中提交一个GitHub问题此处)。GitHub问题的使用方法已在这里说明。

更新:书中使用的**algoseek**数据可在此处下载(链接)。请参阅第2章中的预处理说明,以及第12章中使用梯度提升模型的日内示例。

更新figures目录包含了书中所用图表的彩色版本。

大纲与章节概要

本书分为四个部分,分别探讨在获取和处理市场、基本面及另类数据时遇到的不同挑战,在交易环境中为各类预测任务开发机器学习解决方案,以及设计并评估依赖于机器学习模型生成的预测信号的交易策略。

每个章节的目录中都包含一个README文件,其中提供了关于内容、代码示例及其他资源的更多信息。

第一部分:从数据到策略开发

第二部分:机器学习在交易中的基础

第三部分:自然语言处理在交易中的应用

第四部分:深度学习与强化学习

第一部分:从数据到策略开发

第一部分提供了一个基于机器学习(ML)开发交易策略的框架。它重点关注驱动本书中讨论的机器学习算法和策略的数据,概述了如何为机器学习模型构建和评估特征,并在执行交易策略时如何管理和衡量投资组合的绩效。

01 机器学习在交易中的应用:从想法到执行

本章[01_machine_learning_for_trading]探讨了促使机器学习成为投资行业竞争优势来源的行业趋势。我们还将研究机器学习在投资流程中所处的位置,以支持算法交易策略的实施。

具体而言,本章涵盖以下主题:

  • 投资行业中机器学习兴起的关键趋势
  • 利用机器学习设计和执行交易策略
  • 机器学习在交易中的常见应用场景

02 市场与基本面数据:来源与技术

本章[02_market_and_fundamental_data]展示了如何处理市场和基本面数据,并描述了这些数据所反映的环境中的关键方面。例如,熟悉各种订单类型和交易基础设施不仅有助于数据的解读,还能正确设计回测模拟。我们还演示了如何使用Python访问和操作交易数据及财务报表数据。

通过实际案例,我们展示了如何使用来自NASDAQ的逐笔数据和Algoseek的分钟级分时数据,这些数据具有丰富的属性,能够捕捉供需动态,而这些动态将在后续用于基于机器学习的日内策略。此外,我们也介绍了多种数据提供商的API,以及如何从美国证券交易委员会(SEC)获取财务报表信息。

特别是,本章涵盖了:
  • 市场数据如何反映交易环境的结构
  • 处理分钟级别的日内成交与报价数据
  • 使用NASDAQ ITCH协议从逐笔数据重建限价订单簿
  • 使用不同类型的K线图汇总逐笔数据
  • 处理以可扩展商业报告语言(XBRL)编码的电子备案文件
  • 解析并整合市场与基本面数据,以创建市盈率序列
  • 如何使用Python访问各种市场和基本面数据源

03 金融领域的另类数据:类别与用例

章节概述了另类数据的类别和应用场景,介绍了评估不断涌现的数据源和提供商的标准,并总结了当前市场格局。

此外,本章还演示了如何通过网页爬取等方式构建另类数据集,例如收集财报电话会议的文字记录,以便在本书第三部分中结合自然语言处理(NLP)和情感分析算法加以使用。

具体而言,本章涵盖以下内容:

  • 在另类数据革命过程中涌现出哪些新型信号来源
  • 个人、企业和各类传感器如何生成多样化的另类数据
  • 另类数据的重要类别及其主要提供商
  • 如何评估日益丰富的另类数据资源在交易中的应用潜力
  • 使用Python进行另类数据处理,例如网络爬虫技术

04 金融特征工程:如何研究阿尔法因子

如果你已经熟悉机器学习,就会知道特征工程是实现成功预测的关键环节。在交易领域,这一点同样至关重要。学术界和业界的研究人员几十年来一直在探究驱动资产市场和价格变动的因素,以及哪些特征能够解释或预测价格走势。

章节以这些研究成果为基础,为你开启寻找阿尔法因子的旅程。同时,它还提供了计算和测试阿尔法因子的必备工具,重点介绍了NumPy、pandas和TA-Lib等库如何帮助进行数据处理,并展示了小波变换和卡尔曼滤波等流行的平滑技术,以降低数据噪声。阅读本章后,你将了解:

  • 阿尔法因子的主要类别、作用原理及衡量方法
  • 如何利用NumPy、pandas和TA-Lib创建阿尔法因子
  • 如何使用小波变换和卡尔曼滤波降噪
  • 如何借助Zipline测试单个或多个阿尔法因子
  • 如何使用Alphalens评估预测性能

05 投资组合优化与绩效评估

阿尔法因子会生成信号,由算法策略转化为交易指令,进而形成多头和空头仓位。最终投资组合的收益与风险决定了该策略是否达到投资目标。

优化投资组合的方法多种多样,其中包括运用机器学习(ML)来挖掘资产间的层次关系,在设计投资组合的风险特征时将其视为互补或替代关系。本章节涵盖:

  • 如何衡量投资组合的风险与收益
  • 利用均值方差优化及其他方法管理投资组合权重
  • 运用机器学习优化投资组合中的资产配置
  • 使用Zipline模拟交易并基于阿尔法因子构建投资组合
  • 如何借助pyfolio评估投资组合表现

第二部分:机器学习在交易中的应用——基础篇

第二部分将介绍监督学习和无监督学习的基本算法,并说明其在交易策略中的具体应用。此外,还将介绍Quantopian平台,该平台允许你整合并运用本书中所开发的数据与机器学习技术,从而在真实市场中执行算法交易策略。

06 机器学习流程

章节开启了第二部分的内容,旨在展示如何将多种监督学习和无监督学习模型应用于交易。我们将首先解释每种模型的假设与适用场景,随后通过不同的Python库演示相关应用。

许多模型及其应用都具有一些共性。本章将重点讨论这些共性,以便在后续章节中更专注于各模型的具体用法。本章以系统化的工作流程为框架,详细阐述了如何构建、训练、调优并评估机器学习模型的预测性能。具体内容包括:

  • 监督学习与无监督学习从数据中学习的基本原理
  • 监督学习模型在回归与分类任务中的训练与评估
  • 偏差-方差权衡对预测性能的影响
  • 如何诊断并解决因过拟合导致的预测误差
  • 利用交叉验证优化超参数,尤其针对时间序列数据
  • 为何金融数据在进行样本外测试时需要额外关注

07 线性模型:从风险因子到收益预测

线性模型是回归和分类问题中用于推断与预测的标准工具。许多广泛使用的资产定价模型都依赖于线性回归。而岭回归和Lasso回归等正则化模型则通过限制过拟合风险,往往能获得更好的预测效果。典型的回归应用会识别驱动资产收益的风险因子,以管理风险或预测收益;而分类问题则常用于方向性价格预测。

第7章涵盖以下主题:

  • 线性回归的工作原理及其假设条件
  • 线性回归模型的训练与诊断
  • 利用线性回归预测股票收益
  • 通过正则化提升预测性能
  • 逻辑回归的工作原理
  • 如何将回归问题转化为分类问题

08 ML4T 工作流:从模型到策略回测

本章[08_ml4t_workflow]从端到端的角度介绍了如何设计、模拟并评估由机器学习算法驱动的交易策略。我们将详细演示如何使用 Python 库 backtraderZipline 在历史市场环境中对基于机器学习的策略进行回测。ML4T 工作流的最终目标是从历史数据中收集证据,以帮助决策是否将候选策略部署到实盘市场并投入资金。对策略的真实模拟需要忠实地反映证券市场的运作方式和交易执行过程。此外,还需关注若干方法论上的细节,以避免产生偏差的结果和错误发现,从而导致糟糕的投资决策。

具体而言,学完本章后,你将能够:

  • 规划并实施端到端的策略回测
  • 理解并规避回测实施中的关键陷阱
  • 讨论向量化与事件驱动型回测引擎各自的优缺点
  • 识别并评估事件驱动型回测器的关键组件
  • 使用分钟级和日频数据源设计并执行 ML4T 工作流,其中机器学习模型可以单独训练,也可以在回测过程中同步训练
  • 利用 Zipline 和 backtrader 设计并评估自己的策略

09 用于波动率预测与统计套利的时间序列模型

本章[09_time_series_models]专注于从时间序列的历史数据中提取信号,以预测该序列未来的值。由于交易天然具有时间维度,时间序列模型被广泛应用于这一领域。本章提供了诊断时间序列特征(如平稳性)以及提取潜在有用模式特征的工具。同时,还介绍了单变量和多变量时间序列模型,用于预测宏观数据和波动率模式。最后,本章解释了协整如何识别不同时间序列之间的共同趋势,并展示了如何基于这一关键概念开发配对交易策略。

具体来说,本章涵盖:

  • 如何利用时间序列分析为建模过程做准备并提供信息
  • 单变量自回归模型和移动平均模型的估计与诊断
  • 构建自回归条件异方差(ARCH)模型以预测波动率
  • 如何构建多变量向量自回归模型
  • 利用协整开发配对交易策略

10 贝叶斯机器学习:动态夏普比率与配对交易

贝叶斯统计允许我们量化对未来事件的不确定性,并在新信息不断涌入时以合理的方式修正估计。这种动态方法非常适合金融市场的不断变化特性。贝叶斯方法在机器学习中的应用,能够让我们更深入地理解统计指标、参数估计和预测结果中的不确定性。其应用场景涵盖了更为精细的风险管理,以及根据市场环境变化动态更新预测模型等。

具体而言,本章[10_bayesian_machine_learning]涵盖:

  • 贝叶斯统计在机器学习中的应用
  • 使用 PyMC3 进行概率编程
  • 利用 PyMC3 定义并训练机器学习模型
  • 如何运行最先进的采样方法进行近似推理
  • 贝叶斯机器学习在计算动态夏普比率、动态配对交易对冲比例以及估计随机波动率方面的应用

11 随机森林:针对日本股票的多空策略

本章[11_decision_trees_random_forests]将决策树和随机森林应用于交易。决策树能够从数据中学习规则,从而编码非线性的输入输出关系。我们将展示如何训练决策树来解决回归和分类问题,可视化并解释模型所学到的规则,以及调整模型的超参数以优化偏差-方差权衡并防止过拟合。

本章的第二部分介绍了集成模型,通过随机组合多棵决策树生成单一预测,从而降低误差。最后,我们提出了一种基于随机森林模型生成的交易信号的日本股市多空策略。

简而言之,本章涵盖:

  • 将决策树用于回归和分类任务
  • 从决策树中获取洞察,并可视化从数据中学到的规则
  • 理解为何集成模型往往能带来更好的效果
  • 使用自助聚合方法应对决策树过拟合的问题
  • 训练、调优并解释随机森林模型
  • 利用随机森林设计并评估一项盈利的交易策略

12 提升你的交易策略

梯度提升是一种基于树的集成算法,通常比随机森林的效果更好。其关键区别在于,梯度提升会根据模型累计的误差调整每棵树的训练数据。而随机森林是独立地使用数据的随机子集训练多棵树,梯度提升则是按顺序进行,并对数据重新加权。本章[12_gradient_boosting_machines]展示了当前最先进的库如何实现卓越性能,并将梯度提升应用于日频和高频数据,以回测一项日内交易策略。

具体来说,我们将探讨以下主题:

  • 梯度提升与自助聚合有何不同,以及梯度提升是如何从自适应提升发展而来的
  • 使用 scikit-learn 设计并调优自适应提升和梯度提升模型
  • 借助 XGBoost、LightGBM 和 CatBoost 等最先进的实现,在大型数据集上构建、优化并评估梯度提升模型
  • 使用 SHAP 值解释并深入理解梯度提升模型
  • 将梯度提升与高频数据结合,设计一项日内策略。

13 基于无监督学习的数据驱动风险因子与资产配置

无监督学习的主要任务是降维和聚类:

  • 降维将现有特征转换为一组新的、更小的特征,同时尽量减少信息损失。现有的算法种类繁多,它们在衡量信息损失的方式、采用线性或非线性变换以及对新特征集施加的约束等方面各有不同。
  • 聚类算法不是识别新特征,而是识别并分组相似的观测值或特征。不同算法在定义观测值相似性的方法以及对结果分组的假设上存在差异。

具体而言,本章节涵盖:

  • 主成分分析(PCA)和独立成分分析(ICA)如何进行线性降维
  • 如何利用PCA从资产收益率中识别数据驱动的风险因子和特征组合
  • 使用流形学习有效可视化非线性高维数据
  • 利用T-SNE和UMAP探索高维图像数据
  • k-means、层次聚类和基于密度的聚类算法的工作原理
  • 使用凝聚聚类构建具有层次化风险平价的稳健投资组合

第三部分:用于交易的自然语言处理

文本数据内容丰富,但格式非结构化,因此需要更多的预处理,以便机器学习算法能够提取潜在信号。关键挑战在于将文本转换为算法可使用的数值形式,同时保留其语义或含义。

接下来的三章将介绍几种技术,这些技术能够捕捉人类易于理解的语言细微差别,从而使机器学习算法也能加以解释。

14 用于交易的文本数据:情感分析

文本数据内容非常丰富,但高度非结构化,因此需要更多的预处理才能使机器学习算法提取相关信息。一个关键挑战是在不丢失文本意义的情况下将其转换为数值形式。 本章节展示了如何通过创建文档-词项矩阵,将文档表示为词项计数向量,进而作为文本分类和情感分析的输入。此外,还介绍了朴素贝叶斯算法,并将其性能与线性模型和树模型进行了比较。

具体来说,本章涵盖了:

  • 核心自然语言处理工作流程是什么
  • 如何使用spaCy和TextBlob构建多语言特征提取管道
  • 执行词性标注或命名实体识别等NLP任务
  • 使用文档-词项矩阵将词项转换为数字
  • 利用朴素贝叶斯模型对新闻进行分类
  • 如何使用不同的机器学习算法进行情感分析

15 主题建模:总结金融新闻

章节利用无监督学习来建模文档中的潜在主题并提取隐藏的主题。这些主题可以为大量的财务报告语料库提供深入洞察。 主题模型能够自动创建复杂且可解释的文本特征,从而帮助从大量文本中提取交易信号。它们加快了文档审查速度,实现了相似文档的聚类,并生成可用于预测建模的注释。应用包括识别公司披露文件、财报电话会议记录或合同中的关键主题,以及基于情感分析或相关资产收益的注释。

更具体而言,本章涵盖了:

  • 主题建模的发展历程、实现的功能及其重要性
  • 使用潜在语义索引降低文档-词项矩阵的维度
  • 利用概率潜在语义分析(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,并优化神经网络架构以生成交易信号。

在接下来的章节中,我们将在此基础上,针对不同投资应用场景,特别是另类数据,应用多种神经网络架构。这些架构包括专为时间序列或自然语言等序列数据设计的循环神经网络,以及特别适用于图像数据的卷积神经网络。我们还将探讨深度无监督学习,例如如何使用生成对抗网络(GAN)创建合成数据。此外,我们还会讨论强化学习,以训练能够与环境交互式学习的智能体。

具体而言,本章将涵盖:

  • 深度学习如何解决复杂领域中的人工智能挑战
  • 推动深度学习如今广受欢迎的关键创新
  • 前馈网络如何从数据中学习表示
  • 使用 Python 设计和训练深度神经网络(NN)
  • 利用 Keras、TensorFlow 和 PyTorch 实现深度 NN
  • 构建并调优深度 NN 以预测资产收益
  • 基于深度 NN 信号设计并回测交易策略

18 用于金融时间序列和卫星图像的卷积神经网络

卷积神经网络架构仍在不断发展。本章描述了成功应用中常见的构建模块,展示了迁移学习如何加速学习过程,以及如何使用 CNN 进行目标检测。

CNN 可以从图像或时间序列数据中生成交易信号。通过获取农业区、矿山或交通网络的航拍图像,卫星数据可以提前预判大宗商品走势。摄像头拍摄的视频则有助于预测消费者活动;我们将展示如何构建一个 CNN 来分类卫星图像中的经济活动。

此外,CNN 还能利用其与图像的结构相似性,在时间序列分类任务中取得高质量的结果,并且我们会设计一种基于类似图像格式的时间序列数据的策略。

更具体地说,本章节涵盖了:

  • CNN 如何运用多种构建模块高效地建模网格状数据
  • 使用 TensorFlow 训练、调优和正则化用于图像和时间序列数据的 CNN
  • 利用迁移学习简化 CNN 的开发流程,即使在数据较少的情况下也能实现
  • 设计一种基于 CNN 对类似图像格式的时间序列数据进行收益预测的交易策略
  • 如何根据卫星图像分类经济活动

19 用于多变量时间序列和情感分析的循环神经网络

循环神经网络(RNN)将每个输出计算为前一输出与新数据的函数,从而有效地创建了一个具有记忆功能、并在更深的计算图中共享参数的模型。其中,长短期记忆网络(LSTM)和门控循环单元(GRU)等著名架构解决了学习长距离依赖关系的难题。

RNN 的设计目的是将一个或多个输入序列映射到一个或多个输出序列,尤其适合处理自然语言。它们也可应用于单变量和多变量时间序列,以预测市场或基本面数据。本章将介绍 RNN 如何利用我们在第 16 章中讨论的词嵌入技术来建模替代文本数据,从而对文档中表达的情感进行分类。

更具体而言,本章将探讨:

  • 循环连接如何使 RNN 能够记忆模式并建模隐藏状态
  • 展开并分析 RNN 的计算图
  • 门控单元如何从数据中学习调节 RNN 内存,以实现长距离依赖
  • 使用 Python 设计和训练用于单变量和多变量时间序列的 RNN
  • 如何学习词嵌入或使用预训练的词向量进行 RNN 情感分析
  • 构建双向 RNN,利用自定义词嵌入预测股票收益

20 用于条件风险因子和资产定价的自编码器

章节展示了如何将无监督深度学习应用于交易。我们还讨论了自编码器,即一种经过训练能够在学习隐藏层参数所编码的新表示的同时,重现输入的神经网络。自编码器长期以来一直被用于非线性降维,其基础正是我们在过去三章中讨论过的神经网络架构。

我们将复现一篇近期的 AQR 论文,该论文表明自编码器可以作为交易策略的基础。我们将使用一个基于自编码器的深度神经网络,提取风险因子并根据一系列股权属性预测股票收益。

更具体地说,本章您将了解到:

  • 哪些类型的自编码器具有实际用途及其工作原理
  • 使用 Python 构建和训练自编码器
  • 利用自编码器提取考虑资产特征的数据驱动型风险因子,以预测收益

21 用于生成合成时间序列数据的生成对抗网络

本章介绍了生成对抗网络(GAN)。GAN 在竞争环境中同时训练生成器和判别器网络,使生成器学会生成无法被判别器区分于给定训练数据类别的样本。其目标是生成能够代表该类别特征的合成样本。

尽管 GAN 最常用于图像数据,但它们也被用于在医疗领域生成合成时间序列数据。随后的金融数据实验则探讨了 GAN 是否能生成对机器学习训练或策略回测有用的替代价格轨迹。我们将复现 2019 年 NeurIPS 时间序列 GAN 论文,以说明这一方法并展示相关结果。

更具体地说,本章您将了解到:

  • GAN 的工作原理、其优势以及如何将其应用于交易
  • 使用 TensorFlow 2 设计和训练 GAN
  • 生成合成金融数据,以扩展可用于训练机器学习模型和回测策略的数据来源

22 深度强化学习:构建交易智能体

强化学习(RL)通过智能体与随机环境的交互来实现目标导向的学习。它根据奖励信号学习状态和动作的价值,从而优化智能体针对长期目标的决策。最终目标是推导出一种策略,该策略编码行为规则,并将状态映射到动作。

展示了如何构建并求解一个强化学习问题。内容涵盖基于模型的方法和无模型方法,介绍了OpenAI Gym环境,并将深度学习与强化学习相结合,训练一个能够在复杂环境中导航的智能体。最后,我们将演示如何将强化学习应用于算法交易,通过构建一个与金融市场交互、同时试图优化目标函数的智能体来实现这一目标。

具体而言,本章将涵盖以下内容:

  • 定义马尔可夫决策过程(MDP)
  • 使用值迭代和策略迭代求解MDP
  • 在具有离散状态和动作的环境中应用Q-learning
  • 在连续状态下构建并训练深度Q-learning智能体
  • 利用OpenAI Gym设计自定义市场环境,并训练一个RL智能体进行股票交易

23 结论与下一步

在本总结性章节中,我们将简要回顾全书中的关键工具、应用场景及所学经验,以帮助读者在深入探讨众多细节之后,仍能把握整体脉络。随后,我们将指出一些未涉及但值得进一步关注的方向,以便读者在掌握我们介绍的多种机器学习技术后,能够将其更高效地应用于日常工作中。

总之,在本章中,我们将:

  • 回顾主要收获与经验教训
  • 指明基于本书所介绍技术的后续发展方向
  • 提供建议,指导如何将机器学习融入投资流程

24 附录——阿尔法因子库

在整本书中,我们一直强调,合理的特征设计,包括恰当的预处理和去噪步骤,往往是构建有效策略的关键。本附录综合了我们在特征工程方面的一些经验,并就这一重要主题提供了更多详细信息。

为此,我们重点参考了TA-Lib库中实现的各类指标(详见第4章),以及WorldQuant于2016年发表的论文《101种公式化阿尔法因子》(Kakushadze, 2016),该论文介绍了实际生产环境中使用的量化交易因子,其平均持有期为0.6至6.4天。

本章内容包括:

  • 如何使用TA-Lib以及NumPy和pandas计算数十种技术指标
  • 构建上述论文中描述的公式化阿尔法因子
  • 采用秩相关、互信息、特征重要性、SHAP值和Alphalens等多种指标评估结果的预测能力

版本历史

2.02021/02/27

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|4天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|5天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

148.6k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.1k|★★☆☆☆|2天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|今天
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|3天前
插件开发框架