Acceder

Walk-Forward Analysis para un sistema de trading


Cómo realizar un análisis de walk-forward para un sistema de trading: Descripción del sistema
Sistema de trading del tipo Volatility Breakout continuo long-therm (largo plazo) que compra en una ruptura del máximo de los máximos de un período concreto de barras, y se posiciona en corto en una ruptura del mínimo de los mínimos de un período concreto de barras.
Gráfico en TradeStation del futuro del platino en barras diarias
 
Cargamos el mismo sistema en la plataforma de QM Portfolio Builder. Podemos observar que las operaciones coinciden.
Gráfico de QM Portfolio Builder del futuro del platino
 
Descripción y código del Indicador en TradeStation (Donchian Channel):
Indicador que representa 3 bandas:
  • myUpper: la banda del máximo de los máximos de dos períodos
  • myLower: la banda del mínimo de los mínimos de dos períodos
  • myMid: la banda media.
El código en TradeStation es el siguiente:
inputs:
	periodoLargos ( 2 ),
	periodoCortos ( 2 );

vars: 
	myMid ( 0 ),
	myUpper ( 0 ),
	myLower ( 0 );


myUpper = highest(H,periodoLargos)[1];
myLower = Lowest(L,periodoCortos)[1];

plot1(myMid,"Mid");
plot2(myUpper,"Upper");
plot3(myLower,"Lower");
 
El código del sistema de trading algorítmico en TradeStation es el siguiente:
inputs: 
perDonLargos ( 20 ), 
perDonCortos ( 20 );

buy next bar at Highest(H,perDonLargos)+ 1 point stop;

sellshort next bar at lowest(L,perDonCortos)-1 point stop;
El código de la estrategia de trading traducido el lenguaje de programación de QM Portfolio Builder es:
Sub Volatility Breakout(perDonLargos, perDonCortos)

	If BarNumber=FirstBar Then
		'perDonLargos = 20
		'perDonCortos = 20
	End If

	Buy("", 1, Highest(H,perDonLargos)+ 1*GetActiveMinMove(), Stop, Day)
	Sell("", 1, lowest(L,perDonCortos)-1*GetActiveMinMove(), Stop, Day)
End Sub
 
Optimización de la estrategia de trading en Tradestation
 
Se hacen las siguientes particiones del histórico para realizar la optimización de la estrategia de trading.
  • Período dentro de muestra (conjunto de entrenamiento): 01/01/2007 a 01/01/2017.
  • Período fuera de muestra (conjunto de validación): 01/01/2017 a 17/01/2020.
Los parámetros seleccionados se eligen para el perDonLargos (4), y para el perDonCortos (11) dentro de muestra.  Estos parámetros son seleccionados dentro de la zona robusta que se puede ver en los gráficos que 3D que se exponen a continuación. Las métricas elegidas para el cálculo son: beneficio neto, profit factor y beneficio medio por operación.
Zona estable de la optimización del sistema de trading Donchian Channel
 
Resultados del backtest en QM Portfolio Builder del sistema de trading Volatility Breakout
Los resultados descontando comisiones y deliszamientos (25 dólares) de la optimización dentro de la muestra (IS) en el Walk forward simple una vez se ha elegido la zona robusta son:
Backtest en QM Portfolio Builder del sistema de trading Donchian Channel
 
Pasemos ahora a realizar la prueba Walk-Forward Analysis (WFA) con QM Portfolio Builder dejando un tamaño de la ventana In Sample (IS) de 750 barras (aproximadamente 3 años) y 250 como ventana Out of Sample (OS) (aproximadamente 1 año). En la imagen de más abajo puede ver el resumen del WFA en Excel, ya que QM Portfolio Builder permite exportar esta información de sus sistemas de trading de una manera muy sencilla.
De izquierda a derecha puede ver los periodos de entrenamiento (Training Star y Training End), los periodos de validación (Run Star y Run End), la función objetivo-utilizada (Criterion), los parámetros óptimos para cada ventana.  Resaltado en verde tiene los resultados de cada ventana in sample y en rojo puede ver los resultados out of sample de cada una de las ventanas.
Resultado del Walk-Forward Analysis para un sistema de trading basado en Donchian Channel
 
