Я использую PortfolioAnalytics
в r и пытаюсь использовать предопределенную ковариацию и возвращает матрицу.
Например, примерная прибыль от моих активов равна
returns <- matrix(c(0.316, 0.322, 0.288), ncol = 3)
. Возможная ковариационная матрица оценивается следующим образом:
cov_matrix <- matrix(c(0.240, 0, 0,
0, 0.217, 0,
0, 0, 0.202), ncol = 3, nrow = 3)
Я пробовал следующие несколько примеров, таких как Создание эффективной границы в PortfolioAnalytics без объекта xts и Пользовательские ожидаемые возвраты в пакете Portfolio Analytics , но в обоих случаях кажется, что временные ряды возвращений все еще предоставляется, и моменты все еще оцениваются, в то время как ожидаемая доходность моего портфеля и матрица ковариации уже даны.
Следуя примерам, я попытался привести свои данные к xts (при условии, что это то, что мне нужно сделать) следующим образом:
date <- "2020/03/20"
date <- as.Date(date, "%Y/%m/%d")
date
rownames(returns) <- date
returns <- xts(returns, order.by = date)
pf <- portfolio.spec(assets = colnames(returns))
pf <- add.constraint(portfolio = pf, type = "full_investment")
pf <- add.constraint(portfolio = pf, type = "long_only")
pf <- add.objective(portfolio = pf, type = "return", name = "mean")
pf
num_assets <- ncol(returns)
momentargs <- list()
momentargs$mu <- returns
momentargs$sigma <- cov_matrix
momentargs$m3 <- matrix(0, nrow = num_assets, ncol = num_assets ^ 2)
momentargs$m4 <- matrix(0, nrow = num_assets, ncol = num_assets ^ 3)
o <- optimize.portfolio(R = returns, portfolio = pf, momentargs = momentargs)
Я продолжаю получать
Leverage constraint min_sum and max_sum are restrictive,
consider relaxing. e.g. 'full_investment' constraint should be min_sum=0.99 and max_sum=1.01
Error in `colnames<-`(`*tmp*`, value = colnames(seed)) :
attempt to set 'colnames' on an object with less than two dimensions
Я думаю, что я уверен, что что-то упустил.