简体   繁体   English

R包'performanceanalytics'优化器中的最大资产数量

[英]Maximum number of assets in R package 'performanceanalytics' optimizer

This is just a general question regarding the maximum number of stocks I can use in the r performanceanalytics optimizer function. 这只是关于我可以在r performanceanalytics优化器函数中使用的最大库存数量的一般问题。

My code works fine for optimizing anything up to around 110 assets but anything exceeding that gives an error. 我的代码适用于优化大约110个资产的任何东西,但是超出这个范围的任何东西都会产生错 I couldn't find any documentation regarding limits around the actual number of assets. 我找不到任何有关实际资产数量限制的文档。 Any help is appreciated. 任何帮助表示赞赏。

Further to the above, I have added reproducible code example below: 除此之外,我在下面添加了可重现的代码示例:

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)

I think the problem arises because of issues with calculating covariance matrices where (num_stocks = 300) > (num_periods = 200). 我认为问题出现是因为计算协方差矩阵的问题,其中(num_stocks = 300)>(num_periods = 200)。

If I increase the number of periods to say 1000, there is no error when optimizing for 200 stocks. 如果我将周期数增加到1000,那么在优化200种股票时没有错误。

Thanks all for your time 谢谢大家的时间

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM