5 votos

¿Cómo aplicar el "Problema de la Mochila" para minimizar la volatilidad de una cartera?

Supongamos que tengo un universo de selección de acciones de 100 acciones.

He estimado la matriz de covarianza de estas 100 acciones.

Me gustaría crear una canasta de 5 acciones con igual peso que tenga la menor volatilidad posible.

¿Cómo podría modificar los algoritmos de la mochila para resolver esto?

No puedo simplemente utilizar el algoritmo estándar, ya que la volatilidad total no es la suma de las volatilidades constituyentes, sino que implica considerar también las correlaciones.

3voto

Stefan Puntos 11

Este problema no es lo bastante interesante, ya que colocar tu dinero en el banco te garantiza una volatilidad cero (y un rendimiento de inversión cero). En la práctica, cualquier conjunto de activos que elijas te daría una solución muy extrema (por ejemplo, un peso del 100% en un activo con una volatilidad muy baja).

Con un pequeño ajuste, puedes obtener un problema muy interesante. Puedes limitar tu cartera para que tenga al menos un rendimiento esperado de $R$. Ahora obtienes un problema de optimización de media-varianza, con restricciones de cardinalidad:

$$ min \,\,\, w^TCw $$ sujeto a $$ r^Tw = R $$ $$ w \ge 0 $$ $$ \Sigma w_i = 1 $$ y sujeto a "no más de 5 pesos no nulos (positivos)".

Donde $C$ es la matriz de covarianza y $w$ tu vector de pesos. Existe una forma de definir formalmente la última restricción utilizando variables enteras indicadoras, pero no lo estoy haciendo aquí por razones de simplicidad.

Ahora, en la segunda parte de la pregunta: Aquí está por qué el problema de la mochila no es un enfoque adecuado para este problema. El problema de la mochila es realmente difícil porque no permite soluciones fraccionarias. En la optimización de cartera, generalmente se asume que se puede tener una cantidad fraccional de un activo.

La optimización de media-varianza es un problema de optimización cuadrática convexa quadrático (QP), que se puede resolver muy rápidamente con muchos solucionadores ampliamente disponibles. La optimización de media-varianza con restricciones de cardinalidad (por ejemplo, tener exactamente 5 activos en la cartera) es un problema que es más difícil, un problema de optimización Real Mixto Entero.

Puedes usar heurísticas para obtener soluciones muy satisfactorias. Aquí hay una estrategia:

  1. Resuelve el problema de media-varianza sin las restricciones de cardinalidad. La solución suele ser extrema en el sentido de que hay un pequeño número de activos no nulos de todos modos.
  2. Luego puedes abrirte paso a través de la restricción de cardinalidad a la fuerza bruta o usar heurísticas (que podrían estar basadas, por ejemplo, en una clasificación del coeficiente de Sharpe - que también es el valor de las variables duales, creo) para obtener una solución satisfactoria.

Si deseas echar un vistazo a los documentos sobre la optimización de media-varianza con restricciones de cardinalidad, aquí tienes uno de los documentos más citados:

Heuristics for cardinality constrained portfolio optimisation (T.-J. Chang, N. Meade, Beasley)

Ten en cuenta que las metaheurísticas, como los Algoritmos Genéticos, son en gran medida cajas negras, y no obtendrías mucho valor educativo sobre los activos subyacentes al implementarlos.

0 votos

La optimización con restricciones de cardinalidad es algo muy interesante. di.ens.fr/~aspremon/PDF/MeanRevVec.pdf es un buen recurso (al igual que sus otros artículos) para algunas alternativas al LASSO, aunque aún no he tenido la oportunidad de implementarlas yo mismo.

0 votos

Hay una versión de Knapsack que permite fracciones. Se llama KNAPSACK FRACCIONARIO. El mejor algoritmo para este problema ofrece una solución óptima en tiempo O(n).

0 votos

Exactamente, como mencionas, una vez que se elimina la restricción de enteros y se permiten fraccionarios, son posibles soluciones más eficientes. No estoy muy familiarizado con el problema de la mochila fraccionaria pero parece ser un LP básico, que sería resoluble por SIMPLEX.

1voto

Akash Puntos 8

Si estás contento con ponderaciones de acciones iguales, entonces esto ciertamente se puede hacer de forma iterativa. No conozco ninguna ecuación de forma cerrada. Funciona para un universo de 100 acciones, pero los cálculos obviamente crecen exponencialmente si quieres aumentar tu universo de selección.

Elige cinco acciones al azar.

Calcula la varianza de la cartera.

Luego hay 4 * 95 = 380 posibles carteras alternativas que reemplazan una de las cinco actuales con una de las 95 que no posees. Cada una de estas tiene 25 covarianzas relevantes (todas ponderadas en un 4%) dentro de ella = 9500 puntos de datos. Grande, pero factible (y fácil de buscar en tu tabla completa de covarianzas)

Calcula las varianzas de estas y reemplaza la actual con la más baja de las 380. Repite este proceso hasta que ninguna tenga una varianza menor que la actual. Que consiste en tomar y reemplazar una de tu "mochila" hasta que no puedas hacerlo mejor.

Un proceso similar te permitiría hacer lo mismo si permitieras ponderaciones de acciones desiguales. Necesitarías calcular la cartera de varianza mínima de las mismas 380 combinaciones que arriba. Dado que esto requiere el cálculo de la inversa de la matriz de covarianzas relevante de 5x5 en cada caso, tendrás que pasar por un ciclo completo sin hacer ningún reemplazo.

0voto

BigCanOfTuna Puntos 210

Una "cesta igualmente ponderada de 5 acciones" no tendrá una volatilidad cero, por lo que este es un problema significativo.

No hay un "algoritmo estándar" para resolver el problema. Pero se puede abordar mediante heurísticas como la Búsqueda Local. Una solución candidata puede codificarse como un vector de variables booleanas ("incluido", "no incluido"). Tal solución se mapea, dadas tus entradas de datos, en una volatilidad de cartera; por lo tanto, puedes escribir una función objetivo.

Un ejemplo de uso de una Búsqueda Local en un problema como este se describe en Selección de activos con Búsqueda Local (usando R y el paquete NMOF, que mantengo).

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