¿Qué conclusiones podemos sacar del Walk-Forward Analysis para un sistema de trading?
 
  • El parámetro perDonCortos es más estable ya que apenas cambia en todas las ventanas. El perDonLargos, aunque no sufre cambios drásticos, es cierto que si cambia más.
  • El sistema gana en 8 de 10 ventanas de Out of Sample. Está será la probabilidad que tenemos para que en el año en curso el sistema gane.
  • El sistema en el último corte Out of Sample ganó 10.695 dólares. Esto es importante ya que es interesante que sea capaz de ganar en los años más recientes.
  • El Draw down es estable en todas las ventanas OS, quizás con la excepción del corte número 4 donde llego a -16.020 dólares.
  • A pesar de que en las ventanas Out of Sample el resultado es satisfactorio, no es una buena noticia que la tendencia del beneficio neto en las ventanas IS sea claramente descendente. Recuerde, lo ideal es que las ventas In Sample y Out of Sample se parezcan lo máximo posible.
Si comparamos las curvas de capital de las ventanas dentro de la muestra y fuera de la muestra, vemos que tienen un comportamiento muy similar.
Curvas de capital In Sample y Out Sample del Walk-Forward Analysis para un sistema de trading con Donchian Channel
 
Con el objetivo de ser más rigurosos en el análisis, vamos a comparar los resultados IS y OS usando el índice de eficiencia. Primero definamos qué es.
El índice de eficiencia mide en porcentaje cómo de parecidos, o no, son las distintas ventanas IS y OS. Se calcula dividiendo los resultados anualizados del OS por los del IS. En el mundo profesional, se considera que un 50-60% en el índice de eficiencia es un buen valor, y por tanto, se podría considerar apto este sistema de trading para operativa en real según el Walk Forward Analysis.
Para comparar correctamente las ventanas IS-OS debemos conocer el resultado del beneficio anual en el IS. Recordemos que estamos utilizando 750 barras diarias en las ventanas de entrenamiento, que equivalen a 3 años aproximadamente, por tanto, cada ventana IS debemos dividirla por 3 para anualizar los resultados.
Por ejemplo, en la primera ventana IS que va desde el 1/2/2007 hasta 2/22/2010 el beneficio neto es 90.275, que dividido por 3 resulta 30.091. Si dividimos el resultado de la ventana OS del mismo periodo entre el resultado anualizado anterior, tenemos un índice de eficiencia de: 7.285/30.091 = 0.238 (23,8%). Este cálculo se repite para cada una de las ventanas, cuyo resultado puede ver destacado en azul en el gráfico.
Índice de Eficiencia del Walk Forward Analysis del sistema de trading Donchian Channel
 
Que en la última ventana aparezca un índice de eficiencia tan elevado (1854.6%) es debido q que el tamaño de la ventana Out of Sample es más pequeña (6 meses aproximadamente). Lo normal, es que si fuera como el resto de las ventanas, el índice de eficiencia tomara valores más reducidos.
Ya conocemos el índice de eficiencia de cada una de las ventanas IS-OS y también la media, pero lo realmente interesante es conocer el índice de eficiencia de todo el histórico. Para ello, sumamos el resultado de todos los años y los dividimos por 3 (tamaño de las ventanas IS) para poder compararlo con las ventanas OS. El resultado puede verlo a continuación.
Indice de eficiencia del Walk Forward Analysis del sistema Donchian Channel
 
Si queremos proyectar el resultado probable que obtendremos en el próximo año debemos dividir por 3 la última ventana OS que va desde 12/3/2014 hasta 2/6/2019 resultará 15.290/3 = 3.159 y multiplicar 62,3% (índice de eficiencia). El resultado probable para el periodo que va desde junio de 2019 hasta junio de 2020 es de 3.159 dólares.
 
Sistema de trading Volatility Breakout sobre una canasta de activos
 
Probemos ahora en QM Portfolio Builder la misma lógica sobre una canasta de activos: crudo, algodón, café, platino y bono.
Realizamos una Walk Forward simple y buscamos las zonas robustas de la optimización de la misma manera que hicimos con el platino, pero ahora con la cesta de 5 activos.
La zona robusta se resalta en un círculo verde y podemos comprobar que tanto en el beneficio neto, BMO y Profit factor es muy similar. La longitud de la zona robusta para realizar posteriormente el WFA son para perDonLargos (6-19) y para perDonCortos (20-40).
Walk-Forward en QM Portfolio Builder sobre canasta de activos del sistema de trading Donchian Channel
 
