回撤控制覆盖层:在原策略之上加一层自动减仓
「回撤超过 10% 就自动减仓」是资管产品的标配风控,但它的公平比较对象不是原策略,而是降到同样平均敞口的常数杠杆——而常数杠杆的 Sharpe 精确等于原策略 0.500668(杠杆不改变 Sharpe,引擎自洽性验证)。4000 路径 × 10 年受控模拟拆出四笔账:Jensen 敞口离散税 −0.0422(有闭式解 E[w]/√E[w²]=0.915636)、路径联动成本 −0.0553、换手成本 −0.0180,而唯一为正的回撤持续性收益只有 +0.0059——被前三项吃掉 21 倍。决定性对照是敞口移植:把路径 i 的敞口轨迹配给路径 i+1,w 的边际分布一字不改、只切断它与自身回撤的联动,残差立刻从 −0.0440 变成 +0.0054,Jensen 解析式精确成立。零波动安慰剂最大逐日偏差 0.000e+00、敞口恒为 1.0000000000。真正的发现在尾部:同样的中位回撤下常数杠杆多赚 0.613pp/年,但同样的最差 5% 回撤下覆盖层反赚 1.354pp——它不是风控工具,是尾部保险。最差 1% 回撤改善 18.49pp。剂量反应单调但残酷:择时项过零需 AR(1)=0.187,而总 Sharpe 增量在 phi=0.30 时仍为负。波动聚集不是第二引擎(k 扫描极差 0.00025,是 phi 扫描的 1/416)。12 宇宙 CV=0.053
核心结论:回撤控制覆盖层的公平比较对象不是原策略,而是「降到同样平均敞口的常数杠杆」。 因为覆盖层做的第一件事就是降杠杆,而降杠杆不需要任何择时能力。一旦换上这个对照组,它的 Sharpe 增量从「看起来在做风控」变成 −0.1042,其中真正来自回撤持续性的正贡献只有 +0.0059。
4000 条路径 × 10 年的受控模拟(μ=8%、σ=16% 由构造给定)给出的账本:原策略 Sharpe 0.500668,加上覆盖层后 0.396463。而降到同样平均敞口 0.7124x 的常数杠杆,Sharpe 是 0.500668 —— 与原策略精确相同到小数点后六位。
这不是巧合,是引擎自洽性验证:常数杠杆不改变 Sharpe(分子分母同比例缩放)。所以覆盖层丢掉的那 0.1042,全部是它「动态调整」这个动作本身造成的。

