1. 从信号到决策AI在量化交易里到底改变了什么聊到AI重塑量化交易很多人第一反应是“用深度学习预测股价”这个理解不能说错但太窄了。我在实际做策略研究和工程落地的过程中越来越清晰地感受到AI对量化交易的改造真正的主战场不在“预测得更准”而在从数据到信号、从信号到仓位、从仓位到风控这条链路上每一个环节的决策方式都在被重新定义。传统量化策略的典型结构是人工构造因子比如动量、波动率、换手率线性加权或树模型组合设定固定阈值触发交易。这套东西在2015年前后非常有效因为市场参与者结构相对简单因子拥挤度低。但到了2024年之后情况完全变了。我实测过一组经典的多因子策略在2020年还能做到年化夏普1.8左右到了2024年同样的因子组合夏普掉到0.6以下回撤还放大了。原因不复杂——大家都在用类似的因子超额收益被迅速抹平。AI的介入本质上是把“人工找规律”变成“模型自己找规律”。这里的关键跃迁有三个第一表征学习替代人工因子。Transformer这类架构最擅长的就是从原始序列里自动提取特征。你不需要再手动定义“过去20天收益率的标准差”这种因子模型会从价格、成交量、订单簿快照里自己学出更有信息量的表示。我试过用一个小型Transformer编码器直接吃tick级数据输出的embedding拿去做简单的线性分类效果比手工因子LightGBM的组合在短周期预测上提升了约15%的IC。第二序列建模能力质变。金融时间序列的难点在于长程依赖和非平稳性。LSTM时代我们已经在做序列建模但LSTM对长序列的遗忘问题很严重而且训练不稳定。Transformer的自注意力机制天然适合捕捉跨时间步的关联尤其是当你想同时建模多个资产之间的联动关系时它的优势非常明显。第三决策过程从规则驱动转向学习驱动。强化学习在量化里的应用最直接的价值不是预测价格而是学习“在什么状态下该拿多少仓位”。这比预测价格再映射到仓位要合理得多因为仓位决策本身就是一个序贯决策问题和RL的框架天然匹配。注意AI不是万能药。我见过太多团队一上来就搞端到端深度学习结果连基本的交易成本都没算清楚回测夏普3.0实盘直接亏穿。AI是工具不是替代品。2. 核心技术拆解Transformer、LLM与强化学习各自的位置2.1 Transformer在量化信号提取中的真实用法Transformer在量化里的应用目前我看到的主要有三种形态。第一种是纯预测型。把过去N根K线的OHLCV数据当成序列输入输出下一根K线的涨跌概率或收益率预测。这种用法最直观但坑也最多。金融数据信噪比极低Transformer参数量大很容易过拟合。我的经验是模型要小、正则要强、数据要够。一个2层、4头、隐藏维度64的小Transformer在百万级样本上训练效果往往比12层的大模型好。原因很简单——金融数据里的有效模式有限大模型学到的很多是噪声。第二种是表征型。不直接预测价格而是用Transformer学一个资产的embedding然后把这个embedding喂给下游的轻量模型做分类或回归。这种做法的好处是解耦了“学表示”和“做决策”训练更稳定。我通常会用对比学习的方式训练这个编码器让同一资产在相近时间窗口的embedding靠近不同资产或相隔较远的窗口的embedding远离。训练完之后这个编码器可以复用到多个下游任务。第三种是混合型。Transformer负责提取时序特征和手工因子拼接后一起输入树模型。这种“深度浅度”的混合方案在实际生产中最常见因为纯深度模型的可解释性太差风控和合规部门很难接受。混合方案至少能说清楚“模型用了哪些手工因子深度部分贡献了多少”。具体到实现层面有几个参数需要特别注意参数建议范围原因序列长度60-120太短捕捉不到中期模式太长引入过多噪声注意力头数4-8金融数据维度低头数多了浪费隐藏维度64-128超过128几乎必然过拟合Dropout0.1-0.3金融数据必须强正则学习率1e-4到1e-3配合warmup使用我踩过的一个坑是一开始用标准Transformer的绝对位置编码结果模型对时间步的绝对位置产生了依赖换一个时间窗口就失效。后来改成相对位置编码或者可学习的位置编码泛化能力明显提升。这个细节在很多教程里不会讲但实际做的时候非常关键。2.2 LLM在量化中的角色不是预测是理解和编排LLM在量化交易里的应用很多人第一反应是“让GPT预测股价”这完全是方向错了。LLM的核心能力是语言理解、信息抽取和流程编排不是数值预测。我目前看到LLM在量化里真正有价值的场景有这么几个研报和公告的自动化解析。每天有大量的上市公司公告、券商研报、行业新闻人工读根本读不过来。用LLM做信息抽取把非结构化文本变成结构化的因子信号这个方向非常实用。比如财报发布后LLM可以快速提取营收增速、毛利率变化、管理层指引等关键信息转换成数值后输入策略。我实测过用LLM做财报情感分析和人工标注的相关系数能到0.85以上远超传统词典方法。策略逻辑的代码生成与审查。这个方向最近一年进展很快。你可以用自然语言描述一个策略逻辑让LLM生成对应的Python代码然后人工审查和修改。虽然不能完全替代人工但能大幅提升原型开发效率。我自己的做法是LLM生成初版代码我重点检查边界条件、交易成本计算和风控逻辑通常能节省60%以上的编码时间。多智能体协作做策略研究。这个是比较前沿的方向。让不同的LLM智能体分别扮演“因子研究员”“风控经理”“组合优化师”互相辩论和审查最后输出一个综合方案。这种做法的好处是能引入多视角的批判性思考避免单一模型的盲区。不过目前还处于实验阶段实盘应用需要非常谨慎。提示LLM的输出必须经过严格验证。我见过LLM生成的策略代码里把交易成本设成了0回测曲线漂亮得不像话实盘直接亏光。任何LLM生成的内容都要用独立的数据和逻辑去交叉验证。2.3 强化学习从“预测价格”到“学习仓位”强化学习在量化交易里的定位我认为是最被低估的。很多人把RL当成另一种预测工具这是误解。RL的核心是序贯决策——在什么市场状态下应该采取什么仓位动作以最大化长期收益。量化交易天然就是一个RL问题状态是市场行情和当前持仓动作是买入/卖出/持有及仓位大小奖励是扣除交易成本后的收益。用RL来做仓位管理比“预测价格再映射到仓位”要合理得多。但RL在金融场景里有几个特殊难点奖励稀疏且噪声大。金融市场每天的收益波动很大单步奖励的信号很弱。解决办法是用n步回报或者引入辅助任务比如同时预测波动率来增强学习信号。非平稳性。市场规律会变昨天有效的策略今天可能失效。标准的RL假设环境是平稳的这在金融里不成立。应对方法包括定期重新训练、使用元学习让模型快速适应新环境、或者在状态里显式加入市场 regime 的标识。离线数据的问题。金融数据是离线采集的不能像游戏那样无限试错。离线强化学习Offline RL在量化里比在线RL更实用。IQL、CQL这些离线RL算法我在实际项目里用过效果比在线RL稳定得多因为不需要和环境交互直接从未策略数据里学。我自己的经验是RL适合做仓位管理和执行优化不适合做方向预测。让RL决定“现在该拿多少仓位”比让它决定“明天涨还是跌”要靠谱得多。执行优化方面RL可以学习如何在最小化市场冲击的前提下完成大单拆分这个场景的奖励信号清晰效果很好。3. 从研究到实盘一套可复现的AI量化流水线3.1 数据层比模型更重要的基础设施做了这么多年量化我越来越觉得数据质量决定策略上限模型只是逼近这个上限。AI模型对数据的敏感度比传统模型更高因为参数量大更容易学到数据里的偏差。数据层要解决的核心问题有三个第一时间对齐。不同数据源的时间戳精度不同tick数据是毫秒级财务数据是季度级新闻是事件级。做多模态融合时必须统一到同一个时间轴上。我的做法是以交易时间为基准把所有其他数据用“最近可用值”的方式对齐同时记录每个数据点的实际时间戳避免未来函数。第二缺失值处理。金融数据缺失很常见停牌、涨跌停、数据源故障都会导致缺失。简单填充均值会引入偏差我的做法是对于价格类数据用前向填充对于成交量类数据缺失时置零并加一个缺失标记位对于财务数据用行业均值填充并加标记。关键是让模型知道哪些值是填充的而不是假装数据完整。第三标准化。金融数据的分布随时间变化用全局均值和方差做标准化会引入未来信息。正确做法是滚动标准化用过去N天的均值和方差来标准化当前值。N的选择很关键太短则标准化不稳定太长则无法适应市场变化。我通常用60-120个交易日。# 滚动标准化的一个实现示例 def rolling_zscore(series, window60): mean series.rolling(window).mean() std series.rolling(window).std() return (series - mean) / (std 1e-8)这个函数看起来简单但实际用的时候要注意window内的数据不能包含未来信息所以必须用rolling而不是expanding。另外std要加一个极小值防止除零。3.2 特征工程AI时代还需要人工因子吗这个问题我被问过很多次。我的答案是需要但角色变了。人工因子从“主要信号来源”变成了“先验知识注入”和“模型可解释性的锚点”。具体来说人工因子在AI量化里有三个作用一是作为模型的输入之一。纯端到端学习在金融数据上很容易过拟合加入人工因子相当于给模型一个“起点”让它在这个基础上做微调。我通常会把人工因子和Transformer提取的embedding拼接在一起输入下游模型。二是用于风控和归因。深度模型是个黑盒出了问题时很难排查。但如果模型里有一部分是人工因子至少能知道“这次亏损有多少来自动量因子的暴露”。这对合规和风控非常重要。三是用于模型诊断。如果深度模型的输出和人工因子的相关性突然变得很高说明模型可能退化了需要检查。如果相关性突然变低说明市场结构可能发生了变化。我常用的人工因子类别包括动量类过去N天收益率、波动率类已实现波动率、Parkinson波动率、流动性类换手率、Amihud非流动性、微观结构类买卖价差、订单不平衡。这些因子不需要很复杂关键是逻辑清晰、计算透明。3.3 模型训练从过拟合到泛化的实战经验AI量化模型最大的敌人是过拟合。我见过太多回测夏普3.0、实盘夏普-1.0的案例。避免过拟合我的经验可以总结为“三多三少”多验证、少调参。不要盯着回测曲线调参数要用样本外数据做验证。我的做法是把数据分成训练集、验证集、测试集比例大概是6:2:2。验证集用于早停和超参数选择测试集只在最后用一次。如果测试集效果不好不要回头调参直接重新设计。多正则、少容量。金融数据信噪比低模型容量要严格控制。Dropout、权重衰减、早停这些手段都要用上。我通常会把模型参数量控制在数据量的1/10以下宁可欠拟合也不要过拟合。多集成、少单模。单个模型很容易在某个市场状态下失效集成多个模型能显著提升稳定性。集成的维度包括不同架构TransformerLSTM树模型、不同数据窗口短周期长周期、不同随机种子。我实测过5个模型的简单平均夏普比单模型高0.3-0.5。还有一个容易被忽视的点训练数据的采样方式。金融数据时间序列高度相关随机采样会导致训练集和验证集的信息泄露。正确做法是按时间顺序划分或者用purged cross-validation在训练集和验证集之间留一个gap避免边界处的信息泄露。3.4 回测与实盘那些回测不会告诉你的坑回测和实盘的差距是量化交易里最昂贵的教训。我总结了几条血泪经验交易成本要算足。回测里设0.1%的手续费实盘可能因为滑点变成0.3%。我的做法是回测时用保守的成本假设比如实际预期的1.5倍如果策略在这个成本下还能盈利实盘才可能赚钱。流动性约束要建模。回测里假设你可以无限量成交实盘里大单会冲击市场。对于小资金策略影响不大但资金量上去之后必须建模市场冲击。简单的做法是限制单笔交易量不超过当日成交量的1%超过部分按比例分摊到后续交易日。停牌和涨跌停要处理。A股有涨跌停制度回测里如果不处理会在涨跌停日产生虚假成交。我的做法是涨跌停日不允许开仓已有仓位可以平仓但不能加仓。幸存者偏差要消除。回测时用的股票池必须是当时可交易的股票不能用现在的成分股回溯。这个坑很多人踩过尤其是做指数增强策略时。注意回测夏普超过2的策略实盘大概率达不到。我个人的经验是实盘夏普大约是回测夏普的50%-70%回撤大约是回测的1.5-2倍。做资金规划时一定要留足安全边际。4. 常见问题与排查技巧实录4.1 模型不收敛或loss震荡怎么办这是训练深度量化模型时最常见的问题。排查思路按优先级排列先检查数据。90%的训练问题出在数据上。检查有没有NaN、inf、极端值。金融数据里偶尔会出现价格错误比如小数点错位这些异常值会毁掉整个训练。我的做法是训练前对每个特征做winsorize缩尾处理把超过3倍标准差的値截断。再检查学习率。学习率太大会导致loss震荡太小会导致收敛慢。建议用学习率warmup前10%的step线性增加学习率之后余弦衰减。这个策略在Transformer上尤其有效。然后检查batch size。金融数据噪声大batch size太小会导致梯度估计不准。我通常用256-1024的batch size。如果显存不够用梯度累积模拟大batch。最后检查模型结构。如果以上都没问题可能是模型太深或太宽。试着减少层数或隐藏维度加更强的Dropout。4.2 回测很好但实盘亏损的排查清单这个问题我遇到过不止一次排查流程如下排查项检查方法常见问题未来函数检查特征计算是否用了未来数据rolling窗口包含了当前时刻之后的数据交易成本对比回测和实盘的成本假设回测成本设得太低流动性检查大单成交假设回测假设无限流动性幸存者偏差检查股票池是否动态用了当前成分股回溯过拟合检查样本外表现测试集效果远差于训练集执行延迟对比信号时间和成交时间回测假设即时成交我的经验是先查未来函数再查成本最后查过拟合。未来函数是最隐蔽也最致命的一个小的未来函数能让回测夏普翻倍。4.3 LLM辅助策略开发的注意事项用LLM辅助写策略代码有几个坑必须注意代码正确性验证。LLM生成的代码看起来往往很合理但细节可能有问题。我通常会写单元测试来验证关键函数尤其是涉及时间对齐、成本计算、仓位管理的部分。逻辑一致性检查。LLM可能会在代码里引入和策略逻辑不一致的地方。比如你说“用过去20天动量”它可能写成“过去20个交易日但包含当天”。这种细节必须人工审查。数据泄露防范。LLM生成的代码可能无意中引入未来函数。我通常会让LLM生成代码后再用另一个LLM或者人工专门检查数据泄露问题。版本管理。LLM生成的代码要纳入版本管理每次修改都要记录。我见过团队直接用LLM生成的代码上线出了问题找不到是哪个版本这是非常危险的。4.4 强化学习训练不稳定的应对策略RL在金融场景里训练不稳定是常态。我的应对策略包括奖励归一化。金融收益的尺度变化很大直接用作奖励会导致训练不稳定。我通常会对奖励做滚动标准化或者用夏普比率作为奖励。动作空间离散化。连续动作空间在金融里很难训练。我通常把仓位离散化成几档比如0%、25%、50%、75%、100%这样训练稳定得多。经验回放要小心。金融数据非平稳旧的经验可能已经失效。我通常用优先经验回放并且限制回放缓冲区的最大长度确保只保留最近的数据。定期重新训练。市场结构会变RL策略需要定期重新训练。我通常每季度重新训练一次或者当策略回撤超过阈值时触发重新训练。5. 工程落地从研究代码到生产系统的距离5.1 研究环境和生产环境的差异研究环境里你用的是Jupyter Notebook数据在内存里模型训练一次跑几个小时。生产环境里你需要低延迟的数据流、稳定的模型推理、实时的风控检查。这两者之间的差距比很多人想象的大得多。我见过太多团队研究代码写得漂亮但工程化时发现根本跑不起来。核心问题在于研究代码关注的是“能不能跑出结果”生产代码关注的是“能不能稳定跑、出问题能不能快速定位”。工程化的关键改造包括数据流从批处理变成流处理。研究时用历史数据回测生产时需要实时接收行情数据。这要求数据管道从“读文件”变成“订阅消息队列”延迟从分钟级降到毫秒级。模型推理从离线变成在线。研究时模型可以慢慢跑生产时必须在毫秒级完成推理。这要求模型压缩量化、剪枝和推理优化ONNX、TensorRT。风控从回测变成实时。研究时风控是事后检查生产时风控是事前拦截。每一笔订单在发出前都要经过风控检查包括仓位限制、单笔限额、日内亏损限额等。5.2 模型部署的几种方案对比方案延迟灵活性适用场景Python进程内推理中高中低频策略ONNX Runtime低中中高频策略TensorRT极低低高频策略专用推理服务低高多策略共享我的建议是中低频策略用Python进程内推理就够了简单直接调试方便。高频策略才需要上TensorRT这类专用推理引擎。不要为了追求低延迟而过度工程化维护成本会很高。5.3 监控与告警实盘运行的保命机制实盘运行最怕的是“模型悄悄失效了但没人发现”。监控体系要覆盖三个层面数据层监控。检查数据是否正常到达、是否有异常值、分布是否发生漂移。我通常会计算每个特征的滚动均值和方差和训练时的分布对比偏差超过阈值就告警。模型层监控。检查模型输出的分布是否正常、预测IC是否下降、换手率是否异常。如果模型输出的分布突然变化说明市场结构可能变了需要人工介入。交易层监控。检查成交率、滑点、持仓是否符合预期。如果实际滑点远大于回测假设说明流动性假设有问题需要调整策略。提示告警阈值不要设得太敏感否则会被误报淹没。我的经验是数据层告警用3倍标准差模型层告警用滚动20天的IC均值下降超过50%交易层告警用实际滑点超过假设的2倍。6. 我对AI量化未来两年的一些判断6.1 技术层面多模态融合和因果推断未来两年我认为AI量化最大的技术增量来自两个方向。多模态融合。现在的量化模型主要用价格和成交量数据但市场上还有大量文本、图像、另类数据没有被充分利用。LLM的发展让文本数据的处理成本大幅下降卫星图像、供应链数据这些另类数据的获取成本也在降低。把多模态数据融合进量化模型是下一个明显的增量。因果推断。现在的深度学习模型学的是相关性不是因果性。但交易决策需要的是因果性——如果A发生B会怎样。因果推断工具如DoWhy、EconML和强化学习的结合是一个很有前景的方向。把因果结构嵌入RL能让策略在分布外更稳健。6.2 市场层面策略拥挤和超额收益衰减AI工具的普及意味着策略拥挤会加剧。以前只有头部机构能做的AI策略现在中小团队甚至个人都能做。这会导致两个后果一是因子衰减加速。任何有效的因子被足够多的人使用后都会失效。AI让因子的发现和传播速度都加快了衰减自然也更快。二是市场波动结构变化。当大量策略使用相似的AI模型时市场可能会出现新的波动模式。比如多个策略同时触发止损会导致流动性瞬间枯竭。这种“策略共振”风险是未来需要重点关注的问题。6.3 个人和小团队的机会在哪里大机构有数据、算力和人才优势个人和小团队的机会在哪里我的判断是细分市场和另类数据。大机构看不上或者覆盖不到的市场比如小市值股票、可转债、期权组合个人和小团队有机会。另类数据的获取和处理也是大机构不一定做得好的地方。策略的快速迭代。小团队的优势是灵活能快速试错和迭代。用LLM辅助策略开发能进一步放大这个优势。工程效率。小团队不需要复杂的工程架构用简单的工具链快速上线把精力集中在策略本身。我见过太多小团队花大量时间搭基础设施结果策略没时间研究这是本末倒置。我个人在实际操作中的体会是AI是放大器不是替代品。它放大你的研究能力、工程能力和风控能力但如果你本身的研究框架有问题AI只会让你更快地亏钱。先把基础打牢再用AI加速这个顺序不能反。最后分享一个小技巧每次上线新策略前先用历史数据做一次“压力测试”——把策略放在2008年、2015年、2020年这些极端行情里跑一遍看看最大回撤和恢复时间。如果策略在这些时期表现很差说明它对市场 regime 的依赖太强需要加风控或者重新设计。这个测试花不了多少时间但能避免很多实盘上的意外。