При использовании функции optimize.portfolio
в пакете PortfolioAnalytics
в RI возникают трудности с добавлением ограничения на коэффициент цены акций в оптимальных весах.Например, если у меня есть капитал в 100 долларов для инвестирования (всего портфеля), а цена акции составляет 3,17 доллара (например), невозможно оценить позицию на уровне 4,00% (без плеча или короткого замыкания, верно?).
Я искал в StackOverflow и различных PerformanceAnalytics
документах, но не смог найти никаких материалов, связанных с этой проблемой.
Вот что у меня есть для кода оптимизации портфеля, поэтомуfar:
tickers <- c("AAPL","AMZN",...) #not all tickers included for sake of space
start_date <- "2017-01-01"
price_data <- tq_get(tickers, get = "stock.prices", from = start_date)
names(price_data) <- c("ticker", "date", "open", "high", "low",
"close", "volume", "adjusted")
price_data_wide <- price_data %>%
select_("ticker", "date", "adjusted") %>%
group_by(ticker) %>%
spread(key = ticker, value = adjusted)
price_data_wide <- as.xts(price_data_wide[,-1],
order.by = price_data_wide$date)
returns <- Return.calculate(price_data_wide, method = "discrete") %>%
na.omit()
mean_ret <- colMeans(returns)
cov_smp <- cov(returns)
p <- portfolio.spec(assets = colnames(returns))
p
p <- add.objective(portfolio = p, type = "risk", name = "var")
p <- add.objective(portfolio = p, type = "return", name = "mean")
p <- add.constraint(portfolio = p, type = "full_investment")
p <- add.constraint(p, type = "box", min = 0.000, max = 0.050)
opt_p <- optimize.portfolio(R = returns, portfolio = p,
optimize_method = "ROI", trace = FALSE,
maxSR = TRUE, rf = 0.025/252)
opt_p
В идеале, в вышеупомянутом примере R рекомендовал бы взвешивание 3,17%, 6,34%, 9,51% и т. д., так как покупка одной доли в примере акции будет 3,17% отПортфель $ 100, если цена составляет $ 3,17
Любая помощь будет принята с благодарностью, заранее спасибо!