风险平价 (Risk Parity) 是一种资产配置方法,使每个资产对组合总风险的贡献相等。传统的 股债组合中,股票通常贡献 >80% 的风险。风险平价通过杠杆平衡实现等风险分配。
目标是:
import numpy as np
from scipy.optimize import minimize
def risk_parity_weights(cov_matrix, target_vol=0.05):
"""风险平价优化:最小化各资产风险贡献的差异"""
n = len(cov_matrix)
def objective(w):
w = np.abs(w) # 确保权重非负
w /= w.sum() # 归一化
port_vol = np.sqrt(w.T @ cov_matrix @ w)
# Marginal risk contribution
mrc = cov_matrix @ w
# Risk contribution
rc = w * mrc / port_vol
# 最小化 RC 的差异
target_rc = np.ones(n) / n * port_vol
return np.sum((rc - target_rc)**2)
result = minimize(objective, x0=np.ones(n)/n,
bounds=[(0, 1)]*n)
return result.x
def leverage_adjusted_target(cov_matrix, base_weights, target_vol):
"""杠杆调整:使用风险平价权重 + 杠杆达到目标波动率"""
w_rp = risk_parity_weights(cov_matrix)
rp_vol = np.sqrt(w_rp.T @ cov_matrix @ w_rp)
leverage = target_vol / rp_vol
return w_rp * leverage, leverage
| 版本 | 描述 |
|---|---|
| 经典 Risk Parity | 等风险贡献 + 杠杆目标 |
| Risk Budgeting | 自定义风险预算而非均等分配 |
| Black-Litterman + Risk Parity | 加入观点调整风险权重 |
| Risk Budgeting with CVaR | 用 CVaR 替代方差作为风险度量 |