跳到正文

机器学习交易策略的生命周期

从研究到退役的六个阶段,每一阶段的诚实比例、评估周期和退出条件,以及为什么大多数策略死在流程上而不是模型上。

第 1 篇 · 共 8 篇 约 12 分钟

大多数 ML 研究死在 Jupyter notebook 和实盘账户之间。不是因为模型算错了,而是因为没有人为部署这件事规划过流程。

如果把整个生命周期压成一个数字,那个数字是比例:实际表现除以回测表现。研究阶段你算出一个夏普;模拟盘会把它打个折;试点再打一次;扩量再打一次;然后时间会年复一年地继续打折,直到剩下的部分不值得占用资金。每一关都是同一道题——这次的折扣是不是还在你预料的范围内。策略死掉的方式不是”模型突然失效”,而是某一关的折扣远超预期,而没有人在看那个比例。

这篇文章走一遍六个阶段:研究、模拟盘、试点、完整部署、监控、重训或退役。每个阶段该花多长时间、通过的标准是什么、什么样的比例意味着你该停手。

先说适用范围。这是一条适合典型小团队量化操作的流水线。有完整合规、风控和运维职能的机构会多出几道关口,节奏也更慢。原则一样,速度不一样。

阶段一:研究(几周到几个月)

研究阶段的产出是一个你相信、但还没有真金白银托付的策略。输入是数据、一个假设和一些工程;输出是带诚实统计的回测表现、walk-forward 验证,以及一个你站得住脚的 Deflated Sharpe Ratio。

前半程是常规动作:搭起因子或 ML 模型(对 ML 策略而言是特征工程、模型选择、walk-forward 交叉验证、带严格样本外测试的超参调优),然后算标准回测统计——夏普、Sortino、最大回撤、Calmar 比率、换手率、容量估计、因子暴露。这些数字本身没有争议,有争议的是接下来对它们打的折。

第一道折扣来自 Deflated Sharpe Ratio。DSR 针对你试过的策略数量、回测长度、以及收益分布的非正态性(偏度和峰度)来调整报出来的夏普。有一点要说清楚:AFML 里的 DSR(§14.7.3)并不直接针对收益自相关做调整,对自相关的收益你需要另外做一个有效样本修正。折扣的量级是惊人的——10 年日数据上一个朴素的夏普 1.5,经过 DSR 调整之后经常只剩 0.6 或 0.7。

第二道是 Probability of Backtest Overfitting。PBO 估算的是:样本内最优的那个配置在样本外跑输中位数的概率。按这个定义,50% 就等于抛硬币,而很多团队把警戒线画在 25%——超过它就该假定自己拟合的是噪声而不是信号。

第三道是成本。交易成本、滑点、容量拖累通常再让回测夏普打掉 50-70%。研究里回测夏普 1.0,对应的实盘预期夏普一般是 0.3-0.5。

诚实关就设在这里:如果在做完所有这些调整之后,你没法诚实地说出一个 0.5 以上的预期实盘夏普,就别往下走。预期夏普更低的东西不是可部署的策略,是实验,区别只在于亏得慢还是快。

值得把上面两个数字放在一起看一眼:回测夏普 1.0 的策略调整完之后大概率卡在门槛上或者过不去。要有余量,你需要的是回测夏普 1.5 往上——而 1.5 恰好又是 DSR 砍得最狠的那个区间。这两个约束一起,就是研究阶段真正的难度所在。

这个阶段对一支胜任的团队要几周到几个月。别赶。慢一点的研究阶段代价是机会成本;粗糙的研究阶段代价是接下来一年的整个策略预算。

阶段二:模拟盘(最少 3-6 个月)

模拟盘让策略对着真实市场数据跑,但不下真金白银。订单管理系统生成假设交易,组合账目模拟成交、成本和 PnL,没有真钱在冒险。

它要验证的不是策略对不对——那是上一阶段的事——而是实时数据管道、信号生成、组合构建、风控这一整套在真跑起来的时候是否按设计工作。回测是离线仿真,模拟盘是同一个系统跑在生产环境里,唯一的差别是钱是假的。

