Walk Forward. Optimiza correctamente tus sistemas para operar como un profesional

Realizar el proceso de desarrollo de un sistema de tranding correctamente es el único camino para poder crear modelos que en el trading real se comporten satisfactoriamente. Lo contrario supondrá estar ante un espejismo que no sólo te hará perder dinero, que también, sino que además dejará tu autoestima muy dañada. El Walk Forward Analysis es una herramienta muy poderosa para desarrollar un sistema de trading. Con ella podemos hacernos una idea aproximada de lo que podemos esperar del sistema en el que estamos trabajando cuando lo conectemos en real.

Debes saber una vez que tengas un sistema de trading o una cartera operando en real, si los resultados que estas consiguiendo están o no dentro de lo esperado, y si no es así, tener claro el momento en el que un sistema trading o cartera se desconecta. Las operaciones reales ejecutadas serán una información que periódicamente deberás contraponer con la del backtest para comprobar que tan parecidas son, o no. Concretamente debes comparar los trades reales con los obtenidos en el conjunto fuera de muestra (Out of Sample) que habrás debido dejar en del desarrollo de tu sistema. Si quieres hilar más fino, puedes comparar el resultado de la operativa real con los trades Out of Sample del Walk Forward Analysis, que si no sabes los que es, sigue leyendo porque trataré de explicarlo lo mejor posible.

Fases en el desarrollo de un sistema de trading

  • Preparación preliminar. Separación de los conjuntos In Sample (IS), Out of Sample (OOS), Test y comprobación de la serie de precios utilizada.
  • Pruebas y optimización en el conjunto de entrenamiento In Sample (dentro de la muestra).
  • Validación en el conjunto Out of Sample de las pruebas realizadas en el In Sample.
  • Validación en el conjunto que dejaste como Test (sólo si la validación en el Out of Sample ha sido satisfactoria).
  • Análisis Walk Forward (WFA). Sólo si el modelo superó el Test.
  • Control del riesgo. Análisis de Montecarlo.

Preparación preliminar en el desarrollo de un sistema de trading

Básicamente es preparar y comprobar todo “el material” para del desarrollo de nuestro modelo. Los pasos son:

  • Preparación de los datos históricos: la calidad de los datos y el uso siempre de los mismos es crucial para crear un sistema de trading correctamente. Este punto da por sí mismo para otro artículo que por supuesto escribiré más adelante.
  • Separación de conjuntos In Sample, Ouf of Sample y Test: en el primero harás las pruebas y las optimizaciones, en el segundo validarás todo el trabajo realizado en el In Sample. El test será una parte de la serie de datos que no descubrirás hasta que no hayas terminado el trabajo. El objetivo es que una vez termines el sistema, estos datos serán la primera prueba de fuego importante que tiene que superar el sistema de trading ya que son datos que no han “visto” las reglas de la estrategia de trading en la que estás trabajando.
  • Comprobación de las reglas del sistema: debemos comprobar que el sistema hace exactamente lo que queremos que haga.
  • Examen del performance summary y equity de nuestro sistema: antes de seguir trabajando en nuestra idea, debemos tener claro que merece que así sea.

Optimización de las reglas del sistema de trading en el In Sample

En el punto anterior se indicó que debemos separar el histórico en tres conjuntos. Gráficamente sería como ves en la siguiente imagen: In sample desde 2011 hasta 2014, Out of Sample desde 2014 hasta 2017 y Test desde 2017 en adelante.

Conjuntos In Sample (dentro de muestra), Out of Sample (fuera de muestra) y Test para desarrollar un sistema algorítmico de trading.

En esta fase optimizas todos los parámetros que tiene el sistema, pero no todos a la vez y en cualquier orden. Cómo regla general, primero optimizaremos los parámetros de la idea base o premisa del sistema. Después los parámetros de los filtros uno a uno, es decir, si tienes dos filtros deberás anular uno para validar el otro y viceversa. Por último optimizarás las salidas del sistema (stop loss, profit y temporizador normalmente).

Los objetivos en este paso son:

  • Encontrar las combinación paramétricas estables (no la mejores) en cada una de las optimizaciones realizadas.
  • Comprobación de las robustez del sistema probándolo en otros time frames y activos.

Realizar la optimización en los sistemas de trading es un de los puntos críticos que, de hacerlo bien, nos permitirá localizar una combinación paramétrica robusta de todos los inputs del sistema. Tu objetivo en el proceso de optimización deberá ser que la operativa real se parezca lo máximo posible al backtest, concretamente al conjunto Out of Sample. En caso contrario, nos llevará directamente a la sobre-optimización (overfitting). La sobre-optimización ocurre cuando los parámetros elegidos a través de la optimización se adaptan perfectamente al pasado, pero son incapaces de hacerlo en el futuro, y por tanto, en el trading real tendremos un sistema perdedor con toda seguridad.

