Работает ли "sigma.robust" момент FUN сквозной с моделями риска StdDev и ES

Я использую замечательный пакет PortfolioAnalytics в R.

Чтобы уменьшить ковариационную матрицу, я использую пример "sigma.robust". Я использую данные EDHEC.

Я создаю первоначальный портфель, и из этого создаю 4 портфеля, которые я намерен сравнить.

Я хочу видеть, что а) прохождение надежного ковара работает - сравнивая его с одним с и без, и б) что оно работает с моделями риска StdDev и ожидаемого дефицита.

data(edhec)
# Use the first 4 columns in edhec for a returns object
R <- edhec[, 1:4]
colnames(R) <- c("CA", "CTAG", "DS", "EM")
head(R, 5)
funds <- colnames(R)

инициализировать pf и использовать некоторые основные ограничения

init.portf <- portfolio.spec(assets=funds)
init.portf <- add.constraint(portfolio=init.portf, type="full_investment")
init.portf <- add.constraint(portfolio=init.portf, type="box",min = .05,max = .4)

Портфолио со стандартным отклонением в качестве цели

SD.portf <- add.objective(portfolio=init.portf, type="risk", name="StdDev")
SD.portf <- add.objective(portfolio=SD.portf, type="return", name="mean")

Портфель с ожидаемым дефицитом в качестве цели

ES.portf <- add.objective(portfolio=init.portf, type="risk", name="ES")
ES.portf <- add.objective(portfolio=ES.portf, type="return", name="mean")

Функция для надежного ковара

sigma.robust <- function(R){
  require(MASS)
  out <- list()
  set.seed(1234)
  out$sigma <- cov.rob(R, method="mcd")$cov
  return(out)
}

пройти через пользовательскую функцию

opt.sd_robust <- optimize.portfolio(R, SD.portf,optimize_method="ROI",momentFUN =  "sigma.robust",trace = TRUE)
opt.es_robust <- optimize.portfolio(R, ES.portf,optimize_method="ROI",momentFUN =  "sigma.robust",trace = TRUE)

создать нормальные портфели, которые я намерен противопоставить эффект против

opt.sd <- optimize.portfolio(R, SD.portf,optimize_method="ROI",trace = TRUE)
opt.es <- optimize.portfolio(R, ES.portf,optimize_method="ROI",trace = TRUE)

объединить их для удобного просмотра

opt_comb = combine.optimizations(list(opt.sd_robust = opt.sd_robust,opt.es_robust = opt.es_robust,opt.sd = opt.sd,opt.es = opt.es))

построить их

chart.Weights(opt_comb,ylim(0,1))

осмотреть их

extractWeights(opt_comb)



                     CA      CTAG  DS   EM
opt.sd_robust 0.08507019 0.1149298 0.4 0.40
opt.es_robust 0.15000000 0.4000000 0.4 0.05
opt.sd        0.05000000 0.1500000 0.4 0.40
opt.es        0.15000000 0.4000000 0.4 0.05

Заключение

И это работает для модели риска с использованием StdDev. Вес разные. Передача сработала. Но это, похоже, не влияет на модель ожидаемого дефицита. Веса идентичны. Я считаю, что это так, даже если я ослабляю рамочное ограничение [мне было интересно, если бы я сделал какой-либо другой результат недостижимым, поэтому я попытался с этим ограничением и без него].

Так что, я думаю, мне интересно, делаю ли я что-то не так. Я думал, что ES просто смотрит в хвост распределения, которое эффективно выводится из преобразованной ковариационной матрицы.

Таким образом, сокращение / регуляризация ковара будет совместима с ES.

Итак, я пришел к выводу, что я делаю что-то не так.

Кто-нибудь может помочь?

0 ответов

Другие вопросы по тегам