Sfide dell’ottimizzazione di portafoglio

Analisi di portafoglio intermedia in R

Ross Bennett

Instructor

Sfide

  • Molti solver non sono specifici per l’ottimizzazione di portafoglio

  • Capire capacità e limiti dei solver per scegliere quello giusto o adattare il problema al solver

  • Difficile passare da un solver all’altro

  • Solver in forma chiusa (es. programmazione quadratica)

  • Solver globale (es. ottimizzazione con evoluzione differenziale)

Analisi di portafoglio intermedia in R

Utilità quadratica

  • Massimizza: $\quad \displaystyle \omega^T * \mu - \lambda * \omega^T * \Sigma * \omega $
  • Soggetto a:

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

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

  • $\omega$ è il vettore dei pesi
  • $\mu$ è il vettore dei rendimenti attesi
  • $\lambda$ è il parametro di avversione al rischio
  • $\Sigma$ è la matrice varianza–covarianza
Analisi di portafoglio intermedia in R

Solver di programmazione quadratica

  • Usa il pacchetto R quadprog per risolvere l’ottimizzazione con utilità quadratica

  • solve.QP() risolve problemi di programmazione quadratica della forma:

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

  • Con il vincolo:

$$A^Tb>=b_0$$

Analisi di portafoglio intermedia in 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)
Analisi di portafoglio intermedia in R

Passiamo alla pratica!

Analisi di portafoglio intermedia in R

Preparing Video For Download...