R 包中的最大资产数 'performanceanalytics' 优化器
Maximum number of assets in R package 'performanceanalytics' optimizer
这只是关于我可以在 r performanceanalytics 优化器函数中使用的最大股票数量的一般性问题。
我的代码可以很好地优化最多大约 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)
我认为问题的出现是因为计算协方差矩阵时出现问题,其中 (num_stocks = 300) > (num_periods = 200)。
如果我把周期数增加到 1000,优化 200 只股票时没有错误。
感谢大家的宝贵时间
这只是关于我可以在 r performanceanalytics 优化器函数中使用的最大股票数量的一般性问题。
我的代码可以很好地优化最多大约 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)
我认为问题的出现是因为计算协方差矩阵时出现问题,其中 (num_stocks = 300) > (num_periods = 200)。
如果我把周期数增加到 1000,优化 200 只股票时没有错误。
感谢大家的宝贵时间