【问题标题】:R - fPortfolio - Error in eqsumW[2, -1] : subscript out of boundsR - fPortfolio - eqsumW[2, -1] 中的错误:下标越界
【发布时间】:2016-01-23 05:43:14
【问题描述】:

跑:

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 不起作用(我收到与SOCP Solver Error for fPortoflio using solveRsocp 相同的错误消息和解决方案似乎没有帮助),然后我得到一个结果,但权重总和超过 1。 我也尝试将求解器更改为 Rdonlp2,但我得到了一个不受约束的等权重投资组合。

【问题讨论】:

    标签: r


    【解决方案1】:

    所以代码有错误,至少我认为是错误的。

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-03
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多