Un error recurrente entre los trades noveles, es dar por buenos los mejores parámetros resultantes de la optimización, que difícilmente se repetirán en el futuro. Además, es muy probable que esos parámetros se encuentren en una zona poco robusta, siendo la consecuencia que al mínimo cambio en el mercado cuando este operando en real es sistema se romperá.

Si en una optimización, no tienes una combinación paramétrica amplia y estable, no lo dudes, descarta el sistema, o como poco, reinicie el trabajo abordando la lógica desde otra óptica.

  • Optimización de los parámetros: Lo primero que debemos decidir es el rango de las optimizaciones que queremos realizar. Evidentemente, cuanto más amplio sea dicho rango, más iteraciones deberá hacer nuestra plataforma de trading. No conviene que los pasos en las optimizaciones sean muy pequeños, ya que si esa así, el número de iteraciones será mayor y también la posibilidad de sobre-optimizar.
  • Periodo de optimización: Definidos los parámetros a optimizar, el rango y los saltos en la optimización, debemos elegir el periodo en el que realizaremos la optimización, que denominamos conjunto de entrenamiento o In Sample, como ya hemos mencionado. Lo más importante en este paso es que el conjunto In Sample tenga el mayor tamaño de muestra posible (dependerá del sistema, pero a partir de 200 trades sería correcto). El conjunto de entrenamiento deberá recoger el mayor número de situaciones que puedan producirse en el futuro (mercado alcista y bajista, volatilidad alta y baja, diferentes grados de volatilidad y tendencia…). Sólo de esta manera podrás realizar una optimización fiable. Un sistema robusto debe ser capaz de adaptarse a todo tipo de mercados.
  • Ratio diana: Todas las plataformas tienen diferentes funciones objetivo para realizar las optimizaciones. Cada una de ellas tiene sus ventajas y sus inconvenientes, pero como criterio general, deberá incluir una medida de beneficio otra de riesgo. Por ejemplo, si optimizamos usando como función objetivo el net profit, estaremos obviando el draw down. Tres son algunas las funciones que mejor reúnen estas características: el Profit factor (PF) , el Tradestation index (TSI) y el System Quality Number (SQN).

No me extiendo más en el la optimización de un sistema porque será objeto de otro artículo, que bien lo merece dada su importancia.

Validación de las reglas del sistema de trading en el Out of Sample

Elegidas las combinaciones paramétricas estables o robustas en el conjunto In Sample, las validarás en el conjunto Out of Sample. Este segungo conjunto de datos no habrá sido utilizado para optimizar y por tanto estaríamos simulando el comportamiento del sistema en la operativa real, no sin muchas limitaciones.

Esta prueba se denomina Walk Forward simple ya que sólo hemos realizado dos divisiones en la serie de datos. No obstante, lo recomendable es que si el modelo no supera esta prueba se deseche. Además recuerda que te has guardado un “as en la manga” porque tienes todavía datos que todavía no se han utilizado ni para optimizar ni para validar.

Validación de las reglas del sistema de trading en el Test

En este paso muchos de tus sistemas de trading que se las prometían muy felices, caerán y deberás descartar el trabajo realizado. Ten en cuenta que aunque en el Out of Sample no has realizado optimizaciones sí que inevitablemente se ha contaminado, porque los has utilizado muchas veces para validar. En cambio el Test son “datos vírgenes” que se puedem simular de una manera más fiable los movimientos del mercado en real, y lo más importante cómo se adapta las reglas de tu sistema a él. Recuerda siempre que lo que interesa es que el sistema funcione a futuro, no en el pasado. Es una obviedad, pero hay que tenerlo muy presente para evitar el autoengaño en los backtest.

Análisis de estabilidad en el Walk Forward simple

