R-投资组合分析优化无效

问题描述

im目前正致力于创建最低的Variance投资组合,并决定使用 PortfolioAnalytics包的函数optimize.portfolio。 不幸的是,在提取权重时,所有权重均为NA,尽管我的退货中没有一个具有任何NA值,这(从我的观点来看)是导致最终权重为NA的唯一原因。 我的数据集包含多个资产(+5000),每个资产都有60个观测值(每月)。

   library(PortfolioAnalytics)
   library(ROI)  
   #index returns is an xts object consisting of 3800 stock Ids(columns) and 60 observations in
   # monthly interval: To exemplifiy my problem,I set all values in index_returns to 1,to make 
   # sure that no NA values exist.
   index_returns
   any(is.na(index_returns)) # --> evaluates to FALSE
  port_spec <- portfolio.spec(assets =colnames(index_returns) )
  
  # Add a full investment constraint such that the weights sum to 1
  port_spec <- add.constraint(portfolio = port_spec,type = "full_investment")
  
  # Add a long only constraint such that the weight of an asset is between 0 and 1
  port_spec <- add.constraint(portfolio = port_spec,type = "long_only")
  
  # Add an objective to min portfolio variance
  port_spec <- add.objective(portfolio = port_spec,type = "risk",name = "var")
  
  # Solve the optimization problem
  opt <- optimize.portfolio(R = index_returns,trace=TRUE,portfolio = port_spec,optimize_method = "ROI")
  extractWeights(opt) #evaluates to NA for all assets

有人知道为什么会发生这种情况吗,并且对如何处理此问题有任何建议。我知道,由于列数多于行数,此优化问题很可能会遇到可逆性问题,但是除了这个概念之外,我正在努力解决我的问题。
我非常感谢任何帮助!预先感谢

解决方法

您的优化最有可能失败,因为您拥有的资产远多于观测值。然后,正如您正确假设的那样,您无法获得估计的协方差矩阵的逆。

引用“ {具有大量资产的投资组合优化方法:对美国和韩国股票市场的应用”中的引文,网址为:https://onlinelibrary.wiley.com/doi/epdf/10.1111/ajfs.12233

“当N大于T时,已经进行了很多尝试找到协方差矩阵的可逆估计。Sengupta(1983)和Pappas等人(2010)使用协方差矩阵的伪逆估计器,以及N的收缩估计器。 Ledoit和Wolf(2003)提出了协方差矩阵。Ledoitand Wolf(2003)建议通过两个现有估计量的最优加权平均值来估计协方差矩阵:样本协方差矩阵和sin-gle-index协方差矩阵。”

因此,我建议您首先查看Ledoit-Wolf收缩方法。 R包RiskPortfolios可能也很有用,请参见https://joss.theoj.org/papers/10.21105/joss.00171

相关问答

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