主题切换
6.2 风险平价与分散度
概念详解
风险平价(Risk Parity)是一种不依赖预期收益的组合构建方法。它的核心思想是:让组合中每个资产(或每个风险来源)对总风险的贡献度相等,从而实现真正意义上的"风险分散化"。
传统等权重组合的问题在于:虽然资金分配均匀,但风险分配可能极度不均衡。一个60%股票/40%债券的组合,其90%以上的波动风险可能都来自股票部分——这根本不是真正的"分散化"。
风险平价解决了这个问题:组合中股票的风险预算被大幅削减(通过降杠杆或低配),债券的风险预算被大幅提升(通过加杠杆或超配),最终使两类资产的风险贡献相等。
名词解释:风险平价
组合中每个资产对总风险的贡献度相等,不依赖预期收益,较等权重更稳健。桥水全天候策略即基于此理念。风险平价的数学基础是边际风险贡献(MRC = Marginal Risk Contribution):
名词解释:边际风险贡献(MRC)
资产权重增加1单位时组合风险的变化量。
名词解释:桥水全天候策略
由桥水基金Ray Dalio创立的经典风险平价策略。将宏观经济环境按增长率超/低于预期、通胀超/低于预期划分为四种状态,每种状态配置不同资产(股票、债券、商品、通胀保护债券等),最终实现跨经济环境的稳健表现。
风险平价 vs 其他方法的比较
| 方法 | 需要预期收益 | 分散化效果 | 对输入的敏感度 | 杠杆需求 |
|---|---|---|---|---|
| 等权重(1/N) | 否 | 资本分散,风险不分散 | 低 | 无 |
| 最小方差 | 否 | 高 | 中 | 无 |
| MVO切线 | 是 | 中 | 极高 | 无(默认) |
| 风险平价 | 否 | 高(风险维度) | 中 | 通常需要 |
| 最大分散度 | 否 | 极高 | 中 | 无 |
数学原理
风险贡献分解
组合波动率
其中
风险平价的优化问题
风险平价可以通过求解以下最小化问题实现:
解析解(特殊情况)
在资产间相关性全部相等的假设下,风险平价的解析解为:
这个"波动率倒数加权"是最简单的风险平价近似。注意它忽略了相关性结构,只适用于相关性较低且均匀的情况。
Python实战
📌 案例:简单风险平价迭代
此处有展示代码展开 ▼
python
cov = returns.cov()
vols = np.sqrt(np.diag(cov))
weights = 1 / vols
weights /= weights.sum()点击展开可浏览运行结果
📘 本段为公式演示片段(伪代码占位符,无完整上下文)
📌 案例:完整风险平价优化
此处有展示代码展开 ▼
python
import numpy as np
from scipy.optimize import minimize
def risk_parity_weights(Sigma):
"""
风险平价:使每个资产的风险贡献相等
Parameters:
Sigma: 协方差矩阵 (N, N)
Returns:
weights: 风险平价权重
"""
n = Sigma.shape[0]
def risk_contributions(w):
"""计算各资产的风险贡献"""
port_vol = np.sqrt(w @ Sigma @ w)
marginal_contrib = Sigma @ w # 边际风险贡献
risk_contrib = w * marginal_contrib / port_vol # 风险贡献
return risk_contrib
def objective(w):
"""目标函数:最小化风险贡献的方差"""
rc = risk_contributions(w)
target_rc = 1.0 / n # 目标:每个资产贡献相等
return np.sum((rc - target_rc) ** 2)
# 约束
constraints = [{'type': 'eq', 'fun': lambda w: np.sum(w) - 1}] # 权重和为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
def risk_budgeting(Sigma, risk_budgets=None):
"""
风险预算(Risk Budgeting):广义的风险平价
允许不同资产有不同的目标风险贡献
Parameters:
Sigma: 协方差矩阵
risk_budgets: 各资产的目标风险预算(自动归一化),None时等风险贡献
"""
n = Sigma.shape[0]
if risk_budgets is None:
risk_budgets = np.ones(n) / n
else:
risk_budgets = np.array(risk_budgets)
risk_budgets = risk_budgets / risk_budgets.sum()
def objective(w):
port_vol = np.sqrt(w @ Sigma @ w)
rc = w * (Sigma @ w) / port_vol
return np.sum((rc - risk_budgets) ** 2)
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点击展开可浏览运行结果
📘 本段代码定义了 2 个函数/类:函数 `risk_parity_weights`(风险平价:使每个资产的风险贡献相等)、函数 `risk_budgeting`(风险预算(Risk Budgeting):广义的风险平价)。该片段为教学展示(未包含独立运行的输入数据),可在实战练习中结合真实数据调用。
📌 案例:风险贡献分析
此处有展示代码展开 ▼
python
def risk_contribution_report(weights, Sigma):
"""
生成风险贡献报告:展示每个资产的风险来源
Parameters:
weights: 组合权重
Sigma: 协方差矩阵
"""
port_vol = np.sqrt(weights @ Sigma @ weights)
mrc = Sigma @ weights # 边际风险贡献
rc = weights * mrc / port_vol # 风险贡献(百分比)
report = pd.DataFrame({
'权重': weights,
'波动率': np.sqrt(np.diag(Sigma)),
'边际风险贡献': mrc,
'风险贡献(%)': rc * 100,
})
# 按风险贡献排序
report = report.sort_values('风险贡献(%)', ascending=False)
report['累积风险贡献(%)'] = report['风险贡献(%)'].cumsum()
return report
# 示例:对比等权和风险平价的风险集中度
def concentration_analysis(weights, Sigma):
"""计算风险集中度指标"""
rc = risk_contribution_report(weights, Sigma)['风险贡献(%)'] / 100
# 赫芬达尔-赫希曼指数(HHI): 风险贡献越集中, HHI越高
hhi = np.sum(rc ** 2)
# 有效风险分散度: 1/HHI
effective_n = 1 / hhi if hhi > 0 else np.inf
print(f"风险集中度(HHI): {hhi:.4f}")
print(f"有效分散度: {effective_n:.1f} (相当于{effective_n:.0f}个等风险资产)")
return hhi, effective_n点击展开可浏览运行结果
📘 本段代码定义了 2 个函数/类:函数 `risk_contribution_report`(生成风险贡献报告:展示每个资产的风险来源)、函数 `concentration_analysis`(计算风险集中度指标)。该片段为教学展示(未包含独立运行的输入数据),可在实战练习中结合真实数据调用。
常见误区
把波动率倒数当作风险平价:
是风险平价的一个特例(假设所有资产间相关性为零)。当资产间存在显著相关性时,这种方法不能实现真正的等风险贡献。 忽略杠杆的必要性:风险平价组合的波动率通常远低于市场组合。要获得与市场相当的预期收益,风险平价通常需要加杠杆(如1.5-2倍)。无杠杆的风险平价通常夏普较高但收益较低。
在利率极低环境中的风险:风险平价超配债券(因为债券波动率低,在风险平价中权重高)。在利率急剧上升时,债券价格大幅下跌,风险平价组合可能遭受"股债双杀",这是2022年桥水全天候策略的重大挑战。
资产类别选择至关重要:风险平价把"风险"等同于波动率,但如果选择的资产类别不够丰富(如只有股和债),那么分散效果仍然有限。好的风险平价需要在商品、通胀保护证券、REITs等多种低相关资产中分配。
相关性结构的时变性:风险平价依赖协方差矩阵的估计。如果危机期间资产相关性急剧上升("相关性趋同"),风险平价的分散效果会大幅下降。
实战练习
选取股票、债券、黄金、商品4类资产(可以使用ETF的日收益率),分别计算等权组合和风险平价组合的:
- 总波动率和各资产的风险贡献分布
- 滚动24个月的风险贡献变化(观察风险贡献的稳定性)
对风险平价组合施加杠杆:将组合波动率缩放到与股票相当的15%,对比加杠杆后风险平价组合与纯股票组合的夏普比率和最大回撤。
风险预算实验:设定风险预算为[40%股票, 30%债券, 20%商品, 10%黄金],计算对应的风险预算组合权重,并与等风险贡献的结果对比。
延伸阅读
- Qian, E. (2005). "Risk Parity Portfolios: Efficient Portfolios Through True Diversification." PanAgora. 风险平价概念的早期重要论文。
- Maillard, S., Roncalli, T., & Teiletche, J. (2010). "The Properties of Equally Weighted Risk Contribution Portfolios." Journal of Portfolio Management.
- Roncalli, T. (2013). Introduction to Risk Parity and Budgeting. Chapman and Hall. 风险平价最全面的教科书。
- Asness, C. S., Frazzini, A., & Pedersen, L. H. (2012). "Leverage Aversion and Risk Parity." Financial Analysts Journal.
- Dalio, R. (2015). "All Weather Story." Bridgewater Associates.
本章要点
- 风险平价的核心是使各资产对总风险的风险贡献相等,实现真正的风险分散化,而非简单的资金分散。
- 风险贡献的数学分解:
,所有资产的RC之和等于组合总风险 。 - 风险平价不需要预期收益输入,因此避免了MVO最大的痛点——误差最大化问题。
- 波动率倒数加权(
)是最简单的风险平价近似,但忽略了资产间的相关性结构。 - 风险平价通常需要加杠杆以达到与市场可比的收益水平——这是"风险平价的代价"。
- 桥水全天候策略是风险平价理念最著名的实践案例,覆盖四种宏观经济状态和多种资产类别。