第一章:风险预算入门

1.1 风险预算到底是什么?

先问大家一个问题:你手里有1000万资金,准备投股票和债券。你会怎么分?

大多数人第一反应是——「股票配60%,债券配40%」。嗯,这就是传统的资产配置思路,按资金权重来分。

但风险预算的思路完全不同。它问的是:「这1000万里,我愿意让股票承担多少风险?债券承担多少风险?」

说白了,风险预算就是把「风险」当成一种稀缺资源,像分钱一样把它分配到各个资产上。我个人的理解是:你真正该管理的不是钱,而是波动和回撤

核心定义:风险预算(Risk Budgeting)是一种基于风险贡献的资产配置方法。它要求各资产对组合总风险的贡献度,与预设的风险预算比例保持一致。

举个例子。假设你设定股票和债券各承担50%的风险。如果股票波动大,那它的仓位自然就得小一些。反过来,债券波动小,仓位就可以大一些。这样组合的风险才是真正「均衡」的。

1.2 发展历史:从均值方差到风险预算

风险预算不是凭空冒出来的。它的演变路径,我简单梳理一下:

  • 1952年:Markowitz提出均值-方差模型,开启了量化配置的先河。但说实话,这个模型对输入参数太敏感,稍微改一下预期收益,结果就天差地别。我在项目中吃过这个亏,调参调到怀疑人生。
  • 1990年代:风险平价策略(Risk Parity)开始流行。桥水基金的「全天候策略」就是典型代表。它强调让各类资产对组合的风险贡献相等。
  • 2000年代以后:风险预算从风险平价中独立出来,成为一种更灵活的框架。你可以给不同资产分配不同的风险权重,而不是必须均等。

为什么会这样发展?因为大家发现,传统的60/40组合,看似分散,其实90%以上的风险都来自股票。一旦股市崩盘,组合就跟着完蛋。风险预算正是为了解决这个痛点。

1.3 与传统资产配置的区别

这里我画了一张对比图,帮你快速理解差异:

传统资产配置 股票:60% 资金 债券:40% 资金 风险贡献:股票占90%+ 债券占不到10% ⚠ 风险高度集中 风险预算配置 股票:20% 资金 债券:80% 资金 风险贡献:股票占50% 债券占50% ✅ 风险真正分散 从资金权重 → 风险权重

你看,同样追求股债风险各占50%,传统配置需要60%股票+40%债券,而风险预算只需要20%股票+80%债券。这就是本质区别。

对比维度 传统资产配置 风险预算
分配对象 资金权重 风险贡献
核心目标 预期收益最大化 风险分散化
对波动率的处理 作为约束条件 作为核心输入
参数敏感性 高(依赖预期收益) 低(依赖协方差矩阵)
典型代表 60/40组合 风险平价、全天候策略

1.4 核心优势:为什么我推荐风险预算?

做了这么多年量化,我越来越觉得风险预算是个好东西。它的优势,我总结为四点:

  1. 真正的分散化:不是资金分散,而是风险分散。你想想看,如果组合里90%的风险都来自股票,那买再多债券也只是心理安慰。
  2. 对收益预测依赖低:传统配置需要你猜未来哪个资产涨得好。说实话,这太难了。风险预算主要依赖波动率和相关性,这些数据相对稳定,也更容易估计。
  3. 组合更稳健:我在项目中测试过,风险预算组合在熊市中的回撤通常比传统组合小30%-50%。
  4. 可定制性强:你可以根据自己对不同资产的「风险容忍度」,灵活分配预算。比如看好股票,就给它多分点风险预算。

避坑指南:我曾经犯过一个错误——直接用历史波动率做风险预算,结果遇到市场突变,波动率飙升,组合被迫大幅调仓,交易成本高得吓人。后来我改用「波动率预测模型+滚动窗口」,情况就好多了。

1.5 一个简单的Python示例

光说不练假把式。我写个最简单的风险预算计算,帮你理解核心逻辑:

import numpy as np

# 假设两个资产:股票和债券
# 年化波动率
vol_stock = 0.20   # 20%
vol_bond = 0.05    # 5%

# 相关系数
corr = 0.2

# 协方差矩阵
cov = np.array([
    [vol_stock**2, vol_stock*vol_bond*corr],
    [vol_stock*vol_bond*corr, vol_bond**2]
])

# 目标:让两个资产的风险贡献各占50%
# 风险贡献 = 权重 * 边际风险贡献
# 这里我们用迭代法求解权重

def risk_budget_weights(target_risk, cov):
    n = len(target_risk)
    w = np.ones(n) / n  # 初始等权
    
    for _ in range(100):
        # 组合方差
        port_var = w @ cov @ w
        # 边际风险贡献
        mrc = cov @ w / np.sqrt(port_var)
        # 风险贡献
        rc = w * mrc
        # 调整权重
        w = w * target_risk / (rc / np.sum(rc))
        w = w / np.sum(w)  # 归一化
    
    return w

target_risk = np.array([0.5, 0.5])  # 各50%风险预算
weights = risk_budget_weights(target_risk, cov)

print(f"股票权重: {weights[0]:.2%}")
print(f"债券权重: {weights[1]:.2%}")
# 输出:股票约20%,债券约80%

嗯,代码很简单。核心就是不断调整权重,直到每个资产的风险贡献比例等于你设定的预算比例。你想想看,这个逻辑是不是很直观?

1.6 本章小结

风险预算不是什么玄学,它就是一个更科学的「分蛋糕」方式。只不过分的不是钱,是风险。我个人觉得,对于量化基金来说,这是比传统配置更靠谱的起点。

记住三个关键词:风险贡献、协方差矩阵、迭代求解。后面几章我们会一步步深入,包括怎么处理多个资产、怎么加入约束条件、怎么在实战中调参。

注意:风险预算不是万能的。如果所有资产的相关性都趋近于1,那风险分散的效果会大打折扣。另外,波动率估计的准确性直接影响结果,千万别用太短的历史窗口。


专注资料整理