暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

实现投资组合优化的几种解法……

787
组合权重优化在多因子量化投资领域起到至关重要的作用,通过将组合的风险特征完全定量化,投资者可以更清楚地了解组合的收益来源和风险暴露,从而更准确地评估投资组合的表现和潜在风险
进行投资组合优化时,我们往往需要先把业务问题建成数学规划模型,进而选择合适的求解器寻求最优解或者可行解。一般求解思路遵循以下步骤:
  1. 明确业务条件与需求

  2. 确定优化问题三要素:决策变量、目标函数(如最大化期望收益率,最小化组合风险,最大化效用函数等)、约束条件(如等式约束和不等式约束)

  3. 选择并建立合适的数学规划模型

  4. 将该模型导入到求解器中去求解

四个常见的投资组合优化案例

在这里我们列举四个常见的投资组合优化案例,具体实现脚本均可点击阅读原文获取:

最大化期望收益率

假设有 10 支股票,预测它们未来的收益率分别为[0.1, 0.02, 0.01, 0.05, 0.17, 0.01, 0.07, 0.08, 0.09, 0.10]
。这些股票属于消费、金融和科技三个行业,希望在每个行业的暴露不超过8%,且每个股票权重分配不得多于 15%,求最大化预期收益的投资组合

在股票组合优化问题中,可以在个股权重上下限约束,风险约束,行业约束的约束条件下求解股票投资组合的最大收益。

最大化效用函数

假设有 2457 支股票,其投资组合收益率的协方差矩阵是一个单位矩阵,求解在取得最大效用函数的时各股票的权重分配

现代投资组合理论用均值和方差来刻画收益和风险这两个关键因素,效用函数期望则是尽可能的在最大化期望收益率和最小组合波动率之间取得一个平衡,二次目标函数的最优解也是组合权重优化的一部分,一般收益最大化的同时也要求组合风险最小。

带有换手率约束的投资组合问题

同样是上个场景中的 2457 支股票,我们引入换手率约束。在投资组合问题中,换手率为当前股票权重与初始股票权重的绝对值之和,衡量了股票的流通性大小。过高的换手率意味着较大的交易成本,在这里我们设置所有股票换手率之和不大于1,求解使投资组合达到最大收益率时的权重分配

带有收益率波动约束的投资组合问题

有三支股票,可以根据每支股票的预期收益与收益率协方差矩阵,决定最优投资组合
约束条件为:
  1. 投资组合的收益率的波动率不超过 11%;

  2. 每支股票的权重在 10% 到 50% 之间。
以上案例的实现脚本可联系小助手(dolphindb1)获取。

性能对比:DolphinDB VS Python

常见的最优化求解器包括 linprog(线性规划)函数、quadprog(二次规划)函数、qclp(二次约束线性规划)函数、socp(二阶锥规划)函数等,目前 DolphinDB 对上述最优化求解函数均提供支持

我们分别使用 DolphinDB 内置最优化求解函数Python 求解器来解决线性规划、二次规划、二次约束线性规划这三类问题,对比其性能差异。取详细本,请点击读原文或联系小助手(dolphindb1)。

线性规划问题(LP)

本测试场景使用 200 个变量。

二次规划问题(QP)

本测试场景使用 1000 个变量。

二次约束线性规划问题(QCLP)

本测试场景使用 200 个变量。

实验证明,DolphinDB 最优化函数求解的结果与 Python 的求解结果在小数点后至少四位内均达到一致,同时 DolphinDB 的最优化函数求解效率相较 Python 均有较为显著的提升。

基于 DolphinDB Gurobi 插件的性能对比

与 CPLEX、MOSEK 类似,Gurobi 同样是解决组合优化问题的常见求解器,凭借强大的求解能力与高效的算法,吸引了国内外市场众多客户。目前 DolphinDB 也开发了 Gurobi 插件,方便用户将基于 Gurobi 构建的应用与 DolphinDB 进行集成,该插件将于4月上线 DolphinDB 官网。

我们同样沿用上述测试,来测试 Gurobi 插件的性能。

线性规划问题(LP)

二次规划问题(QP)

二次约束线性规划问题(QCLP)

测试结果表明,DolphinDB Gurobi 插件在线性规划问题 (LP) 和二次约束线性规划问题 (QCLP) 场景中展现出了更优的性能。

Tips:DolphinDB Gurobi 插件为用户提供了方便调用 Gurobi 的接口,用户如想使用 Gurobi 求解器,仍需向 Gurobi 官方申请试用许可或付费使用。

文章转载自DolphinDB智臾科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论