Максимальное количество активов в оптимизаторе R-пакета "Performanceanalytics"
Это всего лишь общий вопрос, касающийся максимального количества акций, которое я могу использовать в функции оптимизатора 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)
1 ответ
Я думаю, что проблема возникает из-за проблем с вычислением ковариационных матриц, где (num_stocks = 300) > (num_periods = 200).
Если я увеличу число периодов, скажем, до 1000, при оптимизации для 200 акций ошибки не будет.
Спасибо всем за ваше время