【问题标题】:Portfolio Optimization constraints Matrix/bvec explanation投资组合优化约束矩阵/bvec 解释
【发布时间】:2016-03-12 15:44:11
【问题描述】:

我最近对投资组合优化非常感兴趣,并开始使用 R 来创建最小方差投资组合,

library(quadprog)
Dmat <- matrix(c(356.25808, 12.31581, 261.88302, 12.31581, 27.24840,
18.50515,261.88302, 18.50515,535.45960), nrow=3, ncol=3)
dvec <- matrix(c(9.33, 3.33, 9.07), nrow=3, ncol=1)
A.Equality <- matrix(c(1,1,1), ncol=1)
Amat <- cbind(A.Equality, dvec, diag(3), -diag(3))
bvec <- c(1, 5.2, rep(0, 3), rep(-0.5, 3))
qp <- solve.QP(Dmat, dvec, Amat, bvec, meq=1)

上面的例子有以下限制(例子来自here

有 4 个约束:

  • 权重总和等于 1
  • 投资组合预期回报率等于 5.2%
  • 每个资产权重大于 0
  • 每个资产权重小于 0.5

我目前正在尝试刷新我的矩阵/向量数学,如果有人能告诉我您如何在 aMat 和 bvec 中添加各个约束以及它的基本代数背景,我将不胜感激。作为另一个问题,权重

提前致谢

【问题讨论】:

    标签: r optimization portfolio


    【解决方案1】:

    第一步是写下数学模型。这可能看起来像:

    下一部分是在 R 的 quadprog 中实现这一点。这可能看起来像:

    • 在代码中添加 cmets 可能有助于以后理解它
    • Quadprog 不允许对变量设置简单的上下界,因此我们需要将它们转换为 >= 不等式。
    • 请注意,Quadprog 最小化 0.5*x'Qx。这与最小化 x'Qx 的结果相同。
    • 可以通过在 x 上使用其他下限来允许短路。
    • 您的数据使模型不可行。我将分配的上限从 0.5 放宽到 0.8。

    【讨论】:

    • 感谢 Erwin 非常有帮助,作为跟进,如果我设置 lo
    • 是的,lo= -up 这是 quadprog 期望的形式。
    • 好吧,完美。还有一种方法已经传递了权重的初始猜测,例如重新平衡以使用旧权重使求解器收敛得更快?
    • 这取决于求解器。 R 的 quadprog 没有这个功能。请注意,除非我们想解决大问题,否则这些 QP 通常会很快解决。对于这些问题,存在强大的商业解决方案。
    • 标准投资组合模型中没有局部最优(它们是凸问题)。然而,尝试不同的求解器通常是个好主意。
    猜你喜欢
    • 2018-03-17
    • 2016-07-19
    • 2016-08-18
    • 1970-01-01
    • 2014-07-28
    • 2021-12-18
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    相关资源
    最近更新 更多