我正在使用constrOptim来解决投资组合问题(即最大化二次函数)。我正在报告我正在使用的代码,其中矩阵'数据'包含5个资产的回报的时间序列,每个资产有107个观测值。我已经使用相同的代码来优化4个资产的组合,并且它运行良好,但是一旦我在数据矩阵中添加第5个资产,我就得到了错误:
Error in constrOptim(guess, EQuad, NULL, ui = C, ci = D) :
initial value is not in the interior of the feasible region
代码:
A<- rbind(c(1,1,1,1,1), c(-1,-1,-1,-1,-1))
B<- c(0.9999,-0.9999)
C<- rbind(A, c(1,0,0,0,0), c(0,1,0,0,0), c(0,0,1,0,0), c(0,0,0,1,0), c(0,0,0,0,1))
D<- c(0.9999,-0.9999,0,0,0,0,0)
guess<- c(0.20,0.20,0.20,0.20,0.19)
Q<- rbind(c(0,0,0,0,0,0),c(0,0,0,0,0,0))
P<- rbind(c(0,0,0,0,0,0),c(0,0,0,0,0,0))
j<- 61
repeat{
X<- data.matrix(Data)
X<- X[1:j,]
optm<- constrOptim(guess, EQuad,NULL, ui = C, ci = D)
P<- rbind(P, array(unlist(optm), dim = 6))
j <- j+1
if(j==108){
break
}
}
我的理解是错误是由猜测引起的。矢量级别但也改变了初始值我仍然得到错误。
我该如何解决?