针对特定 returns 使用 quadprog 的投资组合优化导致 "constraints are inconsistent, no solution"
Portfolio optimization with quadprog for specific returns results in "constraints are inconsistent, no solution"
我阅读了一些 post 关于使用 quadprog 进行投资组合优化的文章,我从这个平台学到了很多技巧。现在我正在尝试在约束条件下使用 quadprog 优化 03 只股票的投资组合,即。
- 权重总和必须为 1
- 禁止卖空
- 投资组合 return = 2%
- 每个库存重量不得超过总重量的50%
我的 3 只股票的协方差矩阵是
Dmat = matrix(c(0.0119, 0.0071, -0.0023,0.0071, 0.0093,
-0.0006,-0.0023,-0.0006,0.0066), nrow = 3)
库存 returns/colmeans 存储在 Dvec
Dvec = c(0.0373, 0.0173, 0.0261)
我使用了本文中提到的代码和过程 post . I also read the similar posts and Constraints on weight in portfolio optimization using quadprog package in R 所以我尝试的代码看起来像这样
N = 3
total.returns = 0.02
lo = rep(0,N)
up = rep(0.50,N)
A = rbind(rep(1,N), dvec, diag(N), -diag(N))
A = t(A)
B = c(1,total.returns, lo, -up)
neq = 1
qp = solve.QP(Dmat, dvec, A, B,neq)
qp$solution
我从两个等式开始分析,一个代表百分百投资,另一个代表投资组合 returns。我在另一个 post 中读到 returns 可能导致问题,以至于我们正在寻找的 returns 不可能使用当前数据和约束。所以我也将 return 更改为不同的级别,但它不起作用,所以我放宽了 return 等式并使用 neq=1。仍然没有用。我还尝试了对个股的不同权重限制,即我尝试将上限(上)从 5% 更改为 80%。
注意:当我编写 amat 和 bvev 时没有总 returns 那么代码就可以工作了。即当我将 A 和 B 用作
A = rbind(rep(1,N), diag(N), -diag(N))
B = c(1, lo, -up)
而不是
A = rbind(rep(1,N), dvec, diag(N), -diag(N)) and
B = c(1,total.returns, lo, -up).
我的问题是为什么我在使用上述代码时得到 "constraints are inconsistent, no solution"?
如果有人能弄清楚我在做什么错误,我将不胜感激?非常感谢你们所有人。
我正在尝试了解您的数据:
total.returns = 2.0
这意味着我想要一个 200% 的投资组合 return,其中的工具具有 return 的
Dvec = c(0.0373, 0.0173, 0.0261)
或介于 1.7% 和 3.7% 之间。那不是那么容易。
我阅读了一些 post 关于使用 quadprog 进行投资组合优化的文章,我从这个平台学到了很多技巧。现在我正在尝试在约束条件下使用 quadprog 优化 03 只股票的投资组合,即。
- 权重总和必须为 1
- 禁止卖空
- 投资组合 return = 2%
- 每个库存重量不得超过总重量的50%
我的 3 只股票的协方差矩阵是
Dmat = matrix(c(0.0119, 0.0071, -0.0023,0.0071, 0.0093,
-0.0006,-0.0023,-0.0006,0.0066), nrow = 3)
库存 returns/colmeans 存储在 Dvec
Dvec = c(0.0373, 0.0173, 0.0261)
我使用了本文中提到的代码和过程 post
N = 3
total.returns = 0.02
lo = rep(0,N)
up = rep(0.50,N)
A = rbind(rep(1,N), dvec, diag(N), -diag(N))
A = t(A)
B = c(1,total.returns, lo, -up)
neq = 1
qp = solve.QP(Dmat, dvec, A, B,neq)
qp$solution
我从两个等式开始分析,一个代表百分百投资,另一个代表投资组合 returns。我在另一个 post 中读到 returns 可能导致问题,以至于我们正在寻找的 returns 不可能使用当前数据和约束。所以我也将 return 更改为不同的级别,但它不起作用,所以我放宽了 return 等式并使用 neq=1。仍然没有用。我还尝试了对个股的不同权重限制,即我尝试将上限(上)从 5% 更改为 80%。
注意:当我编写 amat 和 bvev 时没有总 returns 那么代码就可以工作了。即当我将 A 和 B 用作
A = rbind(rep(1,N), diag(N), -diag(N))
B = c(1, lo, -up)
而不是
A = rbind(rep(1,N), dvec, diag(N), -diag(N)) and
B = c(1,total.returns, lo, -up).
我的问题是为什么我在使用上述代码时得到 "constraints are inconsistent, no solution"? 如果有人能弄清楚我在做什么错误,我将不胜感激?非常感谢你们所有人。
我正在尝试了解您的数据:
total.returns = 2.0
这意味着我想要一个 200% 的投资组合 return,其中的工具具有 return 的
Dvec = c(0.0373, 0.0173, 0.0261)
或介于 1.7% 和 3.7% 之间。那不是那么容易。