halo 的技术博客

返回

核心结论:回撤控制覆盖层的公平比较对象不是原策略,而是「降到同样平均敞口的常数杠杆」。 因为覆盖层做的第一件事就是降杠杆,而降杠杆不需要任何择时能力。一旦换上这个对照组,它的 Sharpe 增量从「看起来在做风控」变成 −0.1042,其中真正来自回撤持续性的正贡献只有 +0.0059

4000 条路径 × 10 年的受控模拟(μ=8%、σ=16% 由构造给定)给出的账本:原策略 Sharpe 0.500668,加上覆盖层后 0.396463。而降到同样平均敞口 0.7124x 的常数杠杆,Sharpe 是 0.500668 —— 与原策略精确相同到小数点后六位。

这不是巧合,是引擎自洽性验证:常数杠杆不改变 Sharpe(分子分母同比例缩放)。所以覆盖层丢掉的那 0.1042,全部是它「动态调整」这个动作本身造成的。

左:常数敞口 Sharpe 精确等于原策略,覆盖层的缺口几乎全是 Jensen 敞口离散税;右:覆盖层只在尾部赢,中位数输给常数杠杆,最差 1% 反超 18.49pp

但这篇文章真正想说的不是「覆盖层没用」。而是:它有用的地方和你以为的地方不是同一个

一、先说清楚这层东西是什么#

回撤控制覆盖层(drawdown control overlay)的逻辑简单到一句话就能说完:

盯着净值曲线,从历史最高点回撤超过阈值就减仓,回撤扩大就继续减,净值恢复就加回来。

在 FOF、管理期货、银行理财的产品说明书里,它通常被写成「动态风险预算」或「回撤熔断机制」。实现上有两种:线性减仓(回撤 10% 开始减、30% 减到零,中间线性插值)和硬止损(超过阈值直接清仓)。

本文的基准设定:

参数说明
基础策略 μ8%/年真值,由构造给定
基础策略 σ16%/年真值,由构造给定
触发阈值回撤 10%开始减仓
归零阈值回撤 30%敞口降到 0
日收益 AR(1)φ = 0.04回撤持续性的来源
波动聚集k = 0.06EWMA 反馈
换手成本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。这笔钱和市场环境无关、和策略质量无关,是纯数学。

同样的平均敞口,摆动越剧烈损失越大。这就是为什么「频繁调仓的风控」比「一次性降杠杆」天然吃亏——即使前者的择时判断完全中性。

三、决定性对照:敞口移植#

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. 零漂移μ=0CAGR −0.2464% vs 常数 −0.2275%无收益可保护,只剩损耗
D. 时间置换打散时序、保留分布−0.049901销毁持续性
E. 敞口移植w⊥r+0.005423Jensen 式精确成立

安慰剂 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.3965
plaintext

唯一为正的那一项,被前三项吃掉了 21 倍。

左:敞口移植时残差精确归零(Jensen 式成立),一旦把敞口绑回自身回撤就出现路径联动成本;右:剂量反应单调,但择时项要涨到付得起 Jensen 税需要不现实的动量强度

五、那它到底赢在哪:尾部#

如果到这里就下结论「覆盖层是负价值」,那是只看了 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」的常数杠杆当然更赚。这不是覆盖层的功劳,是对照组在这一档上被拖累了。

左:逐路径分裂,42.1% 被改善、57.9% 被损害;右:赔付集中在最深回撤那一档,其余档位在付保费

七、剂量反应:需要多强的动量才划算#

覆盖层的正价值只来自回撤持续性。那么持续性要多强才够?

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.1870(插值)−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:

k0.000.100.180.280.40
择时项−0.05270−0.05275−0.05280−0.05295−0.05292

极差 0.00025 —— 是 φ 扫描极差(0.10275)的 1/416。这是一条真正的直线。

原因不复杂:回撤触发器读的是价格水平,不是波动率。波动聚集改变的是波动的时序分布,但回撤能否触发取决于累计价格路径。要利用波动聚集,需要的是波动率目标策略(vol targeting),那是另一套机制。

这是一个诚实的负面结果:我原本预期这里会有信号。

左:同一 y 尺度下波动聚集扫描是一条直线,与 phi 扫描相差 416 倍;右:信号口径不是实现细节,用自身净值时 w=0 是吸收态

九、信号口径:一个会导致吸收态的实现选择#

「用哪条净值曲线算回撤」听起来是实现细节,实际上会改变策略的定性行为。

方案CAGR中位 MDD平均敞口换手
线性 / 自身净值5.06%−26.41%0.71242.61x
线性 / 原策略净值5.27%−27.88%0.75063.33x
硬止损 / 原策略净值2.87%−24.24%0.42081.53x
硬止损 / 自身净值0.43%−10.48%0.06180.10x

最后一行是个陷阱:用自身净值做信号 + 硬止损,一旦敞口归零,净值就冻结了,回撤永远不会恢复,w=0 成为吸收态。平均敞口 0.0618、换手 0.10x——绝大多数路径清仓一次就再也没回来过。

这不是理论风险。用客户看到的净值(叠加后)做回撤信号,是产品设计里最自然的选择,因为合同里的回撤条款就是按客户净值写的。但它和硬止损组合会产生单向门。

线性减仓能容忍这个口径(敞口永远不精确到 0,还有恢复通道),硬止损不能。

十、延迟与成本#

执行延迟1 日3 日10 日21 日
Sharpe0.39650.38010.37930.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 税和路径联动,不是手续费。

左:每一个阈值上常数杠杆都在同风险下更赚;中:成本扫描全区间无盈亏平衡点;右:延迟下 Sharpe 掉得快,回撤保护几乎不动

十一、减仓状态下的机会成本#

统计敞口轨迹:

  • 处于减仓状态的时间占比 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% 时间里,标的照样在以接近正常的速度上涨。

十二、对抗式审查:怀疑过并排除的点#

  1. 「常数杠杆 Sharpe 等于原策略是不是巧合?」 不是。三处独立计算(基准对照、同中位回撤匹配、同尾部回撤匹配)的 Sharpe 全部精确等于 0.500668,因为杠杆缩放不改变 Sharpe。这是引擎自洽性验证。

  2. 「−0.044 残差会不会是实现 bug?」 敞口移植对照排除了这一点:w⊥r 时残差 +0.005423,Jensen 式精确成立。

  3. 「AR(1) 扫描的斜率会不会被无条件方差变化污染?」 已做 √(1−φ²) 校正,九档扫描下原策略 Sharpe 恒定在 0.502。

  4. 「回撤改善会不会只是因为平均敞口降了?」 这正是常数杠杆对照组要回答的。同平均敞口下中位回撤 −24.46%(常数)vs −26.41%(覆盖层),覆盖层反而更差;改善只出现在尾部。

  5. 「12 宇宙会不会不稳定?」 择时项均值 −0.04497、SD 0.00237、CV = 0.0528,结论稳健。

  6. 「零漂移世界里回撤改善 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。这不是量化问题,是合同条款问题。 在没有清盘线的自有资金账户上,覆盖层大概率是负价值;在有硬性回撤条款的资管产品上,它可能是必需品。

同一套数学,两个相反的结论,区别只在于你能不能承受走完那条路径。

回撤控制覆盖层:在原策略之上加一层自动减仓
https://blog.halo26812.eu.org/blog/drawdown-control-overlay
Author halo
Published at 2026年8月7日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