但这篇文章真正想说的不是「覆盖层没用」。而是:它有用的地方和你以为的地方不是同一个。
一、先说清楚这层东西是什么#
回撤控制覆盖层(drawdown control overlay)的逻辑简单到一句话就能说完:
盯着净值曲线,从历史最高点回撤超过阈值就减仓,回撤扩大就继续减,净值恢复就加回来。
在 FOF、管理期货、银行理财的产品说明书里,它通常被写成「动态风险预算」或「回撤熔断机制」。实现上有两种:线性减仓(回撤 10% 开始减、30% 减到零,中间线性插值)和硬止损(超过阈值直接清仓)。
本文的基准设定:
| 参数 | 值 | 说明 |
|---|---|---|
| 基础策略 μ | 8%/年 | 真值,由构造给定 |
| 基础策略 σ | 16%/年 | 真值,由构造给定 |
| 触发阈值 | 回撤 10% | 开始减仓 |
| 归零阈值 | 回撤 30% | 敞口降到 0 |
| 日收益 AR(1) | φ = 0.04 | 回撤持续性的来源 |
| 波动聚集 | k = 0.06 | EWMA 反馈 |
| 换手成本 | 8 bp | 单边 |
| 执行延迟 | 1 日 | 信号 t 日收盘,t+1 生效 |
一个必须先讲的工程细节:AR(1) 系数会改变无条件方差(放大 1/(1−φ²))。如果不做校正,后面扫描 φ 时就会混淆「自相关效应」和「波动本身变了」这两件事。所以生成路径时对冲击做了 √(1−φ²) 的反向缩放,保证不同 φ 下无条件 σ 严格不变。这一步不做,剂量反应图会得出完全错误的斜率。
二、Jensen 敞口离散税:一笔有闭式解的成本#
先讲一个和择时能力完全无关、但几乎从不出现在产品文档里的成本。
假设敞口 w 与收益 r 相互独立(先不考虑择时),那么组合的 Sharpe 与原策略的比值有精确解:
Sharpe_overlay / Sharpe_base = E[w] / sqrt(E[w²])plaintext分子是平均敞口(决定收益),分母是敞口的二次矩平方根(决定波动)。由 Jensen 不等式,只要 w 有任何波动,这个比值就严格小于 1。
实测:E[w] = 0.712357,√E[w²] = 0.777991,比值 0.915636。
预测 Sharpe = 0.500668 × 0.915636 = 0.458430。
也就是说,在完全没有任何择时能力的前提下,仅仅因为敞口在时间上是波动的,Sharpe 就会掉 0.0422。这笔钱和市场环境无关、和策略质量无关,是纯数学。
import numpy as np
def jensen_ratio(w_path):
"""敞口离散税:w 与 r 独立时的 Sharpe 衰减比值(精确解)"""
w = np.asarray(w_path, dtype=float)
return w.mean() / np.sqrt((w ** 2).mean())
# 三种敞口模式,平均敞口都是 0.7
steady = np.full(2520, 0.7) # 恒定
mild = np.where(np.arange(2520) % 2, 0.9, 0.5) # 轻微摆动
wild = np.where(np.arange(2520) % 2, 1.0, 0.4) # 剧烈摆动
for name, w in [("恒定", steady), ("轻微摆动", mild), ("剧烈摆动", wild)]:
print(f"{name}: E[w]={w.mean():.4f} 比值={jensen_ratio(w):.6f}")
# 恒定: E[w]=0.7000 比值=1.000000
# 轻微摆动: E[w]=0.7000 比值=0.961524
# 剧烈摆动: E[w]=0.7000 比值=0.919145python同样的平均敞口,摆动越剧烈损失越大。这就是为什么「频繁调仓的风控」比「一次性降杠杆」天然吃亏——即使前者的择时判断完全中性。
三、决定性对照:敞口移植#
Jensen 解析式成立的前提是 w ⊥ r。但覆盖层的敞口恰恰是由自身回撤决定的,w 和 r 高度相关。那么实测偏离预测多少?
实测零成本 Sharpe 0.414419,预测 0.458430,残差 −0.044011。
这个残差是什么?可能是「择时能力为负」,也可能是我的实现有 bug。要区分这两者,需要一个能把 w 的分布完整保留、只切断它与自身回撤联动的对照组。
敞口移植(exposure transplant):把路径 i 算出来的敞口轨迹,原封不动地配给路径 i+1。w 的边际分布一字不改,时序结构也完整保留,唯一改变的是它不再和自己脚下这条路径相关。
结果:Jensen 预测 0.458454,实测 0.463877,残差 +0.005423。
Jensen 解析式在 w ⊥ r 时精确成立(残差从 −0.0440 变成 +0.0054,翻转符号且量级掉一个数量级)。这条对照同时证明了两件事:实现没有 bug,且真实世界多出来的 −0.0553 有一个明确的名字——路径联动成本。
它的经济含义是:覆盖层强制你在净值低点持有低敞口、在净值高点持有高敞口。这是一个系统性的高买低卖。当收益接近独立同分布时,这个动作纯粹是损耗。
四、安慰剂矩阵#
| 安慰剂 | 设定 | 择时残差 | 判读 |
|---|---|---|---|
| A. IID 世界 | φ=0、同方差 | −0.051574 | 无持续性可利用 |
| B. 零波动 | σ→0 | 逐日偏差 0.000000e+00 | 永不回撤,覆盖层完全不动 |
| C. 零漂移 | μ=0 | CAGR −0.2464% vs 常数 −0.2275% | 无收益可保护,只剩损耗 |
| D. 时间置换 | 打散时序、保留分布 | −0.049901 | 销毁持续性 |
| E. 敞口移植 | w⊥r | +0.005423 | Jensen 式精确成立 |
安慰剂 B 是最硬的实现校验:零波动世界里净值永不回撤,覆盖层的敞口必须恒等于 1。实测平均敞口 1.0000000000、换手 0.000e+00、与原策略的最大逐日偏差 0.000e+00。如果这里出现任何非零值,说明触发逻辑有泄漏。
安慰剂 D 与真实世界的差就是回撤持续性的全部贡献:−0.044011 −(−0.049901) = +0.005890。
于是四项拆账完成:
原策略 Sharpe 0.5007
① Jensen 敞口离散税 −0.0422 (纯数学,与能力无关)
② 路径联动成本 −0.0553 (系统性高买低卖)
③ 回撤持续性收益 +0.0059 ← 唯一为正
④ 换手成本 −0.0180
覆盖层 Sharpe 0.3965plaintext唯一为正的那一项,被前三项吃掉了 21 倍。

