0

我正在尝试学习投资组合优化。但是,我无法克服这个错误。有人可以告诉我解决这个问题的方法吗?

这是我的代码:

#计算我们投资组合中所有股票的回报

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
4

1 回答 1

0

检查您是否实际安装了指定的软件包。

install.packages(c("ROI","ROI.plugin.glpk","ROI.plugin.quadprog"))

如果 glpk 插件的安装不起作用,请按照此处指定的教程进行操作。

还要确保portfolioReturns对象的尺寸正确。

于 2021-03-06T17:57:37.470 回答