它抓的第一类东西是延迟和时序:你的信号是不是跟你用的那个价格 bar 几乎同时生成?你在实时数据上算特征算对了吗?这类错误多到让人脸红,而且在回测里一个都看不见。第二类是数据源:供应商的实时 feed 跟你回测那份对得上吗?复权差异、生存偏差、时间戳口径的差别都会在这里现形。第三类是运维可靠性——系统能不能连续跑几周不崩,能不能扛住交易所停牌、坏 tick、网络抖动。第四类是成交价:有些回测拿昨天的收盘价当成交价,真实市场用今天的,还得加滑点。

到了比例这一关,模拟盘夏普通常落在回测夏普的 50-70%。如果策略用日收益、完全系统化、不做日内,比例可以高到 60-80%,因为它本来就不吃执行细节。低于 30% 意味着策略是坏的,常见原因就三个:实时数据跟回测数据对不上、交易成本被低估、回测里藏着没被发现的前瞻。

至于为什么最少要 3-6 个月:1-2 个月的窗口经常整段都是平静市场,压不出系统的问题。你希望在这个窗口里至少撞上一次 regime 切换、一次波动率尖峰、一段不寻常的价格行为,然后看它活下来。

窗口结束时一切健康就进试点;不健康就修系统或者杀掉策略。

阶段三:试点部署(3-6 个月)

试点拿出计划资金的一小部分——通常 5-10%——投到策略上。策略在生产里跑,有真实的订单、真实的成交、真实的滑点、真实的交易对手风险。资金小到完全失败也只是一笔能承受的损失。

模拟盘验证的是系统,试点验证的是市场对你的反应。这是第一次有人在另一头承接你的单子,也是第一次你能拿到几个数字:实现滑点(回测里假设的和生产里实际看到的差多少,流动性好的美股上很小,不那么流动的票或者大单上很可观)、容量(在自己的成交足迹开始推动价格之前能管多少钱——在 100 万美元上 work 的策略在 1 亿美元上未必)、成交率(计划交易里真正执行掉的比例,95% 很好,60% 意味着你的信号在说”我想成交,但只在一个不存在的价格上”)、运维成本(回测里被省略的人力小时、供应商费用、基础设施开销),以及容量拖累的第一手证据。

试点夏普通常是回测夏普的 40-60%——注意这个区间比模拟盘那一档更低,多出来的折扣就是滑点、容量和成交率的价格,而这三样在模拟盘里全都看不见。低于 40% 说明有一个你还没定位的问题。能落在回测夏普 80% 以内算优秀,一般意味着标的流动性好、执行到位、成本模型建对了。

评估时间同样是 3-6 个月,理由和模拟盘一样:你想至少覆盖一个 regime。试点健康就进完整部署;不健康就降配置、重组策略,或者杀掉。别硬推一个糟糕的试点指望它自己变好。

阶段四:完整部署(渐进扩量)

完整部署不是”明天全投”。它是在监控下渐进扩量,一个常见的节奏是第 1 个月 30% 的计划资金、第 2 个月 50%、第 3 个月 75%、第 4 个月 100%。

之所以要分四步,是因为容量拖累是个只在规模上暴露的问题。策略随资金扩大而被侵蚀的那部分收益,经常要到管住计划资金的 50% 以上才看得出来。急着上满仓,等于让容量拖累的第一次出现和第一次大额亏损是同一件事。

到这个阶段,观察的重点从”能不能跑”变成”跑得对不对”。实盘夏普对预期夏普要按日、周、月滚动比;因子 IC——你的信号与实现收益的秩相关——要在实盘上度量,大多数策略会随着阿尔法被拥挤而 IC 逐年下滑;换手率在生产里通常比回测高,尤其是流动性受限的资产开始闹别扭的时候;实现交易成本要对着建模成本看,成本被低估的部分会按换手率放大着从夏普里扣出去,高换手策略上这个杠杆很大。风控限额是唯一不需要判断的一项:持仓集中度、杠杆、行业暴露、回撤上限,全部自动执行,不留人工裁量的口子。

完整部署没有”完成”这个状态。它是一段持续的监控和调整,策略要么维持在这个状态直到死掉,要么团队主动让它退役。

阶段五:监控和衰减检测

