Wyzwania optymalizacji portfela

Analiza portfela – poziom średniozaawansowany w R

Ross Bennett

Instructor

Wyzwania

  • Wiele solverów nie jest dedykowanych do optymalizacji portfela

  • Konieczność rozumienia możliwości i ograniczeń solverów, aby wybrać odpowiedni lub dostosować problem do solvera

  • Trudne przełączanie między solverami

  • Solver analityczny (np. programowanie kwadratowe)

  • Solver globalny (np. optymalizacja różniczkowej ewolucji)

Analiza portfela – poziom średniozaawansowany w R

Użyteczność kwadratowa

  • Maksymalizuj: $\quad \displaystyle \omega^T * \mu - \lambda * \omega^T * \Sigma * \omega $
  • Przy ograniczeniach:

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

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

  • $\omega$ – wektor wag
  • $\mu$ – wektor oczekiwanych zwrotów
  • $\lambda$ – parametr awersji do ryzyka
  • $\Sigma$ – macierz wariancji-kowariancji
Analiza portfela – poziom średniozaawansowany w R

Solver programowania kwadratowego

  • Użyj pakietu R quadprog do rozwiązania problemu optymalizacji użyteczności kwadratowej

  • solve.QP() rozwiązuje problemy programowania kwadratowego postaci:

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

  • Przy ograniczeniu:

$$A^Tb>=b_0$$

Analiza portfela – poziom średniozaawansowany w 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)
Analiza portfela – poziom średniozaawansowany w R

Czas na ćwiczenia!

Analiza portfela – poziom średniozaawansowany w R

Preparing Video For Download...