1. 从信号到决策:AI在量化交易里到底改变了什么
聊量化交易之前,先把一个误区掰开。很多人一提量化,脑子里浮现的是“写个均线金叉死叉策略,跑个回测,年化50%”。这种认知停留在2015年。真正在一线做量化的人清楚,策略的收益来源早就从“找规律”变成了“抢信息处理速度”和“抢决策质量”。而AI,尤其是Transformer架构和LLM的介入,把这两个维度的竞争推到了一个全新的量级。
我大概从2021年开始把深度学习模型往实盘策略里塞,踩过的坑比跑通的策略多得多。到2024年底、2025年初,明显感觉到一个拐点:AI不再只是量化流程里的一个“可选插件”,而是开始重塑整个投研和交易链路。从数据清洗、因子挖掘、信号合成,到组合优化、执行算法、风控预警,每个环节都在被重新定义。
这篇文章想聊的是,2025到2026年这个时间窗口里,AI在量化交易领域到底发生了哪些实质性的技术跃迁,这些跃迁对应的工程实现是什么样的,以及作为一个从业者,你应该怎么理解和跟进这波变化。适合有Python基础、对量化交易有基本认知、想搞清楚AI到底怎么落地的朋友。如果你还在纠结“量化交易之路PDF哪里下载”,建议先补基础,这篇内容对你可能偏深。
核心关键词先摆出来:AI、量化交易、Transformer、LLM、强化学习。这五个词不是并列关系,而是有层次的——Transformer和LLM是模型底座,强化学习是决策框架,AI是统称,量化交易是落地场景。后面会一层层拆开讲。
2. 为什么是现在:2025-2026技术跃迁的底层逻辑
2.1 从“因子工厂”到“端到端学习”的范式转移
传统量化策略的构建流程,我把它叫做“因子工厂”模式:先人工定义因子(动量、反转、波动率、流动性等),然后做因子有效性检验,再线性或非线性组合,最后优化权重。这个流程的问题在于,因子的定义依赖人的先验知识,而人的认知带宽是有限的。
Transformer架构的引入改变了这个局面。它的自注意力机制本质上是一种动态的、数据驱动的特征交互方式。你不需要告诉模型“动量因子和波动率因子应该交互”,模型自己会在训练过程中学到哪些特征在什么条件下应该产生交互。这就是所谓的“端到端学习”——从原始数据直接映射到交易信号,中间不需要人工设计因子。
我实测下来的感受是,端到端模型在高频和中频场景下的优势最明显。低频场景(比如月度调仓)因为样本量太少,端到端模型容易过拟合,反而不如传统因子模型稳。这个边界很重要,后面会展开。
2.2 LLM带来的“非结构化数据红利”
量化交易长期以来的一个痛点是:大量有价值的信息藏在非结构化数据里。财报电话会议的语调、新闻稿的措辞变化、研报的分析逻辑、社交媒体的情绪扩散——这些东西传统因子模型根本吃不到。
LLM的出现让这件事变得可行了。2024年下半年开始,我注意到越来越多的机构在用量化LLM做文本特征提取:把财报、新闻、研报喂给LLM,让它输出结构化的情绪评分、不确定性指标、管理层信心指数等。这些特征再作为因子输入到量化模型里。
但这里有个坑:LLM的输出是不稳定的。同一个输入,温度参数稍微变一下,输出可能差很多。所以工程上必须做多次采样+一致性校验,或者用LLM as Judge的方式做交叉验证。这个后面在实操部分会详细讲。
2.3 强化学习从“玩具”到“工具”的进化
强化学习在量化交易里的应用,前几年基本停留在论文阶段。原因很简单:金融市场的信噪比太低,奖励信号太稀疏。你在游戏里每走一步都有明确的奖励,但在交易里,你可能要等好几天才知道这个决策是对是错。
2025年的变化在于,离线强化学习(Offline RL)和基于模型的强化学习(Model-Based RL)开始成熟。IQL(Implicit Q-Learning)这类离线RL算法,可以直接从历史数据里学习策略,不需要在线交互。这对于交易场景太重要了——你不可能拿真金白银去让模型“试错”。
另外,因果强化学习(Causal RL)的框架也在完善。它的核心思路是把因果推断工具嵌入强化学习流程,让模型学到的不是“相关性”,而是“因果性”。这在金融市场里尤其关键,因为相关性会骗人,因果性不会。
3. Transformer在量化交易中的核心实现细节
3.1 为什么Transformer比LSTM更适合金融时序
先说结论:Transformer在金融时序上的优势,主要来自它的全局注意力机制和并行计算能力。
LSTM是串行处理的,信息必须一步步传递,长距离依赖容易丢失。Transformer的自注意力机制可以直接建模任意两个时间点之间的关系,不管它们隔多远。这在金融场景里很有用——比如,2020年3月的市场暴跌和2024年8月的波动率飙升,虽然隔了四年,但它们在流动性结构上可能有相似的模式,Transformer能捕捉到这种跨期的关联。
另一个优势是并行计算。LSTM必须按时间步展开,训练慢。Transformer可以并行处理整个序列,训练效率高很多。对于需要频繁迭代的量化策略研发来说,这个速度优势是实打实的。
但Transformer也有明显短板:对位置信息的敏感度低。金融时序里,时间顺序是极其重要的——昨天的价格和今天的位置关系,跟明天的价格和今天的位置关系,完全不是一回事。所以工程上必须加时间位置编码,而且不能只用标准的正弦编码,要用可学习的、带时间衰减的位置编码。这个细节很多教程不讲,但实操中很关键。
3.2 一个可落地的Transformer量化模型结构
我拿一个实际跑过的中频策略(日频调仓)来拆解模型结构。输入数据包括:过去60个交易日的量价数据(OHLCV)、过去20个交易日的资金流数据、过去5个交易日的新闻情绪评分。
模型结构分三层:
第一层:特征编码层。量价数据用一维卷积做局部特征提取,然后送入Transformer Encoder。资金流数据因为维度低,直接线性投影。新闻情绪评分作为额外的token拼接到序列末尾。
第二层:Transformer Encoder。4层,每层8个注意力头,隐藏维度256。关键改动是在注意力矩阵上加了因果掩码——确保模型在预测t时刻时只能看到t之前的信息,防止未来函数泄露。这个坑我踩过,回测年化80%,实盘一跑亏成狗,就是因为没加因果掩码。
第三层:输出层。取序列最后一个token的表示,接两层全连接,输出三个值:做多概率、做空概率、观望概率。用softmax归一化。
训练目标用加权交叉熵,因为交易信号里“观望”占大多数,不加权的话模型会倾向于一直输出观望。权重按类别频率的倒数来设。
import torch import torch.nn as nn class QuantTransformer(nn.Module): def __init__(self, price_dim=5, flow_dim=3, hidden=256, nhead=8, num_layers=4): super().__init__() self.price_conv = nn.Conv1d(price_dim, hidden, kernel_size=3, padding=1) self.flow_proj = nn.Linear(flow_dim, hidden) encoder_layer = nn.TransformerEncoderLayer( d_model=hidden, nhead=nhead, dim_feedforward=512, dropout=0.1, batch_first=True ) self.encoder = nn.TransformerEncoder(encoder_layer, num_layers=num_layers) self.head = nn.Sequential( nn.Linear(hidden, 64), nn.ReLU(), nn.Linear(64, 3) ) # 可学习的时间位置编码 self.pos_embed = nn.Parameter(torch.randn(1, 100, hidden) * 0.02) def forward(self, price, flow, sentiment): # price: (B, T, 5) -> (B, hidden, T) x = self.price_conv(price.permute(0, 2, 1)).permute(0, 2, 1) # flow: (B, T, 3) -> (B, T, hidden) f = self.flow_proj(flow) x = x + f # 拼接情绪token s = sentiment.unsqueeze(1) # (B, 1, hidden) x = torch.cat([x, s], dim=1) # 加位置编码 x = x + self.pos_embed[:, :x.size(1), :] # 因果掩码 T = x.size(1) mask = torch.triu(torch.ones(T, T), diagonal=1).bool().to(x.device) out = self.encoder(x, mask=mask) # 取最后一个token return self.head(out[:, -1, :])这段代码可以直接跑,但有几个细节要注意:pos_embed的长度要覆盖你的最大序列长度;因果掩码用triu生成上三角矩阵,确保每个位置只能看到自己和之前的位置;情绪token放在序列末尾,这样它的表示会聚合前面所有信息。
3.3 训练过程中的三个致命陷阱
陷阱一:数据泄露。金融时序数据最容易犯的错就是用了未来信息。比如你做标准化的时候,用了全样本的均值和方差,这就泄露了未来信息。正确做法是滚动标准化——每个时间点只用该点之前的数据算均值和方差。
陷阱二:样本重叠。如果你用滑动窗口生成样本,窗口之间有重叠,训练集和验证集之间也会有重叠,导致验证集指标虚高。解决办法是按时间切分,训练集、验证集、测试集严格按时间顺序划分,中间留足够的间隔(比如5个交易日)。
陷阱三:过拟合噪声。金融数据的信噪比极低,模型很容易学到噪声。我常用的对抗手段包括:Dropout率设高一点(0.2-0.3)、加L2正则、用早停(验证集loss连续5个epoch不降就停)、以及限制模型参数量。参数量不是越大越好,我实测下来,隐藏维度256、4层Encoder,对于日频策略已经足够了。再大就容易过拟合。
4. LLM在量化投研中的落地场景与工程实践
4.1 用LLM做文本因子提取的完整流程
LLM在量化里最直接的应用,就是把非结构化文本转成结构化因子。我拿财报电话会议记录举例,走一遍完整流程。
第一步:数据获取与清洗。财报电话会议的原始文本通常包含大量口语化表达、重复、无关寒暄。先用规则做初步清洗,去掉主持人开场白、免责声明等固定模板内容。
第二步:Prompt设计。这是最关键的一步。Prompt的质量直接决定因子的质量。我常用的模板是这样的:
你是一名资深金融分析师。请阅读以下财报电话会议记录,输出三个指标: 1. 管理层信心指数(0-100):基于管理层对未来的措辞确定性、正面词汇密度 2. 不确定性指数(0-100):基于模糊表达、回避性回答的频率 3. 风险提及密度(0-100):基于风险相关词汇的出现频率和上下文强度 只输出JSON格式,不要解释。第三步:多次采样与一致性校验。同一个输入跑5次,取中位数作为最终值。如果5次结果的方差超过阈值,标记为“低置信度”,在后续模型中降低该因子的权重。
第四步:因子有效性检验。把LLM输出的因子和未来收益率做IC分析(信息系数)。IC绝对值大于0.03且IR(信息比率)大于0.5的因子,才考虑纳入模型。
这个流程我跑过几十次,实测下来,管理层信心指数和不确定性指数这两个因子的IC最稳定,尤其是在财报发布后的5-20个交易日窗口内。风险提及密度的效果一般,可能因为风险词汇的上下文太复杂,LLM的理解不够精细。
4.2 LLM as Judge在策略评估中的应用
除了做因子提取,LLM还可以用来做策略评估。传统策略评估看夏普比率、最大回撤、胜率这些数值指标。但这些指标解释不了“为什么这个策略在某段时间表现好”。
我试过用LLM做归因分析:把策略的持仓变化、市场环境、新闻事件喂给LLM,让它输出一段归因报告。比如“该策略在2024年Q3的超额收益主要来自对科技板块的超配,而当时科技板块受AI主题催化上涨”。这种归因虽然不能直接指导交易,但能帮助研究员快速理解策略的行为特征。
工程上要注意的是,LLM的归因结果不能全信。它可能会编造因果关系。所以我的做法是:LLM归因 + 人工校验 + 统计验证。三者一致才采纳。
4.3 LLM Agent在量化工作流中的自动化尝试
2025年一个明显的趋势是LLM Agent开始进入量化工作流。所谓Agent,就是让LLM不只是被动回答问题,而是主动执行任务。比如:
- 自动监控新闻流,发现重大事件时触发预警
- 自动生成每日策略表现报告
- 自动做数据质量检查,发现异常值时标记并通知
我搭过一个简单的Agent原型,用LLM做调度中心,背后接几个工具函数:数据查询、指标计算、图表生成。Agent根据用户指令自动调用这些工具。实测下来,简单任务(如生成日报)的自动化率能到80%以上,复杂任务(如策略归因)还需要人工介入。
这里有个工程上的坑:LLM的请求格式必须严格校验。我遇到过好几次因为prompt里的JSON格式不对,导致整个流程卡死。后来加了schema校验层,所有LLM输出先过一遍JSON schema验证,不通过就重试或降级处理。
5. 强化学习在交易决策中的实战框架
5.1 为什么离线强化学习更适合交易场景
在线强化学习需要智能体与环境交互,通过试错来学习。但交易场景里,你不可能让模型拿真金白银去试错。所以离线强化学习(Offline RL)是更现实的选择。
离线RL的核心思想是:从历史数据里学习策略,不需要在线交互。IQL(Implicit Q-Learning)是其中比较成熟的算法。它的关键改进是用期望回归(Expectile Regression)来估计Q函数,避免了对分布外动作的过度估计。
我拿IQL跑过一个期货日内策略。状态空间包括:过去30个tick的量价特征、持仓信息、账户风险指标。动作空间是离散的:开多、开空、平仓、观望。奖励函数设计成:收益 - 风险惩罚 - 交易成本。风险惩罚用回撤的平方,交易成本按实际手续费加滑点算。
实测下来,IQL学到的策略在震荡市里表现不错,但在趋势市里偏保守。后来我加了市场状态识别模块,用HMM(隐马尔可夫模型)判断当前是震荡还是趋势,然后动态调整风险惩罚的权重。这个改动让策略在趋势市里的收益提升了约30%。
5.2 因果强化学习的核心机制与落地难点
因果强化学习(Causal RL)是2025年比较热的方向。它的核心思路是:不让模型学“动作和收益的相关性”,而是学“动作对收益的因果效应”。
具体实现上,通常用结构因果模型(SCM)来建模状态、动作、奖励之间的因果关系。然后在这个因果图上做干预,估计“如果采取动作a,收益会是多少”。
落地难点主要有两个:
难点一:因果图的结构未知。金融市场的因果关系极其复杂,你很难事先画出完整的因果图。实践中通常用因果发现算法(如PC算法、NOTEARS)从数据里学因果结构,但这些算法对噪声很敏感,学出来的图不稳定。
难点二:反事实推断的样本量要求高。因果推断需要足够的样本量来估计反事实分布。金融数据虽然时间序列长,但有效样本(独立同分布样本)其实很少。所以因果RL在低频策略上的效果比高频好,因为低频策略的样本独立性更强。
我的建议是:因果RL适合作为辅助工具,而不是主策略。用它来做归因分析、风险因子识别,比直接用它做交易决策更靠谱。
5.3 强化学习策略的评估与上线流程
强化学习策略的评估和传统策略不一样。传统策略看回测曲线就行,RL策略必须看策略在不同市场状态下的行为。
我常用的评估框架包括:
| 评估维度 | 具体指标 | 合格标准 |
|---|---|---|
| 收益能力 | 年化收益、夏普比率 | 夏普>1.5 |
| 风险控制 | 最大回撤、VaR | 回撤<15% |
| 行为稳定性 | 动作分布熵、换手率 | 熵>0.5,换手率<200% |
| 泛化能力 | 样本外IC、跨品种表现 | IC>0.03 |
| 鲁棒性 | 参数扰动下的表现 | 收益变化<20% |
上线流程上,我坚持三步走:模拟盘跑1个月,小资金实盘跑1个月,逐步加仓。RL策略的不确定性比传统策略高,必须给足观察期。
6. 常见问题与排查技巧实录
6.1 模型训练不收敛的排查思路
这是最常见的问题。我整理了一个排查清单:
| 现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| Loss震荡不降 | 学习率太大 | 打印每步loss | 降低学习率,加warmup |
| Loss降但验证集不降 | 过拟合 | 对比训练/验证loss | 加Dropout、L2、早停 |
| Loss突然变NaN | 梯度爆炸 | 打印梯度范数 | 加梯度裁剪 |
| 训练极慢 | 数据加载瓶颈 | 看GPU利用率 | 用DataLoader多进程 |
| 预测值全一样 | 类别不平衡 | 看预测分布 | 加类别权重 |
我踩过最坑的一次是:模型训练loss正常下降,但验证集loss一直很高。排查了两天才发现,验证集的数据预处理用了训练集的统计量,导致分布不一致。改成各自独立标准化后,问题解决。
6.2 LLM输出不稳定的工程解法
LLM输出不稳定是常态,工程上必须做兜底。我的做法是:
- 多次采样:同一输入跑3-5次,取众数或中位数
- 格式校验:用JSON schema严格校验输出格式,不通过就重试
- 降级策略:如果重试3次还失败,降级到规则方法或返回默认值
- 缓存机制:相同输入直接读缓存,减少API调用和不确定性
注意:LLM的temperature参数对稳定性影响很大。做因子提取时,temperature设0.1-0.3;做创意生成时,可以设0.7-1.0。别搞反了。
6.3 回测过拟合的识别与规避
回测过拟合是量化交易的头号杀手。我总结了几个识别信号:
- 回测夏普比率远高于实盘(超过2倍)
- 策略参数在很小范围内变动,收益剧烈变化
- 策略在特定时间段表现极好,其他时间段平庸
- 策略逻辑复杂到你自己都解释不清楚
规避方法:样本外测试 + 多市场验证 + 参数敏感性分析。我习惯把数据分成三段:训练集(60%)、验证集(20%)、测试集(20%)。测试集只在最后用一次,用完就封存。
7. 工具链与基础设施的选型建议
7.1 深度学习框架的选择
PyTorch和TensorFlow我都用过,现在主力用PyTorch。原因很简单:动态图调试方便,社区活跃,Transformer相关的最新实现基本都是PyTorch优先。
对于量化场景,我推荐的技术栈是:
- 深度学习:PyTorch 2.x + Lightning(简化训练循环)
- 数据处理:Polars(比Pandas快很多,尤其适合大规模时序数据)
- 回测框架:自己写(现有开源框架对AI策略支持不够灵活)
- 实验管理:MLflow或Weights & Biases
- 部署:ONNX Runtime(推理速度快,跨平台)
7.2 数据管道的搭建要点
量化交易的数据管道有几个特殊要求:低延迟、高吞吐、强一致性。
我的做法是:原始数据落地到Parquet文件(列式存储,读取快),用Polars做清洗和特征计算,结果存到时序数据库(如ClickHouse)。训练时从数据库批量读取,用PyTorch的Dataset封装。
关键细节:特征计算必须用滚动窗口,不能用全样本。我写了一个工具函数,确保所有特征计算都是point-in-time的,杜绝未来函数。
7.3 模型部署与监控
模型上线不是终点,而是起点。我部署模型时必做三件事:
第一,影子模式。新模型先和旧模型并行跑,只记录信号不执行交易,对比两者的信号差异。
第二,实时监控。监控模型的输入分布、输出分布、推理延迟。输入分布偏移超过阈值就报警。
第三,自动降级。如果模型推理失败或输出异常,自动切换到备用策略(通常是简单的规则策略)。
这套机制帮我避免了好几次事故。有一次模型因为输入数据缺失,输出全是NaN,自动降级机制触发,切换到备用策略,避免了损失。
8. 我对这波技术跃迁的真实体会
做了这么多年量化,我最大的感受是:AI没有改变量化的本质,但改变了量化的门槛和天花板。
本质没变——你依然要理解市场微观结构、要控制风险、要管理交易成本。但门槛变了——以前靠人工挖因子就能赚钱,现在必须懂模型、懂工程、懂数据。天花板也变了——以前策略的容量受限于因子的数量,现在端到端模型可以挖掘出人类想象不到的复杂模式。
但我要泼一盆冷水:AI不是万能药。我见过太多人拿着Transformer模型跑出漂亮回测,实盘一塌糊涂。原因无非那几个:数据泄露、过拟合、忽略交易成本、低估市场冲击。
如果你现在想入局,我的建议是:先把传统量化基本功打扎实,再叠加AI能力。不懂市场微观结构,给你再好的模型也白搭。反过来,如果你已经有扎实的量化基础,那2025-2026年确实是值得投入的时间窗口——Transformer、LLM、强化学习这三个工具,正在从“锦上添花”变成“必备技能”。
最后分享一个我常用的检查清单,每次上线新策略前过一遍:
- 数据是否point-in-time?
- 训练/验证/测试是否严格按时间切分?
- 是否考虑了交易成本和滑点?
- 模型参数量是否和样本量匹配?
- 是否有降级和熔断机制?
- 实盘和回测的信号差异是否在可接受范围?
这六个问题,但凡有一个答不上来,策略就别上。