3、风险平价策略概述:什么是风险平价?为什么它比传统资产配置更优?核心思想与数学定义

3.1 从一道选择题说起

假设你面前有两类资产:

  • 股票:年化波动率 20%,预期收益 10%
  • 债券:年化波动率 5%,预期收益 4%

传统做法是什么?60% 股票 + 40% 债券。对吧?

但你想想看,这个组合里,风险到底是谁贡献的?

我算给你看:

  • 股票仓位 60%,波动率 20% → 风险贡献 ≈ 60% × 20% = 12%
  • 债券仓位 40%,波动率 5% → 风险贡献 ≈ 40% × 5% = 2%

结果呢?股票承担了 85% 以上的风险。债券就是个摆设。

一旦股市暴跌,你的组合照样崩。这就是传统配置的致命伤——名义上分散了资金,实际上没分散风险

核心洞察: 风险平价策略要解决的根本问题,不是「怎么分配钱」,而是「怎么分配风险」。

3.2 什么是风险平价?

风险平价(Risk Parity),说白了就是:让组合里每个资产承担的风险一样多

还是刚才的例子。如果我们要让股票和债券的风险贡献相等:

  • 设股票权重为 w,债券权重为 1-w
  • 股票风险贡献:w × 20%
  • 债券风险贡献:(1-w) × 5%
  • 令两者相等:w × 20% = (1-w) × 5%
  • 解得:w = 20%,1-w = 80%

结果变成了 20% 股票 + 80% 债券

嗯,这里要注意:这个组合的预期收益会低一些,但它的风险更均衡。不会出现「一荣俱荣、一损俱损」的局面。

我个人习惯: 在做风险平价之前,先画一张「风险贡献饼图」。如果某一块占了大半个饼,那这个组合就不合格。

3.3 为什么它比传统配置更优?

我遇到过不少投资者,一开始觉得风险平价「太保守」。直到 2008 年、2020 年这些极端行情出现,他们才明白:活下来比赚得多更重要

传统配置的三大问题:

  1. 风险集中:股票占了大头,债券只是点缀
  2. 回撤深:一旦股市崩盘,组合跟着崩
  3. 依赖预测:需要猜哪个资产未来涨得好

风险平价的三大优势:

  1. 风险分散:每个资产的风险贡献差不多
  2. 回撤可控:单一资产暴跌,组合不会崩
  3. 不依赖预测:不需要猜涨跌,只管理风险

我曾经踩过的坑: 以为风险平价就是「等权重配置」。错!等权重是资金等分,风险平价是风险等分。两者天差地别。

3.4 核心思想:风险预算

风险平价的核心思想,可以概括为四个字:风险预算

就像做家庭预算一样——你不能把所有钱都花在吃饭上,得给房租、交通、娱乐都留一份。风险预算也是这个道理:

  • 给每个资产分配一个「风险额度」
  • 让所有资产的风险额度相等
  • 然后反推出每个资产该配多少钱

你想想看,这和传统配置的思路完全相反:

  • 传统配置:先定资金比例,再算风险
  • 风险平价:先定风险比例,再算资金

顺序一变,结果天差地别。

3.5 数学定义

好,我们来点硬核的。数学上怎么定义风险平价?

假设组合有 n 个资产,权重向量为 w = (w₁, w₂, ..., wₙ),协方差矩阵为 Σ。

组合的方差:

σ²_p = wᵀ Σ w

第 i 个资产的边际风险贡献(MRC):

MRC_i = ∂σ_p / ∂w_i = (Σ w)_i / σ_p

第 i 个资产的总风险贡献(RC):

RC_i = w_i × MRC_i = w_i × (Σ w)_i / σ_p

风险平价的条件:

RC_1 = RC_2 = ... = RC_n

也就是说:

w_i × (Σ w)_i = w_j × (Σ w)_j  对所有 i, j 成立

注意: 这个方程组通常没有解析解,需要用数值方法求解。我一般用牛顿法或者 SQP 算法来解。

3.6 一个简单的 Python 实现

下面是我常用的风险平价权重求解代码。嗯,代码不长,但很实用:

import numpy as np
from scipy.optimize import minimize

def risk_parity_weights(cov_matrix):
    """
    计算风险平价权重
    cov_matrix: 协方差矩阵 (n x n)
    返回: 权重向量
    """
    n = cov_matrix.shape[0]
    
    def risk_contribution(w):
        sigma_p = np.sqrt(w @ cov_matrix @ w)
        mrc = cov_matrix @ w / sigma_p
        rc = w * mrc
        return rc
    
    def objective(w):
        rc = risk_contribution(w)
        target = np.mean(rc)
        return np.sum((rc - target) ** 2)
    
    # 约束:权重和为1,且非负
    constraints = [
        {'type': 'eq', 'fun': lambda w: np.sum(w) - 1}
    ]
    bounds = [(0, 1) for _ in range(n)]
    
    # 初始值:等权重
    w0 = np.ones(n) / n
    
    result = minimize(objective, w0, 
                      method='SLSQP',
                      bounds=bounds,
                      constraints=constraints)
    
    return result.x

# 示例:股票和债券
cov = np.array([[0.04, 0.002],   # 股票方差 20%^2
                [0.002, 0.0025]]) # 债券方差 5%^2
weights = risk_parity_weights(cov)
print(f"股票权重: {weights[0]:.2%}")
print(f"债券权重: {weights[1]:.2%}")

运行结果:

股票权重: 19.87%
债券权重: 80.13%

和前面手算的 20%/80% 基本一致。

避坑指南: 我曾经直接用等权重作为初始值,结果在某些协方差矩阵下不收敛。后来我改用「波动率倒数加权」作为初始值,收敛速度快多了。

3.7 一张图看懂风险平价

下面这张图,我画了风险平价策略的核心逻辑。你可以看到它和传统配置的对比:

风险平价 vs 传统配置:核心逻辑对比 传统资产配置 步骤: 1. 先定资金比例(如 60/40) 2. 再算组合风险 3. 发现风险集中在股票 风险分布(示例) ■ 股票风险贡献:85% ■ 债券风险贡献:15% 问题:名义分散,风险集中 回撤大,依赖预测 风险平价策略 步骤: 1. 先定风险预算(各资产相等) 2. 反推资金比例 3. 得到 20/80 的配置 风险分布(示例) ■ 股票风险贡献:50% ■ 债券风险贡献:50% 优势:风险真正分散 回撤可控,不依赖预测 核心区别:传统配置管「钱」,风险平价管「风险」

3.8 小结

这一章我们聊了:

  • 什么是风险平价:让每个资产的风险贡献相等
  • 为什么更优:真正分散风险,回撤可控,不依赖预测
  • 核心思想:风险预算——先定风险,再定资金
  • 数学定义:RC_i 相等,用数值方法求解

下一章,我会带你深入风险预算的细节,看看怎么给不同资产分配「风险额度」。到时候我会分享一个我在实盘中用过的多资产风险预算框架,挺有意思的。