当它说“投资回报率错误:L_constraint ......”时,错误是什么?

问题描述

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

这是我的代码

#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 对象的尺寸正确。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...