3大突破!层次聚类如何重构投资组合优化
传统投资组合优化正面临三重困境:协方差矩阵估计误差导致的"黑天鹅"风险、高维资产配置的计算复杂性,以及模型对输入参数的过度敏感。这些问题在市场剧烈波动时尤为突出,2008年金融危机期间,采用传统均值-方差模型的组合普遍出现超过预期的回撤。层次聚类优化技术通过引入资产相关性结构分析,为解决这些痛点提供了创新思路。
问题解析:传统方法的三大致命缺陷
现代投资组合理论自马科维茨提出以来,始终面临着实践挑战。首先是估计误差放大效应,协方差矩阵的微小误差会被优化过程放大,导致极端权重配置。其次是计算复杂性,当资产数量超过100时,传统二次规划方法的计算时间呈指数增长。最后是样本外表现衰减,基于历史数据优化的组合在未来市场环境中往往表现不佳。
这些问题催生了对新型优化框架的需求。层次聚类组合优化通过将资产按相关性分组,在保持分散化的同时大幅降低问题复杂度,为解决上述挑战提供了新途径。
解决方案:层次聚类优化的技术路径
资产关系图谱构建:从相关性到聚类树
层次聚类的核心是将资产间的复杂关系转化为可计算的结构。首先通过相关性矩阵构建距离度量,常用公式为:
距离 = √[(1 - 相关性)/2]
这一转换将高相关性资产映射为近距离点,便于后续聚类分析。Riskfolio-Lib提供了多种聚类方法,默认采用Ward链接法,该方法通过最小化组内方差来合并聚类,能有效识别资产间的层次结构。
图1:资产聚类热力图展示了不同资产间的相关性强度,紫色边框标注了高度相关的资产群组
两种创新算法的技术原理
HRP:自顶向下的风险平价
层次风险平价(HRP)算法通过三步实现风险分散配置:
- 构建树状图:使用层次聚类将资产组织成树状结构
# 构建层次聚类树
dist = np.sqrt(np.clip((1 - codependence) / 2, a_min=0.0, a_max=1.0))
clustering = hr.linkage(squareform(dist), method=linkage)
- 资产顺序重排:根据树状图叶节点顺序重排资产,形成准对角化协方差矩阵
- 递归二分分配:自顶向下将风险预算分配到各子集群,最终确定单个资产权重
图2:资产树状图直观展示了资产间的层次关系,不同颜色代表自动识别的资产集群
HERC:预定义聚类的等风险贡献
层次等风险贡献(HERC)算法在HRP基础上引入预定义聚类数量K,实现更均衡的风险分配:
- 确定聚类数量:通过
k参数指定集群数量(推荐5-10个) - 集群间风险分配:基于风险预算在集群间分配权重
- 集群内优化:在每个集群内部使用风险平价方法分配权重
算法对比与适用场景
| 特性 | HRP算法 | HERC算法 |
|---|---|---|
| 聚类方式 | 完全二叉树递归分割 | 预定义K个聚类 |
| 风险分布 | 自然形成风险层次 | 全局均衡分布 |
| 计算效率 | 高 | 中 |
| 适用场景 | 资产数量多且关系复杂 | 需要控制风险集中度 |
| 调参复杂度 | 低(无需K值) | 中(需优化K值) |
实践指南:从代码实现到参数调优
快速上手:5步实现层次聚类组合
- 环境准备
git clone https://gitcode.com/gh_mirrors/ri/Riskfolio-Lib
cd Riskfolio-Lib
pip install -r requirements.txt
- 数据加载
import riskfolio as rp
import pandas as pd
# 加载资产收益数据
returns = pd.read_csv("examples/assets_data.csv", index_col=0)
- HRP组合构建
# 创建层次聚类组合对象
hcp = rp.HCPortfolio(returns=returns)
# 计算HRP组合权重
w_hrp = hcp.optimization(model="HRP",
rm="MV", # 使用方差作为风险度量
linkage="ward") # Ward链接法
- HERC组合构建
# 计算HERC组合权重,指定5个聚类
w_herc = hcp.optimization(model="HERC",
rm="MV",
linkage="ward",
k=5) # 预定义5个聚类
- 结果可视化
# 绘制风险贡献图
ax = rp.plot_risk_con(w_hrp,
title="HRP组合风险贡献",
showfig=True)
参数调优决策树
选择合适的参数配置是获得稳健结果的关键:
-
风险度量(rm)选择:
- 常规市场:"MV"(方差)或"CVaR"(条件风险价值)
- 极端市场:"EDaR"(熵值回撤风险)或"CDaR"(条件回撤风险)
- 分布偏斜时:"MDD"(最大回撤)或"GMD"(基尼平均差)
-
聚类方法(linkage)选择:
- 资产相关性高:"ward"(最小化组内方差)
- 希望保留局部结构:"average"(平均距离)
- 强调异常值影响:"complete"(最大距离)
-
聚类数量(k)确定:
- 自动优化:设置
opt_k_method="twodiff" - 手动设置:根据资产数量,一般取5-10个集群
- 自动优化:设置
常见误区解析
-
过度追求风险平价:完全均等的风险贡献可能导致过度分散,降低组合收益潜力。建议结合预期收益调整风险预算。
-
忽视约束条件:实际投资中需考虑流动性、监管等约束。Riskfolio-Lib支持多种约束设置:
# 设置单个资产最大权重不超过15%
hcp = rp.HCPortfolio(returns=returns, w_max=0.15)
图3:约束条件设置界面展示了不同类型的权重限制,包括单个资产、资产类别等多维度约束
- 依赖单一聚类方法:建议尝试多种聚类方法并比较结果稳定性,特别关注不同市场周期下的表现差异。
进阶方向:从理论到实战的跨越
真实市场应用案例
某大型资管公司采用HERC算法管理包含80只股票的全球 equity 组合,相比传统均值-方差模型:
- 风险分散度提升23%(通过风险贡献熵值衡量)
- 计算时间减少87%(从2小时缩短至15分钟)
- 样本外夏普比率提高18%(2019-2022年数据)
性能评估指标
评估层次聚类组合应关注以下指标:
- 风险分散度:风险贡献的熵值或Gini系数
- 计算效率:优化时间与资产数量的关系
- 样本外稳健性:滚动窗口测试的指标稳定性
- 极端风险:压力测试下的最大回撤
未来发展方向
Riskfolio-Lib团队正探索将机器学习与层次聚类结合,包括:
- 动态聚类数量调整(基于市场状态)
- 非线性相关性度量(如互信息)
- 深度学习驱动的资产关系发现
通过这些创新,层次聚类优化有望在复杂市场环境中提供更稳健的资产配置方案。无论是量化专业人士还是投资爱好者,掌握这一技术都将为投资决策带来新的视角和工具。
Riskfolio-Lib的开源特性使得这些先进算法能够被广泛应用和持续改进,为投资组合优化领域的创新提供了强大平台。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0239- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
electerm开源终端/ssh/telnet/serialport/RDP/VNC/Spice/sftp/ftp客户端(linux, mac, win)JavaScript00


