¿Nos visitas desde USA? Entra a tu página Rankia.us.
Oscar Cagigas
Gestión del capital, ondas de Elliott y sistemas de trading

Objetivo 2600 conseguido: ¿funciona la estacionalidad?

Ayer el SP500 hizo el mínimo del día en 2603; es decir, a solo 3 puntos de nuestro objetivo de los 2600. Podemos por tanto darlo por alcanzado (sería un error del 0.1%). Debajo vemos que el chartismo es perfecto, toda la evolución del SP500 desde comienzos de este año queda delimitada en un canal paralelo perfecto. Lo que se quiere decir con esto es que una vez alcanzado el objetivo podríamos tener un rebote. Ya no estamos bajistas en el corto plazo, ahora esperaremos a ver lo que sucede. Es buen momento para tomar beneficios de las posiciones cortas.

s&p 500

 

A pesar de que hoy podríamos utilizar todo el informe para congratularnos de lo bien que ha salido todo, y darnos palmaditas en la espalda por este timing tan perfecto del SP500, lo mejor será decir ya mismo que la suerte ha tenido mucho que ver. Si el SP500 hubiera seguido al alza no diríamos que falló la teoría sino que a veces el mercado no hace lo que dice la teoría que debería hacer. Y otras veces hay suerte.

Ya le conté en el informe anterior que cuando no te tomas demasiado en serio las técnicas de pronóstico (p.e. las Ondas de Elliott, chartismo, etc) funcionan mejor porque estás abierto a una interpretación alternativa, y tu visión es más abierta respecto a las diferentes posibilidades. Sé que es un poco contradictorio pero cuando se trata de futuro no esperaríamos que todo fuera una ciencia exacta, verdad? Vamos a dejar aparte el mercado de índices para que pueda evolucionar y darnos pistas de para dónde quiere ir. El resto de este informe vamos a dedicarlo a discernir si la estacionalidad realmente funciona.

Me explico: Siempre hemos escuchado que las materias primas son estacionales, muchas por las cosechas (p.e. soja, maíz, trigo…), que dependen del tiempo atmosférico y este es estacional. Otras veces por los stocks y almacenajes, que siempre suelen ser en la misma fecha del año.

Otras veces por el consumo, que suele ser estacional (p.e. el gasóleo de calefacción). Incluso hay más factores, como el año fiscal, gastos, etc que suelen ser en la misma fecha y también influirían en los “financials” como índices o Bonos. Hasta ahí todo está claro. Pero no sería la primera vez que una lógica contundente no se traduce en resultados tangibles en los mercados….

Por esa razón he decidido probar si la estacionalidad realmente se traduce en beneficios, o en una mejora de estos. El procedimiento que he diseñado es el siguiente:

1. Voy a coger un sistema conocido (p.e. MERSI para materias primas) y lo voy a optimizar al máximo para saber dónde está su tope.

2. Le voy a añadir un filtro estacional de forma que solo compre si estacionalmente en esas fechas el mercado empieza a subir (viceversa para los cortos).

3. Voy a optimizar lo anterior. Si los resultados son claramente mejores entonces concluiré que la tendencia estacional funciona, no solamente en teoría sino también en la práctica, con datos reales de mercado.

A la hora de diseñar el experimento me doy cuenta de que para hacerlo bien hay que tener algunas cosas en cuenta. Por ejemplo:

  • Cuando apliquemos el filtro estacional solo podremos simular desde el año 2005 porque vamos a necesitar los 5 primeros años de histórico para tener la estacionalidad. Por esta razón la simulación sin filtro estacional TAMBIÉN debe realizarse desde 2005, para poder comparar de forma adecuada.
  • No serviría hacer las pruebas sin optimizar, ya que el filtro podría quitar las mejores, o las peores operaciones y todo dependería de la casualidad. Hay que buscar el máximo rendimiento alcanzable y luego ver si esta se queda ahí o se puede mejorar.
  • El sistema tiene que ser conocido. Diseñar un sistema empezando de cero nos haría incurrir en un sesgo de diseño en el que al final pudiéramos quedarnos con el sistema que lo hace mejor DESPUÉS de añadir el filtro estacional, lo cual invalidaría las conclusiones.
  • El ratio de optimización no debe ser la ganancia neta sino el ratio entre ganancia y drawdown (recovery factor). Si queremos que las conclusiones sirvan para algo tenemos que tener en cuenta que al final todo es una cuestión de apalancamiento. De dos sistemas que ganan lo mismo el que mejor Recovery Factor tenga es el mejor, ya que subiendo el apalancamiento podemos igualar su drawdown con el otro y la ganancia final será mayor.

Bueno, supongo que eso es todo en cuanto a las condiciones de la prueba. Vamos con el sistema. Como ya he mencionado he escogido el sistema MERSI (Mean Reversion RSI) por ya estar diseñado. Las reglas del sistema son las siguientes:

  • Si el cierre de hoy está por encima de una media móvil simple, y el RSI está por debajo del nivel 30 compramos.
  • Cerramos los largos si el RSI está por encima del nivel 70.
  • El sistema es simétrico para los cortos Hay un stop loss de 6 desviaciones estándar

