Monte Carlo en la predicción de instrumentos financieros
¿Has intentado alguna vez entrar en el mundo de las inversiones? De ser así, te habrás topado con artículos o comentarios de expertos en la materia explicándote por qué deberías invertir en unas u otras acciones. O, a través de alguna plataforma de inversiones, habrás visto un gráfico ilustrativo mostrándote cómo se comportarían tus ahorros en el tiempo si invirtieras hoy, con una curva que crece mientras más avanza el tiempo. A continuación daremos un vistazo a cómo funcionan estas predicciones, los desafíos con los que deben lidiar y un método alternativo que, por la simplicidad respecto de alternativas más tradicionales, es digno de análisis.
¿Qué temas revisaremos?
- Intentando predecir el comportamiento de instrumentos financieros
- Simulación Monte Carlo como alternativa
- Simplificando el modelado con clases de activos
- Perfeccionando la predicción utilizando correlaciones
Intentando predecir el comportamiento de instrumentos financieros
Photo by Adam Śmigielski on Unsplash
Dadas todas las posibles variables que influyen en él, el mercado financiero es complejo y dinámico por naturaleza: variables ambientales como factores macroeconómicos, eventos internacionales, cambios políticos o regulaciones gubernamentales, pueden afectar el mercado. Como parte de este ecosistema, los instrumentos financieros también reciben este impacto y añaden particularidades propias; a su vez, influyen en el mercado. Por ejemplo, debido a decisiones de la compañía o la calidad de un producto o servicio, el valor de las acciones de una compañía en particular puede cambiar drásticamente en poco tiempo, lo que también podría impactar en el valor de las acciones de compañías de la competencia.
Dado este dinamismo y la exposición a multitud de factores, intentar predecir el comportamiento de estos instrumentos es un problema complejo y sin una solución universal que entregue resultados acertados en todos los casos. Sin embargo, tener predicciones correctas permite ayudar a individuos, inversores e instituciones a tomar mejores decisiones financieras. Es por esto que, a pesar de todas las dificultades a las que se enfrentan, contamos con una gran cantidad de métodos que intentan simular el comportamiento del ecosistema financiero, o de una parte de él, con distintos niveles de sofisticación y precisión en los resultados.
Estos métodos pueden agruparse en grandes grupos:
- Análisis fundamental: Revisión de factores económicos concretos que podrían afectar el valor de un instrumento en particular (como salud financiera o potencial de crecimiento). Estos enfoques requieren un análisis exhaustivo de los datos por cada instrumento, limitando la reutilización y versatilidad de los resultados.
- Análisis técnico cualitativo: Predicción de valores futuros basados en datos históricos de un instrumento en particular, dependiendo en mayor medida de un análisis visual del comportamiento de los valores históricos. Este acercamiento asume que los patrones históricos observados se mantendrán en el futuro.
- Análisis técnico cuantitativo: Predicción de valores futuros basados en datos históricos de un instrumento en particular, mediante el uso de modelos estadísticos tradicionales construidos a partir del análisis secuencial de datos ordenados en el tiempo, detectando tendencias y variaciones periódicas. Dado que los modelos se construyen a partir de datos históricos, algunos patrones observados se repetirán en las predicciones, aunque esto puede mitigarse con mayores volúmenes de datos.
- Aprendizaje automático: Entrenamiento de algoritmos de aprendizaje automático (machine learning) utilizando datos históricos. Si se utilizan datos de un instrumento en particular, los resultados serán acertados para este instrumento u otros de características similares. Si en cambio se decide entrenar con múltiples instrumentos, se requiere un preprocesamiento importante de datos (para evitar anulación de correlaciones u otros efectos que limiten la generalización de los resultados). Además, dado que son algoritmos de caja negra, explicar los motivos de un resultado concreto puede ser imposible.
Todos estos enfoques, si bien son capaces de presentar resultados que se ajustan al comportamiento que simulan, dependen en gran medida de datos históricos relacionados con el o los instrumentos que se quieren valuar. Esta dependencia impide realizar predicciones acertadas en instrumentos que tienen pocos datos (como nuevas acciones o mercados emergentes), y asumen que las condiciones observadas se mantendrán en el futuro, ignorando aumentos bruscos de volatilidad, cambios económicos o eventos de cisne negro.
Simulación Monte Carlo como alternativa
Photo by Kaja Sariwating on Unsplash
La simulación Monte Carlo, o algoritmo Monte Carlo, es un método que utiliza simulaciones aleatorias para estimar posibles resultados de un fenómeno. La idea base del método es simple: Generar una colección de simulaciones para un evento particular del fenómeno que estamos simulando (por ejemplo, estimar la rentabilidad para un día particular de un instrumento financiero), cada una con variaciones aleatorias, y utilizar estas simulaciones para estimar qué podría ocurrir para este evento. Mientras más simulaciones se realicen, mejor será la estimación de lo que podría ocurrir.
Las simulaciones realizadas por el algoritmo Monte Carlo no son caóticas, sino que deben seguir una distribución de probabilidad que haya sido calculada previamente, normalmente analizando datos históricos del fenómeno que se quiere simular. Para el caso de los instrumentos financieros, es ampliamente aceptado el uso del modelo de Movimiento Geométrico Browniano (GBM por sus siglas en inglés) en el modelado de acciones e instrumentos del mercado financiero, dado que sus resultados siguen una distribución normal logarítmica - asumiendo por tanto que los valores no pueden ser menores a cero, y permite además considerar parámetros clave del mercado, combinando:
- Deriva (rentabilidad media): Drift en inglés. La tendencia general, al alza o a la baja.
- Volatilidad (desviación estándar): Volatility en inglés. Cuánto fluctúan los valores.
- Perturbación aleatoria (ruido distribuido normalmente): Random shocks en inglés. Simula factores impredecibles del mercado.
Sin embargo, es importante notar que el modelo GBM no es perfecto. Es particularmente criticado por asumir una distribución normal logarítmica estricta, ni tampoco considera colas gruesas (eventos con rentabilidades muy altas o muy bajas más comunes de lo considerado en una distribución normal) o saltos (cambios súbitos en que las rentabilidades fluctúan de forma rápida e impredecible). Aún con estas limitaciones, es un modelo flexible que permite modelados razonables del mercado, y es el que utilizaremos para ejemplificar el uso de la simulación Monte Carlo.
Ejecutando una simulación
Utilizando la fórmula del modelo GBM, podemos realizar una única simulación para obtener el factor de crecimiento (de gross return en inglés) en un período dado con:
Donde:
- : Factor de crecimiento para un período . La rentabilidad porcentual sería .
- : La rentabilidad media (deriva).
- : La desviación estándar (volatilidad).
- : Número aleatorio obtenido de una distribución normal (perturbación aleatoria).
Podemos simplificar esta fórmula considerando , para obtener un único factor diario :
Luego, para calcular el factor de crecimiento compuesto en días futuros, utilizamos una productoria de múltiples rentabilidades diarias:
Como podemos notar, la única variación entre los factores de la productoria es la perturbación aleatoria , que busca simular los cambios impredecibles en el mercado.
Utilizando múltiples simulaciones
Ya sabiendo cómo realizar una única simulación para obtener el factor de crecimiento diario para un día específico en el futuro, completamos el algoritmo Monte Carlo ejecutando las suficientes simulaciones para el mismo día hasta obtener los datos suficientes para estimar un resultado. Consideremos que el error estándar de Monte Carlo decrece como , donde es la cantidad de simulaciones.
Determinar la cantidad óptima de simulaciones para estimar un resultado razonable está fuertemente ligado al problema que estamos abordando. Para el caso de la predicción de instrumentos financieros, no hay un consenso claro: Algunos proponen que se requieren 10.000 o más simulaciones para obtener resultados acertados, mientras que otros estiman que sobre las 1.000 simulaciones los resultados convergen.
Independientemente de las simulaciones que determinemos para el caso particular que nos interese, el procesamiento continúa de la misma forma:
- Podemos estimar un aproximado del factor de crecimiento mediante el cálculo de la mediana de los factores compuestos obtenidos.
- Podemos estimar el peor y mejor caso mediante el cálculo de percentiles que estimemos adecuados. Por ejemplo, podríamos utilizar los percentiles 10 y 90 respectivamente, asegurándonos con estos percentiles de dejar fuera los valores atípicos (outliers).
Simplificando el modelado con clases de activos
Si utilizamos la simulación Monte Carlo para estimar valores utilizando la distribución de cada instrumento financiero de forma independiente, este método se alimenta de datos históricos, tal como los hacen los análisis técnicos cuantitativos expuestos previamente, y por tanto tiene limitaciones similares - aunque utilizando el modelo GBM sí considera la impredecibilidad del mercado. Sin embargo, es posible adaptar este método para calcular valores para todos los instrumentos de un mercado utilizando sólo datos de las clases de activo generales (broad asset classes en inglés), cuyo número suele ser acotado y sus definiciones tienden a mantenerse estables.
Las clases de activos se utilizan comúnmente para agrupar instrumentos financieros, pero si elegimos un grupo acotado de clases de activos, podemos descomponer todos los instrumentos financieros de un mercado en base a qué tanto están expuestos a dichas clases de activos (es decir, qué porcentaje del instrumento es categorizado en una u otra clase de activo). Entonces, en lugar de simular cada instrumento por separado, podemos representar el factor de crecimiento de un instrumento como una suma ponderada de los factores de crecimiento de las clases de activos generales :
Donde:
- : El número de clases de activos generales que estamos utilizando.
- : El peso (proporción) de la clase de activo en este instrumento en particular. Nótese que debe cumplirse que .
Esto nos simplifica sobremanera el cálculo de las distribuciones que necesitaríamos para el método Monte Carlo para todo nuestro universo de instrumentos financieros, e incluso podría darnos mejores resultados, considerando que:
- Las clases de activo tienen propiedades estadísticas más estables que instrumentos individuales.
- Todos los instrumentos pueden ser descritos como una suma ponderada de un número finito de clases de activo.
- Reduce la complejidad de cómputo y permite un mejor modelado del riesgo.
Ahora, es posible entonces utilizar el algoritmo Monte Carlo sólo para calcular los factores de crecimiento de cada clase de activo general, y luego reutilizar esas simulaciones con la suma ponderada que acabamos de describir. Reemplazando entonces el factor de crecimiento de la clase de activo por la fórmula del factor compuesto en días futuros utilizando Monte Carlo (que describimos al final de la sección [[/Simulación Monte Carlo como alternativa]]), obtenemos:
Donde tenemos:
- : Cantidad de días futuros que estamos simulando.
- : El número de clases de activos generales que estamos utilizando.
- : El peso (proporción) de la clase de activo en este instrumento en particular.
- : La rentabilidad media (deriva) de la clase de activo .
- : La desviación estándar (volatilidad) de la clase de activo .
- : Número aleatorio obtenido de una distribución normal (perturbación aleatoria), único para la clase de activo en el día .
Perfeccionando la predicción utilizando correlaciones
Hasta ahora nuestro modelo se ve bien: Permite generar predicciones para todo el universo de instrumentos financieros dentro del mercado utilizando clases de activos generales, mientras que permite simular el riesgo y las variables impredecibles del mercado sin mayores complicaciones.
Sin embargo, si sólo generamos retornos que varían aleatoriamente para cada clase de activo de forma independiente, estamos ignorando las relaciones históricas que podrían observarse entre ellas. En la realidad del mercado financiero, las clases de activos no cambian aleatoriamente: Algunas tienden a subir y bajar juntas (una alta correlación), mientras que otras varían en direcciones opuestas (correlación negativa).
Para modelar correctamente estos fenómenos, debemos utilizar una matriz de correlaciones (que muestra cómo se relacionan las distintas clases de activo), y utilizar la descomposición de Cholesky para transformar nuestras perturbaciones aleatorias no correlacionadas en correlacionadas.
Descomposición de Cholesky
La mayoría de las herramientas que permiten manipular datos financieros, incluyen incorporado un método para aplicar la descomposición de Cholesky sin mayor problema, pero si no estás familiarizado con la técnica y quieres entender de qué se trata, este es un ejemplo sencillo que nos ayuda a entender cómo funciona.
Si tenemos sólo dos clases de activos generales, digamos acciones y bonos, y ellos se correlacionan históricamente en un 60%, entonces ésta sería nuestra matriz de correlaciones:
Luego, utilizamos la descomposición de Cholesky para obtener una matriz triangular (también conocida como matriz cholesky), tal que se cumpla la igualdad . Para nuestro ejemplo, nuestra matriz sería:
Ya con nuestra matriz cholesky, generamos perturbaciones aleatorias para un día particular (donde es el número de clases de activos generales que estamos utilizando, 2 en este ejemplo) en una matriz , como sigue:
Si multiplicamos nuestra matriz cholesky con nuestras perturbaciones aleatorias para obtener las perturbaciones correlacionadas para un día particular:
Actualizando la fórmula con las correlaciones
Entendiendo cómo calcular correlaciones para un día particular, podemos extrapolar su uso para el cálculo del factor de crecimiento compuesto para días futuros, en donde para cada día tendremos que:
- Generar nuestra matriz con perturbaciones aleatorias
- Calcular nuestras perturbaciones correlacionadas
Si reemplazamos entonces las perturbaciones aleatorias que hemos utilizado hasta ahora por las perturbaciones correlacionadas , obtenemos:
Donde es la perturbación correlacionada para la clase de activo en el día .
Conclusiones
El algoritmo Monte Carlo es una técnica de simulación que se alimenta de parámetros estimados con datos históricos (como otros enfoques cuantitativos), y permite modelar aspectos clave de los mercados financieros. Además, vimos que es posible superar la limitación de tener datos históricos de cada instrumento financiero si utilizamos clases de activo generales correlacionados para describirlos, simplificando además el cálculo al necesitar una cantidad finita de modelos estadísticos para simular virtualmente infinitas combinaciones para los distintos instrumentos financieros en un mercado.
En un próximo artículo revisaremos una implementación simple del método planteado aquí, utilizando Python y algunas bibliotecas específicas. Además, sería interesante evaluar simulaciones utilizando algoritmos de aprendizaje automático, utilizando adaptaciones similares a las expuestas en este artículo.