halo 的技术博客

返回

核心结论:折扣率顺周期性的问题不在于「危机时提高折扣率」这个决定,而在于折扣率的倒数是杠杆——同样 1pp 的调整,在高杠杆处的强制抛售量是低杠杆处的 7 倍。这是一条恒等式,不是一个可以靠”审慎判断”绕开的经验规律。

每一家清算所、每一个回购交易台都在做同一件事:波动率涨了,提高抵押品折扣率。这个决定在单机构层面无可指摘——它就是 VaR 模型的正确输出。

问题在于,折扣率 hh 和杠杆 LL 的关系是

L=1h,dLdh=1h2L = \frac{1}{h}, \qquad \frac{dL}{dh} = -\frac{1}{h^2}

这是个二阶关系。而风控委员会讨论的单位永远是「上调 1 个百分点」。

左:同一条外生基本面路径下,顺周期规则自己砸出 2.99 pp(集合均值 3.19 pp);右:折扣率从 5.88% 涨到 11.60%,杠杆 7.74x → 3.72x,强制抛售在冲击窗口内集中释放

一、「+1pp」不是一个可比的单位#

先看纯恒等式,不涉及任何模拟。折扣率从 hh 上调到 h+1pph+1\text{pp},机构被迫卖出的资产占比是

强制抛售比例=Δhh+Δh\text{强制抛售比例} = \frac{\Delta h}{h + \Delta h}

h_grid = np.array([0.02, 0.03, 0.05, 0.08, 0.10, 0.15, 0.20, 0.30])
for h in h_grid:
    h2 = h + 0.01
    forced = (h2 - h) / h2          # 强制抛售占总资产比例
    print(f"h={h*100:.1f}% → {h2*100:.1f}%  杠杆 {1/h:.2f}x → {1/h2:.2f}x  "
          f"被迫卖出 {forced*100:.2f}%")
python
折扣率杠杆变化被迫卖出总资产的
2% → 3%50.00x → 33.33x33.33%
3% → 4%33.33x → 25.00x25.00%
5% → 6%20.00x → 16.67x16.67%
10% → 11%10.00x → 9.09x9.09%
20% → 21%5.00x → 4.76x4.76%
30% → 31%3.33x → 3.23x3.23%

同样的「+1pp」,在 h=2% 处逼出 33.33% 的抛售,在 h=20% 处只逼出 4.76%——相差 7.00 倍

解析核对:比值应精确等于 (h2+Δh)/(h1+Δh)=0.21/0.03=7.0000(h_2+\Delta h)/(h_1+\Delta h) = 0.21/0.03 = 7.0000,实测 7.000000,误差 7.11e-15

这条恒等式的实践含义是:同一份风控文件里写的「压力情景下折扣率上调 1-2 个百分点」,对不同杠杆的交易对手是完全不同的政策。 而文件通常只写一个数字。

二、受控模拟:规则自己砸出多少#

模拟设定 100 家杠杆异质的基金,持有同一类资产。基本面路径外生给定,与折扣率规则完全无关——这是全部归因的基准线。

真值由构造给定:平静期日波动 0.80%、压力期额外波动 1.30%(合成 1.53%)、基本面累计冲击 −10%、平静期目标杠杆 8x、VaR 乘数 2.32610=7.35622.326\sqrt{10} = 7.3562

def run_system(r_fund, procyclical=True, ...):
    for t in range(n):
        sig_hat = np.std(hist[-vol_win:])
        if procyclical:
            h_t = np.clip(K_VAR * sig_hat, h_floor, H_CAP)   # 点时 VaR
        else:
            h_t = h_ttc                                       # 穿越周期恒定
        A_cap = util_i * E / h_t                              # 约束上限

        sell = np.maximum(A - A_cap, 0.0)                     # 只被迫减仓
        r_t = max(r_fund[t] - lam * sell.sum() * crowd / MKT_DEPTH, R_FLOOR)

        A = np.minimum(A, A_cap)      # 先减仓
        E = E + A * r_t               # 再承受损益
        A = A * (1 + r_t)
python

所有情景跑同一批 200 条基本面路径并取集合均值(paired)。单条路径的结论是运气不是证据——这句话在第八节会有量化版本。

口径危机最低点内生放大
基本面路径(外生给定)−14.98%
穿越周期折扣率−16.86%−1.879 pp
顺周期折扣率−18.17%−3.194 pp

顺周期规则的放大倍数是 1.213x,比穿越周期多跌 1.315 pp,内生部分是后者的 1.70 倍

