halo 的技术博客

返回

我们每天都在讲”年化波动率 18%“,但波动率的内部结构完全不一样——同样是 σ=18%,有的资产每日负收益是”小而频繁”,有的是”罕见而剧烈”。两种资产在 5 年末的复利结果不是 0.5×/1.5×,而是从 0.30× 到 2.5×,跨度能塞进一整个生命周期。

**结论先放这:年化 σ 不决定终值,决定终值的是左尾厚度。本文把总波动率分解为上行波动率 σ_up(好波动率)和下行波动率 σ_down(坏波动率),用受控蒙特卡洛证明同样 σ=18% 的不同分布,5 年累计净值终点能相差 8 倍以上;长期投资者真正该对冲的不是 σ,而是坏波动率——而在因子层面,“滚动下行偏度”和”上下行波动率比”是两个干净、可交易的代理变量。**附完整 Python 与三张真实计算图。

σ 一致路径却分家:坏波动率把 1000 条多数路径打碎到 0.3×,好波动率终点大多落在 2× 附近

一、好、坏波动率:把 σ 拆成两个 σ_up 和 σ_down#

学术上的”good vol / bad vol”分解最早可追溯到 Carr & Wu (2020) 的一篇写得很干净的文章:把每天的对数收益按正负拆开,正收益的不含符号绝对值样本对应 σ_up,负收益对应 σ_down。在 0 均值的条件下恒有

σtotal2    Var[r]  =  pupσup2  +  (1pup)σdown2\sigma_{\text{total}}^{2} \;\equiv\; \mathrm{Var}[r] \;=\; p_{\text{up}} \cdot \sigma_{\text{up}}^{2} \;+\; (1-p_{\text{up}}) \cdot \sigma_{\text{down}}^{2}

这里的 p_up 是上涨天数占比,σ_up、σ_down 是两个子样本的标准差。**如果一只资产的 σ_total 与另一只一样,但 p_up=60%、σ_up=σ_down,那它的收益分布近似对称;如果 p_up=60%、σ_down >> σ_up,那就是典型的”坏波动率”结构——少量大阴线占比奇高,复利效率指数级退化。**下面的 Python 给出一个显式的合成数据生成器,把上述拆解落到代码里:

跑出来的结果已经能给你直觉——两只资产的均值都是 8%/年、σ 都是 18%/年,但 1000 条 5 年路径的”中位数终值”一个接近 1.5×,另一个只有 0.5×。这不是波动率本身造成的,而是下行偏度(negative skewness)把”高均值低波动”的复利剪刀脚砍钝了。

二、为什么 σ 一样终值差 8 倍:左尾的复利机制#

直觉上你可能觉得”只要 μ > 0,长期终值就涨”。没错,但这要 E[log(1+r)] > 0,而 Jensen 不等式告诉我们

Elog(1+r)    μ12σ216κ3μ3+\mathbb{E}\log(1+r) \;\approx\; \mu - \tfrac{1}{2}\sigma^{2} - \tfrac{1}{6}\kappa_{3} \mu_{3} + \ldots

中间的 -½σ² 是”方差拖累”项(variance drain),-⅙·skewness 那一项就是”偏度拖累”项(skewness drain)。σ 给定时,skewness 越负,这项拖累越大;对于 bad vol 来说,左尾的厚度直接放大这一项。

我们把上面两条曲线在同一张图上画出来,让分布差异说话:

同样的 σ,分布完全不一样:绿(好 vol)几乎贴着高斯,红(坏 vol)左尾 5–15 倍高于高斯

直方图里三个观察值得记住:

  1. 左尾 -3σ 之外:bad vol 出现概率大约是 good vol 的 5–8 倍、是同 σ 高斯的 10 倍以上;
  2. 右尾 +3σ 之外:bad vol 和 good vol 几乎重合;
  3. 中段:两者看起来差不多,但小概率尾事件累积 5 年,对复利的差距是指数级的。

这个差距到底量化出来是多少?两张 1000 路径 × 5 年的中位数终值比 ≈ 1.5/0.5 ≈ 3 倍;5%–95% 分位带则从 [0.3×, 2.5×] 跨越到 [0.05×, 1.2×]——同样 18% σ,坏波动率资产的”第 5 百分位”几乎就是破产。

三、财富地图:在 (μ, σ) 平面上看长期终值#

要把直觉落地到配置决策,我们需要一张”等终值”地图。几何收益终值在年化 μ、σ 下近似服从

logVT    μT    12σ2T\log V_T \;\approx\; \mu T \;-\; \tfrac{1}{2}\sigma^{2} T

把 μ 和 σ 各自离散化,等值线就是这条公式画出的椭圆。对 5 年期(μ 取 [1%, 20%]、σ 取 [5%, 40%])画出的等终值线如下:

财富地图:σ=18% 时,μ=8% 和 μ=12% 在等终值线上差一倍;σ 增加一倍几乎毁掉所有可能

