风险组合库

定量战略资产配置,人人都能轻松掌握

_images/MSV_Frontier.png _images/Pie_Chart.png https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86
Buy Me a Coffee at ko-fi.com
https://img.shields.io/github/stars/dcajasn/Riskfolio-Lib?color=green:alt:GitHubstars:target:https://github.com/dcajasn/Riskfolio-Lib/stargazers https://static.pepy.tech/personalized-badge/riskfolio-lib?period=month&units=none&left_color=grey&right_color=orange&left_text=Downloads/Month https://readthedocs.org/projects/riskfolio-lib/badge/?version=latest GitHub licensehttps://mybinder.org/badge_logo.svg

描述

Riskfolio-Lib 是一个用于在秘鲁 🇵🇪 使用 Python 进行投资组合优化和量化战略资产配置的库。它的目标是帮助学生、学者和从业者以较低的工作量构建基于数学复杂模型的投资组合。它建立在CVXPY之上,并与Pandas数据结构紧密集成。

Riskfolio-Lib 提供的一些关键功能:

  • 平均风险和对数平均风险(凯利标准)投资组合优化,具有4个目标函数:

    • 最小风险。

    • 最大回报。

    • 最大效用函数。

    • 最大风险调整回报率。

  • 均值风险和对数均值风险(凯利标准)组合优化,使用22种凸风险度量:

    离散风险度量:

    • 标准差。

    • 平方根峭度。

    • 平均绝对偏差(MAD)。

    • 基尼平均差(GMD)。

    • 条件风险价值范围。

    • 尾部基尼范围。

    • 范围。

    下行风险度量:

    • 半标准差。

    • 平方根半峭度。

    • 第一下偏矩(欧米伽比率)。

    • 第二下偏矩(索提诺比率)。

    • 条件风险价值(CVaR)。

    • 尾部基尼。

    • 熵风险价值(EVaR)。

    • 相对风险价值(RLVaR)。

    • 最坏实现(极小极大)。

    回撤风险度量:

    • 非复利累积收益的平均回撤。

    • 非复利累积收益的溃疡指数。

    • 非复利累积收益的条件回撤风险(CDaR)。

    • 非复利累积收益的熵回撤风险(EDaR)。

    • 非复利累积收益的相对回撤风险(RLDaR)。

    • 非复利累积收益的最大回撤(卡尔马比率)。

  • 风险平价投资组合优化与18种凸性风险度量:

    离散风险度量:

    • 标准差。

    • 平方根峰度。

    • 平均绝对偏差 (MAD)。

    • 基尼均值差 (GMD)。

    • 条件风险价值范围。

    • 尾部基尼范围。

    下行风险度量:

    • 半标准差。

    • 平方根半峰度。

    • 第一下偏部分矩 (欧米伽比率)

    • 第二下偏部分矩 (索提诺比率)

    • 条件风险价值 (CVaR)。

    • 尾部基尼。

    • 熵风险价值 (EVaR)。

    • 相对风险价值 (RLVaR)。

    回撤风险度量:

    • 未复利累积收益的溃疡指数。

    • 未复利累积收益的条件回撤风险 (CDaR)。

    • 未复利累积收益的熵回撤风险 (EDaR)。

    • 未复利累积收益的相对回撤风险 (RLDaR)。

  • 层次聚类投资组合优化:层次风险平价 (HRP) 和层次等风险贡献 (HERC),使用 32 种风险度量方法,采用天真风险平价:

    离散风险度量:

    • 标准差。

    • 方差。

    • 平方根峰度。

    • 平均绝对偏差 (MAD)。

    • 基尼均值差异 (GMD)。

    • 条件风险价值范围。

    • 尾部基尼范围。

    • 范围。

    下行风险度量:

    • 半标准差。

    • 平方根半峰度。

    • 第一低部分矩 (Omega Ratio)。

    • 第二低部分矩 (Sortino Ratio)。

    • 风险价值 (VaR)。

    • 条件风险价值 (CVaR)。

    • 熵风险价值 (EVaR)。

    • 相对风险价值 (RLVaR)。

    • 尾部基尼。

    • 最坏情况实现 (Minimax)。

    回撤风险度量:

    • 复利和非复利累计收益的平均回撤。

    • 复利和非复利累计收益的溃疡指数。

    • 复利和非复利累计收益的风险回撤 (DaR)。

    • 复利和非复利累计收益的条件风险回撤 (CDaR)。

    • 复利和非复利累计收益的熵风险回撤 (EDaR)。

    • 复利和非复利累计收益的相对风险回撤 (RLDaR)。

    • 复利和非复利累计收益的最大回撤 (Calmar Ratio)。

  • 嵌套聚类优化 (NCO) 具有四个目标函数和可用的风险度量:

    • 最小风险。

    • 最大回报。

    • 最大效用函数。

    • 平等风险贡献。

  • 最坏情况均值方差投资组合优化。

  • 放松风险平价投资组合优化。

  • 加权平均 (OWA) 投资组合优化。

  • 使用黑利特曼模型的投资组合优化。

  • 风险因素模型的投资组合优化。

  • 使用Black Litterman贝叶斯模型进行投资组合优化。

  • 使用增强型布莱克-里特曼模型进行投资组合优化。

  • 在跟踪误差和换手率上进行投资组合优化。

  • 具有空头头寸和杠杆投资组合的投资组合优化。

  • 带有资产数量和有效资产数量约束的投资组合优化。

  • 基于图信息的具有约束的投资组合优化。

  • 构建22种凸风险度量的有效边界的工具。

  • 用于构建资产、资产类别和风险因素的线性约束的工具。

  • 用于构建资产和资产类别视图的工具。

  • 构建风险因素视图的工具。

  • 构建每个资产类别的风险贡献约束的工具。

  • 用于根据显式风险因子和主成分构建每个风险因子的风险贡献约束的工具。

  • 用于构建层次聚类投资组合的边界约束工具。

  • 计算风险度量的工具。

  • 计算每个资产风险贡献的工具。

  • 计算每个风险因素风险贡献的工具。

  • 计算均值向量和协方差矩阵的不确定性集的工具。

  • 基于相依性指标计算资产集群的工具。

  • 估计载荷矩阵的工具(逐步回归和主成分回归)。

  • 用于可视化投资组合属性和风险度量的工具。

  • 在Jupyter Notebook和Excel上构建报告的工具。

  • 选项使用商业优化求解器,如 MOSEK 或 GUROBI 解决大规模问题。