五、那它到底赢在哪:尾部#
如果到这里就下结论「覆盖层是负价值」,那是只看了 Sharpe。而 Sharpe 对尾部风险几乎不敏感。
换个问法:在同样的风险水平下,覆盖层和常数杠杆谁更赚? 关键在于「同样的风险」怎么定义。
用二分法找到与覆盖层风险相同的常数杠杆:
| 风险口径 | 覆盖层 | 同风险常数杠杆 | 差值 |
|---|---|---|---|
| 中位最大回撤 −26.41% | CAGR 5.06% | 敞口 0.7761x,CAGR 5.68% | 常数杠杆 多赚 0.613pp |
| 最差 5% 回撤 −29.98% | CAGR 5.06% | 敞口 0.4894x,CAGR 3.71% | 覆盖层 多赚 1.354pp |
判决在两个风险口径下完全相反。
按中位回撤衡量,常数杠杆完胜——你想要 −26% 的典型回撤,直接把仓位降到 0.776 倍就行,还能多赚 0.61pp。
但按尾部回撤衡量,覆盖层反超 1.35pp。原因很直接:常数杠杆要把最差 5% 回撤压到 −29.98%,必须把敞口一路降到 0.4894x,代价是所有时候都只有一半仓位。而覆盖层平时保持 0.71x,只在净值真的开始塌的时候才降。
分位数对比更清楚:
| 回撤分位 | 原策略 | 常数杠杆 0.7124x | 覆盖层 |
|---|---|---|---|
| 中位 | −32.99% | −24.46% | −26.41% |
| 最差 5% | −53.01% | −40.99% | −29.98% |
| 最差 1% | −61.76% | −48.95% | −30.46% |
| MDD>40% 占比 | 26.40% | 6.02% | 0.00% |
最差 1% 改善 18.49pp,且 MDD 超过 40% 的路径精确为零。常数杠杆做不到这件事——它的尾部是原策略尾部的等比例缩放,永远保留同样的形状。
覆盖层不是风控工具,是尾部保险。 它用中位数上的 0.61pp 年化,买断了尾部的截断。
六、这张保险单谁在付费#
按原策略最大回撤分五档,看覆盖层在每一档上的效果:
| 分档 | MDD 改善 | CAGR 增量 |
|---|---|---|
| D1(最深回撤) | +20.57pp | −0.20pp |
| D2 | +10.92pp | −0.89pp |
| D3 | +6.66pp | −0.77pp |
| D4 | +3.79pp | −0.21pp |
| D5(最浅回撤) | +1.31pp | +1.12pp |
赔付高度集中在 D1,而 D2/D3 是纯付保费的那批人。逐路径看:只有 42.1% 的路径 CAGR 被改善,5/95 分位跨度 [−2.98, +3.24] pp。
D5 的正增量需要单独解释一下:这一档本来就没怎么回撤过,覆盖层几乎不触发,敞口长期接近 1.0,所以它相对于「一直只有 0.7124x」的常数杠杆当然更赚。这不是覆盖层的功劳,是对照组在这一档上被拖累了。