配套读数:折扣率峰值 11.60%(穿越周期 7.33%),平均杠杆从 7.74x 掉到 3.72x(去杠杆 51.9%),累计强制抛售 78.4% 市场(穿越周期 46.7%,1.68x)。

注意这里一个容易被忽略的事实:穿越周期规则也砸出了 1.879 pp。 它不是无害的。原因在下一节。

三、两条通道:为什么关掉折扣率只省下一半#

去杠杆螺旋有两条独立的通道:

  1. 权益通道:亏损 → 净值缩水 → 即使 hh 一动不动,按同样杠杆倍数也必须减仓
  2. 折扣率通道:波动率上升 → hh 上调 → 即使一分钱没亏也必须减仓

用冻结实验分离:

情景内生放大占总内生
仅折扣率通道(冻结权益)−1.848 pp57.9%
仅权益通道(h 恒定)−1.879 pp58.8%
两者相加−3.727 pp116.7%
实际总内生−3.194 pp100%

两条通道单独跑各值约 1.85 pp,相加 3.727 pp,超过实际的 3.194 pp——交互项是 +0.533 pp(次可加)。

原因很实在:两条通道卖的是同一批头寸。 关掉其中一条,另一条会把大部分抛压补回来。所以折扣率通道的边际贡献只有 1.315 pp,而它「自己」看起来值 1.848 pp——单独测量会高估 1.41 倍

这是一个对政策评估有直接影响的结论:改折扣率规则能拿到的收益,比”折扣率通道占 58%“这个数字暗示的要小。 权益通道是杠杆本身的属性,改不掉。

四、三条安慰剂:螺旋的三个必要因子#

左:+1pp 在 h=2% 处比 h=20% 处狠 7.0 倍;中:两条通道分离 + 三条安慰剂精确归零;右:折扣率下限抬高则螺旋消失,代价是平时少用杠杆

情景内生放大偏差
基准(全效应)−3.194248 pp
安慰剂B 价格冲击 = 0+0.000000 pp0.000e+00
安慰剂C 无杠杆(A=E)−0.000000 pp2.13e-16
安慰剂D 持仓零重叠+0.000000 pp0.000e+00

三条全部精确归零。结论可以写成一个乘积:

螺旋=杠杆×拥挤×价格冲击\text{螺旋} = \text{杠杆} \times \text{拥挤} \times \text{价格冲击}

任一因子为零,螺旋在数值上完全不存在。

值得停一下的是这三个因子在数学上完全对称,但在公共讨论里的待遇天差地别:杠杆被反复讨论,价格冲击偶尔被提及,拥挤度几乎不出现在任何一份标准风险报告里

而拥挤度给出的剂量反应是全文最干净的一条:

持仓重叠度内生放大
0%+0.000 pp
20%−0.614 pp
40%−1.240 pp
60%−1.879 pp
80%−2.530 pp
100%−3.194 pp

斜率 −0.0319 pp/百分点重叠,R²=0.9998,截距 0.0209。近乎完美的线性。

这里有个讽刺:监管统一折扣率规则的初衷是公平和可比,而统一规则本身就在制造拥挤。 所有人用同一个 VaR 模型、同一个窗口、同一个置信水平,就会在同一天收到同一个减仓信号。

五、折扣率下限:最便宜的旋钮,但不免费#

折扣率下限平静期杠杆内生放大累计抛售
2%7.74x−3.194 pp78.4% 市场
4%7.73x−3.190 pp78.2%
6%7.02x−2.689 pp66.1%
8%5.51x−1.730 pp42.7%
10%4.46x−1.113 pp27.7%
14%3.24x−0.544 pp13.6%
20%2.30x−0.244 pp6.1%

下限从 2% 抬到 8%:内生放大减少 45.8%,抛售量从 78.4% 砍到 42.7% 市场。

但这不是免费的午餐——代价是平静期杠杆从 7.74x 降到 5.51x。这是一笔真实的、每天都在支付的成本,而它换来的收益只在危机中兑现。这就是为什么下限总是被设得太低:成本天天可见,收益十年一次。

注意 2% 和 4% 几乎没有区别(−3.194 vs −3.190)。因为在这条路径上,点时 VaR 算出的折扣率本来就在 5.88% 附近,下限低于它时根本不绑定。下限只有在真正咬住的时候才有用——这听起来像废话,但它意味着「我们设了下限」这句话本身不包含任何信息。

六、波动率窗口:风控以为在提高精度#

估计窗口折扣率峰值内生放大累计抛售
5 日15.32%−4.379 pp107.2%
10 日13.02%−3.466 pp85.3%
20 日11.60%−3.194 pp78.4%
40 日9.85%−2.989 pp73.5%
60 日8.88%−2.945 pp72.5%
125 日7.38%−2.867 pp70.6%
250 日6.67%−2.816 pp69.5%

