【问题标题】:Maximum number of assets in R package 'performanceanalytics' optimizerR 包“性能分析”优化器中的最大资产数量
【发布时间】:2019-02-06 23:42:43
【问题描述】:

这只是一个关于我可以在 r 性能分析优化器函数中使用的最大股票数量的一般问题。

我的代码可以很好地优化最多大约 110 个资产,但任何超过该值的东西都会产生错误。我找不到任何有关实际资产数量限制的文档。任何帮助表示赞赏。

除此之外,我在下面添加了可重现的代码示例:

library(xts)
library(PortfolioAnalytics)
num_stocks = 300
num_periods = 200

rets = replicate(num_stocks, rnorm(num_periods))
colnames(rets) = paste0('stock', 1:num_stocks)

dates = seq(as.Date('2000-01-01'), by = 'month', length.out = num_periods) - 1




#100 stocks, returns optimal weights
equity.data = xts(rets, order.by = dates)[,1:100]

stocks <- colnames(equity.data)

# Specify an initial portfolio
portf.init <- portfolio.spec(stocks)

# Add constraints
# weights sum to 1
portf.minvar <- add.constraint(portf.init, type="full_investment")
# box constraints
portf.minvar <- add.constraint(portf.minvar, type="box", min=0.00, max=0.10)

# Add objective
# objective to minimize portfolio variance
portf.minvar <- add.objective(portf.minvar, type="risk", name="var")

optimize.portfolio(equity.data, 
               portfolio=portf.minvar, 
               optimize_method="ROI",
               trace=TRUE)


## 200 stocks, optimizer returns N/As for optimizes weights
equity.data = xts(rets, order.by = dates)[,1:200]

stocks <- colnames(equity.data)

# Specify an initial portfolio
portf.init <- portfolio.spec(stocks)

# Add constraints
# weights sum to 1
portf.minvar <- add.constraint(portf.init, type="full_investment")
# box constraints
portf.minvar <- add.constraint(portf.minvar, type="box", min=0.00, max=0.10)

# Add objective
# objective to minimize portfolio variance
portf.minvar <- add.objective(portf.minvar, type="risk", name="var")

optimize.portfolio(equity.data, 
               portfolio=portf.minvar, 
               optimize_method="ROI",
               trace=TRUE)

【问题讨论】:

  • 这是你得到的错误Error in gmv_opt(R = R, constraints = constraints, moments = moments, : "package:ROI" %in% search() || requireNamespace("ROI", quietly = TRUE) is not TRUE,只是检查一下?

标签: r optimization performanceanalytics r-portfolioanalytics


【解决方案1】:

我认为问题的出现是因为计算协方差矩阵的问题,其中 (num_stocks = 300) > (num_periods = 200)。

如果我将周期数增加到 1000,则在优化 200 只股票时不会出错。

感谢大家的宝贵时间

【讨论】:

  • 您的示例有点令人困惑,因为您没有解释或说明错误或显示运行时输出。如果有人运行给定的代码示例,他们将收到 ROI 错误,因为您的示例依赖于但不加载 ROI 包。我建议您更新您的问题并突出显示您遇到的具体问题。
  • 道歉 Technophobe01,我的 R 安装已经安装了 ROI 包,所以我没有遇到你提到的“ROI”错误,所以我没有想到要提到它。我以后会说得更清楚。
  • 那么你打算给自己自己的赏金并关闭这个问题吗? :)
  • 我对这个赏金相当陌生,但如果有人对这个资产数量超过期间数据点数量的问题有任何建议,我很高兴授予赏金。
猜你喜欢
  • 2021-08-20
  • 2022-11-18
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多