Será del Walk Forward simple de donde vamos a extraer las zonas robustas de todas las optimizaciones que hagamos, para después usarlas en WFA. El orden de las optimizaciones y por tanto de la búsqueda de las zonas robustas, tiene importancia y generalmente será el siguiente:

  1. Zona robusta de la lógica. Si no la tiene, descarta la lógica sin dudarlo.
  2. Zona robusta de filtros. Cuantos menos filtros y mas sencillos mejor. Si añades muchos filtros, la lógica es poco potente, y la estarás forzando para conseguir lo que quieres ver y no lo que el modelo realmente puede ofrecerte. En otras palabras, estarás sobre-optimizando con toda probabilidad.
  3. Stop loss. En mi experiencia, los stops loss por volatilidad funcionan mejor, claro tienen un coste y es que no sabes exactamente el dinero que puedes perder cuando el sistema falla. Pero piensa un momento: ¿tiene la misma validez un stop monetario fijo de 1000 dólares en el futuro E-mini del S&P 500 en año 2020 con una volatilidad desbocada debido al Coronavirus, que en situaciones de mercado en las que el VIX ha estado por debajo de 13 puntos? Evidentemente, añada el stop que añada, deberá buscar también la robustez de este.
  4. Profit target. Lo mencionado para el stop loss aplica para el take profit. La evidencia empírica me ha demostrado que son más adecuados los take profit de beneficios por volatilidad.
  5. Temporizador. Si el sistema tiene un contador de barras por ejemplo para salir de las posiciones habrá que localizar la zona estable.

Son muy útiles tanto los mapas de calor cómo los gráficos 3D para localizar los zonas estables o robustas en el proceso de optimización. Por ejemplo en el siguiente imagen puedes ver un gráfico 3D extraído de MultiCharts.

Análisis Walk Forward (WFA)

Utilizando la amplitud de la zona estable de todas las optimizaciones realizadas en el conjunto In Sample, realizamos una optimización usando el Walk Forward Optimizer. En este caso, serán varias ventanas en las que se optimizarán y validarán las reglas del sistema.
Además de ser una prueba de estrés muy exigente para tu sistema de trading, también nos permitirá saber que juego de parámetros debemos usar y por cuanto tiempo. Por que sí, los sistemas de trading hay que reoptimizarlos ya que los mercados cambian y hay que adaptar los parámetros. Claro, es vital que todas las optimizaciones realizadas en el In Sample tengan una amplia zona robusta, para que si los parámetros tienes que modificarlos, los resultados varíen poco o nada.

¿Cómo funciona el Walk Forwar Analysis?

La mecánica es la siguiente: se utilizan por ejemplo los años 2005-2007 como ventana IS y se optimizan los parámetros (de la lógica, filtros, stop…), para después validarlos en el año 2008. A continuación, se repite el proceso desplazando un año la ventana IS, de tal manera que ahora se realiza la optimización en los años 2006-2008 y se validan en el año 2009 que será en este caso el OS. Se repite todo el proceso hasta realizarlo en todo el histórico de datos.

El tamaño de las ventanas tiene importancia. Las regiones IS deberán ser lo suficientemente grandes para que la muestra de operaciones sea significativa (más de 30 operaciones por ventana). También es recomendable repetir el proceso modificando el tamaño de las ventanas IS-OS.

Los dos modelos de WFA son el de ventanas deslizantes y el anclado. Puedes ver a continuación dos ejemplos gráficos de cómo funcionan cada uno de ellos.

Walk Forward Analysis con ventanas deslizantes:

Walk Forward con ventanas deslizantes o por clusters para un sistema de trading.

Walk Forward Analysis anclado:

Walk forward anclado o anchored para un sistema de trading.

El WFO con ventanas deslizantes utiliza siempre datos más recientes para buscar los parámetros óptimos, y quizás, le permita adaptarse mejor a los cambios de mercado. El WFA anclado sin embargo va añadiendo histórico al IS para buscar los parámetros robustos y esto es probable que no le permita detectar correctamente los cambios de mercado.

En lógicas de alta cadencia operativa en y en activos volátiles como el S&P 500, normalmente será preferible utilizar ventanas más pequeñas (1-3 años IS y 6 meses – 1 año para OOS). Sin embargo, en lógicas de baja cadencia operativa y en activos con una tendencia persistente como granos y divisas, por ejemplo, las ventanas IS-OOS a utilizar deberán ser más grandes (3-6 años para IS y 1-3 años para OS).

Terminado el proceso, los resultados de todas las ventajas IS y OOS se consolidan para después compararlas. Idealmente, los resultados deben ser lo más parecidos posibles entre las ventanas IS y la de OOS. Para comparar los resultados IS con los de OOS, dos ratios son fundamentales.

El índice de eficiencia mide en porcentaje como de parecidos, o no, son los distintos cortes IS y OOS que se realizan en histórico. Se calcula dividiendo los resultados anualizados del IS por los del OOS. Se considera en el mundo profesional que un 60% en el índice de eficiencia es un buen valor.

El índice de rendimiento mide como de buenos son los resultados obtenidos respecto a lo máximo que podríamos conseguir en ese periodo. Se calcula dividendo el beneficio acumulado en el OOS entre el beneficio aculado en el OOS eligiendo los mejores parámetros (no lo más robustos). Mide la eficacia en la selección de parámetros.

