Сложности оптимизации портфеля

Промежуточный анализ портфеля в R

Ross Bennett

Instructor

Сложности

  • Многие солверы не ориентированы на оптимизацию портфеля

  • Необходимо понимать возможности и ограничения солверов, чтобы выбрать подходящий или переформулировать задачу под него

  • Переключение между солверами представляет значительную сложность

  • Солвер замкнутой формы (например, квадратичное программирование)

  • Глобальный солвер (например, оптимизация методом дифференциальной эволюции)

Промежуточный анализ портфеля в R

Квадратичная полезность

  • Максимизировать: $\quad \displaystyle \omega^T * \mu - \lambda * \omega^T * \Sigma * \omega $
  • При условии:

$$\omega_{i} >= 0$$

$$\sum_{i=1}^{n} \omega_i = 1$$

  • $\omega$ — вектор весов
  • $\mu$ — вектор ожидаемой доходности
  • $\lambda$ — параметр неприятия риска
  • $\Sigma$ — матрица дисперсий и ковариаций
Промежуточный анализ портфеля в R

Солвер квадратичного программирования

  • Используйте пакет R quadprog для решения задачи оптимизации квадратичной полезности

  • solve.QP() решает задачи квадратичного программирования вида:

$$min(-d^Tb+\frac{1}{2}b^TDb)$$

  • При ограничении:

$$A^Tb>=b_0$$

Промежуточный анализ портфеля в R
library(quadprog)
data(edhec)
dat <- edhec[,1:4]

# Create the constraint matrix
Amat <- cbind(1, diag(ncol(dat)), -diag(ncol(dat)))
# Create the constraint vector
bvec <- c(1, rep(0, ncol(dat)), -rep(1, ncol(dat)))
 # Create the objective matrix
Dmat <- 10 * cov(dat)
# Create the objective vector
dvec <- colMeans(dat)

# Specify number of equality constraints
meq <- 1

# Solve the optimization problem
opt <- solve.QP(Dmat, dvec, Amat, bvec, meq)
Промежуточный анализ портфеля в R

Давайте потренируемся!

Промежуточный анализ портфеля в R

Preparing Video For Download...