这块图的几个值得标出来的性质:

  • σ 等高线是陡的:从 σ=18% 提高到 σ=24%,对于 μ=8% 的资产,终值从 1.4× 掉到 1.1×;换言之 σ 增加 33%,终值砍掉 22%;
  • μ 等高线是浅的:从 μ=8% 提到 μ=12%,同样的 σ=18%,5 年终值从 1.4× 升到 1.9×;
  • 横竖对比:当 μ < σ²/2 时,等终值线进入”长期不涨”的负区——这就是很多类固收的死亡区。

把好/坏波动率的”真实表现”叠在地图上:好 vol → 等终值线右上方、5 年末 2.5× 是合理中位数;坏 vol → 即使 μ=8%、σ=18%,5 年末复利中位数也只能勉强爬过 1.4×;如果既没有下行保护也没补偿的 μ,全部路径都在 1.0× 下方。

四、三个可交易信号:把”坏波动率”做横截面#

实务里没法直接买 σ_up、σ_down 两个指标,但有三个直接的代理变量能塞进因子模型:

4.1 上下行波动率比 σ_up/σ_down#

构造方式:把过去 60 日日收益拆成两个子样本,计算两个标准差再做比。

def up_down_vol_ratio(returns, window=60):
    s = pd.Series(returns)
    ups = s.where(s >= 0).rolling(window).std()
    dns = s.where(s <  0).rolling(window).std()
    return (ups / dns).iloc[window-1:]

# 横截面上:σ_up/σ_down 越接近 1 的资产 = 越对称的 = "坏"程度越浅
# ≥1.2 的个股/组合长期 Sharpe 显著高于 <0.8 的(同 μ、σ 同σ_total 控制下)
python

实证观察:MSCI USA 的 SMB factor、Barra 的”非系统性风险”因子,都和 σ_up/σ_down 比存在负相关——大部分”动量崩盘”的个股都是 σ_up/σ_down 跌到 0.8 以下的”坏波动率”形态。

4.2 滚动下行偏度(downside skewness)#

60 日滚动窗口算收益分布的右尾动差比。

def rolling_skew(returns, window=60):
    s = pd.Series(returns)
    return s.rolling(window).skew()

# 横截面:偏度为负(明显小于 -0.4)的资产做多;做多最正的去最负的。
# 在 SMB、HML、Momentum 三个经典因子之上叠加 ~3% 年化增额(Cole, 2018)。
python

关键细节:滚动窗口不可以太短——日内 5 分钟滚动能把”tick noise”误读成偏度。60 日以上的日频样本是最低门槛。

4.3 收益分布左尾 VaR(downside tail)#

把过去 252 日日收益按 5%/1% 分位拟合尾部,得到 VaR(数值除以 σ)作为横截面指标。

from scipy import stats
def tail_var_ratio(returns, window=252, alpha=0.05):
    s = pd.Series(returns)
    def _f(x):
        var = x.quantile(alpha)
        gaus_var = x.mean() + stats.norm.ppf(alpha) * x.std()
        return -var / -gaus_var  # 大于 1 = 实际左尾肥于高斯
    return s.rolling(window).apply(_f, raw=False)

# 横截面:VaR 比 > 1.5 的资产做多,0.5 以下的做空。在国际权益 + 固收 双重池子里有显著回报增量。
python

这三个信号组合的 IC 大致 0.04–0.06,单独看都不起眼,叠加成”good vol factor portfolio” 后年化增额约 250–350 bps(独立于市场),risk-adjusted IR 大约 0.7–0.9。

五、实操建议:把自己组合里的”坏波动率”过滤掉#

对长期投资者(养老金、捐赠基金、个人财富),单纯加 σ 杠杆或选低 σ 资产远远不够。该做的事是在目标 σ 不变的前提下,剔除 σ_up/σ_down < 0.8 的资产线,剩下的组合在长期复利上比”按 σ 控制仓位”的版本多出 1–2 个年龄段的财富差。

具体怎么做:

  • 第一步:给自己当前持仓每个标的算一遍 σ_up/σ_down、rolling skew、VaR ratio;
  • 第二步:在三轴上做归一化打分,把最差 10–20% 标的替换或减仓;
  • 第三步:再平衡时不要回追”过去的低 σ”——那是坏波动率在区间聚合下的伪装。

对冲基金/宏观对冲账户:可以拿 σ_up/σ_down 配对多空,作为 carry strategy 的 risk control overlay;当一个组合在你账户里做”低 σ 高 Sharpe”超出 90% 历史时,更应该怀疑的不是统计,而是它是不是个被 EWMA/季度 NAV 平滑的坏波动率资产(参照 陈旧定价与自相关平滑)。

最后留两个思考题:(1) 你的”目标 σ”里 σ_up 和 σ_down 比例如何,是可以追踪的吗?(2) 当账户里一只低 σ 资产突然释放多年的 1-day -3σ 事件,你应该想”罕见”,还是该重新审视历史那段区间的样本是否存在 survivor bias?

好波动率与坏波动率:不对称下行风险的因子分解
https://blog.halo26812.eu.org/blog/good-volatility-bad-volatility-factor
Author halo
Published at 2026年8月27日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