¿Cómo saber si un sistema de trading es robusto?

Robert Pardo, creador de la herramienta Walk Forward Analisys en su libro “The evaluation and optimization of trading strategies” responde a cuatro preguntas que son esenciales antes de empezar a operar en real con una estrategia de trading, que son las siguientes:

  • ¿Es robusta nuestra estrategia? Una estrategia de trading es robusta, si en condiciones de mercado cambiantes produce ganancias similares a las resultantes en el backtest. El objetivo principal del Walk Forward es determinar si el rendimiento del modelo en la simulación es realista y no una ilusión que nunca generará beneficios en la operativa real.
  • ¿Qué beneficio podemos esperar de nuestro sistema en la operativa real? Los resultados consolidados de todas las ventanas OOS del WFA será la información que debemos tomar para comparar la operativa real con la simulada. La información OOS del WFA, es lo más parecido a la realidad que podemos tener. Una ratio de eficiencia < 50% será indicativo que muy probablemente el sistema sea poco robusto y/o esté sobre-optimizado.
  • ¿Cómo afectarán los recurrentes cambios de volatilidad, tendencia, liquidez… que se producen en los mercados al comportamiento del sistema en la operativa real? Si el proceso WFA se realizó correctamente deberá haberse realizado la simulación en un histórico lo suficientemente grande que incluya todo tipo de mercados (alcistas, bajistas, volátiles…). De tal manera, que el modelo tendrá cierta “memoria” de todo tipo de mercados que podrá utilizar a futuro para adaptarse a los frecuentes cambios que se producen en los mercados.
  • ¿Qué parámetros son los correctos para usar en el trading real? El WFA es el método más efectivo para identificar el conjunto de parámetros correctos para que el modelo genere beneficios en el trading real. También adaptará los parámetros al tipo de mercado en el que esté operando. La longitud de las ventanas IS-OS en el WFA, se convierten en parte de la estructura misma de la estrategia de trading. En otras palabras, parte de la información proporcionada por un WFA es la longitud óptima del historial de precios que se utilizará durante el proceso de re-optimización para identificar el conjunto de parámetros que probablemente proporcione un rendimiento óptimo de la operativa en tiempo real. El WFA proporciona la vida útil del conjunto de parámetros en forma de la longitud de la ventana deslizante del IS-OS. Si, por ejemplo, las ventanas son de 3 años IS y 1 año OS, cada año deberemos re-optimizar los parámetros. Puede ocurrir, de hecho, es frecuente, que los parámetros no cambien prácticamente, esto sólo indicará que en eso año no hubo cambio en las condiciones del mercado. Veamos primero como se realiza un walk forward simple, para poder compararlo con el Walk forward Analysis con ventanas deslizantes.

Walk Forward Analysis manual

Si hacemos el WFA de manera “manual” (que es un trabajo de chinos), deberemos ir optimizando en nuestra plataforma de trading los distintos cortes IS y validarlos en los elegidos como OOS. Deberemos ir recogiendo los datos para poder compararlos. Un ejemplo lo puedes ver en la siguiente imagen.

Ejemplo de Walk Forward Analysis manual de un sistema de trading algorítmico hecho con Excel

A continuación, establecemos unos criterios para dar como buena la comparativa entre el IS y OS. Un ejemplo de estos criterios puede ser:

  • Net Profit acumulado OSS / Net Profit acumulado IS > 60%.
  • Draw Down OOS / Draw Down IS < 150%.
  • Función objetivo OOS / función objetivo IS > 50%.
  • Ratio de eficiencia (Beneficio anualizado OOS / Beneficio anualizado IS) > 60%.
  • Índice de rendimiento (Net profit acumulado OOS / Net profit acumulado top parametres OS) > 60%.
Ratios de validación del Walk Forward Analysis hecho manualmente con Excel para un sistema algorítmico de trading.

Sin duda, el análisis Walk Forward es un trabajo que sí o sí debes hacer en tus sistemas de trading. En este artículo he tratado de introducir primero las fases del desarrollo de un sistema y después explicar cómo hacer el Walk Forward Analyis. Espero haberlo conseguido. Como “premio” por llegar la final del artículo te invito a que te descargues totalmente un PDF en el que he tratado de resumir las partes más importantes del trading con sistemas algorítmicos. También se compara el trading discrecional con el automatizado. Pulsa en el botón de más abajo para descargarlo.

Te espero por más artículos. Agradeceré cualquier comentario (incluso críticas). Por llegar al final del artículo te regalo un Ebook de introducción al trading cuantitativo. Pulsa en el botón y descárgalo.

Deja un comentario

Artículo añadido al carrito.
0 artículos - 0,00