我通过quadprog阅读了一些关于投资组合优化的帖子,我从这个平台学到了许多技巧。现在我试图在约束条件下优化具有quadprog的03种股票组合,即。
我的3股票的covariancce矩阵是
Dmat = matrix(c(0.0119, 0.0071, -0.0023,0.0071, 0.0093,
-0.0006,-0.0023,-0.0006,0.0066), nrow = 3)
股票回报/ colmeans存储在Dvec
中Dvec = c(0.0373, 0.0173, 0.0261)
我使用了这篇文章中提到的代码和程序Portfolio Optimization constraints Matrix/bvec explanation。我还阅读了类似的帖子Portfolio Optimization constraints Matrix/bvec explanation和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
我以两个平等开始分析,即一个用于百分之百投资,另一个用于投资组合回报。我在另一篇文章中读到,返回可能导致问题,使得当前数据和约束无法获得我们正在寻找的回报。所以我也将返回更改为不同的级别但它不起作用所以我放宽了返回相等并使用neq = 1。它仍然没有用。我也试过不同的权重约束个股,即我试图将上限(上限)从5%改为80% 注意:当我用总回报编写amat和bvev时,代码可以工作。即当我使用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).
我的问题是为什么我得到"约束不一致,没有解决方案"当我使用上面提到的代码? 如果有人能弄明白我在做什么错,我会很感激的吗?非常感谢你们所有人。
答案 0 :(得分:2)
我正在尝试了解您的数据:
total.returns = 2.0
这意味着我希望使用返回
的工具获得200%的投资组合回报Dvec = c(0.0373, 0.0173, 0.0261)
或介于1.7%和3.7%之间。这并不容易。