Optimización y Evaluación de Sistemas: Walk Fordward.

El método del Walk Forward Analysis diseñado por Robert Pardo es un sistema completo de análisis de sistemas

 

Cada mercado tiene su propia forma de comportarse, en ellos uno de los rasgos fundamentales es la capacidad de evolución mediante el cambio y la adaptación a la nueva información y a las acciones de sus participantes. Para conseguir un rendimiento óptimo de nuestras estrategias de trading es fundamental poder adaptar correctamente nuestros sistemas automáticos a este cambio continuo de los mercados.

La mayoría de las plataformas de trading que permiten diseñar sistemas automáticos incorporan algún tipo de optimizador más o menos avanzado. El optimizador idealmente obtendría de cada sistema, seleccionando la mejor de una serie de pruebas históricas, uno o varios conjuntos de parámetros óptimos con los que el sistema se desarrollaría al máximo de su potencial en cada uno de los mercados. Sin embargo es muy fácil sobreoptimizar, es decir, optimizar erroneamente un sistema, obteniendo resultados espectaculares en la simulación y desastrosos en la operativa real.

En su libro The Evaluation and Optimization of Trading Strategies 2nd ed, Robert Pardo presidente de Pardo Capital Limited (uno de los mejores 30 CTA según el ranking Barclay Hedge http://www.pardocapital.com/docs/pardo_capital_2010_year_Ranking.pdf) explica detalladamente el proceso completo de diseño de sistemas de trading.

Especialmente interesante es su método de optimización y evaluación de sistemas de trading denominado Walk Forward Analiysis. En este artículo haremos una breve introducción a la optimización de sistemas mediante el método WFA de Pardo.

¿Qué es la optimización de sistemas automáticos de trading?

La optimización es el proceso mediante el cual obtenemos el mejor conjunto de parámetros para un sistema que nos permiten alcanzar y mantener los picos de rendimiento en la operativa real. Es un error común creer que la estrategia que muestra los mayores beneficios en la optimización será la que mejor rendimiento dé en operativa real.

La correcta optimización no se centra en el rendimiento obtenido en la simulación sino en otros valores que miden su robustez.

Un sistema es robusto por definición si resiste a los cambios de condiciones de mercado y produce beneficios en tiempo real de forma consistente con los producidos en la simulación. Solo así, analizando la robustez del sistema, obtendremos los parámetros óptimos que permitirán desarrollar su máximo potencial en la operativa real.

El proceso de optimización se compone de tres elementos principales: el espacio de optimización, la búsqueda en el espacio de optimización y la función objetivo.

El espacio de optimización, el método de búsqueda y la función objetivo. Supongamos que nuestro sistema automático es un socorrido cruce de medias. Como sabemos esta estrategia consiste en abrir una posición larga cada vez que la media rápida cruza por encima de la media lenta, la posición se cierra al cruce inverso que se utiliza a su vez como señal de entrada en cortos. Los parámetros determinantes son por tanto los periodos de las medias rápida y lenta, en el momento de ejecutar este sistema debemos elegir qué parámetros utilizar.

Imagen 1: Optimizando los parámetros MATrendPeriod y TakeProfit de un sistema de trading. Las columnas Iniciar, Paso y Detener determinan el tamaño del espacio de optimización.

Podemos hacer muchas simulaciones modificando los valores de cada parámetro. Por ejemplo 10 para la lenta y 30 para la rápida, 15 y 20, 50 y 200, etc. En cada simulación obtendremos distintos resultados en función de los parámetros elegidos. El espacio de optimización es el conjunto de todas los posibles combinaciones de parámetros con los que una simulación histórica puede ser ejecutada.

Haciendo simulaciones con determinados rangos de parámetros podemos obtener una tabla de rendimiento como ésta:

Imagen 2: Tabla de Rendimiento

Donde se muestra el resultado de las combinaciones de la media rápida desde 5 hasta 21 en pasos de 2 y de la media lenta desde 10 hasta 120 en pasos de 10. El color más oscuro indica un mayor beneficio de la combinación de parámetros.
Estos espacios de optimización crecen muy rápidamente conforme más dimensiones (parámetros a optimizar) añadimos. El número de simulaciones a realizar (y por tanto el tiempo necesario para obtener la optimización) se dispara al añadir un tercer o cuarto parámetro y es habitual diseñar sistemas de trading con 10 o 20 parámetros. Para evitar este problema existe una solución de compromiso entre el detalle y la velocidad del análisis llamada método de búsqueda.

Los métodos de búsqueda son algoritmos que seleccionan qué combinaciones deben ser probadas reduciendo enormemente la cantidad de simulaciones necesarias al optimizar. Hay métodos como el Hill Climbing relativamente sencillos y otros mucho más avanzados como los algoritmos genéticos o la optimización basada en enjambres de partículas. La literatura al respecto es enorme y en la red se puede encontrar fácilmente mucha información sobre métodos de búsqueda.

Normalmente las plataformas de trading que permiten optimizar sistemas incorporan algún método de búsqueda avanzado. Lo importante es que al aplicar un método de búsqueda avanzado podremos reducir considerablemente el número de simulaciones a ejecutar disminuyendo el tiempo de optimización.

Si el método de búsqueda descubre el espacio de optimización mostrando los resultados de todas las combinaciones, la función objetivo explora ese espacio y selecciona los mejores candidatos.

Una mala función objetivo puede descartar un buen sistema de trading, o peor aún, validar uno malo. Podríamos caer en el error de diseñar una función objetivo que seleccionara las combinaciones que mayor beneficio han dado en la simulación. Una buena función objetivo debe seleccionar las que hacen más robusta la estrategia. Por ejemplo si utilizamos como criterio de selección maximizar el beneficio podríamos seleccionar simulaciones que tuviesen drawdowns inaceptables, o que hayan obtenido más del 50% de su beneficio en una única gran operación, etc.

A la hora de diseñar una función de objetivo puede descartar un buen sistema de trading, o peor aún, validar uno malo. Podríamos caer en el error de diseñar una función objetivo que seleccionara las combinaciones que mayor beneficio han dado en la simulación. Una buena función objetivo debe seleccionar las que hacen más robusta la estrategia. Por ejemplo si utilizamos como criterio de selección maximizar el beneficio podríamos seleccionar simulaciones que tuviesen drawdowns inaceptables, o que hayan obtenido más del 50% de su beneficio en una única gran operación, etc.

A la hora de diseñar una función de objetivo hay que buscar aquellas características que hacen a un sistema de trading robusto. Éstas son:

  • Balance entre beneficios en compra y en venta.
  • Agrupaciones de parámetros válidos en la optimización.
  • Comportamiento aceptable en una amplia variedad de mercados.
  • Riesgo aceptable.
  • Cantidad de trades estadísticamente significativa.
  • Trayectoria ascendente y continuada de la curva de equidad.

Hay muchas formas de diseñar una función objetivo. Una de ellas, particularmente sencilla y eficiente utiliza la correlación entre la curva de equidad y el beneficio perfecto. Esta función compara el rendimiento de la simulación con el beneficio potencial del mercado. El beneficio perfecto es una medida teórica del potencial del mercado, es el beneficio total producido comprando en cada mínimo y vendiendo en cada máximo, evidentemente es imposible en la práctica y de ahí su nombre.

Una correlación positiva entre ambas nos indicará que mientras el beneficio perfecto está incrementando, la estrategia está explotando ese incremento. Cuanto más se aproxime la correlación a 1 más efectivamente la estrategia estará capturando la oportunidad en el mercado. Mientras el mercado esté plano la curva de equidad debería mantenerse también más o menos plana, a medida que aumenta la volatilidad y el mercado comienza a hacer recorridos (aumentando el beneficio perfecto) la correlación mostrará si la estrategia es capaz de capturar el movimiento en su favor.

En resumen, esta función objetivo detecta las estrategias que obtienen beneficios conjuntamente con el crecimiento del beneficio perfecto y no pierden mucho cuando el crecimiento del beneficio perfecto se detiene. Por lo tanto es un excelente candidato para la evaluación.
De esta forma ya tenemos definidos el espacio de optimización, la búsqueda en el espacio de optimización y la función objetivo. Estos son los tres elementos que componen una optimización simple. Utilizaremos las optimizaciones simples como elementos de un método mucho más eficiente y completo para analizar y optimizar un sistema automático, el Walk Forward Analysis.

El método del Walk Forward Analysis

Este método diseñado por Robert Pardo es un sistema completo de análisis de sistemas que responde a las siguientes preguntas sobre nuestra estrategia de trading:

• ¿Es robusta? ¿Hará dinero en trading real?
• ¿Qué tasa de rendimientos se debe esperar?
• ¿Cómo afectarán los cambios de mercado como la tendencia, volatilidad y liquidez a la estrategia?
• ¿Cuales son los parámetros que producirán el máximo beneficio con mínimo riesgo?

Imagen 3: Un posible resultado de optimizar una estrategia con dos parámetros. El eje vertical mide el rendimiento de las pruebas. Aquí es donde se aplica la función objetivo seleccionando los parámetros que hacen más robusta a la estrategia.

Una prueba de walk-forward consiste en dos pasos. El primer paso es una optimización normal en la cual se explora el espacio de parámetros para posteriormente seleccionar el mejor conjunto de ellos mediante la función objetivo que previamente hemos diseñado.

Es el segundo paso el que distingue el método. En este paso el rendimiento del conjunto de parámetros es evaluado en una muestra adicional y adyacente de datos de precios, es decir, se realiza una simulación para obtener una medida del rendimiento de la postoptimización.

Por ejemplo optimizamos la estrategia en una ventana de tiempo de tres meses y hacemos una simulación sobre una ventana de tiempo adyacente y menor (aproximadamente del 33% del tamaño de la ventana principal, un mes).

Imagen 4: Esquema de una prueba walk-forward. Cada bloque representa un periodo de tiempo determinado (por ejemplo una semana, un mes o un año).

Observemos que los datos de precios de esta última ventana de simulación no se han utilizado para optimizar el sistema, son datos que están fuera de la optimización.

A continuación desplazamos las ventanas temporales y repetimos el proceso. Sistemáticamente iremos obteniendo una serie de simulaciones cuyos parámetros han sido elegidos sin optimizar sobre estos datos. Al hacerlo de esta forma el conjunto de parámetros óptimos obtenidos con un WFA están mejor adaptados a las condiciones actuales del mercado, es por esto que el conjunto de parámetros viene con fecha de expiración y conviene reoptimizar periódicamente.

Imagen 5. Robert Pardo, presidente de Pardo Capital Limited.
Imagen 6: Arriba los resultados mensuales de un backtesting sin optimizar. Abajo el mismo sistema optimizado. Se aprecia una mejora notable.

Al final del proceso de optimización mediante el Walk Forward Analysis obtendremos un perfil estadístico de nuestra estrategia que nos indica si merece la pena hacer trading con este sistema o no, y en caso afirmativo nos proporcionará los parámetros que permiten a la estrategia desarrollar todo su potencial.

A la hora de evaluar y optimizar un sistema hay muchos elementos importantes: la calidad de los datos utilizados, el método de búsqueda y la función objetivo, el tipo de perfil estadístico que genera el análisis, la prueba en múltiples mercados, etc.

Podemos trabajar con todos estos elementos creando variaciones y nuevas métricas hasta desarrollar nuestro propio método de análisis de sistemas de trading.

Realizar correctamente una optimización es un proceso complicado (a la vez que sobreoptimizar es muy sencillo). Sin embargo la evaluación y optimización de sistemas de trading bien utilizada es un elemento poderoso para el trader automático que conviene tener en la caja de herramientas.