La optimización del sistema MERSI desde el año 2005 hasta hoy 30 de octubre de 2018, restando $100 en concepto de comisiones y deslizamiento, sobre una cartera de las 32 materias primas más líquidas, y tomando como ratio de optimización el Recovery Factor arroja los siguientes parámetros óptimos:

  • Periodo RSI: 9
  • Periodo media: 70

Y las siguientes estadísticas:

sistema mersi

 

Como vemos, el sistema es bastante decente tal cual está. Sus estadísticas no son impresionantes pero no lo hace nada mal con una lógica tan simple.

portfolio equity

 

De todo lo anterior si hay que quedarse con un dato, que es el Recovery Factor de 4.5. Quiere decir que el sistema genera 4.5 veces más ganancia que drawdown.

Como he explicado anteriormente aunque encontráramos un sistema que ganara lo mismo (159K) si este segundo sistema tiene un recovery factor peor, digamos de 2.25 significaría que tiene el doble de drawdown (70K). Entonces le metemos a MERSI el doble de apalancamiento y con el mismo drawdown de 70K tendríamos el doble de ganancia.

Una vez completado el paso 1 (optimizar el sistema MERSI para commodities) vamos con el segundo paso que es añadir un filtro estacional. Como la estacionalidad se calcula sumando año tras año pues me he limitado a la media de 5 años. Si quisiéramos la de 15 años no nos quedaría histórico para pruebas.

El filtro estacional es el siguiente:

  • Si la media de 5 años de la misma fecha de hoy pero hace un año es MENOR que la media de 5 años de un mes después, y también MENOR que 2 meses después, y también menor que 3 meses después entonces estamos alcistas estacionalmente.
  • El filtro es simétrico para los cortos.

 

Aquí debajo podemos ver un caso de estacionalidad bajista válida. El marcador negro vertical es la misma fecha de hoy (30 octubre) pero de 2017. En rojo vemos la media de 5 años. Puesto que el valor de la media de 5 años correspondiente al momento mostrado por el marcador vertical es MAYOR que después de un mes, después de 2 meses, y después de 3 meses, entonces concluimos que la estacionalidad es BAJISTA.

Es importante decir aquí que no hay ninguna visita al “futuro” en hacer esto ya que estamos mirando valores de un indicador hace un año y comparándolos con hace 11 meses, 10 y 9 meses. Hay que tener cuidado al programarlo para no mirar la media de 5 años actual y compararla con la de dentro de un mes, etc ya que en ese caso sí que estaríamos incurriendo en un error de programación que mirase al futuro.

futuro crudo oil

 

Concluido el paso 2 vamos con el 3, la optimización del sistema MERSI con el filtro añadido de estacionalidad. En cuanto le doy a optimizar veo que todo mejora sustancialmente. Si ordeno los resultados por ganancia neta (debajo) puedo ver que hay un montón de resultados positivos. Esto ya es una pista de que el sistema es robusto por funcionar bien con una amplia variación de parámetros.

El filtro de tendencia es optimizable en el sentido de que no tiene que ser necesariamente un mes (20 barras), dos meses (40) y tres meses (60). Mantenemos la relación de 1,2,3 y podemos utilizar otro periodo, por ejemplo 2 meses, 4 meses y 6 meses.

backtest

 

La idea es que la estacionalidad sea consistente al menos en tres muestras más allá de la fecha actual. Debajo muestro que el sistema ha mejorado tanto que de 237 resultados de optimización solo ha salido negativo en 7; es decir, hay un 97% de backtest positivos, lo que nos confirma la robustez de este sistema tras añadirle el filtro.

La optimización ahora arroja los siguiente parámetros

  • Periodo RSI: 9
  • Periodo media: 70
  • Días estacionales: 60

Es decir los días (de trading) a confirmar la estacionalidad serían 60, 120 y 180; es decir: 3 meses, 6 meses y 9 meses de calendario. Supongo que es lógico comprar un mercado que sabemos que dentro de 3, 6 y 9 meses suele estar más arriba en años anteriores.

optimizador

 

Y por fin vamos con los resultados finales. Una vez aplicados los parámetros óptimos anteriores las estadísticas que salen son las siguientes:

backtest

 

Como vemos todo ha mejorado. La ganancia es similar pero ahora con mucho menos drawdown, de solo 21K. Eso hace que el Recovery Factor suba hasta ser 8.3, casi el doble que sin filtro estacional. Ahora se hacen menos operaciones pero son más rentables. Eso se nota en la ganancia promedio por operación que ha subido mucho hasta ser mayor que 1000 dólares. La fiabilidad también ha mejorado. A la vista de estos resultados hay que concluir que la estacionalidad FUNCIONA!

 

resultados portfolio