七、剂量反应:需要多强的动量才划算#
覆盖层的正价值只来自回撤持续性。那么持续性要多强才够?
| AR(1) φ | 择时项 | 总 Sharpe 增量 | 中位 MDD 改善 |
|---|---|---|---|
| −0.08 | −0.05920 | −0.09274 | +4.58pp |
| 0.00 | −0.04709 | −0.08633 | +6.36pp |
| +0.06 | −0.03514 | −0.07890 | +7.85pp |
| +0.15 | −0.01202 | −0.06305 | +10.33pp |
| +0.187 | 0(插值) | −0.055 | — |
| +0.30 | +0.04355 | −0.02130 | +15.21pp |
单调、干净。但两个过零点差得很远:
- 择时项过零:φ ≈ 0.187
- 总 Sharpe 增量过零:φ > 0.30(扫描范围内未出现)
日收益自相关 0.187 是什么概念?主流股指的日收益自相关通常在 ±0.05 以内。要让覆盖层在 Sharpe 口径上真正划算,需要的动量强度比真实市场高一个数量级。
而回撤改善是单调递增且全程为正的——这再次说明:它的价值在回撤口径上,不在 Sharpe 口径上。
八、波动聚集不是第二个引擎#
一个自然的猜想:即使收益没有自相关,波动聚集(vol clustering)也会让回撤具有持续性,覆盖层是不是能从这里取能?
固定 φ=0 隔离自相关,单独扫描波动聚集强度 k:
| k | 0.00 | 0.10 | 0.18 | 0.28 | 0.40 |
|---|---|---|---|---|---|
| 择时项 | −0.05270 | −0.05275 | −0.05280 | −0.05295 | −0.05292 |
极差 0.00025 —— 是 φ 扫描极差(0.10275)的 1/416。这是一条真正的直线。
原因不复杂:回撤触发器读的是价格水平,不是波动率。波动聚集改变的是波动的时序分布,但回撤能否触发取决于累计价格路径。要利用波动聚集,需要的是波动率目标策略(vol targeting),那是另一套机制。
这是一个诚实的负面结果:我原本预期这里会有信号。

九、信号口径:一个会导致吸收态的实现选择#
「用哪条净值曲线算回撤」听起来是实现细节,实际上会改变策略的定性行为。
| 方案 | CAGR | 中位 MDD | 平均敞口 | 换手 |
|---|---|---|---|---|
| 线性 / 自身净值 | 5.06% | −26.41% | 0.7124 | 2.61x |
| 线性 / 原策略净值 | 5.27% | −27.88% | 0.7506 | 3.33x |
| 硬止损 / 原策略净值 | 2.87% | −24.24% | 0.4208 | 1.53x |
| 硬止损 / 自身净值 | 0.43% | −10.48% | 0.0618 | 0.10x |
最后一行是个陷阱:用自身净值做信号 + 硬止损,一旦敞口归零,净值就冻结了,回撤永远不会恢复,w=0 成为吸收态。平均敞口 0.0618、换手 0.10x——绝大多数路径清仓一次就再也没回来过。
这不是理论风险。用客户看到的净值(叠加后)做回撤信号,是产品设计里最自然的选择,因为合同里的回撤条款就是按客户净值写的。但它和硬止损组合会产生单向门。
线性减仓能容忍这个口径(敞口永远不精确到 0,还有恢复通道),硬止损不能。
十、延迟与成本#
| 执行延迟 | 1 日 | 3 日 | 10 日 | 21 日 |
|---|---|---|---|---|
| Sharpe | 0.3965 | 0.3801 | 0.3793 | 0.3761 |
| 中位 MDD | −26.41% | −26.69% | −26.79% | −27.08% |
反直觉的是回撤保护对延迟几乎免疫(21 日延迟只恶化 0.67pp),但 Sharpe 在第 1→2 日就掉了 0.016。因为回撤是慢变量,晚几天减仓不太影响最终深度;而 Sharpe 对短期噪声敏感。
成本扫描全区间为负——即使成本精确为 0,Sharpe 0.4144 仍低于常数杠杆的 0.5007。没有盈亏平衡点,因为主要缺口来自 Jensen 税和路径联动,不是手续费。