窗口从 250 日缩到 5 日,内生放大从 2.816 涨到 4.379 pp——1.55 倍

缩短窗口在模型验证的语境里叫「提高对当前市场状态的敏感度」,是加分项。而它在系统层面的效果是提高顺周期性。这两件事是同一个操作的两个名字。

七、非单调:冲击越大,相对放大反而越小#

基本面冲击基本面最低实际最低内生放大放大倍数
−3%−9.87%−12.75%−2.875 pp1.291x
−5%−11.22%−14.24%−3.023 pp1.270x
−8%−13.44%−16.59%−3.148 pp1.234x
−10%−14.98%−18.17%−3.194 pp1.213x
−14%−18.08%−21.32%−3.239 pp1.179x
−20%−22.74%−25.96%−3.214 pp1.141x

这是全文最反直觉的一条:冲击越大,放大倍数反而越小。

原因是内生项本身几乎是常数(2.9~3.2 pp,因为杠杆和折扣率的调整幅度有天花板),而分母在变大。

实践含义很不舒服:用大危机的历史数据去校准顺周期性的严重程度,会系统性低估它在中等冲击下的相对影响。 而中等冲击的发生频率比大危机高一个数量级。

八、分布:97.5% 更惨,但你只活在一条路径上#

左:200 条路径下三条曲线的分布,顺周期最低点从 −0.73% 到 −39.88%;中:窗口越短折扣率越灵敏也越顺周期;右:12 宇宙 CV=0.0272

口径均值5/95 分位
基本面−14.98%[−25.96%, −3.35%]
穿越周期−16.86%
顺周期−18.17%[−28.74%, −5.87%]
  • 放大倍数:均值 1.283x,中位 1.207x,95 分位 1.686x,最大 2.644x
  • 放大 >1.5x 的路径占 10.5%,>2x 占 2.0%
  • 顺周期比穿越周期更惨的路径占 97.5%

97.5% 这个数字很重要:方向上几乎没有争议。 顺周期规则在绝大多数路径上都更糟。

但幅度上争议巨大——同一个消息、同一批基金、同一套规则,最低点从 −0.73% 到 −39.88%

所以事后复盘里那句「市场反应过度了」,说的可能只是这条极差里的位置,而不是任何关于机制的判断。

九、样本量红线:为什么这场争论吵了快 20 年#

单次危机中「顺周期 − 穿越周期」的最低点差是 −1.315 ± 0.821 pp

要确认的差异需要独立危机数
0.5 pp10.8 次
1.0 pp2.7 次
实际差异 1.32 pp1.6 次

系统性危机大约 10 年一次,所以确认 1.32 pp 需要约 16 年

这个数字比大多数人预期的要——这是本文少有的好消息。但它有个前提:你得能观测到「同一场危机在穿越周期规则下会怎样」,而这是反事实,现实中不存在。

现实中能观测到的只有实际路径,而实际路径的离散度(5/95 分位跨度 22.9 pp)比规则差异(1.3 pp)大一个数量级。这就是为什么顺周期性的争论从 2008 年吵到现在还没有结论:不是样本量不够,是识别问题无解。

12 宇宙稳健性:内生放大均值 −3.144 pp,SD 0.0855,CV=0.0272

十、实践清单#

如果你在管理一个受折扣率约束的杠杆组合:

  1. 不要用「折扣率上调 X pp」做压力测试,用「强制抛售占资产 Y%」。前者不可比,后者才是你真正要面对的东西
  2. 算一下你的拥挤度,不是你的杠杆。杠杆是你自己的数字,拥挤度是你和别人共有的数字,而后者在数学上同样重要
  3. 穿越周期折扣率不能救你,它只减少 41%(1.879 vs 3.194 pp)。权益通道改不掉
  4. 警惕缩短波动率窗口的提议。它在模型验证里是加分项,在系统层面是加分项的反面
  5. 中等冲击下的相对放大比大危机更严重(1.291x vs 1.141x)。用 2008 校准的顺周期性会低估日常风险

而如果你是在设计规则的那一边:折扣率下限是唯一在这个模型里同时降低内生放大和抛售量的旋钮,代价明确、可计算、每天支付。至于这笔保费值不值——那不是模型能回答的问题。

折扣率顺周期性:风控参数如何在危机中自我强化
https://blog.halo26812.eu.org/blog/collateral-haircut-procyclicality
Author halo
Published at 2026年8月7日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