Elegimos en el Walk-Forward simple los parámetros perDonLargos = 14 y perDonCortos = 23. El resultado es el siguiente.
Backtest del sistema de trading Donchian Channel sobre una canasta de activos en QM Portfolio Builder
 
Pasamos ahora a realizar el WFA en QM Portfolio Builder de la cesta de activos usando la zona robusta. Las ventanas IS serán de 750 barras y las de OS de 250 respectivamente.
El resultado es el siguiente.
Walk-Forward Analysis para un sistema de trading Donchian Channel sobre una canasta de activos en QM Portfolio Builder
 
Vemos que gana en 10 de 16 ventanas de OS, pero los resultados a simple vista, y faltando calcular el índice de eficiencia, no parecen muy prometedores. Para asegurar que tan parecidos, o no, son las ventanas IS y OS en el WFA, calcularemos el índice de eficiencia de la misma manera que hicimos con el platino en el ejemplo anterior. Es decir, anualizaremos cada resultado del IS dividiendo por 3 para comparar cada venta IS con su correspondiente IS. Se excluye la última ventana OS por no corresponder a las 250 barras completas (1 año aproximadamente). Note que va desde 5/9/2019 hasta 1/17/2020.
Esta estrategia de trading para una cesta de productos no pasaría el WFA, ya que el índice de eficiencia es del 26,1%, menor al 50% que se recomienda como mínimo para considerar apto a este sistema para operar en real. El índice de eficiencia medio de todas las ventanas todavía es más bajo, -38,2%.
Índice de eficiencia del Walk-Forward Analysis sobre una canasta de activos
 
Aunque el índice de eficiencia no deja lugar a dudas, en el sentido de que esta estrategia de trading, tal y como está diseñada, no puede operarse en real en esta cesta de activos, puede ver abajo un gráfico en el que se compara el resultado del agregado de todas las ventanas de OS con el mismo número de operaciones de las ventanas IS del WFA. Aunque sistema consigue ganar 120.000 dólares, nada tiene que ver con lo que lo obtenido en el IS que alcanza el millón de dólares.
Equity de las ventanas in sample comparadas con las ventanas out of sample del Walk Forward Analysis en QM Portfolio Builder
 
¿Porqué recomendamos hace el Walk-Forward Analysis para un sistema de trading en QM Portfolio Builder?
 
Hay varias razones, pero destacamos tres:
  • Fue desarrollado por el creador original de este método de optimización, Robert Pardo.
  • La forma que tiene de gestionar los cortes en las ventanas in sample y out of sample es mucho más realista que en la mayoría de plataformas de trading.
  • QM Portfolio Builder es una plataforma diseñada originalmente para instituciones.
Uno de los mayores problemas con el desarrollo de sistemas de trading, es que muchos de ellos se ven muy bien en el backtest, pero no en la operativa real. Hay varias razones para esto. La más común es que el sistema no se basa en una premisa válida. Otras razones son:
  • Falta de robustez en el sistema debido a una selección de parámetros incorrecta. Un sistema se considera robusto si funciona bien en cualquier condición del mercado.
  • Reglas inconsistentes y/o pruebas inadecuadas del sistema en la utilización de los datos «fuera de muestra» y «dentro de muestra».
  • Consumo excesivo de grados de libertad añadiendo excesivas condiciones al sistema y/o usando pocos datos históricos en el desarrollo del modelo. Sin entrar en mayores precisiones, cuantos menos datos históricos utilice y más reglas tenga su modelo, menos grados de libertad le quedarán, y, por tanto, será más fácil que esté sobre-optimizado.
