衰减监控与停机线:你打算什么时候承认它不行了
要 82 年数据才能统计上确认这个策略衰减了——而样本只有 16 年;-30% 的停机线在同一批收益下有 98% 概率被触发
策略会衰减。所有人都同意这句话。
于是所有人都会设一条停机线:回撤超过 X% 就停,连续 N 个月跑输就停。
但先算一个数:要多久才能在统计上确认"它真的衰减了"?
日超额年化 -3.52%,年化波动 15.90%,信息比率 -0.221
要把「超额 = 0」拒掉(t=1.65):需要 56 年数据
(t=2.00):需要 82 年数据
(t=2.58):需要 136 年数据
本样本只有 16.0 年。
82 年。
这不是本课的策略特别差——信息比率 0.2 量级的策略,统计上就是这么难被证伪。
所以这一节的结论会有点反常识:停机线不是"策略坏了的证据",它是"我认赔的上限"。
医生说"这个药可能没用"。
要证明它没用,需要一个几千人、跑几年的双盲试验。
而你只有一个病人、观察了三个月。
在这种情况下,"停药"这个决定的依据不可能是统计显著性——只能是"我还能承受多少副作用"。
一、82 年:衰减检出的时间尺度
用单样本 t 检验倒推:要把"超额 = 0"拒掉,需要多少天数据?
n_days = (t · σ / |μ|)²
| 显著性水平 | 需要的数据长度 |
|---|---|
| t = 1.65(90%) | 56 年 |
| t = 2.00(95%) | 82 年 |
| t = 2.58(99%) | 136 年 |
本样本只有 16 年。
这个数字对信息比率的依赖极强(它按 IR 的平方反比增长)。IR = 0.22 时要 82 年;即使 IR 提高到 0.5,也要约 16 年——恰好是整个样本长度。
推论:对绝大多数散户可及的策略,"它是不是衰减了"这个问题,在你需要做决定的时间尺度上无法回答。
这不是方法不够好,是数据量的物理限制。
🔧 动手做:你要多久才能"确认"策略坏了?(5 分钟)
跑 python decay_monitor.py,看【一】衰减检出的时间尺度。
你会看到(实测):以这条策略实测的衰减幅度,要在统计上确认它真的衰减了(t=2.0),需要 82 年数据——而你手上只有 16 年。
想明白:这意味着在它真坏掉之前,你几乎永远无法在统计上确认它坏了。所以按回撤设的停机线(-30%)在同一批收益下有 98% 概率被触发,大多是误停(正常波动)。停机线不是"科学识别失效",是"控制亏损的纪律"——两者别搞混。
二、三条常见停机规则,回看历史
| 规则 | 触发天数 | 停机后年化 | 不停机年化 | 停机时间占比 |
|---|---|---|---|---|
| A 回撤超过 -30% | 1334 | -1.04% | -0.34% | 39.4% |
| B 滚动 12 月超额 < 0 | 2398 | -0.27% | -0.34% | 70.5% |
| C 滚动 12 月夏普 < 0 | 1994 | -0.86% | -0.34% | 64.2% |
(触发后停机 63 个交易日;停机期间收益记为 0)
A 和 C 都让结果更差。
B 看起来"改善"了(-0.27% vs -0.34%),但这个改善不能算数。
看它的停机时间占比:70.5%。
一个七成时间不交易的规则,和"干脆别做这个策略"的区别已经不大了。它的"改善"来自少交易,不是来自识别对了衰减。
"停机后表现更好"不等于"这条线识别对了衰减"。
判断一条停机线好不好,不能只看停机后的总收益——必须看它触发的时点对不对。这就是下一节要看的误停率。
三、误停率:触发之后的 63 天发生了什么
| 规则 | 触发次数 | 其后 63 日平均收益 | 其中上涨占比(误停率) |
|---|---|---|---|
| A 回撤超过 -30% | 10 | +3.76% | 60.0% |
| B 滚动 12 月超额 < 0 | 57 | +1.12% | 43.9% |
| C 滚动 12 月夏普 < 0 | 36 | -0.02% | 33.3% |
规则 A——最常见的那条——触发之后的 63 天,策略平均上涨 3.76%,六成的触发是错的。
这正是"停在最低点"的量化版本:回撤触发的时点,恰恰是均值回复概率较高的时点。
四、给"异常回撤"定一个统计基准
停机线该设在哪?先问:多深的回撤才算"异常"?
用 p5.6 的顺序重排法——同一批日收益,只换顺序,重排 5000 次:
最大回撤 95% 区间 [-60.1%, -30.7%] 实测 -43.9%
5000 条重排路径里,有 98% 的最大回撤比 -30% 更深。
也就是说:一条 -30% 的停机线,在同一批收益下几乎必然被触发。它触发与否,和策略有没有真的变坏几乎无关。
只有回撤超过 -60.1% 才落在这批收益的分布之外——而那时你已经亏掉六成了。
两个数的小差异值得一提:p5.6 那次重排给出的区间是 [-60.10%, -30.34%],本节是 [-60.1%, -30.7%]。 这是蒙特卡洛自身的估计误差——5000 次重采样本来就只精确到这个量级。一个区间的第三位小数不该被当真。
五、那停机线还要不要设
要。但要改变它的定位。
| 错误定位 | 正确定位 | |
|---|---|---|
| 它是什么 | 策略坏了的证据 | 我认赔的上限 |
| 依据来自 | 统计显著性 | 风险预算(p5.10) |
| 本节的结论 | 在 IR≈0.2 下需要 82 年,无解 | 答案来自你能承受多少,与数据无关 |
停机线的三条写法要求
- 事先写进规格书(p5.1 第 ④ 类:出场)。事后设的停机线不是风控,是止损后的自我安慰
- 用可承受回撤定线,不是用统计显著定线。前者你答得出来,后者本节已证明答不出来
- 必须同时写明重启条件。没有重启条件的停机线,等于永久放弃——而 p5.6 那个 -60% 到 -30% 的区间说明,很多次触发只是路径运气
一个更诚实的替代方案
与其监控"策略是否衰减",不如监控假设是否被推翻:
| 监控对象 | 比"看净值"好在哪 |
|---|---|
| 成交成本是否偏离假设 | 可以在几十笔交易内确认(p4.2/p5.7),不需要 82 年 |
| 换手率是否显著上升 | 直接可测,且影响容量 |
| 信号触发频率是否异常 | 结构变化往往先反映在信号频率上,而不是收益上 |
| 持仓集中度/相关性是否漂移 | 组合层面的结构变化 |
这些量的信噪比,比收益率高得多。收益是所有变化的最终结果,也是最慢、最吵的那个指标。
📌 免责:本课为技术教学,标的为沪深300 指数,所有回测为历史模拟,停机规则为演示口径,不构成投资建议。
三件事:
- 衰减在统计上几乎无法及时确认。IR = -0.221 时,把"超额 = 0"拒掉需要 56 / 82 / 136 年(90%/95%/99%),而样本只有 16 年。IR 提高到 0.5 也要约 16 年——恰好是整个样本长度
- 三条常见停机规则回看历史,两条让结果更差(A -1.04%、C -0.86% vs 不停机 -0.34%);唯一"改善"的 B 有 70.5% 的时间在停机——"停机后更好"不等于"识别对了衰减"。规则 A 的误停率 60.0%,触发后 63 天平均上涨 3.76%
- -30% 的停机线在同一批收益下几乎必然被触发:5000 次重排里 98% 的路径回撤比它更深。只有超过 -60.1% 才落在分布之外——而那时已经亏掉六成
所以定位要改:停机线不是"策略坏了的证据",是"我认赔的上限"。三条写法要求:事先写进规格书、用可承受回撤定线、必须写明重启条件。
一个更诚实的替代:监控假设是否被推翻(成本偏离、换手上升、信号频率异常、相关性漂移),而不是监控净值——这些量的信噪比比收益率高得多。
下一节进入组合层:不再问"买什么",而问"每个东西该占多少"——风险平价、再平衡成本,以及它长期的真实表现。
🔎 来源与核验· 4 条,点开核对
