经典 60/40 组合的尴尬在于:股票资产波动率远高于债券,90% 以上的组合风险其实来自那 40% 的股票。所谓「配置」,钱是分了,风险没分。风险平价(Risk Parity)要解决的就是这件事——不让钱平分,而让风险平分。
把风险平价用到债券上,是一个被低估的好问题。债券宇宙内部的风险分布同样极其不均:一只 30 年期国债的久期是 2 年期国债的近 10 倍,波动也差出近一个数量级;高收益债的利差波动又远超投资级。结论先放这:等权买债,等于把大部分风险预算偷偷押给了长债和高收益;用久期(利率风险)和信用分层(利差风险)重构风险预算后,组合年化波动从 15.6% 降到 9.9%,最大回撤从 −48% 收敛到 −29%,且每只债券的风险贡献被拉平成 1/8。
为什么专门谈债券?因为债券内部的风险结构比股票更规整、也更容易被因子化:利率与信用两条主因子几乎能解释债券收益的绝大部分截面差异,而久期、利差久期是现成、可观测的「风险载荷」。相比之下股票因子(价值/成长/质量/动量)不仅难以直接观测、还彼此纠缠。这让债券成为实践风险平价最干净、最容易落地验证的试验田——你不必先训一个多因子模型,只要把久期和信用分层摆正,风险预算就会自动归位。
一、债券的风险从哪来:双因子拆解#
一只债券持有一个月的收益,风险主要来自两条因子:
- 利率因子:久期 衡量价格对利率的敏感度,利率波动 是共同冲击;
- 信用因子:利差久期 (信用敏感度)衡量对信用利差变化的敏感度,利差波动 是共同冲击。
把两因子假设独立,任意两只债券 的协方差为
单资产月波动就是 。国债的 (纯利率风险),信用债的 接近其久期(利差也久期化)。
我取一个 8 只债券的小宇宙:UST 2Y / 5Y / 10Y / 30Y 四档国债 + IG 投资级 / HY 高收益 / EM 主权债 / MBS 抵押债,参数按真实量级校准(/月,/月)。算出来的单资产月波动如下:
| 债券 | 久期 D | 利差久期 SD | 月波动 |
|---|---|---|---|
| UST 2Y | 1.9 | 0.0 | 1.14% |
| UST 5Y | 4.6 | 0.0 | 2.76% |
| UST 10Y | 8.8 | 0.0 | 5.28% |
| UST 30Y | 17.5 | 0.0 | 10.50% |
| IG 投资级 | 7.0 | 6.5 | 7.74% |
| HY 高收益 | 4.0 | 3.8 | 4.49% |
| EM 主权债 | 6.5 | 6.0 | 7.16% |
| MBS 抵押债 | 3.0 | 0.5 | 1.87% |

UST 30Y 的月波动是 UST 2Y 的 9.2 倍——如果等权持有,长债会悄悄吃掉组合大部分风险。
二、等权 vs 风险平价:风险贡献的 redistibution#
组合里第 个资产的风险贡献(Risk Contribution)定义为
它衡量「这只资产对组合总方差的贡献占比」,全部 加起来等于 1。风险平价的目标就是让 对所有资产相等——不是钱平分,是方差贡献平分。
我用一个不动点迭代求解等风险贡献权重(见第五节代码),并和等权、逆波动做对比:
| 组合 | 月波动 | 年化波动 |
|---|---|---|
| 等权 | 4.52% | 15.64% |
| 逆波动(1/σ) | 2.80% | 9.70% |
| 风险平价 | 2.86% | 9.90% |
等权的风险贡献严重失衡:UST 30Y 独占 25.7%,IG 18.7%,EM 17.3%,三只加起来超过 60%,而 UST 2Y 只贡献 2.8%。风险平价把这八只全部拉平成 12.5%(=1/8)。

注意一个细节:本例里逆波动(1/σ 加权)和风险平价几乎重合(年化 9.70% vs 9.90%)。原因是我们假设利率、信用两因子相互独立,此时逆波动已非常接近真正的风险平价;一旦两因子相关(如危机中利率与信用联动),逆波动会系统性偏离,必须用完整协方差做真风险平价——这是下一节现实陷阱的伏笔。
三、久期分层:风险预算相等 → 权重反比于久期#
风险平价的精髓可以在国债阶梯内部单独玩一遍。只取 UST 2Y/5Y/10Y/30Y 四档,做等风险贡献,得到的权重是:
| 债券 | 久期 | 风险平价权重 |
|---|---|---|
| UST 2Y | 1.9 | 57.6% |
| UST 5Y | 4.6 | 23.8% |
| UST 10Y | 8.8 | 12.4% |
| UST 30Y | 17.5 | 6.2% |

规律非常干净:权重近似与久期成反比(拟合 极好)。想让 2 年期和 30 年期对组合贡献同等风险,就得给 2 年期近 10 倍的仓位——因为 30 年期的波动是 2 年期的近 10 倍。这就是「风险预算」而非「资金预算」的直接体现。
把信用债也按同一逻辑分层(IG / HY / EM / MBS 各自分到相等的风险预算),就得到完整的债券风险平价:利率风险与信用风险被分别切块,再在块内按久期/利差久期二次分配。整条链路的钥匙只有一把——让每个风险源贡献相等的方差。
四、30 年模拟:更平的曲线、更浅的回撤#
用上面两因子模型生成 360 个月(30 年)收益路径,比较等权与风险平价的累计净值:
- 等权:终值 1.16×,最大回撤 −48.4%,年化 Sharpe 0.11;
- 风险平价:终值 1.47×,最大回撤 −28.7%,年化 Sharpe 0.18。

