风险平价:权重分散不等于风险分散
60/40 里股票占权重 60%,却贡献了 89% 的风险;而 2022 年股债同跌,风险平价一样受伤
前面八节都在问"买什么、什么时候买"。这一节换一个问题:每个东西该占多少?
经典的 60/40——六成股票、四成债券——听起来很分散。先算它的风险是怎么分的:
权重% 风险贡献%
美股 60.0 89.0
长期美债 40.0 11.0
权重 60%,风险 89%。
你以为自己配了"六四开",实际上你配的是"九一开"。
权重分散 ≠ 风险分散——这就是风险平价要解决的那个问题。
而这一节的另一半是它的软肋:2022 年股债同跌,风险平价重仓的债券不但没对冲,反而是重灾区。
四个人合伙开公司,出资各占 25%。
但其中一个人负责的业务波动极大,公司利润的起伏九成来自他。
股权是四等分的,风险不是。
风险平价做的事,是按"谁能造成多大波动"来重新分配份额,而不是按谁出了多少钱。
零、口径先说清
跨资产类别的长历史在国内公开源上拿不到,所以本节用美股 ETF 作代理:
| 代理 | 资产 | 年化% | 年化波动% | 夏普 | 最大回撤% |
|---|---|---|---|---|---|
| SPY | 美股 | 10.77 | 19.61 | 0.620 | -55.2 |
| TLT | 长期美债 | 2.79 | 15.05 | 0.258 | -48.4 |
| GLD | 黄金 | 9.57 | 18.11 | 0.595 | -45.6 |
| DBC | 商品 | 2.17 | 19.30 | 0.208 | -76.4 |
(2007-01-03 ~ 2026-07-29,4923 个交易日)
三条边界,现在就说,不放到最后:
- 这是美元资产,不含汇率对冲——人民币投资者的实际体验会不同
- 本课不加杠杆。原版风险平价会对低波动资产加杠杆以提高收益,那会同时放大利率风险与融资成本风险,且散户不可及
- 样本内部换过一次天(第五节详述)
零点五、一个现场发现的复现性事故
写这一节的时候,我发现同一份代码、同一条数据请求,两次跑出来的结果不一样:
ERC 期末倍数:3.38 / 3.63 / 3.78 / 3.95(四次独立运行)
排查结果:问题不在代码,在数据源。
同一条 yfinance 请求,不同进程之间返回的形状、索引、最后一天价格完全一致,而历史值的哈希不同。这类漂移不会报错,只会让你的结论每次都不一样。
这正是 p1.1「能取到 ≠ 取对了」和 p1.5「落盘 + 血缘」要解决的问题。
修法只有一个:拉一次,落盘,之后所有计算都从落盘文件读,不再联网。
def load():
"""只从落盘文件读 —— 不联网。"""
t = pd.read_parquet(CACHE)
print(f"数据来源:{CACHE}(数值哈希 {t['value_hash'].iloc[0]},拉取于 {t['fetched_at'].iloc[0]})")
return t.pivot(index="date", columns="symbol", values="close")[TICKERS].dropna()
落盘之后再验一次:两次运行的输出逐字节相同。
本节所有数字都出自
_shared/etf_multiasset.parquet,数值哈希222e5ad4c379,拉取于 2026-07-31 21:25。一个联网重取的脚本不可复现;只有落盘之后的脚本才可复现。这句话在 P1 讲过,在这里被自己撞了一次。
顺带说明:后来连续 5 次拉取又变得完全一致——漂移是间歇性的,这比稳定的错误更难发现。
一、60/40 的风险是怎么分的
| 方案 | 美股 | 长期美债 | 黄金 | 商品 |
|---|---|---|---|---|
| 60/40 权重 | 60.0% | 40.0% | 0 | 0 |
| 60/40 风险贡献 | 89.0% | 11.0% | 0 | 0 |
| 四资产等权 权重 | 25% | 25% | 25% | 25% |
| 四资产等权 风险贡献 | 27.9% | 6.7% | 30.9% | 34.4% |
即使四个资产等权,风险贡献也从 6.7% 到 34.4%,差 5 倍。
因为风险贡献取决于波动率和相关性,不取决于你投了多少钱。
🔧 动手做:看看"分散"的 60/40 到底散不散(5 分钟)
跑 python risk_parity.py,看【一】60/40 的风险是怎么分的。
你会看到(实测):60% 股 40% 债听着很分散,但风险贡献几乎全在股票那边(风险贡献极差:按逆波动率算 19.6pp);那 40% 的债几乎不贡献风险,也就几乎不提供保护。ERC(等风险贡献)才把极差压到 0.0pp。
想明白:权重分散 ≠ 风险分散。股票波动是债券的好几倍,60/40 的命运基本还是股票的命运。真要分散风险,得按"每个资产贡献同样的风险"配(ERC),而不是按钱平分。
二、两种风险平价实现
| 资产 | 逆波动率 权重% | 风险贡献% | ERC 权重% | 风险贡献% |
|---|---|---|---|---|
| 美股 | 22.7 | 23.7 | 23.5 | 25.0 |
| 长期美债 | 29.6 | 12.8 | 37.1 | 25.0 |
| 黄金 | 24.6 | 32.4 | 19.5 | 25.0 |
| 商品 | 23.1 | 31.0 | 19.9 | 25.0 |
风险贡献的极差:逆波动率 19.6 pp,ERC 0.0 pp。
- 逆波动率是"忽略相关性"的近似:权重正比于 1/σ。简单,但风险贡献仍然不平
- ERC(等风险贡献) 把相关性也算进去,风险贡献才真正拉平
ERC 不需要优化器,一段乘性迭代就够:
def erc_weights(cov, iters=500):
n = len(cov)
w = np.full(n, 1.0 / n)
for _ in range(iters):
mrc = cov @ w # 边际风险贡献
w_new = 1.0 / np.maximum(mrc, 1e-12)
w_new /= w_new.sum()
if np.max(np.abs(w_new - w)) < 1e-10:
return w_new
w = 0.5 * w + 0.5 * w_new # 阻尼,避免震荡
return w
回测里的协方差只用过去 252 个交易日估计,月度调仓——和前面所有节一样,引擎结构上拿不到未来数据。
三、长期表现(月度调仓,单边成本 10bp,不加杠杆)
| 方案 | 年化% | 年化波动% | 夏普 | 最大回撤% |
|---|---|---|---|---|
| 60/40 | 7.82 | 11.04 | 0.738 | -30.1 |
| 四资产等权 | 6.17 | 9.90 | 0.654 | -27.7 |
| 逆波动率 | 6.29 | 9.25 | 0.706 | -21.5 |
| ERC 风险平价 | 7.20 | 8.84 | 0.830 | -19.5 |
| (参照)纯美股 | 10.77 | 19.61 | 0.620 | -55.2 |
ERC 的年化比纯美股低 3.6 个百分点,但最大回撤只有它的三分之一多一点(-19.5% vs -55.2%),夏普 0.830 vs 0.620。
"夏普更高"不等于"更适合你"。
纯美股 19.5 年年化 10.77%,ERC 是 7.20%。同样投 100 万:
- 纯美股 → 736 万
- ERC → 389 万
差了 347 万。这是为"回撤从 -55% 降到 -19.5%"付的价格。
值不值,取决于两件事,而且都不在数据里: ① 你会不会在 -55% 的时候卖掉(卖掉就拿不到那 736 万) ② 这笔钱有没有可能在低点被迫动用
这正是 p5.10 要正面处理的问题:从可承受回撤反推仓位,而不是从收益率反推。
四、软肋:2022 年
分年看(单位 %):
| 年份 | 60/40 | 四资产等权 | 逆波动率 | ERC | 纯美股 |
|---|---|---|---|---|---|
| 2008 | -13.13 | -10.85 | -2.88 | +6.47 | -36.24 |
| 2013 | +10.90 | -6.63 | -4.99 | +1.18 | +29.00 |
| 2018 | -3.02 | -4.80 | -3.71 | -2.98 | -5.25 |
| 2020 | +18.61 | +13.32 | +12.87 | +10.30 | +17.24 |
| 2022 | -22.56 | -7.28 | -9.10 | -10.10 | -18.65 |
| 2023 | +15.92 | +8.59 | +8.74 | +8.21 | +26.71 |
2008 年是风险平价的高光:纯美股 -36.24%,ERC +6.47%。
2022 年是它的软肋:利率快速上行,股和债同时下跌。ERC 虽然比 60/40 少亏一半(-10.10% vs -22.56%),但它也亏了——重仓的低波动资产不但没有对冲,反而是重灾区。
五、样本内部换过一次天
这是本节最重要的一条边界:
长期美债 2007~2020:年化 +7.43%,最大回撤 -26.6%,同期股债相关 -0.440
长期美债 2021~2026:年化 -8.02%,最大回撤 -44.0%,同期股债相关 +0.076
股债相关由负转正,正是 2022 年"分散化失效"的机制。
风险平价的全部逻辑建立在"不同资产在不同环境下此消彼长"之上。当相关性从 -0.44 变成 +0.08,这个前提就动摇了。
所以那句常见的宣传——"风险平价穿越牛熊"——在这份数据里只对前 14 年成立。
而 14 年,恰恰长到足以让人相信它是规律。
六、这一节该带走什么
风险平价解决的是"风险分配",不是"收益预测"。
它让你知道自己承担的是什么风险,而不保证这些风险会得到补偿。
| 它能做 | 它不能做 |
|---|---|
| 把风险贡献拉平(ERC 极差 0.0 pp) | 预测哪个资产会涨 |
| 显著降低回撤(-19.5% vs -55.2%) | 在所有资产同跌时保护你(2022) |
| 让你看清 60/40 其实是 89/11 | 保证相关性结构不变 |
📌 免责:本课为技术教学,所用 ETF 仅作资产类别代理,不推荐任何标的或资产配置方案;为美元资产、不含汇率对冲、不加杠杆,历史模拟不构成投资建议。
四件事:
- 权重分散 ≠ 风险分散。60/40 里股票权重 60%、风险贡献 89.0%;即使四资产等权,风险贡献也从 6.7% 到 34.4%,差 5 倍
- 两种实现的差别在相关性。逆波动率忽略相关性,风险贡献极差仍有 19.6 pp;ERC 把协方差算进去,极差 0.0 pp,而且一段乘性迭代就能解,不需要优化器
- 长期表现:ERC 夏普 0.830、最大回撤 -19.5%,而纯美股是 0.620 和 -55.2%;代价是年化低 3.6 个百分点——19.5 年下来 100 万变 389 万 vs 736 万。值不值取决于你会不会在 -55% 时卖掉,而那不在数据里
- 软肋在 2022:股债同跌,ERC -10.10%(比 60/40 的 -22.56% 好,但仍是亏)。根因在第五节:长期美债 2007
2020 年化 +7.43%、股债相关 -0.440;20212026 年化 -8.02%、相关 +0.076
一句话:风险平价解决的是"风险分配",不是"收益预测"。它让你知道自己承担的是什么风险,而不保证这些风险会得到补偿。
下一节是 P5 的收尾,也是把前面所有节接上你自己的那一节:从"我能承受多少回撤"反推"我该放多少仓位"。这是整章唯一一个答案不来自数据、而来自你自己的参数。
🔎 来源与核验· 7 条,点开核对
