投资组合优化约束 Matrix/bvec 解释
Portfolio Optimization constraints Matrix/bvec explanation
我最近对投资组合优化非常感兴趣并开始使用 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
- 投资组合预期 return 等于 5.2%
- 每项资产权重大于0
- 每项资产权重小于.5
我目前正在尝试复习我的 matrix/vector 数学,如果有人能告诉我如何将单独的约束添加到 aMat 和 bvec 中以及它的基本代数背景,我将不胜感激。作为另一个问题,权重 <0(做空)的约束会是什么样子。
提前致谢
第一步是写下数学模型。这可能看起来像:
下一部分是在 R 的 quadprog 中实现它。这可能看起来像:
- 在代码中添加注释可能有助于以后理解它
- Quadprog 不允许对变量设置简单的下限和上限,因此我们需要将这些转换为 >= 不等式。
- 请注意 Quadprog 最小化 0.5*x'Qx。这与最小化 x'Qx 的结果相同。
- 可以通过在 x 上使用其他下限来允许做空。
- 您的数据使模型不可行。我将分配上限从 0.5 放宽到 0.8。
我最近对投资组合优化非常感兴趣并开始使用 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
- 投资组合预期 return 等于 5.2%
- 每项资产权重大于0
- 每项资产权重小于.5
我目前正在尝试复习我的 matrix/vector 数学,如果有人能告诉我如何将单独的约束添加到 aMat 和 bvec 中以及它的基本代数背景,我将不胜感激。作为另一个问题,权重 <0(做空)的约束会是什么样子。
提前致谢
第一步是写下数学模型。这可能看起来像:
下一部分是在 R 的 quadprog 中实现它。这可能看起来像:
- 在代码中添加注释可能有助于以后理解它
- Quadprog 不允许对变量设置简单的下限和上限,因此我们需要将这些转换为 >= 不等式。
- 请注意 Quadprog 最小化 0.5*x'Qx。这与最小化 x'Qx 的结果相同。
- 可以通过在 x 上使用其他下限来允许做空。
- 您的数据使模型不可行。我将分配上限从 0.5 放宽到 0.8。