每个策略都会衰减。半衰期差别很大——价值策略在整个 2010 年代都在衰减,动量策略有以几十年计的周期,均值回归能不能持续要看 regime。有的策略撑 6 个月,有的撑 10 年,没有永远不死的。

监控就是把前面那个比例持续地量下去,只不过分母从”回测”换成了”研究阶段的预期”。

实盘 IC 是最灵敏的那一个。算信号与实现收益的滚动秩相关(通常 60-120 天窗口),对着研究阶段的预期 IC 比。80% 以上说明策略在工作,30-50% 说明衰减严重,低于 30% 说明策略死了、资金该撤。

实现夏普是同一套逻辑套在实际收益上,只是它慢得多——日频策略要跑够 12-18 个月才有统计功效,在那之前两者对不上很可能只是小样本噪声。这也是为什么 IC 是你的早期预警而夏普是你的确认信号,别把顺序搞反。

容量利用率决定了你在读哪一段曲线。策略自然容量 5 亿而你跑 5000 万,那是 10% 容量:拖累很小,但策略真实的夏普在你的实盘 PnL 里也显示不全。到 80% 容量,拖累开始咬人,你看到的下滑里有多少是衰减、多少是自己撑大的,需要分开算。

回撤则是硬边界。回撤达到研究阶段预期最大回撤的 1.5 倍,提示 regime 可能切换了,复查风控限额;达到 2 倍,是大多数团队暂停策略并复盘的门槛。

这些都要有明确的报警阈值,逐条列出来是有意义的,因为它们最终会变成配置文件里的几行:

  • IC 比滚动 6 个月均值低 30% → 报警。
  • 实盘夏普在滚动 12 个月窗口里低于 0.3 → 报警。
  • 回撤超出预期最大值 50% → 报警并暂停。
  • 成交率低于预期的 80% → 报警。
  • 运维错误(数据中断、成交缺失、系统崩溃)→ 报警。

报警必须自动化。要靠人在能抓到 IC 衰减的频率上做监控,是做不到的。

阶段六:重训

监控报了警,第一反应是重训:在最近的数据上重新拟合(滚动窗口,通常 3-5 年),随着市场动力学变化加入新特征(新的宏观指标、另类数据),然后在最近一个周期上重新做 walk-forward 验证。

重训把 IC 和夏普拉回预期水平,策略就活下来。拉不回来,你面对的是三种问题之一,而它们要求的动作完全不同。

一是阿尔法结构性消失了:产生它的市场机会被套利走光了,再怎么重训也找不回来。二是模型现在设定错了:特征和收益之间的关系变了,你需要的是新特征,不是重拟合——重训在这种情况下会给你一个拟合得很好但依然没有预测力的模型。三是噪声伪装成衰减:IC 掉一个季度又回来是常事,别因为三个月的糟糕表现杀掉一个健康策略。

区分这三种情况需要时间和细致的分析,也需要愿意承认答案就是”阿尔法没了”。这个判断大多数团队做得太少而不是太多,原因是希望。对数据说的话诚实一点。

阶段六(备选):退役

有些策略恢复不了。IC 一直低、夏普一直低,加了新特征重训也救不回来,那这策略就算完了。

退役的动作有先后:停止分配资金,暂停或关停生产系统,然后有序地把手头仓位平掉——不要一次性全砸,那样会制造出你本来一直在避免的市场冲击。最后一步是记下什么 work、什么不 work、学到了什么留给下一个。这一步最容易被跳过,也是退役里唯一有复利的部分。

退役的策略不是失败。教会团队怎么搞下一个的退役策略是成功。反过来——因为没人愿意承认它死了而硬跑一个衰减的策略——才是团队亏掉亏不起的钱的方式。

诚实的衰减时间表

把上面的比例按年铺开,大多数 ML 驱动策略的现实节奏是这样的:第 1 年满阿尔法、夏普见顶,信号还没被拥挤;第 2 年剩峰值的 70-90%,别的参与者开始注意,有自然衰减;第 3 年剩 50-70%,拥挤是真实的,要么是你自己做大了,要么是别人抄了,通常两者都有;第 4 年往后运气好还有 30-50%,而除非策略被根本性地重新设计过,大多数到第 3-4 年就退役了。

