3 votos

Las ponderaciones no suman uno Modelo de cartera de Markowitz

Recientemente he implementado MPT en Python, sin embargo, cuando permito pesos negativos (venta en corto), no suman uno. ¿No se supone que no debe ocurrir? Por otro lado, cuando no permito, suman uno como siempre.

Esto es lo que hice:

  1. Definido el retorno como de costumbre: $\vec{W}^{T} \vec{R}$ , donde $\vec{W}$ tienen todos los pesos y $\vec{R}$ es el vector aleatorio de los rendimientos;
  2. Calcula los rendimientos esperados y la matriz de covarianza, todo ello en forma de porcentajes;
  3. Se define el riesgo como la desviación estándar, que satisface: $\sigma^2(\vec{W}) = \vec{W}^{T} \Sigma \vec{W}$ ;
  4. Minimizado $\sigma^2(\vec{W})$ bajo i) $\vec{W}^{T} \vec{I}=1$ , donde $\vec{I} = [1\,\ 1 \cdots 1]^{T}$ y ii) $\vec{W}^{T} \mathbb{E}[\vec{R}] = \mu_0$ , donde $\mu_0$ se da;
  5. Establece el lagrangiano de la siguiente manera: $\mathcal{L}(\vec{W}, \lambda_1, \lambda_2) = \sigma^2(\vec{W}) + \lambda_1 (\vec{W}^{T} \vec{I} - 1) + \lambda_2 (\vec{W}^{T} \mathbb{E}[\vec{R}] - \mu_0)$
  6. Toma todas las derivadas parciales y termina en un sistema de ecuaciones como este:

\begin{equation} \begin{bmatrix} 2 \Sigma \,\,\, \vec{I} \,\,\, \mathbb{E}[\vec{R}] \\ \vec{I}^{T} \,\,\, 0 \,\,\, 0 \\ \mathbb{E}[\vec{R}]^{T} \,\,\, 0 \,\,\, 0 \end{bmatrix} \cdot \begin{bmatrix} \vec{W} \\ \lambda_1 \\ \lambda_2 \end{bmatrix} = \begin{bmatrix} \vec{0} \\ 1 \\ \mu_0 \end{bmatrix} \end{equation}

  1. Al tratarse de un sistema de $A \vec{x} = \vec{b}(\mu_0)$ amable y $\vec{b}$ está parametrizado por $\mu_0$ Utilicé la factorización QR para resolverlo para cada $\mu_0$ ;

  2. Una vez que tenga la solución $\vec{x}$ Tengo los pesos dados por $\vec{W}$ también. Por lo tanto, se ha resuelto.

¿Falta algo? ¿Sucede con frecuencia?

Gracias

EDITAR

Gracias chicos, he conseguido solucionar el problema. La función que creé para calcular todos los pesos era incorrecta (utilizaba la norma 1).

1voto

apoorv020 Puntos 397

Utilizaremos la notación en negrita para los vectores y escribiremos $\pmb \mu = \mathbb E[\vec R]$ .


De la primera ecuación se tiene $$\pmb w = \frac 12 \pmb\Sigma^{-1}\left(\pmb 1^T\lambda_1 + \pmb\mu\lambda_2\right).$$ Por lo tanto, primero encontraremos $\lambda_1$ y $\lambda_2$ . Utilizando las restricciones, podemos escribir \begin{aligned} 1 = \pmb1^T\pmb w &= \frac 12 \pmb1^T\pmb\Sigma^{-1}\left(\pmb 1^T\lambda_1 + \pmb\mu\lambda_2\right)\\ \mu_0 = \pmb \mu^T\pmb w &= \frac 12 \pmb\mu^T\pmb\Sigma^{-1}\left(\pmb 1^T\lambda_1 + \pmb\mu\lambda_2\right) \end{aligned} En otras palabras, necesitamos resolver el sistema

$$ \frac 12\begin{bmatrix} \pmb 1^T \pmb \Sigma^{-1}\pmb 1^T & \pmb 1^T \pmb \Sigma^{-1}\pmb \mu^T\\ \pmb 1^T \pmb \Sigma^{-1}\pmb \mu^T & \pmb \mu^T \pmb \Sigma^{-1}\pmb \mu^T \end{bmatrix}\begin{bmatrix} \lambda_1\\ \lambda_2 \end{bmatrix} = \begin{bmatrix} 1\\ \mu_0 \end{bmatrix}. $$

La solución viene dada por $$ \pmb\lambda = \frac{2}{(\pmb 1^T \pmb \Sigma^{-1}\pmb 1^T)(\pmb \mu^T \pmb \Sigma^{-1}\pmb \mu^T) - (\pmb 1^T \pmb \Sigma^{-1}\pmb \mu^T)^2}\begin{bmatrix} \pmb \mu^T \pmb \Sigma^{-1}\pmb \mu^T & -\pmb 1^T \pmb \Sigma^{-1}\pmb \mu^T\\ -\pmb 1^T \pmb \Sigma^{-1}\pmb \mu^T & \pmb 1^T \pmb \Sigma^{-1}\pmb 1^T \end{bmatrix}\begin{bmatrix} 1\\ \mu_0 \end{bmatrix}. $$

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X