R - fPortfolio - eqsumW [2,-1]中的错误:下标越界

时间:2015-05-20 18:56:51

标签: r

Ran:

require(fPortfolio)
lppData=100*LPP2005.RET[,1:6]
maxRetSpec=portfolioSpec()
setTargetRisk(maxRetSpec)=0.3
setSolver(maxRetSpec)="solveRsocp"
efficientPortfolio(data=lppData, spec=maxRetSpec,constraints="LongOnly")

我明白了:

Error in eqsumW[2, -1] : subscript out of bounds

消息本身很清楚,但我不知道应该填充eqsumW [2,-1]

我查看了solveRsocp,设法调整它以便它不需要eqsumW[2, -1],将其替换为1,因为0不起作用(我得到与{{相同的错误消息) 3}}并且解决方案似乎没有帮助),然后我得到一个结果,但权重总和超过1。 我也尝试将求解器更改为Rdonlp2,但我获得了一个不受约束的等权重投资组合。

1 个答案:

答案 0 :(得分:0)

因此代码中存在错误,至少我认为这是一个错误。

eqsumW[2, -1]应该引用Equal Matrix Constraints中的Budget行。

但是,当您没有设定目标回报时,预算行实际上是第一个。因此,您需要在eqsumW[2,-1]

中将eqsumW[2,1]eqsumW[1,-1]替换为eqsumW[1,1].rsocpArguments