模型监控与重训:让 Alpha 活下去
因子会衰减,但重训本身也能杀死策略。这篇讲怎么把衰减从噪声里认出来、四种重训触发器各抓什么,以及为什么'什么时候不重训'才是最难的纪律。
每个 alpha 因子都有半衰期。有的几个月就死,有的能撑几十年。知道你手里的是哪种、并据此安排重训,是 3 年策略和 30 年策略的区别。
每个量化运营者最终都会经历那个时刻:管用了两年的策略不灵了。不是戛然而止——那种反而容易发现——而是衰减。Sharpe 从 1.8 压到 1.4 再到 0.9,因子 IC 从 0.08 漂到 0.05 再到 0.02。模型产出的信号看起来还是合理的,只是没法像以前那样变成 PnL。模型还活着,alpha 在死。
这是 alpha 的自然生命周期。市场演化,参与者适应。2022 年还没人挤的因子,到 2024 年可能已经拥挤,而拥挤压缩收益。有时因子是真死了——它利用的行为低效被套利干净;有时是容量耗尽——太多人交易同一个信号;有时是制度变了——因子在新制度下的条件性表现完全不同。
监控和重训的工作,是在衰减杀掉策略之前发现它。但这句话只说了一半。另一半同样重要:把衰减跟普通的噪声区分开——因为每个策略都有多月的回撤期,而把正常回撤误判成衰减、急着重训,恰恰是杀死策略的另一种方式。整篇文章其实都在这两种死法之间走钢丝:不动手,策略陈旧而死;动手太勤,策略被 churn 折腾死。
触发器一:时间——主力
最简单的触发器:不管表现如何,每 N 个月重训一次。节奏取决于策略类型:
| 策略类型 | 建议重训频率 |
|---|---|
| 学术因子(value、momentum、quality) | 每年 |
| 基于基本面的 ML 模型 | 每季度 |
| 基于价/成交量的 ML 模型 | 每月 |
| 高频信号 | 每周 |
| 宏观制度模型 | 每季度 |
| 加密货币动量 | 双周到每月 |
这个触发器存在的理由是:即便表现看起来还行,数据在漂移。2023 年预测收益的特征,2024 年的分布可能已经悄悄变了。定期重拟合让模型保持在当前数据生成过程上的校准——不需要等出事。
节奏背后有一条统一的原理:训练窗口要长到能覆盖相关制度的多样性,又不能长到把过时的市场结构包进来。落到具体数字:中频 ML 策略用 2-3 年数据,每季度重训,用 purged walk-forward 交叉验证重拟合超参数,在训练窗口之外的最近 3 个月上验证;学术因子衰减慢,每年在最近 10 年数据上重估系数、在最近一年上验证就够;高频信号取最近 6-12 个月 tick 数据,前 80% 重训、最近 20% 验证——每周太频繁(过拟合风险),月度是甜点。
反方向的风险刚才已经点过:太频繁会引入 churn,把稳定模型换成过拟合的。对大部分 ML-on-price-volume 策略,季度就是甜点;比这更勤,你多半是在过拟合重训流程本身。
触发器二:表现——抓急性衰减
时间触发器抓慢漂移,表现触发器抓急性死亡。常用的标准:60 日滚动 IC 跌破历史中位 IC 的 50%;90 日实盘 Sharpe 跌破回测 Sharpe 的 50%;回撤超过回测的第 95 百分位回撤;或者一个设计胜率 55% 的策略,滚动胜率持续低于 45%。因子真在死的时候,这些指标会明明白白告诉你。
陷阱在于:表现触发器也会在不是衰减的回撤里触发。这正是开头说的那根钢丝——每次回撤都重训,你就在用过拟合的替代品换掉正常工作的模型。阈值必须严到只在真衰减时触发,不在正常方差里触发;这也是为什么上面的标准全都带着”50%“这种粗颗粒——它们故意迟钝。
触发器三:制度——只当辅助
制度变了,前一个制度里管用的模型在新制度下大概率不管用,这时用近期数据加权重训(或干脆训一个制度专用模型)可以更快适配。可用的制度指标包括:已实现波动率超过 60 日历史波动率的 1.5 倍、主要资产 60 日滚动两两相关性跳升 0.2 以上、因子价差压缩或走宽超过 2σ、联邦基金利率一个季度内变动 100bp 以上、bid-ask 价差走宽且深度变薄。
经典的检测方法里,隐马尔可夫模型(HMM)假设市场处于 N 个潜在制度之一,学术上吸引人,实际上脆弱——尤其在过渡期容易误分类;CUSUM 检验检测均值或方差的变化,更稳健也更易解释;贝叶斯变点检测给出每个时点的变点后验概率;最朴素的滚动统计加阈值,简单但有效。实际的工作流大致是:
# 制度感知重训的伪代码
vol_short = returns.rolling(20).std()
vol_long = returns.rolling(120).std()
if vol_short > 1.5 * vol_long:
# 检测到高波动率制度
# 训练中提高近期数据权重
# 或者训练一个针对特定制度的模型
train_model(data, recent_weight=0.7)
else:
# 正常制度
train_model(data, recent_weight=0.3)
提示词
用 Python 写一段制度感知的重训伪代码,比较短期和长期波动率,再按结果给近期数据不同权重。
原理:制度异常时更重地加权近期数据,让模型更快适配当前条件;制度正常时更均匀地加权——长历史信息量大。
老实的提醒:制度检测很难。大部分方法要么假阳性太多(你以为制度变了,其实没有),要么假阴性太多(真切换要等它发生完才看见)。把制度触发器当辅助,别当主触发。
触发器四:数据——跟模型好坏无关
第四种触发器和前三种性质不同:它跟旧模型坏没坏无关。新的另类数据源上线(卫星图像、信用卡数据、网页流量)、数据供应商改进了历史覆盖、新市场或新资产类别变得可交易——新数据提供了以前没有的信息,用扩大的特征集重训可以产出严格更好的模型。
纪律是:别因为新数据可得就加。要等它合理地包含现有特征没捕获的信息、并且你验证过数据质量好到值得承担建模复杂度,再加。
重训工作流:每次都走全套
不管哪个触发器响了,考虑部署新模型版本时走的流程是同一套。
第 1 步:拉近期数据。 训练窗口是重训流程里最重要的超参数——太短没有足够数据,太长包进过时的市场结构。大部分中频 ML 策略:2-3 年,刷新到包含最近季度。
第 2 步:重拟合超参数。 用 purged walk-forward 交叉验证避免信息泄露(López de Prado 对这个领域的贡献,Advances in Financial Machine Learning, 2018, 第 7 章)。对每组超参数跑交叉验证、算样本外 Sharpe,挑风险调整后表现最好的组合——不是原始收益最好的。
第 3 步:在保留数据上验证。 验证集应该是训练集之外的最新数据;季度重训对应最近 1-3 个月。验证指标应落在回测指标的合理范围内——通常在预期 Sharpe 的 50-100% 之间。差很多就是有问题:要么数据里有没处理的制度切换,要么超参数搜索过拟合了,要么原始回测本来就虚高。
第 4 步:影子对比。 部署之前,让新模型在影子模式跑:产生信号但不交易,当前模型同时也在产生信号,在最近的真实市场数据上对比两套信号”如果真交易会怎样”。这是最有价值的一步,也是大部分团队跳过的一步——它是不冒资金风险所能拿到的、最接近实盘的测试。后面有一节专门讲它。
第 5 步:部署决策。 验证和影子对比都过,才部署。验证不过,调查;验证过但影子对比不过,也调查——通常说明验证集太小或不够有代表性。
第 6 步:记录。 每次部署都留日志:哪个模型替换了哪个、为什么、验证结果是什么、影子对比什么时候跑的。这份审计记录在你六个月后需要 debug 模型表现问题时——是”当”不是”如果”——必不可少。
Churn:重训怎么杀死一个好策略
这个失败模式值得完整讲一遍,因为它被严重低估。你的因子管用了两年,Sharpe 1.6,你每季度重训。某个季度,纯属偶然,另一组超参数在验证窗口里表现更好,你部署了它。下个季度表现平庸,你又重训,又换了一组超参数,又部署。表现继续变差。原来 1.6 的 Sharpe 现在 0.8,而你已经在新模型版本上折腾了 9 个月——没有一个版本稳定运行到足以被正确验证。
这就是重训 churn:一个工作的策略,被过度活跃的 MLOps 流程杀掉了。
对策是给部署设一道”有意义改进”的门:样本外 Sharpe 改进 20% 以上、且统计显著(deflated Sharpe ratio > 0.95 最好),才换。新模型只比老的稍微好一点?留着老的。稳定本身有价值——一个已被两年实盘验证的模型,和一个只在最近一个验证窗口里赢了它一点的候选,不是等价资产。
驱动因子衰减的”拥挤”机制——市场参与者如何随时间适应彼此的策略——在 Harris 的 Trading and Exchanges(Oxford University Press, 2003)里有很好的讨论。设计重训节奏之前读一读,是值得花的时间:它会提醒你衰减的根源在别的参与者身上,而重训只能适配、不能阻止。
新模型的验证指标:比什么、怎么判
拿候选模型跟生产模型对比时,样本外数据上的指标永远比训练数据上的重要——训练指标按定义是过拟合的。验证集要满足四个条件:样本外(候选在训练和调参过程中都没见过)、够新(最近一个季度内,不是埋在 2018 年)、有代表性(可能的话至少跨一次制度切换)、规模合适(至少 60 个交易日,理想更多)。
在验证集上量的东西,每一项回答一个不同的问题。Sharpe 是头版指标,但只是其一;信息系数(IC,预测收益和实现收益的秩相关)在底层信号质量上常常比 Sharpe 更能说明问题,尤其在容量或杠杆受限时。胜率要跟策略的设计胜率比——55% 设计胜率跌到 48% 是有意义的衰减信号。回撤特征(最大回撤、时长、恢复时间)跟生产模型对照。校准图把预测收益分位画到实现收益分位上:校准好的模型单调递增,非单调的模式说明模型在拟合噪声。换手率是个容易漏的坑:换手率高 50% 而 Sharpe 类似的模型,实际上不是改进——成本和容量约束会把那点差异吃光。容量估计(滑点开始实质影响收益的规模)在候选和生产之间对比。
决策规则:候选在大多数指标上有意义地打败生产模型、且统计显著,才部署。“有意义”通常指 Sharpe 改进 15-20%、deflated Sharpe ratio > 0.95。差一点都留着当前模型。
影子交易:被低估的那一步
影子交易是把候选模型跟生产模型实时并行跑:候选产生信号但不下单,信号被记录,N 个交易日后对比”如果真发生会怎样”。它是可能范围内最真实的验证——就是在实盘市场数据上跑策略,只是没有实盘订单。
几条纪律。时长:中频策略至少 4-8 周,少于这个是在噪声上做验证。对比口径:跟验证集一样的那组指标,再加上候选的假设成交对生产模型实际成交的对照(可以重放生产成交、比较 PnL 路径)。决策规则:影子指标有意义地打败生产的实盘指标才部署,边际差异不部署。频率:影子交易应该几乎不间断地跑着——每个通过初验的新版本都进影子池,时间一长你手里就有一个全部在近期真实数据上验证过的候选库。
团队最常犯的错是嫌它”慢”而跳过,然后部署一个只在历史数据上验证过的模型,在第一次制度变化时翻车。影子交易抓的正是”回测看着好”和”实盘数据上真管用”之间的那道缝。
版本、回滚,以及平台替你管住的部分
每个部署的模型都要有版本标识。部署 v17 时,v16 必须保持可即时回滚——如果 v17 第一周表现糟糕,回滚应该在几分钟内完成,不是几小时,更不是几天。配套的纪律:每个版本打上元数据(训练数据窗口、超参数、验证指标、部署时间戳);保留最近 5-10 个版本可部署,别删旧的模型 artifacts;回滚要能一条命令完成;并且定期演练——没测过的回滚,就是需要的时候用不了的回滚。
在 Arithmion 上,这一层不用自己搭:训练产物是注册表里的一等对象,每个模型带着描述它的元数据档案入库;每次回测是一个可寻址的 run,run 之间可以直接做差异对比,验证器对每个 run 独立出具判定——候选和生产模型的对照,落在两个 run 的记录上,不落在谁的记忆里。自动化能替你做的是留痕和对比;“要不要换模型”这个判断,平台故意留给人。
模型生命周期管理最难的部分,从来不是重训本身,而是不重训的纪律:什么时候保留当前模型、什么时候回滚、什么时候先调查再动手。Churn 失败模式跟 staleness 失败模式一样危险——这句话值得写在监控仪表板旁边。
治理:不是官僚,是留痕
生产里的模型需要治理——不是开会那种,是确保正确决策被做出来、被记录下来的那种。版本管理刚才说过了,是审计跟踪的地基。审批流程要明确:谁有权部署新版本?一个人的小作坊就是你自己;多人运营通常是一个高级研究员加风控签字——把审批链写下来。变更日志覆盖每一次改动:重训、超参数更新、哪怕很小的特征变更,半年后凌晨 2 点出问题时,它告诉你改了什么。部署前过一遍 30 分钟的 checklist:验证指标对生产、影子结果、容量影响、风险限额兼容性、新模型下 kill switch 测过没有——这是一个人跑的清单,不是一场会。部署后 30 天做一次回看:实盘明显差于预期就回滚并调查。
治理的成本是每个版本几小时。没有治理的成本,是部署六周后才发现一个烂模型混了进来,然后一边 debug 什么变了、为什么变,一边跟问的人解释损失。
收在哪里
每个 alpha 因子都有半衰期,监控和重训的工作是在半衰期临近时看见它、在 alpha 消失前行动。触发器四种:时间、表现、制度、数据,各抓一种失败模式;工作流一套:样本外验证、近期实盘数据上影子对比、只在有意义改进时部署、每次变更留痕。而贯穿始终的诱惑是过度自动化——搭一个每周重训、每次”改进”都部署的系统,然后看着它用 churn 毁掉你的策略。
Chan 的 Quantitative Trading(Wiley, 2009, ISBN 978-0-470-28488-9)第 7 章对什么时候退役、什么时候维护一个策略有很好的讨论。框架很短,原理却值得记住:一个正在工作的模型,比一个”可能更好、但你还没验证过”的新模型更有价值。
参考文献
- López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. Chapter 7 (Cross-Validation in Finance) 与 Chapter 17 (Structural Breaks). ISBN: 978-1-119-48208-6.
- Harris, L. (2003). Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press. ISBN: 978-0-19-514470-3.
- Chan, E. (2009). Quantitative Trading: How to Build Your Own Algorithmic Trading Business. Wiley. Chapter 7 (Special Topics). ISBN: 978-0-470-28488-9.