Факторинг в цене акций как ограничение в optimize.portfolio - PullRequest
0 голосов
/ 14 апреля 2019

При использовании функции 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

Любая помощь будет принята с благодарностью, заранее спасибо!

...