2 votos

Problema de optimización de la cartera

Tengo la siguiente expresión para la que deseo encontrar el $\vec{w}$ que lo minimiza:

$$ L = \frac{\vec{w}^TA\vec{w}}{\vec{w}^TB\vec{w}} - \lambda(\vec{w}^T\vec{1} - 1) $$

Las derivadas parciales con respecto a $\vec{w}$ y $\lambda$ son los siguientes

\begin{align*} \frac{\partial L}{\partial \vec{w}} &= \frac{2(\vec{w}^TB\vec{w})A\vec{w}-2(\vec{w}^TA\vec{w})B\vec{w}}{(\vec{w}^TB\vec{w})^2} - \lambda \\ \frac{\partial L}{\partial \lambda} &= -\vec{w}^T\vec{1} + 1 \end{align*}

Pero me cuesta simplificarlas para obtener el valor de minimización de $\vec{w}$ . ¿Alguna idea?

1voto

pt314159 Puntos 21

Debido a la $\vec w^TB\vec w$ en el denominador, tienes que resolver este problema numéricamente , ya sea como una minimización directa con una restricción, o encontrando las raíces de las dos ecuaciones lagrangianas después de tomar derivadas parciales.

  • Minimización directa con restricción de igualdad lineal

$$ min_\vec{w} \left(\frac{\vec{w}^TA\vec{w}}{\vec{w}^TB\vec{w}}\right) \quad s.t. \quad\vec{w}^T \vec{1}-1 = 0. $$ En Python esto se puede hacer, por ejemplo, utilizando scipy.optimize.minimize con el argumento de la restricción de igualdad especificado.

  • Como alternativa, resuelva el sistema lagrangiano de ecuaciones

$$ \frac{\partial L}{\partial \vec{w}} = 0 \\ \frac{\partial L}{\partial \lambda} = 0, $$ encontrando el vector $\vec{w}$ y el valor de $\lambda$ que resuelve las dos ecuaciones (búsqueda de root). En Python esto se puede hacer usando scipy.optimize.root.

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