问题描述
我正在尝试学习投资组合优化。但是,我无法克服这个错误。有人能告诉我解决这个问题的方法吗?
这是我的代码:
#calculate 我们投资组合中所有股票的回报
portfolioROC<- na.omit(ROC(portfolioPrices))
head(portfolioROC)
#现在,我们股票投资组合的加权回报
portfolioReturns<- Return.portfolio(portfolioROC)
head(portfolioReturns)
tail(portfolioReturns)
#现在,开始优化投资组合。为了做到这一点,我们现在将开始添加约束和 #我们投资组合的规范
library(PortfolioAnalytics)
#初始化我们的投资组合对象
portf<- portfolio.spec(colnames(portfolioReturns))
#现在,传递一些约束
#constraint 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
解决方法
检查您是否实际安装了指定的软件包。
install.packages(c("ROI","ROI.plugin.glpk","ROI.plugin.quadprog"))
如果 glpk 插件的安装不起作用,请按照指定的教程 here 进行操作。
还要确保您的 portfolioReturns
对象的尺寸正确。