选择求解器

由于 Riskfolio-Lib 基于 CVXPY,Riskfolio-Lib 可以使用 CVXPY 可用的相同求解器。 与 CVXPY 兼容的求解器列表可在 选择求解器 部分的 CVXPY 文档中找到。 但是,要为每个风险度量选择合适的求解器,我们可以使用以下表格 指定用于建模每个风险度量的编程技术类型。

风险测量 LP QP SOCP SDP EXP POW
方差 (MV) X X*
平均绝对偏差 (MAD) X
吉尼均值差异 (GMD) X**
半方差 (MSV) X
峰度 (KT) X
半峰度 (SKT) X
首个下部分矩 (FLPM) X
第二低阶部分矩 (SLPM) X
条件价值风险 (CVaR) X
尾部基尼 (TG) X**
熵值风险(EVaR) X
相对论风险价值 (RLVaR) X**
最差实现 (WR) X
CVaR范围 (CVRG) X
尾部基尼范围 (TGRG) X**
范围 (RG) X
平均回撤 (ADD) X
溃疡指数 (UCI) X
条件风险回撤 (CDaR) X
熵降风险 (EDaR) X
相对论风险回撤 (RLDaR) X**
最大回撤 (MDD) X

(*) 当包含SDP图论约束时。在整数规划图论约束的情况下,模型假设SOCP形式。

(**) 对于这些模型,强烈推荐使用 MOSEK 作为求解器,因为在某些情况下 CLARABEL 无法找到解决方案,而 SCS 解决它们的时间太长。

LP:线性规划是指具有线性目标函数和线性约束的问题。

QP: 二次规划是指具有二次目标函数和线性约束的问题。

SOCP: 二阶锥规划指的是具有二阶锥约束的问题。

SDP: 半正定规划是指具有正半定约束的问题。

EXP:指与指数锥约束相关的问题。

POW:指的是具有三维功率锥约束的问题。

咨询费用

Riskfolio-Lib是一个开源项目,但是由于它不是由任何机构资助的项目,我开始收取与源代码错误无关的咨询费用。我们的费用如下:

  • $ 25 美元(美国美元)每个不需要检查代码的问题。

  • $ 50 USD 检查一个小型脚本或代码(少于 200 行代码)。解决方案的费用取决于解决方案的复杂性:
    • $ 50 USD 用于脚本中的简单错误(修改少于 10 行代码)。

    • 对于大多数复杂错误,费用取决于解决方案的复杂性,但费用为每小时 $ 150 USD。

  • $ 100 美元用于检查中等大小的脚本或代码(介于 201 到 600 行代码之间)。解决方案的费用取决于解决方案的复杂性:
    • $ 50 美元用于脚本中的简单错误(修改少于 10 行代码)。

    • 对于大多数复杂错误,费用取决于解决方案的复杂性,但费用为每小时 $ 150 美元。

  • 对于大型脚本或代码(超过600行代码),费用根据代码的大小而变化。解决方案的费用取决于解决方案的复杂性:
    • 简单脚本错误的费用为50美元(修改少于10行代码)。

    • 对于大多数复杂错误,费用取决于解决方案的复杂性,但费用为每小时150美元。

所有咨询必须提前支付.

您可以通过以下方式联系我:

  • LinkedIn

  • Gmail

您可以通过以下渠道付款:

https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86 Buy Me a Coffee at ko-fi.com

引用

如果您在公开工作中使用 Riskfolio-Lib,请使用以下 BibTeX 条目:

@misc{riskfolio,
      author = {Dany Cajas},
      title = {Riskfolio-Lib (6.3.1)},
      year  = {2024},
      url   = {https://github.com/dcajasn/Riskfolio-Lib},
      }

目录

索引和表

模块计划

这个库的计划是增加更多对学生、学者和从业人员非常有用的函数。

  • 根据用户的建议添加更多功能。