一、风险预算入门:从定义到实战

大家好,我是老张。今天咱们聊聊风险预算。

说实话,我第一次接触这个概念时,也觉得挺玄乎的。什么预算不预算的,不就是分配权重吗?后来在实盘里栽了跟头,才明白——权重分配和风险分配,完全是两码事

1.1 风险预算到底是个啥?

先给个最直白的定义:风险预算,就是把总风险切成几块,每块分给不同的资产

举个例子。你手里有100万,股票和债券各一半。等权重配置下,股票和债券各占50%的资金。但风险呢?股票一天能跌5%,债券一天才跌0.5%。你想想看,这50%的股票可能贡献了90%的风险。说白了,你嘴上说「各占一半」,实际上风险全压在股票上。

风险预算要解决的就是这个问题——让每个资产承担的风险比例,由你说了算

核心公式(简化版):

资产i的风险贡献 = 资产i的权重 × 资产i的边际风险

风险预算的目标:让每个资产的风险贡献 = 预设的风险预算比例

我在项目中遇到过一位基金经理,他坚持「债券安全,多配点」。结果2022年债券暴跌,组合回撤比股票还大。为什么?因为他只看了权重,没看风险预算。债券的久期风险一旦释放,杀伤力一点不比股票小。

1.2 为什么我们需要风险预算?

这个问题我问过很多学员。最常见的回答是:「为了分散风险。」

对,但不全对。

分散风险只是结果。风险预算的真正价值在于——让你知道你的组合到底在赌什么

我习惯把组合想象成一辆车。权重是座位安排,风险预算是每个轮子的承重。你让一个轮子承担80%的重量,那这个轮子一爆,整车就翻。风险预算就是帮你把重量均匀分布到四个轮子上。

具体来说,风险预算有三大好处:

  • 透明度高:你能清楚看到每个资产的风险贡献,而不是模糊的「感觉」
  • 稳定性好:极端行情下,风险预算组合的波动往往更可控
  • 可解释性强:跟老板汇报时,你能说「我让股票承担30%的风险,债券承担70%」,而不是「我觉得这样配比较好」

我的小技巧:刚开始做风险预算时,别搞太复杂。先盯住2-3个核心资产,把它们的风险贡献算清楚。等跑顺了,再慢慢加资产。

1.3 风险预算 vs 等权重:天壤之别

很多人觉得风险预算就是等权重的变种。嗯,这里要注意——两者底层逻辑完全不同

咱们直接上数据说话。假设两个资产:

资产 年化波动率 相关系数
股票 20% 0.3
债券 5%

等权重组合:各50%资金

  • 股票风险贡献 ≈ 88%
  • 债券风险贡献 ≈ 12%

风险预算组合(目标:各50%风险):

  • 股票权重 ≈ 21%
  • 债券权重 ≈ 79%

看到了吗?等权重下,股票几乎包揽了全部风险。而风险预算组合,虽然债券占了近80%的资金,但两者的风险贡献是相等的。

避坑指南:我曾经犯过一个错误——直接用波动率的倒数来算权重。结果忽略了相关性,算出来的风险预算完全不对。记住:风险预算必须考虑资产间的相关性,否则就是自欺欺人。

你想想看,如果两个资产高度正相关,那即使你给它们各分50%的风险预算,实际上还是在赌同一个方向。风险预算的核心是分散风险来源,而不是分散资金。

1.4 一张图看懂风险预算

下面这张SVG图,把风险预算的核心逻辑画出来了。我建议你多看几遍,理解了这个图,后面章节就顺了。

风险预算核心逻辑图 资产权重 w₁, w₂, ..., wₙ 风险预算目标 b₁, b₂, ..., bₙ 风险贡献计算 RCᵢ = wᵢ × (Σwⱼσᵢⱼ) / σₚ 比较 RCᵢ 与 bᵢ 是否相等? 最优权重 w* 迭代调整权重

这张图展示了风险预算的完整流程:

  1. 输入:资产权重和风险预算目标
  2. 计算:算出每个资产的实际风险贡献
  3. 比较:看实际风险贡献是否等于目标
  4. 迭代:如果不相等,调整权重,重新计算

说白了,这就是一个不断「试错-调整」的过程。我刚开始手动算的时候,迭代个十几轮是常事。后来写了个Python脚本,几秒钟就搞定了。后面章节我会把代码分享出来。

1.5 一个简单的Python示例

光说不练假把式。咱们用Python跑一个最简单的风险预算模型。就两个资产:沪深300和国债。

import numpy as np

# 假设数据
cov_matrix = np.array([[0.04, 0.003],   # 股票方差20%^2=0.04
                       [0.003, 0.0025]]) # 债券方差5%^2=0.0025

# 风险预算目标:各50%
b = np.array([0.5, 0.5])

# 初始权重:等权重
w = np.array([0.5, 0.5])

# 迭代优化(简化版)
for i in range(100):
    # 组合方差
    port_var = w @ cov_matrix @ w
    port_vol = np.sqrt(port_var)
    
    # 边际风险贡献
    mrc = cov_matrix @ w / port_vol
    
    # 风险贡献
    rc = w * mrc / port_vol
    
    # 调整权重
    w = w * (b / rc)
    w = w / np.sum(w)  # 归一化

print("最优权重:", w)
print("风险贡献:", rc)

跑出来的结果大概是:股票权重21%,债券权重79%。跟前面表格算的一致。

个人习惯:我一般会把这个函数封装起来,输入协方差矩阵和风险预算目标,直接输出最优权重。后面章节会讲更高效的优化算法,但初学者先用这个迭代法,理解原理最重要。

1.6 小结

风险预算入门,说白了就三句话:

  • 风险预算 ≠ 资金分配:别被权重骗了,要看风险贡献
  • 相关性很重要:忽略相关性,风险预算就是空中楼阁
  • 迭代是常态:别指望一次算出最优解,慢慢调

我记得刚入行时,带我的老前辈说过一句话:「做组合优化,先学会算风险,再谈收益。」风险预算就是帮你算清楚风险的第一个工具。下一章咱们会深入讲风险贡献的数学推导,把今天这个迭代法的原理彻底讲透。


公众号:蓝海资料掘金营,微信deep3321