我正在尝试学习投资组合优化。但是,我无法克服这个错误。有人可以告诉我解决这个问题的方法吗?
这是我的代码:
#计算我们投资组合中所有股票的回报
portfolioROC<- na.omit(ROC(portfolioPrices))
head(portfolioROC)
#现在,我们股票组合的加权回报
portfolioReturns<- Return.portfolio(portfolioROC)
head(portfolioReturns)
tail(portfolioReturns)
#现在,开始优化投资组合。为了做到这一点,我们现在将开始向我们的投资组合添加约束和#specifications
library(PortfolioAnalytics)
#初始化我们的投资组合对象
portf<- portfolio.spec(colnames(portfolioReturns))
#现在,传递一些约束
#约束 1
portf<- add.constraint(portf, type="weight_sum", min_sum=1,
max_sum=1)
#约束 2
#type "box" 询问为每只股票分配多少资金
portf<- add.constraint(portf,type="box",min=0.10, max=0.4)
#现在,为投资组合添加目标
portf<-add.objective(portf, type="return", name="mean")
portf<-add.objective(portf,type="risk", name="StdDev")
#现在,我们将不得不使用求解器来基本求解这些权重 #注意,您可以使用不同的求解器。在这种情况下,我们将使用“ROI”,
library(ROI.plugin.quadprog)
library(ROI.plugin.glpk)
library(ROI)
optPort<- optimize.portfolio(portfolioReturns,
portf,
optimize_method = "ROI")
我在代码的最后一部分遇到了问题。它显示了这个错误:
Error in ROI::L_constraint(L = Amat, dir = dir.vec, rhs = rhs.vec) :
all(c(dim_L[1], n_dir) == n_L_constraints) is not TRUE