如果你在一个量化交流群里抛出"AI因子挖掘为什么还是跑不赢十年前的Alpha101"这句话,收到的回复大概会非常两极。一边是刚用神经网络和遗传规划挖出"神级因子"的兴奋选手,晒出年化翻倍的净值曲线;另一边是从业多年的老研究员,淡淡回一句"样本外见",然后贴出一张Alpha101中某条公式的简化代码——几行rank、scale、correlation,朴素得让人怀疑人生。
这篇内容就想把这件事聊透:为什么AI在图像、语音、棋类上能吊打人类,放到因子挖掘里反而容易被一组十年前的线性规则按在地上摩擦。我会从数据、方法、工程、实盘四个角度拆一遍,最后给出我自己踩过坑之后正在用的务实路线。适合正在做量化研究、对AI挖因子抱有期待又屡屡受挫的朋友,也适合打算入坑、想搞清楚"因子挖掘到底在挖什么"的新人。
1. 预期差的源头:"AI很强"和"AI挖因子很强"是两件事
先冷静下来搞清楚一件事:大家默认AI应该干翻Alpha101,这个预期到底从哪来的?
1.1 为什么大家都在赌AI能掀翻Alpha101
Alpha101的出身决定了它是一个极其诱人的靶子。某量化机构在公开论文里给出了101个公式化因子,每条因子用open、close、volume、returns这些最朴素的量价数据组合而成,整套公式的逻辑几乎全是"可读的"——rank、scale、Ts_ArgMax、correlation、decay_linear,没有任何深度神经网络或者强化学习的影子。论文还附了各因子的IC和回测表现,看起来就是"手工规则也能很赚钱"的活证据。
而AI阵营这边的声势完全碾压。深度学习在图像识别上超越人类,Alpha系列在棋类上横扫世界冠军,自然语言模型能写代码、能解题。既然AI能在规则封闭、信息完全的领域里挖掘出人类想不到的规律,为什么不能在高维、非线性的市场数据里挖出更复杂的alpha?这是绝大多数人最初的信念。
加上自动机器学习、遗传规划、强化学习这些技术在工程上越来越成熟,很多人开始搭"全自动因子挖掘流水线":输入量价数据,输出一批历史回测夏普极高的公式。不管是谁,第一次看到自己挖出来的因子在训练集上跑出漂亮曲线时,都会觉得"Alpha101的时代结束了"。
1.2 下棋赢人类不等于挖因子赢Alpha101
问题在于,市场的游戏规则和棋类、图像完全不是一个物种。
棋类是闭合规则系统,棋盘状态、走法、胜负全部可观测,分布是固定的。AI要做的是在这个确定性的规则空间里寻找最优策略,只要算力和方法到位,一定收敛。图像识别虽然分布复杂,但标签是干净的——一张图是不是猫,有明确的ground truth,数据量大到可以支撑高容量模型的训练。
市场恰恰相反。它是一个开放对抗系统:你挖掘因子的同时,对手也在挖掘,你的"规律"一旦被更多人使用就会自我消灭;市场的分布不固定,牛熊、风格、流动性结构随时切换;最致命的是,你根本没有干净标签——你能用的只有"未来收益"这一个代理,而这玩意本身充满噪声。
所以AI把棋下赢人类,只能说明AI在"规则已知、反馈精确"的任务里有优势。因子挖掘面对的是"规则未知、反馈有噪、分布漂移"的任务,这个任务对AI不友好,对任何人都不友好。Alpha101被当成基准,更多是因为它提供了一个"人类用公开数据手动构造的高质量基线",而不是因为它是这个领域的天花板。天花板是数据本身的信噪比,不是某个模型结构。
2. 数据层的限制:AI吃的是量价,量价里没有免费午餐
所有因子挖掘的上限由数据决定,模型再怎么强也不能从没有信息的地方变出信息来。这里要说三个非常现实的数据层瓶颈,也是AI挖因子跑不赢Alpha101的第一个硬性原因。
2.1 标签从哪来:未来收益这个标签本身有多脏
监督学习的第一性问题:你的标签是什么?图像分类的标签是"猫/狗"、语音识别的标签是"文本",干净且客观。因子的监督学习只能用未来N日收益当标签,但这个标签不是纯粹的alpha信号,而是三样东西的混合体:真实的超额规律、市场风格和运气。
举个很常见的例子。如果训练窗口的股票市场恰好是小盘成长风格占优,模型很容易学到"低市值、高波动、高换手 = 涨"。这不是alpha,只是风格暴露。你在样本内看到高IC,样本外遇到风格切换,因子立刻失效。很多AI因子其实在"帮市场风格做曲线拟合",而不是在挖掘独立于风格的alpha。
标签的另一个问题是时间重叠。如果用未来20日收益做标签,相邻两个样本的标签区间高度重合,会产生平滑效应,让回测里的IC虚高。处理不好重叠样本的独立性,你验证出来的显著性完全是假的。我自己跑过对比实验,同样是随机因子,重叠标签下算出的t值能比独立标签高出一倍多,这个水份太容易骗人了。
2.2 信噪比和有效样本:模型在噪声里捞针
再说数据规模。量价数据的原始维度其实非常低:开、高、低、收、成交量、成交额,就这些。通过时序变换可以生成成千上万的特征,但从信息论的角度看,这些特征是同一份基础信息的重组,并没有引入新的信息源。AI模型的容量再大,输入里没有的东西就是没有。
行业里有个彻骨的感受:市场数据的信噪比极低。假设某类因子的真实IC在0.02到0.03,这意味着收益中能被因子解释的部分不到万分之一,剩下全是噪声。要在这种噪声背景下让模型学到"真东西",需要的独立样本量是天文数字。你手里有3000只股票、20年日频数据,看起来有千万级样本,但股票横截面高度相关(同涨同跌),时间序列也有自相关,真正的有效独立样本远小于表面数字。模型参数量却轻轻松松上百万,过拟合几乎不可避免。
Alpha101那套公式之所以还能量价称王,因为它走的是"稀疏特征+线性组合"路线:不追求捕捉复杂非线性,只求把量价里最稳定、最基础的几个统计规律(短期反转、流动性溢价、日内微观结构)简洁地编码出来。复杂度低,所以不容易过拟合;逻辑简单,所以哪一天失效了你能找到原因。这恰恰是AI黑箱模型最难做到的。
3. 搜索空间与过拟合:AI真正擅长的是制造"漂亮的废话"
如果说数据层的问题是"天花板太低",那么方法层的问题就是"AI太擅长在低天花板房间里画出假窗户"。
3.1 从几千次尝试里挑出神话曲线
因子挖掘本质上是一个搜索问题:在巨大的公式空间或者模型参数空间里,找到"历史表现好的表达式"。AI的优势在于搜索效率高,劣势在于目标函数太吵。回测里的夏普比率和IC,本身就是带噪声的随机变量,你在搜索空间里多试几次,总有几个噪音点会跳出来表现很好。
这个现象有个学术名叫多重检验问题。简单说:如果单次随机试验的显著性阈值是5%,那么你做100次独立试验,平均会有5次"显著"的结果纯靠运气。做成千上万次试验时,靠运气得到的"显著因子"数量会非常可观。许多AI因子挖掘项目,本质上就是"大规模假设生成+碰运气式选择",只是搜索过程太自动化,让人误以为结果是证明了的规律。
我见过一个朋友做的实验:用完全随机的价格序列作为数据,用遗传规划去挖公式,居然也能挖出一堆样本内夏普超过2、IC均值超过0.03的"因子"。把这些公式放到真实数据里看,表现跟随机噪声没什么区别。这个实验极其震撼——它证明了很多AI挖掘出的"神级因子"并不是找到了市场规律,只是搜索算法在高维空间里找到了一个恰好拟合噪声的点。
3.2 金融时序里的交叉验证为什么经常失灵
很多人会说:"我们做过严格的样本外验证,训练集、验证集、测试集时间切分,模型在测试集上表现依然好。"听起来合理,但金融数据不满足独立同分布假设,常规的机器学习交叉验证在这里会失效。
时间序列数据有自相关性、波动聚集、体制切换。如果你恰好把训练期放在风格延续阶段,验证期也延续同一风格,模型学到的风格暴露在验证集上就会"表现依然好"。等真到了实盘,风格一旦切换,一切推倒重来。更复杂的是,市场参与者的记忆是动态的,一个有效的规律在被发现和传播的过程中会迅速衰减,历史测试集无法模拟这种"自我否定"过程。
我自己的做法是必须走walk-forward前推测试:不断用过去一段数据训练,预测未来一段,滚动推进。即便如此,walk-forward也只能验证"在已知的历史体制切换下模型是否稳健",对未出现过的体制依然无能为力。这是金融预测和图像识别最大的不同:你赌输的不只是噪声,还有未知的体制变化。
3.3 一个可以复现的实验:随机因子的"显著性"幻觉
如果你还不太相信过拟合的严重程度,可以花一下午复现一个极简实验,步骤很简单:
- 生成200只股票、500个交易日的随机价格序列(用随机游走即可)。
- 随机生成10000个公式表达式,表达式由少量基础算子组合(均值、标准差、滞后值、价差等)构成。
- 用这10000个公式在随机数据上计算IC,并按IC排序。
- 观察排名前20的因子的IC数值和t统计量。
结果会让你后背发凉:纯随机数据上,排名前20的IC t值会超过2,甚至有些超过3,看起来"统计显著"。真相是这些公式根本没有预测能力,纯搜索次数堆出来的幸运算子而已。任何声称"挖到高IC因子"的项目,如果不报告自己总共尝试了多少次、采用什么多重检验校正,那它的显著性都要打个问号。
4. Alpha101的工程密码:它不是一个公式,而是一套微观结构逻辑
Alpha101之所以难被AI取代,除了数据和方法论层面的原因,还有一个容易被人忽略的点:它本身已经大量使用了今天所谓"特征工程"和"稳健设计"的智慧,只是这些智慧被藏在朴素公式里,看起来没那么酷。
4.1 手工因子里的"自动特征工程"痕迹
很多Alpha公式只扫一眼会觉得"这是什么鬼",但拆开看就很妙。比如某些关于日内与开盘跳空关系的因子,会利用开盘价相对昨收的gap;某些因子会用到成交量加权均价和收益率的协方差;还有一些用过去几十日的平均成交额做分母做标准化。这些操作本质是在做:
- 流动性中性化:用成交额或市值做分母,避免因子被大盘股或小盘股的流动性差异主导;
- 波动率标准化:用过去一段时间的收益标准差缩放收益,让因子在不同波动环境下可比;
- 时序平滑:用decay_linear等算子把短期毛刺抹平,降低换手率;
- rank变换:用横截面百分位替代原始数值,天然抵抗极端值和量纲问题。
这些东西今天在任何一个自动特征工程库里都能找到,但Alpha101在十年前就已经把它们组合进了公式体系,而且组合得非常克制。每一步算子都有微观结构上的理由,不是为了花哨而花哨。相比之下,AI自动生成的公式往往面对的是不加处理或者处理过度的特征,模型能学到的稳健结构反而有限。
4.2 稀疏性、可解释性与失败归因
Alpha101另一个容易被低估的特性是稀疏性。101个公式,每个长度都不长,参数总量很小。搜索空间小,意味着"过拟合机会"也小;公式可解释,意味着因子失效时可以快速归因——是流动性环境变了,还是某个算子背后的逻辑不再成立,还是数据源出了问题。
AI模型则相反:参数动辄数百万,决策过程完全不透明。因子失效时你连"模型在哪个特征上犯了错"都说不清楚,更别提修正。实盘运行中,这种归因能力不仅是锦上添花,而是生死线。一旦策略出现回撤,你需要迅速判断是模型问题、数据问题还是市场问题,黑箱模型会让这个过程变成一场灾难。
4.3 Alpha101真正强在合集而非单因子
单独看Alpha101里的每条因子,IC并不惊艳,很多因子单拎出来甚至比不过最近几年流行的机器学习因子。但101条因子的合力非常可怕:它们之间相关度低、失效模式分散、覆盖了不同的时间尺度和不同的微观结构逻辑。合在一起构成一个多因子体系后,单条因子的噪声互相抵消,稳定暴露的核心逻辑被叠加放大。
这一点对AI因子挖掘有直接启发:不要指望用一个黑箱模型同时"包含所有alpha",更不要指望单条复杂因子能长期稳定。一个稳健因子体系的关键是组合内部的相关性控制、失效模式分散、逻辑互补。AI可以作为这个体系的生产工具,但生产出来的东西如果只是在同一类规律上反复过拟合,对组合的边际贡献就是负数。
5. 真金白银之间的落地差异:AI因子在实盘里塌方的地方
回测跑得再漂亮,真金白银一进场就露馅。我见过和亲身经历过的AI因子实盘塌方大概有以下几类,这也是比对Alpha101时最容易被忽视的维度。
5.1 换手率与容量:模型没告诉你的隐藏成本
AI模型倾向于捕捉"细碎但频繁出现"的统计规律,为了吃到这些小规律,持仓周期被拉得很短,换手率极高。回测根本不扣真实冲击成本,一进去扣完手续费和滑点,很多AI因子的收益直接从正变负。
容量问题同样尖锐。AI因子在流动性好的股票上很难挖到"独门规律"——因为那些股票被研究透了。反而在小盘股、低流动性股票上能找到看起来很强的"规律",其实很多是噪声和买卖价差造成的假象。资金量一大,这些股票的流动性和冲击成本立刻暴露问题,因子容量小得可怜。Alpha101这样的手工规则因子反而因为逻辑稳健、换手可控、在流动性较好股票上仍有稳定暴露,实盘容量和可持续性远好于大多数AI生成的复杂因子。
5.2 市场体制变化:训练分布里没有的明天
AI模型本质是在拟合历史分布。当市场进入训练集里从未出现过的体制(比如利率环境剧变、流动性危机、监管新规),模型的预测分布完全错乱。而这时恰恰是最需要"逻辑硬约束"的时刻——手工因子由于有明确的业务逻辑,即便失效也有迹可循,你的风控和人工判断还能顶上去;黑箱模型则直接失去方向。
我见过一个用深度模型挖出的反转因子,在正常市场里表现极好,结果遇到一次极端的日内振幅放大行情,因子突然爆亏,原因排查了一周才发现模型的时序平滑窗口太短,导致它对极值反应过度。这种"看着很聪明、死法也很突然"的因子,在AI挖掘项目里非常常见。
5.3 衰减曲线:为什么"聪明因子"死得更快
还有一层是竞争视角的衰减。一个手工因子的生命周期可以很长,因为它的逻辑根植于市场微观结构,比如投资者反应不足、交易行为摩擦。而一个AI因子,尤其是通过大规模搜索得到的复杂非线性公式,往往在公开验证后迅速被同行复制,过度交易导致alpha衰竭。越是"聪明"、越难理解的因子,越容易被当成黑盒子直接用,也越容易在被发现之后迅速失效。Alpha101的高明之处在于它的因子足够"简单"和"有逻辑",能让人理解它为什么赚钱,从而在变差的时候提前调整,而不是等亏完钱才发现。
6. 我现在的做法:把AI放回工具位,而不是神坛
写到这里容易让人误以为我反对AI因子挖掘,其实完全不是。AI是极强的工具,问题出在把它放错了位置——很多人把它当成了"因子发现的独立大脑",而它真正擅长的是"辅助工程"。
6.1 让AI做因子挖掘的"助手",而不是"作者"
我现在很少让AI从零开始生成一个全新的复杂因子,而是让它参与因子挖掘链条里几个"适合机器"的环节:
- 用AI做Alpha101以及人工构建因子池的动态权重优化,让模型根据当前市场状态调整因子组合,而不是固定等权;
- 用AI在人工设计的特征空间做特征选择和非线性修饰,但特征本身是由人来定义的,逻辑清清楚楚;
- 用AI做因子失效预警:监控现有因子池的拥挤度、稳定性变化,提前给出风险信号。
这么调整之后,策略的绩效反而稳定了。原因很简单:人负责"逻辑假设"和"约束边界",AI负责"在边界内做高维优化",双方各司其职。
6.2 过拟合围栏:限制公式长度、冻结样本外规则
如果你还是想让AI直接生成公式,我的建议是给它加足够厚的围栏:
- 限制算子集合:只允许使用有微观结构逻辑的算子(rank、scale、correlation、decay、adv标准化等);
- 限制公式深度和参数数量:表达式长度设上限,防止模型用复杂度换样本内拟合;
- 强制流动性与波动率中性化:生成的每一个因子必须包含市值、成交额或波动率标准化项,从根上减少风格暴露;
- 冻结样本外规则:确认超参数时,测试集只能被使用一次。所有"看了测试集再回头调参"的做法,都等于把测试集变成训练集。
另一个反直觉的经验是:给你的搜索过程建立日志,记录你总共尝试了多少个模型、多少组超参数。这个数不仅仅是工作量证明,更是多重检验校正的依据。如果你尝试了5000个模型,那么表面上的t值2.5根本不值得一提,至少要到t值4以上才勉强具备说服力。
6.3 两条实测有效的小经验
最后分享两个我自己反复踩坑之后的总结。
第一条:任何因子上线前必须同时满足三个证据——逻辑证据(你能用两句话讲清楚它为什么赚风险溢价的补偿或者行为偏差的钱)、统计证据(样本外IC显著不为零且稳定)、经济证据(扣掉真实的交易成本、冲击成本之后alpha依然为正)。三者缺一不可。很多AI因子能找到统计证据,却讲不出逻辑;能讲出逻辑的,又往往过不了成本关。
第二条:当AI挖出的因子和Alpha101这类经典规则因子在逻辑上"沾亲带故"(比如也是在捕捉短期反转,只是形式更复杂),我会优先保留简单版本,而不是用复杂版本替代它。复杂版本样本内IC更高,但多出来的几乎都是过拟合噪声。从组合管理的角度看,简单因子更好监控、更好组合、更好解释,长期性价比远高于复杂因子。
现在已经很少有人跟我争论"AI能不能替代Alpha101"了。承认AI在因子挖掘上有结构性短板,不是承认AI弱,而是承认市场数据的客观限制和工程稳健的价值。AI和Alpha101从来都不是同一维度的对手:一个是在噪声汪洋里拼命捞针的孩子,一个是把捞到的针编成网的老师傅。真正聪明的做法不是选边站,而是让孩子帮老师傅一起编网。