【问题标题】:R/optimize.portfolio {PortfolioAnalytics} gives only NA weightsR/optimize.portfolio {PortfolioAnalytics} 仅给出 NA 权重
【发布时间】:2018-03-15 02:10:16
【问题描述】:

我有一个问题,想不出一个合理的答案。我希望有一个人可以帮助我!非常感谢!

我正在使用滚动窗口方法进行投资组合优化,以最大限度地提高夏普比率。之后,我在一个新的矩阵中编写投资组合权重。

使用多个数据集,一切正常。尽管使用另外两个数据集,但会出现一个问题:两三行仅获得 NA 权重。

数据应该没有问题,因为只有很少的 NA。此外,投资组合估计中的一行收益不会有问题,因为每一行收益都在滚动窗口方法中多次使用。你可能知道为什么特别是一行可以用 Nas 填充吗?

非常感谢提前和最好的问候,

塞巴斯蒂安

# Kenneth French Dates
DateKFStart <- '1963-07' #'1969-07'
DateKFEnd   <- '2004-11' #'2017-06'

R.FF3=R.FF3[paste(DateKFStart, DateKFEnd, sep='/'),]
R.FF5=R.FF5[paste(DateKFStart, DateKFEnd, sep='/'),]
R.KFInd10=R.KFInd10[paste(DateKFStart, DateKFEnd, sep='/'),]
R.KFInd49=R.KFInd49[paste(DateKFStart, DateKFEnd, sep='/'),]
R.KFSibo=R.KFSibo[paste(DateKFStart, DateKFEnd, sep='/'),]

#--------------------#
#### Optimization ####
#--------------------#

#------------------------------#
assets=R.KFInd10               # R.FF3
is.estimation.window='Rolling' # 'Expanding'
M=60                           # Estimation Window Length


# Construct initial portfolio

assetnames=colnames(assets)
returns=assets

w.sharpe=returns*0
r.sharpe.NC=w.sharpe[,1]
colnames(r.sharpe.NC)='r.sharpe.NC'


sharpe.portf <- portfolio.spec(assets = assetnames)

sharpe.portf <- add.constraint(sharpe.portf, type= 'full_investment')
sharpe.portf <- add.constraint(sharpe.portf, type= 'long_only')

sharpe.portf <- add.objective(sharpe.portf, type='risk',   name='StdDev')
sharpe.portf <- add.objective(sharpe.portf, type='return', name='mean'  )

sharpe.portf

  for (n in (M+1):nrow(returns))
  {
  max_sharpe_opt <- optimize.portfolio(R=returns[(n-M):(n-1),],portfolio=sharpe.portf, 
                                       optimize_method='ROI',maxSR=TRUE, message=TRUE,trace=TRUE)
  w.sharpe[n,]=max_sharpe_opt$weights
  }

r.sharpe.NC[,1]=rowSums(returns*w.sharpe)

如前所述,我不知道一个单一的解释。整个代码适用于多个数据集。并且只有 2 个两个数据集,两行权重是 NA,其余的工作正常。那么数据应该没有问题吧?

【问题讨论】:

    标签: r optimization portfolio r-portfolioanalytics


    【解决方案1】:

    我遇到同样的问题,我认为这是因为它有时找不到解决方案...尝试“随机”方法,这将花费更多时间,但您会正常得到一些东西...或者尝试使用其他优化方法。

    如果你发现了你的问题,请给我你的解决方案。

    max_sharpe_opt <- optimize.portfolio(R=returns[(n-M):(n-1),],portfolio=sharpe.portf, 
                                           optimize_method='random',maxSR=TRUE, message=TRUE)
    

    max_sharpe_opt <- optimize.portfolio(R=returns[(n-M):(n-1),],portfolio=sharpe.portf, 
                                           optimize_method='GenSA',maxSR=TRUE, message=TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-25
      • 2016-07-24
      • 2019-05-05
      • 2017-08-03
      • 2021-01-08
      • 2020-04-04
      • 2021-05-30
      • 2015-04-25
      相关资源
      最近更新 更多