intro andres garcia

Doctor en Filosofía, experto en Tecnologías de la Información y la Comunicación (TICs) y trader por cuenta propia con más de 30 años de experiencia. Es propietario del portal TradingSys.org dedicado al trading cuantitativo y profesor del curso de Experto Universitario: “Sistemas y modelos cuantitativos de trading algorítmico” impartido por la Universidad Politécnica de Madrid.
Andrés A. García / TradingSys.org

 

  • Las simulaciones estocásticas constituyen, a día de hoy, una de las principales herramientas del análisis financiero dinámico y se aplican en ámbitos tan diversos como la valoración de opciones, el análisis de portfolios e instrumentos de inversión, la estimación de la solvencia de una compañía o la determinación del Value at Risk (VaR) de los activos cotizados.
  • Artículo publicado en Hispatrading 15.

 De hecho, cualquier problema en el que intervengan series temporales que deban proyectarse a futuro para simular un amplio universo de escenarios o situaciones igualmente probables es un candidato idóneo para ser abordado mediante simulaciones de Montecarlo.

En el trading de sistemas el método de Montecarlo encuentra aplicación en la evaluación del riesgo de la operativa DDm (drawdown máximo) y VaR dinámico, el análisis de las expectativas de beneficio, mediante simulación en el tiempo del equity curve, o para determinar cuándo una estrategia ha dejado de funcionar. De todo ello hablaremos en este artículo, pero antes -y sin aburrirles con largas fundamentaciones matemáticas- analizaremos las bases en que se asientan estas simulaciones.

En toda simulación de Montecarlo podemos distinguir tres etapas:

1) Especificación del modelo estocástico para las variables. Uno de los más empleados en la literatura científica y en numerosos simuladores es el GBM (Geometric Brownian Motion) que técnicamente es un proceso de Markov.

2) Simulación de la evolución de las variables en el marco temporal especificado.

3) Análisis de rentabilidades, riesgos y otros ratios obtenidos en la simulación.

Para generar series aleatorias de precios existen varios métodos que podemos agrupar en dos categorías diferentes:

PERMUTACIONES SERIALES

Toman como punto de partida una secuencia de datos (precios, rentabilidades, etc.) cuyo orden se va modificando iterativamente hasta obtener un conjunto m de series de la misma extensión. Este tipo de simulación tiene la ventaja de que cuando el histórico de partida es muy grande las series resultantes tienen prácticamente las mismas propiedades que la original. Sin embargo, no genera diversidad ya que no se incorporan datos nuevos. Esto puede suponer un problema cuando la serie de partida es pequeña. 

Pongamos un ejemplo: queremos evaluar por Montecarlo un histórico de 500 operaciones de un sistema aplicado al futuro del IBEX35. Supongamos que la peor operación es -2.500€ y la mejor 3.700€. Como la mínima fluctuación es de 1 punto, el rango tiene una amplitud de 6.200 ticks. Así que, incluso asumiendo que no se repite el valor de ninguna de las 500 operaciones, la serie original contiene solo el 8% de todos los valores posibles.  

Los dos métodos de esta primera categoría son:

a) Permutaciones sin repetición. Las nuevas series se construyen modificando únicamente el orden de las operaciones y sin duplicar ningún dato. En este caso, las propiedades estadísticas de las nuevas series son exactamente las mismas: Se generan m series que tienen el mismo valor de inicio y fin. Pero, al estar permutado el orden de la secuencia inicial los recorridos intermedios serán muy distintos. La imagen que nos deja el modelo es esta:

pastedGraphic.png

Este método respeta todas las propiedades de la serie original, ya que la distribución de probabilidades en cada una de las m series es la misma. Con históricos grandes nos interesa para construir un modelo bastante preciso del DDm. que nos cabe esperar, pero no sirve para estimar la evolución de la curva de beneficios en el tiempo.

b) Permutaciones con repetición. Cada serie m se construye por iteración aleatoria simple de la serie original. Cada valor tiene la misma probabilidad de ocurrencia y puede repetirse. Ahora el trazado es de este tipo:  

pastedGraphic_1.png

El punto de partida es el mismo, pero las curvas no convergen hacia un valor único como en el caso anterior, sino que dan lugar a una variedad casi infinita de soluciones temporales. De este modo el modelo permite estimar la evolución del equity curve y las expectativas de beneficio en el período establecido. Sin embargo, aquí no se conservan completamente las propiedades de la serie original, por lo que el cálculo del DDm. será algo menos preciso.

SIMULACIÓN ESTADÍSTICA

Es la más utilizada en la literatura académica. Su principal ventaja es que genera mayor diversidad, ya que los puntos aleatorios de datos no se construyen permutando los valores de la serie original, sino a partir de las estadísticas de dicha serie. La dificultad está en construir un modelo cuya distribución de valores seriales realmente se acomode a la serie de partida. Para simular con el modelo GBM la evolución de una curva de precios los datos mínimos de partida son: media (µ), desviación estándar (σ), tiempo (t) y variable aleatoria (ℰ) de tal manera que el valor de cada punto (S) de la curva queda definido como:

equation.pdf

Con esta primera aproximación, aún demasiado tosca, ya podemos realizar simulaciones de este tipo:

pastedGraphic_2.png

Si bien, los resultados que obtendremos todavía estarán lejos de lo que se requiere para simular con precisión el comportamiento de un sistema de trading.

Veamos algunos métodos de simulación pertenecientes a esta categoría:

a) Método de la inversa. El punto de partida es un generador aleatorio que nos proporcione variables aleatorias independientes y distribuidas uniformemente en el intervalo [0,1]. Luego, se aplica la función inversa de la distribución de probabilidad al número aleatorio obtenido, con lo que obtenemos el valor deseado para ese elemento de la serie.

Este modelo se puede construir de forma bastante sencilla en Excel. Para generar las muestras aleatorias utilizaremos la función  =ALEATORIO() y, para obtener los puntos de datos, algunas de las distribuciones inversas disponibles en la hoja de cálculo: Normal, Gamma, Lognormal, t de Student y Beta. Por ejemplo, si queremos muestras de una Normal (1,0) con µ = 50 y σ = 300, pondremos: 

= (DISTR.NORM.ESTAND.INV(ALEATORIO())*300+50) 

Conociendo la fiabilidad del sistema (ej., probabilidad de ganar = 0,52) escribimos en cada celda de la columna donde se va a generar la nueva serie esta fórmula:

=SI(ALEATORIO()>1-0,52;DISTR.NORM.ESTAND.INV(ALEATORIO())*300+50;   

-(DISTR.NORM.ESTAND.INV(ALEATORIO())*300+50))

Y, de este modo, podremos obtener (pulsando F9) todas las curvas sintéticas que queramos: 

pastedGraphic_3.png

Este método puede ser mejorado si, en lugar de poner en la distribución inversa la media y desviación de la serie original, implementamos por separado la media y desviación de las operaciones ganadoras y perdedoras. En la mayoría de los sistemas, debido la aplicación de stops para limitar el riesgo y otros factores, las estadísticas de la serie ganadora y perdedora son diferentes.

b) Método L-H y de las distribuciones discretas.

El proceso Latin Hypercube (L-H) es un método de extracción de muestras que mejora la precisión de una simulación de Montecarlo pura, ya que reduce el número de iteraciones necesarias y su varianza. Esta técnica consiste en establecer una serie de intervalos de la variable equiprobables a los que se asigna la distribución uniforme (U=0,1) y posteriormente se aplica alguna distribución inversa. 

Supongamos que queremos fragmentar la uniforme en 5 intervalos independientes, para lo que construimos la siguiente tabla:

Intervalo D. Uniforme Normal Inv.
1/K, 2/k… ALEATORIO()*(máx-min)+min DISTR.NORM.ESTAND.INV()
0 – 0,2 0,0994 -1,2852
0,2-0,4 0,2373 -0,7149
0,4-0,6 0,4854 -0,0367
0,6-0,8 0,6041 0,2640
0,8-1 0,9394 1,5494

Cuando la distribución es discreta y está claramente acotada por máximos y mínimos, podemos construir los intervalos tomando como base la frecuencia acumulada de los rangos de la serie original. Por ejemplo, este es histograma de la serie de operaciones de un sistema intradiario:

pastedGraphic_4.png

A partir del cual construimos esta tabla:

Clase Frecuencia % Acum. Intervalos Uniforme Normal
-2000 1 0,16% 0,000 0,002 0,0014 -2,9847
-1500 1 0,32% 0,002 0,003 0,0030 -2,7447
-1000 7 1,43% 0,003 0,014 0,0032 -2,7256
-500 58 10,62% 0,014 0,163 0,0753 -1,4375
0 353 66,56% 0,162 0,666 0,5287 0,0719
500 116 84,94% 0,666 0,850 0,6763 0,4573
1000 45 92,08% 0,849 0,921 0,8727 1,1390
1500 16 94,61% 0,921 0,946 0,9299 1,4754
2000 16 97,15% 0,946 0,972 0,9501 1,6462
2500 9 98,57% 0,972 0,986 0,9757 1,9716
3000 5 99,37% 0,986 0,994 0,9923 2,4251
3500 3 99,84% 0,994 0,999 0,9956 2,6178
4000 1 100,00% 0,998 1,000 0,9984 2,9501

Este método de extracción de muestras basado en una tabla de frecuencias permite que los elementos de cada intervalo se obtengan de acuerdo con su función de probabilidad, generando así series aleatorias que replican con mayor precisión las propiedades de la serie original.