这些数字因策略而异,而分界线基本上是换手率和标的的拥挤程度。低换手(年化 20%)的多空价值股票策略衰减慢;高频统计套利(年化换手 1000%)衰减快。交易不那么活跃的工具上的统计模式——公司债、商品、小众期货——比热门工具上的(标普 500 成分股、主要外汇对)持久,因为盯着它们的人少。

所以按衰减来规划,别把职业赌在一个策略能撑 5 年以上。研究流水线里永远留着至少一个替补,并且永远让至少一个策略处在试点阶段——你的主策略死掉的那天,你需要有东西可以直接扩上来,而不是从阶段一开始重新走三年。

反复出现的六个杀手

跑过几轮这样的生命周期之后,杀死策略的方式会重复,而且每一种都对应流水线里某个被跳过的环节。

对样本内数据过拟合:回测惊艳、实盘平庸,因为策略拟合的是研究数据里的噪声。Walk-forward 验证能抓住大部分,诚实地算 DSR 和 PBO 能再抓一批。

容量拖累没被发现:策略在 1000 万美元上 work,扩到 1 亿,自己的成交足迹开始推价格,收益被稀释。试点部署就是为它设的,在多个资金份额上做细致试点能避免上满仓时的意外。

被其他参与者拥挤:研究里没被拥挤的模式,到生产里因为别的量化人看到了同一个东西而拥挤,IC 衰减。这一种重训救不回来,唯一的应对是找新信号或者接受衰减。

Regime 切换了但没重训:市场动力学变了(2008、2020、2022),而策略是在另一个 regime 上训练的。它还在交易,只是在用过时的模式做决策。定期重训——最低限度每季度一次——能防住大多数这种情况。

运维故障:系统崩了、数据源断了、订单管理发了乱序的订单。策略本身没事,但没人在监控,系统就静悄悄地挂了。这是所有杀手里最可预防的一个,也仍然在以令人沮丧的频率发生。

合规或风控失败:策略交易了受限标的、超了杠杆上限、违反了持仓集中度规则,然后被合规或风控关停。事前风控检查能防住它,事后监控抓事前没抓到的。

六个里有五个都有明确的对策——事前风控管运维和合规,walk-forward 验证管过拟合,试点管容量,定期重训管 regime。只有拥挤没有永久解法,而这恰恰就是策略需要生命周期这件事本身的根源。

最后

大多数策略有 2-3 年的有效寿命,按这个来规划,别在上线当天就辞掉正职。

上面这条流水线不是理想化目标,它是任何 ML 交易策略碰真金白银之前的最低配置。跳过任何一个阶段,都在降低你活到策略回本的概率——而且跳过的那一个,往往就是最后杀死它的那一个。

ML 交易难的部分不在于搭模型。难的是让系统穿越所有阶段、所有 regime、所有运维故障、所有衰减之后还活着。能成的团队,是从第一天就为生命周期做过规划的团队。


参考文献

Chan, E. (2013). Algorithmic Trading: Winning Strategies and Their Rationale. Wiley. ISBN 978-1-118-46014-6.

López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley。§11.6(Combinatorially Symmetric Cross-Validation 与 Probability of Backtest Overfitting)、§12.4(Combinatorial Purged Cross-Validation)、§14.7.3(The Deflated Sharpe Ratio)。ISBN: 978-1-119-48208-6。严格的 walk-forward 验证、多重检验调整和 DSR 的方法论都在这里。

Bailey, D. H., & López de Prado, M. (2014). “The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality.” Journal of Portfolio Management, 40(5), 94-107。DSR 的开山论文,要发表策略回测结果的人都该读。

Harvey, C. R., Liu, Y., & Zhu, H. (2016). ”… and the Cross-Section of Expected Returns.” Review of Financial Studies, 29(1), 5-68。分析因子发表偏倚,主张对新因子用高得多的显著性门槛。注意它和本文那道 0.5 夏普关的方向不同:这篇管的是”这个因子该不该被相信”,门槛只会更高;0.5 是从业者的部署下限,不是这篇论文的建议值。