因子工程

AI 因子工程把 SQL 越写越长时,真正该先拆开的,不是表达式长度,而是时序窗口、横截面聚合和中性化三层语义

结合 BigQuant 的 DAI SQL 与 BigAlpha 文档,讨论 AI 因子工程为什么要先把时序窗口、横截面聚合和中性化拆成三层语义合同,再谈自动特征扩张。

2026-04-1510分钟
AI 因子工程进入批量生产阶段后,最常见的错觉就是“长公式等于高水平”。研究员把 rolling mean、rank、行业中性化、winsorize 甚至缺失值填补一路串起来,看起来像一条完整因子链路,实际上却把三种完全不同的问题塞进了同一个黑盒。第一类问题是时间维度上的记忆与滞后,也就是这个信号到底在看多长的历史、更新频率是什么;第二类问题是横截面上的比较,也就是它究竟在同一天如何和别的标的比高低;第三类问题则是风险约束和投影,也就是它在进入组合前被哪些行业、市值或风格约束重新塑形。
这三层语义如果不拆开,AI 自动衍生虽然能继续产出更多表达式,但团队很快会失去解释能力。你会看到同一个因子在研究环境里很稳定,换一个 Universe 或中性化设置就完全变脸;你也会看到某次微调明明只想替换时间窗口,最后却连横截面分布一并改了。表面上问题出在表达式复杂,根因却是团队没有承认同一条 SQL 里其实藏着三个不同层次的业务合同。
  • 时间窗口描述记忆,不描述比较关系。
  • 横截面聚合描述排名,不描述风险约束。
  • 中性化是投影层,不该和前两层混成一条黑盒。

先写三层语义合同,AI 生成的特征才配进入因子工厂

BigQuant 的 DAI SQL 函数列表和 BigAlpha 平台文档给了一个很好的提醒:平台真正有价值的,不是让你能把所有操作都写在一行里,而是让每个环节都能被复用、审计和替换。更成熟的做法,是先规定 rolling/window 类函数只能定义时间记忆与滞后,输出成一个中间特征;再规定 rank、bucket、group 这类操作只处理横截面比较,产出第二层中间特征;最后由 neutralize、风险暴露裁切或发布前映射去完成约束层。这样同一个研究假设才能在不同 Universe、不同风险约束下复用,而不会因为整条式子绑得太死而失去可迁移性。
这套拆法对 AI 特征衍生尤其重要。模型最擅长的是枚举变体和组合模板,但它并不知道哪些操作其实属于不同层的治理边界。如果没有显式语义分层,AI 会不断产出“看起来新”的表达式,却把许多本该归于不同层的差异混在一起,导致后续评估无法回答究竟是窗口变了、截面比较变了,还是风险投影变了。研究员最终得到的不是更丰富的因子空间,而是一堆不可解释的异构样本。
  • 先定义层,再允许 AI 在层内搜索变体。
  • 中间特征可复用,黑盒长式子不可治理。
  • 层次清楚后,才有资格谈自动衍生规模化。

课程真正想训练的,是把投资直觉翻译成可治理算子链的能力

这正是《因子工程设计卓越班》和《AI量化全流程高级班》会交叉发力的地方。前者强调因子工程不是堆更多因子,而是把投资直觉翻译成可以运营的算子空间;后者强调研究出来的信号必须进入可部署、可回测、可复盘的系统闭环。把 SQL 写得越来越长,并不会自然通向这两门课所说的“更成熟”;真正的成熟,是你能明确指出某一步在处理时间记忆、某一步在处理横截面排序、某一步在处理风险投影,并且三者可以分别被替换、比较和审查。
所以 AI 因子工程下一阶段最该做的,不是继续鼓励“更长、更炫”的表达式,而是建立三层语义蓝图。只有当时间层、截面层和约束层各自被写成可解释的部件,AI 生成出来的候选特征才不会把团队拖回手工排障地狱。到那个时候,自动化才是真的扩张研究能力,而不是扩张维护成本。
  • 长表达式不是平台化,语义分层才是平台化。
  • 可治理的因子链,必须允许分层替换与分层审查。
  • AI 扩张的是层内搜索效率,不该扩张跨层混写。

关键结论

  • AI 因子工程先要拆清时间层、截面层和约束层,再谈公式复杂度。
  • 没有语义分层,自动特征衍生只会制造更多不可解释的黑盒样本。
  • 可运营的因子工厂,本质上是可治理算子链,而不是更长的 SQL。

关联课程

如果你想把这篇文章里的方法系统化学习,可以从这些课程继续深入。

继续阅读

微信:446860105