十一、减仓状态下的机会成本#
统计敞口轨迹:
- 处于减仓状态的时间占比 59.69%(敞口 <0.5 的占 28.88%)
- 减仓期间原策略年化 +7.7344%,满仓期间 +8.6346%,差 −0.9002pp
- 10 年累计放弃的收益(未参与部分)22.35%
- 历史最低敞口 0.0030,敞口 5 分位 0.141
那 −0.90pp 的差值是关键:处在回撤中,对原策略未来收益的预测力接近于零(真值 μ 恒为 8%,这点差异来自 AR(1)=0.04 的微弱贡献)。你减仓的那 59.69% 时间里,标的照样在以接近正常的速度上涨。
十二、对抗式审查:怀疑过并排除的点#
-
「常数杠杆 Sharpe 等于原策略是不是巧合?」 不是。三处独立计算(基准对照、同中位回撤匹配、同尾部回撤匹配)的 Sharpe 全部精确等于 0.500668,因为杠杆缩放不改变 Sharpe。这是引擎自洽性验证。
-
「−0.044 残差会不会是实现 bug?」 敞口移植对照排除了这一点:w⊥r 时残差 +0.005423,Jensen 式精确成立。
-
「AR(1) 扫描的斜率会不会被无条件方差变化污染?」 已做 √(1−φ²) 校正,九档扫描下原策略 Sharpe 恒定在 0.502。
-
「回撤改善会不会只是因为平均敞口降了?」 这正是常数杠杆对照组要回答的。同平均敞口下中位回撤 −24.46%(常数)vs −26.41%(覆盖层),覆盖层反而更差;改善只出现在尾部。
-
「12 宇宙会不会不稳定?」 择时项均值 −0.04497、SD 0.00237、CV = 0.0528,结论稳健。
-
「零漂移世界里回撤改善 18.85pp 是不是说明它有效?」 这恰恰是反证:μ=0 时没有任何收益可保护,CAGR 反而从 −0.2275% 恶化到 −0.2464%。回撤数字好看但经济价值为负。
十三、结论与诚实边界#
能确认的:
- 覆盖层的公平对照是同平均敞口的常数杠杆,不是原策略
- 它有一笔与择时能力完全无关的固定成本:Jensen 敞口离散税,有闭式解 E[w]/√E[w²]
- 它的正价值只来自回撤持续性,在真实市场的自相关水平下这笔钱远不够付前三项成本
- 它的真实用途是截断尾部:最差 1% 回撤改善 18.49pp、MDD>40% 归零,代价是中位数上 0.61pp/年
- 波动聚集不为它供能(极差 0.00025)
边界:
- 本文的基础策略是单资产 GBM + AR(1) + 波动聚集。真实策略的回撤结构可能有更强的持续性(尤其是趋势跟踪类),那会改变 φ 的有效取值
- 没有建模跳跃风险。在有跳空缺口的世界里,覆盖层的尾部保护会显著变差(因为它需要时间减仓),而常数杠杆不受影响——这个方向的偏差对覆盖层不利
- 没有建模保证金约束和强制平仓。真实场景下深度回撤可能触发外部去杠杆,此时覆盖层的「主动降仓」有额外价值
- 结论对「资金曲线是否可交易」敏感。如果产品有硬性回撤清盘线,那么尾部截断的价值远高于本文的 Sharpe 口径评估——因为清盘是不可逆的,而 Sharpe 假设你能一直活着
最后一条值得展开:如果你的产品在回撤 30% 时会被赎回清盘,那么「MDD>40% 的路径占比精确为 0」这一条本身就值那 0.61pp。这不是量化问题,是合同条款问题。 在没有清盘线的自有资金账户上,覆盖层大概率是负价值;在有硬性回撤条款的资管产品上,它可能是必需品。
同一套数学,两个相反的结论,区别只在于你能不能承受走完那条路径。