风险平价在波动和回撤上全面占优,且净值终值更高——因为它不再把组合命运绑在长债和高收益的单边暴露上。需要说明:债券风险平价组合年化波动(9.9%)显著低于股票型风险平价,通常不需要像股债风险平价那样大幅加杠杆去够目标波动;但若你想把它和股票组合拼接成全资产配置,这一层债券内部的风险平价,正是上层风险预算的可靠底座。也正因债券因子更易观测,它常被用作多资产风险平价的「压舱石」——先让债券这一块内部风险归位,再和股票、商品层做跨资产的风险平价,比直接对一篮子异质资产做风险平价更稳。
五、复现:风险平价求解与模拟#
核心求解器(等风险贡献不动点迭代)和 30 年模拟,numpy 即可跑:
import numpy as np
# 8 只债券: 久期 D, 利差久期 SD
names = ["UST2Y","UST5Y","UST10Y","UST30Y","IG","HY","EM","MBS"]
D = np.array([1.9, 4.6, 8.8, 17.5, 7.0, 4.0, 6.5, 3.0])
SD = np.array([0.0, 0.0, 0.0, 0.0, 6.5, 3.8, 6.0, 0.5])
sigR, sigC = 0.006, 0.010
# 双因子协方差
Sigma = np.outer(D, D) * sigR**2 + np.outer(SD, SD) * sigC**2
def risk_parity(S, max_iter=5000, tol=1e-10):
n = S.shape[0]
w = np.ones(n) / n
for _ in range(max_iter):
rc = w * (S @ w); rc /= rc.sum()
w = w * (1.0 / n) / rc
w /= w.sum()
if np.max(np.abs(rc - 1.0 / n)) < tol:
break
return w
w_rp = risk_parity(Sigma)
w_ew = np.ones(8) / 8
def rc(w):
c = w * (Sigma @ w); return c / c.sum()
print("等权风险贡献%:", np.round(rc(w_ew) * 100, 1))
print("风险平价风险贡献%:", np.round(rc(w_rp) * 100, 1))
print("组合月波动 等权=%.2f%% 风险平价=%.2f%%" %
(np.sqrt(w_ew @ Sigma @ w_ew) * 100,
np.sqrt(w_rp @ Sigma @ w_rp) * 100))
# 30 年月度模拟
rng = np.random.default_rng(20260712)
fR, fC = rng.standard_normal(360) * sigR, rng.standard_normal(360) * sigC
exp = np.array([0.0015,0.0020,0.0028,0.0040,0.0045,0.0065,0.0060,0.0035])
ret = np.outer(exp, np.ones(360)) + np.outer(D, fR) + np.outer(SD, fC)
eq = lambda w: np.cumprod(1 + ret.T @ w)
print("终值 等权=%.2f 风险平价=%.2f" % (eq(w_ew)[-1], eq(w_rp)[-1]))python跑出来等权风险贡献集中在长债(约 25.7%)与信用债,风险平价八只齐刷刷 12.5%,组合月波动 4.52% → 2.86%——和正文数字一致。
六、债券风险平价的真实陷阱#
模型漂亮,落地要小心至少五个坑:
- 久期只是一阶近似:它假设收益率曲线平行移动。现实中曲线会扭动(牛陡/熊平),凸性(convexity)在长端显著,单用久期会低估长债的真实风险,风险预算因此偏移。
- 危机中相关性反转:平时利率与信用弱相关,风险平价稳;但避险时「国债涨、信用利差爆」,两因子瞬间强负相关,分散效应消失,等风险贡献的前提被打破,组合回撤会比模型预言的深。
- σ_C 估计极不稳定:信用利差波动在平静期与危机期能差 5 倍以上,用长期平均 σ 做预算,会在危机前严重低估 HY/EM 的风险贡献。
- 杠杆隐形成本:若想用债券风险平价去匹配股票组合的目标波动,往往需要加杠杆,而杠杆有融资成本和Margin Call风险,模型里没有。
- 再平衡摩擦:风险平价要持续再平衡以维持等风险贡献,债券换手虽低,但调久期涉及交易成本与税收,长期会侵蚀优势。
结语#
风险平价进债券,本质是把「按钱分配」换成「按风险分配」:用久期切利率风险、用信用分层切利差风险,让每一档久期、每一层信用都贡献相等的方差。等权看似公平,实则把赌注压在长债和高收益上;风险平价把组合波动从 15.6% 砍到 9.9%、回撤从 −48% 收敛到 −29%,代价是要正视曲线非平行移动、危机相关性反转和 σ_C 估计失真这三道真实裂缝。理解了债券内部的风险预算,你才真正握住了多资产配置那块最稳的底座。
注:本文为教学用极简双因子模型,参数为演示校准,所有数字由脚本真实计算,不代表任何真实债券指数或某只标的的历史表现。实盘需以真实收益率曲线、信用利差与交易日历数据替换,并计入交易成本与税务;本文不构成任何投资建议。