首页
/ Riskfolio-Lib中的层次聚类距离矩阵选择分析

Riskfolio-Lib中的层次聚类距离矩阵选择分析

2025-06-24 07:02:44作者:瞿蔚英Wynne

层次聚类在投资组合优化中的应用

Riskfolio-Lib是一个功能强大的Python投资组合优化库,其中实现了基于层次聚类的投资组合构建方法。层次聚类方法在金融领域有着广泛应用,特别是在构建风险平价(Hierarchical Risk Parity, HRP)和层次等风险贡献(Hierarchical Equal Risk Contribution, HERC)投资组合时。

距离矩阵选择的两种方式

在实现层次聚类时,Riskfolio-Lib采用了与传统文献略有不同的距离矩阵处理方法。传统方法(如Lopez de Prado提出的HRP方法)使用"距离的距离"矩阵进行聚类,即先计算资产间的距离矩阵,再计算该距离矩阵行/列之间的欧氏距离作为最终聚类依据。

而Riskfolio-Lib选择了直接使用原始距离矩阵进行聚类。这种选择基于以下技术考量:

  1. 计算效率:直接使用距离矩阵避免了二次距离计算,减少了计算复杂度
  2. 行业实践:与pyportfoliopt和portfoliolab等其他主流金融库保持一致
  3. 结果相似性:在实际应用中,两种方法通常会产生相似的聚类结果

技术实现细节

Riskfolio-Lib中的层次聚类实现使用了SciPy的linkage函数,直接传入半向量化格式的距离矩阵:

p_dist = squareform(dist, checks=False)
clustering = hr.linkage(p_dist, method=linkage, optimal_ordering=leaf_order)

这与传统方法形成对比,传统方法会先对距离矩阵的行/列计算欧氏距离:

d_hat = squareform(pdist(d, metric='euclidean'))
Z = linkage(d, method='single', metric='euclidean')

实际应用影响

虽然两种方法在数学表达上有所不同,但在实际投资组合构建中,它们通常会产生相似的资产聚类结果。Riskfolio-Lib的选择使得:

  1. 代码实现更加简洁直观
  2. 计算过程更加高效
  3. 与其他金融库的兼容性更好

对于大多数应用场景,用户无需担心这种实现差异对最终投资组合性能的影响。两种方法都能有效地捕捉资产间的相关性结构,为后续的风险贡献分配提供合理的资产分组基础。

结论

Riskfolio-Lib在层次聚类步骤中选择直接使用距离矩阵而非距离的距离矩阵,这一设计决策基于实际工程考量,平衡了理论严谨性与实现效率。这种选择使得库更加实用且易于与其他工具集成,同时保持了良好的聚类效果。理解这一技术细节有助于用户更好地应用该库进行投资组合优化。

登录后查看全文
热门项目推荐
相关项目推荐