
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 Expert Advisors 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 de sistemas de trading 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) 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 Analysis. 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 objetiva.
El espacio de optimización, el método de búsqueda y la función objetiva
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.

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:

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 objetiva explora ese espacio y selecciona los mejores candidatos.
Una mala función objetiva 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 objetiva que seleccionara las combinaciones que mayor beneficio han dado en la simulación. Una buena función objetiva 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 objetiva. 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 objetiva 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 objetiva. 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.
AlfaTrader dispone de un analizador de optimizaciones para realizar WFA. En la siguiente imagen vemos la superficie a explorar para optimizar el TakeProfit y el StopLoss de un Expert Advisor… En el próximo artículo explicaremos cómo sacar el máximo partido de un Expert Advisor con AlfaTrader.


Un artículo estupendo y una herramienta, el Alfatrader, muy útil.
A la hora de analizar las optimizaciones con Alfatrader se pueden filtrar las exploraciones por el “NºOperaciones mayor que”, ¿sería posible añadir también la condición “NºOperaciones menor que”?, es con el fin de poder filtrar mejor en los entornos del trading perfecto.
Muchas gracias.
Gracias por tu comentario Miguel.
El optimizador de AlfaTrader se va a ampliar en breve y cambiará totalmente su mecánica de funcionamiento, de todas formas tendremos en cuenta tu sugerencia.
Saludos.
Muchas gracias por atender mi sugerencia, ya estoy contando los días para que saquéis esa nueva versión del Alfatrader, que sin duda pondrá el listón un poco más alto. Un saludo.
Yo más que ir a un análisis de reoptimización y testeo (walk-forward) donde la función de optimización es de capital importancia y el coportamineto futuro del set obtenido para le próximo periodo puede estar poco contrastado, iría a realizar un análisis de robustez como primer filtro importante, es decir por ejemplo, analizamos en un espacio temporal grande (pongamos mínimo de un año), un set de parámetros de un sistema dado, contabilizando cuantos meses ha terminado en positivo (en principio da igual cuánto en positivo), a nosotros nos interesa utilizar en la cuenta live uno de los set que más periodos se ha mantenido en positivo (de entre todos los set reducidos por el método de búsqueda).
Un saludo.
Uno de los grandes problemas cuando optimizamos es sacar resultados sobreoptimizados, todos los casos de sobreoptimización dan los mayores valores de Profit Factor, en la actualidad se pueden filtrar las optimizaciones por “Factor de beneficio mayor que”, ¿seria posible añadir una condición que filtrara los resultados de optimización por “Factor de beneficio menor que”?.
Gracias.