halo 的技术博客

返回

「恐慌」能不能被定价?能。而且它就写在一个简单的差里:

VRP = σ_implied² − σ_realized²
plaintext

左边是期权市场隐含的「未来波动预期」(比如 VIX 背后的方差),右边是用过去实际收益算出来的「已实现波动」。两者之差,就是市场愿意为「波动保险」多付的钱——波动率风险溢价(Volatility Risk Premium, VRP)

它几乎永远为正:投资者天然厌恶波动,愿意花钱把波动风险转移给卖方(做市商、对冲基金),所以隐含波动系统性高于已实现波动。这个「溢价」不是噪声,而是可被择时的信号

结论先放这:VRP 与下月股票相对债券超额收益正相关——VRP 越高(恐慌越贵),未来股票越该涨。用 VRP 的 60 分位做开关:高于阈值配股票、低于阈值配债券。模拟里(240 个月)VRP 择时年化 9.0%、夏普 0.66、最大回撤 −33.2%;而买入持有股票年化 6.8%、回撤 −43.4%,60/40 年化 6.9%、回撤 −19.8%。择时没丢掉多少收益,却把股票那段最疼的回撤切掉了一大块。

波动率风险溢价:隐含波动系统性高于已实现波动

图上红色填充区就是 VRP>0 的部分——几乎覆盖整条时间轴。隐含波动(红)常年趴在已实现波动(蓝)上方,这就是「恐慌溢价」的可见形态;而危机窗口(灰色阴影)里两者同时飙升,溢价被拉到最宽。

一、VRP 为什么是正的,为什么能择时#

要理解 VRP 为什么能择时,先想清两件事:

1. 为什么 VRP > 0? 股票投资者怕跌,愿意付溢价买「保险」(买认沽、卖波动率)。卖方接下这个风险,要求补偿。所以隐含方差 = 预期真实方差 + 风险溢价。溢价越高,说明市场越怕。

2. 为什么 VRP 高 → 未来股票涨? 这是 Bollerslev-Tauchen-Zhou (2009) 的核心结论:VRP 高的时候,往往是市场刚经历/正在经历恐慌抛售,估值被杀到低位、风险补偿积累到高位。从「风险补偿」的角度,此刻持有股票的预期超额收益反而更高——你收的「保险溢价」变多了。所以 VRP 对下期股票超额收益是正预测。

二、VRP 与下月收益:择时的统计基础#

直接把「当月 VRP」对「下月股票−债券超额收益」做散点回归,看斜率正负:

def vrp_forward_regression(d):
    fwd_ex = d["e_ret"][1:] - d["b_ret"][1:]       # 下月权益−债券超额
    vrp_lag = d["VRP_volpts"][:-1]                  # 当月 VRP(波动率点)
    b1, b0 = np.polyfit(vrp_lag, fwd_ex, 1)
    corr = np.corrcoef(vrp_lag, fwd_ex)[0, 1]
    return b1, b0, corr
python

VRP 越高,下月权益相对债券越赚:择时的统计基础

模拟里 VRP 月度均值 3.50 个波动率点(且 100% 的月份为正——典型的「恐慌溢价常态为正」),VRP 对下月权益超额收益的 OLS 斜率为正、相关性 +0.15 左右。斜率是正的,就是择时能够盈利的根本前提:信号方向对,剩下的只是阈值工程。

注:相关 +0.15 看着不大,但择时不需要高相关,只需要「高 VRP 月平均比低 VRP 月好」这个单调性成立。0.15 的相关性在 240 个样本上已经足够把开关策略的夏普从买入持有的 0.38 拉到 0.66。

三、择时规则:一个分位阈值开关#

规则朴素到不好意思:

若 VRP_t > percentile(VRP, 60):   w_eq = 1.0, w_bond = 0.0
否则:                              w_eq = 0.0, w_bond = 1.0
plaintext

也就是「VRP 在高 40% 分位时满仓股票,其余时间满仓债券」。为什么用 60 分位而不是 50?因为股票长期有正 drift,阈值设低(更常配股票)能多赚一点 beta;设太高则太常空仓踏空。60 分位是个「股票配置月份占比约 40%」的折中——大部分时间让债券扛着,只在恐慌溢价高时出击。

跑出来(240 个月):

策略年化收益夏普最大回撤
买入持有股票6.8%0.38−43.4%
60/40 静态6.9%0.66−19.8%
VRP 择时9.0%0.66−33.2%