La herramienta más poderosa para tratar de simular cómo se comportaría un sistema de trading en el mercado real es el Walk forward Analysis (en adelante WFA) creado por Robert Pardo y que trataremos de explicar cómo funciona a lo largo de este artículo.
Tenemos dos tipos de Walk forward: el simple (optimización clásica) y el Walk forward con ventanas, que podrán ser deslizantes o ancladas (creado por Robert Pardo).
Walk-Forward simple
El análisis Walk-Forward simple consiste en hacer dos particiones del histórico objeto de estudio. Por ejemplo, dividimos el histórico de cualquier activo en dos partes como puede ver en la siguiente imagen:
  • Conjunto de entrenamiento (IS), que será el “banco de pruebas” donde probaremos la lógica, filtros, stops… de nuestro modelo. Que en el ejemplo va desde 2007 hasta 2016.
  • Conjunto de validación (OS), que funcionará como un mercado “real” simulado. El conjunto de validación deben ser datos que nunca hayan visto el sistema de trading antes.
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. Veremos más adelante con un ejemplo cómo hacerlo.
El orden de las optimizaciones tiene importancia y la búsqueda de las zonas robustas. Generalmente será el siguiente:
  1. Zona robusta de la lógica. Si no la tiene, descarte la lógica sin dudarlo.
  2. Zona robusta de filtros. Cuantos menos filtros y más sencillos mejor. Si añade muchos filtros, la lógica es poco potente, y la estará forzando para conseguir lo que usted quiere ver y no lo que el modelo realmente puede ofrecerle. En otras palabras, estará sobre-optimizando.
  3. Stop loss. La evidencia empírica me ha demostrado que 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 piense un momento: ¿tiene la misma validez un stop monetario fijo de 1000 dólares en el SP500 en año 2008 con una volatilidad desbocada, o 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. Take profit. Lo mencionado para el stop loss aplica también para el take profit. La evidencia empírica me ha demostrado que son más adecuados los take profit de beneficios por volatilidad.
En la siguiente imagen puede ver un mapa de calor y un gráfico 3D generados con Excel del resultado de una optimización usando el Walk forward simple. En este caso se ha utilizado el Profit factor para buscar la zona robusta, que como puede comprobar es muy estable.
El resultado de la optimización IS en QM Portfolio Builder es:
Walk-Forward Analysis (WFA)
¿Cómo funciona el WFA?
La mecánica es la siguiente: se cogen 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 es importante. Las regiones IS deberán ser lo suficientemente grandes para que la muestra de operaciones sea significativa (más de 50 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. Puede ver a continuación dos ejemplos gráficos de cómo funcionan cada uno de ellos.
  1. WFA con ventanas deslizantes.
2.  WFA anclado
Terminado el proceso, los resultados de todas las ventajas IS y OS se consolidan para después compararlas. Idealmente, los resultados deben ser lo más parecidos posibles entre las ventanas IS y la de OS. Para comparar los resultados IS con los de OS, dos ratios son fundamentales.
El índice de eficiencia que mide en porcentaje cómo de parecidos, o no, son las distintas ventanas IS y OS. Se calcula dividiendo los resultados anualizados del IS por los del OS. En el mundo profesional, se considera 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 OS con los parámetros más robustos, entre el beneficio aculado en el OS eligiendo los mejores parámetros (no lo más robustos). Mide la eficacia en la selección de parámetros.
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:
  1. ¿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.
  1. ¿Qué beneficio podemos esperar de nuestro sistema en la operativa real?
Los resultados consolidados de todas las ventanas OS del WFA será la información que debemos tomar para comparar la operativa real con la simulada. La información OS 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.
  1. ¿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.
  1. ¿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 ese año no hubo cambio en las condiciones del mercado.
Hemos comprobado en el Walk-Forward simple que de 1 a 10, ambos parámetros se comportan de manera muy estable. Utilizamos esa configuración como puede ver en Tradersstudio para realizar el WFA, como puede ver resaltado en azul. En el WFA cogemos todos los datos disponibles (resaltado en azul). También elegimos el tamaño de las ventanas y la función objetivo (resaltado en amarillo). El tamaño de las ventanas serán 750 barras como conjunto de entrenamiento (3 años aproximadamente por ser barras diarias) y 250 (1 año aproximadamente) como conjunto de validación.

Escrito por Quantified Models
¿Te ha gustado mi artículo?
Si quieres saber más y estar al día de mis reflexiones, suscríbete a mi blog y sé el primero en recibir las nuevas publicaciones en tu correo electrónico
Accede a Rankia
¡Sé el primero en comentar!

Definiciones de interés
Proveedor de soluciones innovadoras de trading algorítmico e inteligencia artificial. Aportamos toda nuestra experiencia en el diseño, desarrollo e implantación de soluciones algorítmicas y de inteligencia artificial para inversores de todo tipo. TELEGRAM: t.me/quantifiedmodelstrading CONTACTO: [email protected]