投资组合优化约束Matrix / bvec解释

时间:2015-12-07 21:39:47

标签: r optimization portfolio

我最近对投资组合优化非常感兴趣,并开始在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
  • 每个资产权重小于.5

我目前正在尝试刷新矩阵/矢量数学,如果有人能告诉我如何在aMat和bvec中添加各个约束以及它的基本代数背景,我将非常感激。另外一个问题是权重&lt; 0(短路)的约束如何。

提前致谢

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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

enter image description here

  • 在代码中添加注释可能有助于稍后理解
  • Quadprog不允许对变量进行简单的下限和上限,因此我们需要将这些转换为&gt; =不等式。
  • 请注意,Quadprog最小化0.5 * x&#39; Qx。这与最小化x&#39; Qx具有相同的结果。
  • 使用x上的其他下限可以允许短路。
  • 您的数据使模型不可行。我将分配的上限从0.5调整到0.8。