VRP 股债择时:守住回撤又不丢太多收益

VRP 择时(红)在绝大多数时间压在买入持有股票(蓝)上方,且在危机窗口的回撤明显更浅。它没跑赢 60/40 的回撤(−19.8%),但收益高了 2 个百分点还多——相当于用比 60/40 深的回撤,换来了比两者都高的收益和同样好的夏普。

四、回撤:择时切掉了最疼的一段#

把回撤叠在一起看更直观:

回撤对比:VRP 择时最大回撤 −33.2% vs 股票 −43.4%

VRP 择时在三次危机(图中三段深坑)里都提前把仓位从股票切到了债券,把股票的 −43.4% 回撤压到了 −33.2%——少跌了 10 个百分点。代价是债券那段平坦收益拉低了平时涨幅,但择时的逻辑本就不是「每时每刻都赢」,而是「在系统性风险释放时不在场」。

五、为什么是 VRP 而不是 VIX 本身#

很多人直接用 VIX 水平做择时(VIX>30 就跑)。VRP 比 VIX 好在两个地方:

1. VRP 是「相对值」不是「绝对值」。 VIX=20 在 2017 年算高,在 2020 年算低。VRP 把「隐含 vs 当前已实现」的差单独拎出来,自动做了 regime 归一化——它衡量的不是「波动绝对值」,而是「市场为保险多付了多少」,这才是定价信号。

2. VRP 直接对应「风险补偿」。 VIX 高可能只是波动大,不代表补偿高;VRP 高才是「你卖波动能收到的溢价高」。做多 VRP(卖波动率)赚的是这个差,择时股债配置用的也是这个差的相对高低。

六、六类真实陷阱(别拿模拟当实盘)#

陷阱 1:VRP 的实现依赖「隐含−已实现」口径一致。 用 VIX(30 天前向、方差互换口径)减 30 天滚动已实现方差,才对得上。拿 VIX 减日收益年化方差,口径错配会让 VRP 符号乱跳。本文用同一个 realized_var 构造两边,口径严格对齐。

陷阱 2:模拟里 VRP 与收益的正相关是我「埋」进去的。 真实数据里 BTZ 的结论成立,但样本外相关会衰减、在 2020 年 3 月那种「VRP 飙升但股票继续跌」的急跌里会短暂失效。实盘必须用滚动窗口重估阈值,不能写死 60 分位。

陷阱 3:满仓开关的换手成本没算。 本文 timing_ret 是无摩擦的。真实里 VRP 在阈值附近反复穿越会触发频繁切换,债券端也有买卖价差和税负。实务上要加「滞后带」(hysteresis):突破 60 进、跌破 40 才出,避免来回鞭打。

陷阱 4:债券不一定是安全垫。 本文债券与股票弱负相关、危机走强,是美债假设。若你配的是高收益债(与股票正相关),VRP 切到债券反而没避险。择时的「另一端」必须真负相关资产。

陷阱 5:VRP 择时会错过慢牛。 低波动慢涨期 VRP 偏低,策略会一直空仓股票、只拿债券票息,踏空整段牛市。它的定位是「危机保护」不是「收益增强」——别指望它长期跑赢满仓股票。

陷阱 6:波动率风险溢价的「崩盘 beta」。 做多 VRP(卖波动率)在 1987、2008、2015、2020 的几次单日跳空里回撤能到 −90% 以上。本文只把 VRP 当择时信号(开关股债),不直接做空波动率,已经规避了最致命的那种崩盘。但你要清楚:信号背后的因子本身有极端尾部。

七、小结#

VRP 择时的精髓,是用一个被定价的「恐慌差」给股债配置加了个开关:

  1. VRP = 隐含波动 − 已实现波动,是市场为波动保险付的溢价,常态为正;
  2. VRP 越高,下月股票相对债券越该赚——这是择时能够盈利的统计基础;
  3. 一个 60 分位开关,就能把买入持有股票的 −43.4% 回撤压到 −33.2%,同时把年化从 6.8% 提到 9.0%。

它不会让你在每个牛市都跑赢满仓,但在每一次系统性风险释放时,它能让你「不在场」。对大多数长期投资者来说,这比多赚那两个百分点更值钱——因为活下来,才有下一轮

波动率风险溢价择时:用 VRP 开关股债配置
https://blog.halo26812.eu.org/blog/vrp-timing-allocation
Author halo
Published at 2026年7月15日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