SERGI FOREX DAY 2015

CEO de Sersan Sistemas. Experto en Trading algorítmico con años de experiencia en el desarrollo, testeo, evaluación y especialmente en la gestión cuantitativa con sistemas.
Sergi Sánchez / sersansistemas.com

 

 

En el mundo del trading algorítmico, la optimización es un proceso crucial que consiste en ajustar los parámetros de una estrategia para maximizar su rendimiento en un conjunto de datos históricos. Sin embargo, aunque este proceso puede mejorar significativamente el rendimiento de una estrategia, también conlleva riesgos si no se gestiona adecuadamente. Uno de los peligros más comunes es el sobreajuste u «overfitting», donde la estrategia se ajusta demasiado bien a los datos históricos, lo que resulta en una pérdida de capacidad para generalizar en condiciones de mercado futuras.

La optimización en trading algorítmico no es simplemente una cuestión de ajustar parámetros de manera indiscriminada; se trata de un enfoque científico que requiere un equilibrio cuidadoso entre mejorar el rendimiento y preservar la robustez de la estrategia. La robustez se refiere a la capacidad de una estrategia para mantener su rendimiento bajo una variedad de condiciones de mercado, evitando ser demasiado sensible a cambios menores en los parámetros.

En este artículo, exploraremos cómo lograr este equilibrio en la optimización de estrategias de trading algorítmico. Discutiremos conceptos clave como la optimización secuencial, que permite ajustar parámetros en etapas para evitar el sobreajuste, y la importancia de identificar zonas de estabilidad en los parámetros optimizados mediante mapas de optimización. El objetivo es proporcionar a los traders avanzados herramientas prácticas y basadas en datos para optimizar sus estrategias sin comprometer su capacidad de adaptación a futuros cambios del mercado.

En última instancia, la robustez de una estrategia no se mide solo por su rendimiento pasado, sino por su capacidad para enfrentar el futuro con flexibilidad y consistencia, respaldada por una base cuantitativa sólida.

Conceptos Clave en la Optimización de Estrategias

La optimización de estrategias de trading algorítmico es un proceso que puede mejorar significativamente el rendimiento de un sistema, pero también es uno que requiere un enfoque meticuloso y bien fundamentado. A continuación, exploramos dos conceptos fundamentales en este proceso: la robustez y el sobreajuste.

Robustez: El Pilar de una Estrategia Duradera

La robustez de una estrategia se refiere a su capacidad para mantener un rendimiento estable y consistente bajo diferentes condiciones de mercado. Una estrategia robusta no es aquella que simplemente maximiza los beneficios en un periodo histórico específico, sino una que puede adaptarse a los cambios del mercado, soportar variaciones en las condiciones y seguir siendo rentable. Aunque existen herramientas para tratar de medir y buscar la robustez, como el Walk Forward Efficiency o las pruebas fuera de muestra, la realidad es que la robustez no puede garantizarse de manera absoluta durante la fase de desarrollo.

La verdadera prueba de robustez solo se revela en la operativa en real, donde las condiciones del mercado son impredecibles y donde una estrategia debe demostrar su capacidad para enfrentar esos desafíos. Por lo tanto, aunque podemos y debemos buscar la robustez en todas las fases del desarrollo de un sistema, la única certeza de que un sistema es realmente robusto se obtiene a través de su desempeño en el mercado real.

SOBRE OPTIMIZACIÓN U OVERFITTING: El Enemigo Silencioso

El sobreajuste ocurre cuando una estrategia se optimiza en exceso para ajustarse a los datos históricos, incorporando demasiados parámetros o ajustes específicos que maximizan el rendimiento en un periodo pasado, pero que no necesariamente son relevantes para el futuro. Este fenómeno resulta en un modelo que parece perfecto en Backtest, pero que falla cuando se enfrenta a nuevas condiciones de mercado que no coinciden exactamente con el periodo optimizado.

La sobre optimización es especialmente peligrosa porque puede ser difícil de detectar en las primeras fases de desarrollo de una estrategia. Un rendimiento impresionante en pruebas históricas puede ocultar una falta de generalización y de adaptación. Para evitar el sobreajuste, es crucial realizar pruebas fuera de muestra y evaluar la estrategia en diferentes escenarios de mercado.

Figura 1. Mapa

Zonas de Estabilidad: Identificando el Equilibrio

Una técnica eficaz para evitar el sobreajuste es la identificación de zonas de estabilidad en la optimización mediante los mapas de optimización. Estas zonas son rangos de parámetros donde la estrategia muestra un rendimiento consistentemente bueno, en lugar de un rendimiento máximo aislado. Al optimizar, el objetivo no debería ser encontrar el mejor resultado único, sino identificar un rango de resultados estables. Esto indica que la estrategia es menos sensible a pequeños cambios en los parámetros y, por tanto, es más probable que sea robusta.

Las zonas de estabilidad pueden detectarse al evaluar cómo varía el rendimiento de la estrategia cuando se realizan pequeños ajustes a los parámetros optimizados. Si el rendimiento sigue siendo positivo y relativamente constante, se puede concluir que la estrategia tiene una buena base y es menos propensa al sobreajuste.

Cómo Optimizar una Estrategia de Trading

La optimización de una estrategia de trading algorítmico es un proceso fundamental que debe realizarse con precisión y cuidado. Una optimización bien ejecutada no solo puede mejorar el rendimiento de una estrategia, sino que también puede ayudar a garantizar que sea robusta y capaz de enfrentar diversas condiciones de mercado. A continuación, se presentan los pasos clave para llevar a cabo una optimización eficaz, junto con las consideraciones más importantes en cada fase.

  1. Selección de una Muestra de Datos Adecuada

El primer paso en el proceso de optimización es seleccionar una muestra de datos que sea representativa del universo objetivo de la estrategia. Esto implica:

  • Incluir una variedad de regímenes de mercado: La muestra debe abarcar diferentes condiciones de mercado, como periodos alcistas, bajistas, con volatilidad creciente o decreciente, y eventos como gaps o cambios bruscos en la tendencia. Esto asegura que la estrategia no esté optimizada únicamente para un escenario específico, sino que pueda adaptarse a diversas situaciones.
  • Garantizar un número de trades estadísticamente significativo: El número de operaciones en la muestra debe ser lo suficientemente grande para proporcionar resultados estadísticamente fiables. Un criterio común es tener al menos 30-50 trades por restricción (un input es una restricción y cada regla o condición también), pero este número debe variar según los grados de libertad de la estrategia. Cuantos más grados de libertad (diferencia entre el número de trades y las restricciones o parámetros utilizados), mejor será el ajuste a una distribución “t de Student”.
  • Optimización clásica: Datos INS vs Datos OOS: Es crucial dividir los datos en muestras In-Sample (INS) y Out-of-Sample (OOS) para la optimización y validación, respectivamente. Generalmente, se recomienda utilizar entre el 70-80% de los datos para la optimización (INS) y el 20-30% restante para la validación (OOS). Aunque la prueba OOS es vital para la validación de la estrategia, tiene limitaciones, ya que podría no capturar toda la variabilidad de las condiciones del mercado. Por ello, aunque las pruebas OOS ofrecen validación adicional, la muestra INS tendrá siempre mayor significación estadística.
  1. Selección de Parámetros y Determinación de Intervalos

La selección de los parámetros adecuados y la definición de sus intervalos de optimización son cruciales para evitar el sobreajuste:

  • Evitar la complejidad excesiva: Demasiados parámetros pueden conducir al sobreajuste. Es recomendable centrarse en los parámetros que realmente dirigen el comportamiento del modelo, y evitar la optimización excesiva de elementos como los niveles de stop-loss y take profit. Estos pueden ajustarse más eficazmente en función de la volatilidad o el precio, usando porcentajes en lugar de valores absolutos.
  • Definir rangos de optimización coherentes y razonables: Los rangos seleccionados deben tener sentido desde una perspectiva de mercado. Por ejemplo, optimizar una media móvil corta y una larga dentro del mismo rango amplio (como de 1 a 200) es incoherente y puede llevar a resultados engañosos. Además, es importante elegir intervalos que sean razonables y evitar optimizaciones demasiado finas que carezcan de relevancia práctica.
  • Uso de incrementos porcentuales: Siempre que sea posible, es recomendable utilizar incrementos porcentuales en lugar de incrementos lineales. Esto puede lograrse mediante el uso de código específico que permita aplicar incrementos que reflejen mejor la naturaleza escalable de los mercados.
  1. Selección de Funciones Objetivo

La función objetivo es una pieza central en el proceso de optimización, ya que define cómo se mide y clasifica la calidad de una estrategia:

  • Definición de la función objetivo: No es simplemente una métrica; es el criterio a través del cual se evalúa la eficacia de una estrategia de trading. La función objetivo debe ser seleccionada en función de la capacidad de la estrategia para predecir el éxito en operaciones futuras en tiempo real. Una de las más utilizadas en el sector es Sharpe, piedra angular de la teoría moderna de carteras (1966) Personalmente nos gusta más Sortino, piedra angular de la teoría postmoderna de carteras (1981) De todas formas, suele haber bastante correlación entre la mayoría de ratios de retorno riesgo. En TradeStation, por ejemplo, solemos usar TSI (TradeStation Index) o PPC (Profit Perfect Correlation) En otras plataformas puedes encontrar SQN (en su versión original no nos gusta demasiado y solemos corregir el denominador) o UPN que son también ratios que nos gustan mucho.
  • Elección del mejor estimador del riesgo: Es esencial distinguir entre volatilidad y riesgo. Aunque la volatilidad (desviación estándar) es una medida común, no siempre refleja adecuadamente el riesgo de pérdida real. La función objetivo debe considerar medidas alternativas de riesgo, como la pérdida máxima o la pérdida promedio, que proporcionan una visión más completa y realista del riesgo involucrado.
  • Evitar confusiones entre volatilidad y riesgo: Aunque la volatilidad suele asociarse al riesgo, es importante advertir que una estrategia con baja volatilidad no es necesariamente de bajo riesgo. Estrategias que parecen seguras pueden estar expuestas a riesgos ocultos, como las estrategias de venta de opciones fuera del dinero, que tienen un riesgo significativo de eventos adversos o una martingala que mientras no se “rompa” tendrá unos datos y curva casi perfecta que tendrá muy baja volatilidad.
  1. Directrices para la Evaluación del Proceso de Optimización (Protocolo)

Un protocolo de optimización bien definido es crucial para garantizar que el proceso sea riguroso y reproducible:

  • Optimización más allá de la selección de parámetros: La optimización no solo debe utilizarse para seleccionar los mejores inputs para operar, sino también como una herramienta para analizar datos y comprender mejor el mercado. A través de perfiles de optimización y del Walk Forward Analysis, es posible medir la robustez de un sistema.
  • Evaluación con datos distintos: Es fundamental evaluar la estrategia con datos que no se utilizaron durante el backtest. Aunque la muestra OOS es vital, también podría estar sobre optimizada. Hay varios métodos para reducir el riesgo de sobreajuste, algunos los estamos viendo en este artículo. Colocar el periodo OOS delante y detrás del periodo INS (en optimizaciones distintas) y compararlos, puede ser otro de esos métodos para obtener una validación más robusta antes de proceder al Walk Forward Optimization (WFO).
  • Definir el espacio de trabajo y los procedimientos: Antes de iniciar la optimización, es fundamental tener bien definidos los aspectos técnicos, como el gráfico, el timeframe, el horario de mercado, el tipo de sistema, y su configuración. Esto debe documentarse detalladamente en un protocolo que abarque tanto la optimización general como los aspectos específicos de cada estrategia.
  • Documentar y archivar el proceso: Cada optimización debe ser registrada y archivada de manera organizada, con un sistema de nomenclatura claro y coherente. Esto permite revisitar y analizar los resultados en el futuro, lo que es especialmente útil cuando se utilizan diferentes timeframes o se optimizan múltiples símbolos.
  • Slippage y costes operativos: Es crucial incluir en el proceso de optimización los costes de operación reales, como el slippage (deslizamiento) y los corretajes. Ignorar estos costes puede llevar a una optimización irreal y no reproducible en condiciones de mercado reales.

Figura 2. Mapa

Metodologías para Evitar el Sobreajuste

La optimización de estrategias de trading algorítmico puede ser una herramienta poderosa, pero también presenta riesgos significativos si no se maneja con cuidado. A continuación, se detallan varias metodologías clave para evitar el sobreajuste y asegurar que la estrategia sea robusta y efectiva en condiciones de mercado reales.

Optimización Secuencial: Un Enfoque por Etapas

Una de las metodologías más efectivas para evitar el sobreajuste es la optimización secuencial. Este enfoque implica optimizar los parámetros en etapas o secuencias, en lugar de hacerlo simultáneamente:

  • Primero optimizar los parámetros de entrada: Ajustar parámetros como medias móviles o indicadores de tendencia en intervalos razonables y coherentes.
  • Luego optimizar los parámetros de salida: Ajustar los niveles de stop-loss y take profit para adaptarse a la volatilidad reciente y al comportamiento del mercado.
  • Validación con datos OOS: Es crucial usar un enfoque de datos fuera de muestra para validar la estrategia optimizada, asegurando que los resultados no se deban al sobreajuste en los datos históricos utilizados para la optimización.

Forward Testing y Optimización Walk-Forward

El Forward Testing es otra técnica importante, que implica la prueba de la estrategia con datos de mercado no vistos durante el backtest o incluso con datos en tiempo real. Esta técnica ayuda a validar la estrategia en condiciones de mercado actuales y garantizar que sea realmente robusta.

El Walk Forward Analysis (WFA), por otro lado, es un proceso que optimiza la estrategia en periodos históricos y luego aplica los mejores parámetros a periodos subsiguientes no optimizados. Esto simula cómo se utilizaría la estrategia en tiempo real y proporciona una validación más cercana a las condiciones reales de mercado.

  • Clúster Walk Forward: Si se realiza correctamente, el WFA puede proporcionar una medida objetiva de la robustez de la estrategia, especialmente cuando pasa el análisis de clústeres de Walk Forward, que es una prueba de estrés clave para la validación de estrategias.

Caso Práctico: Optimización Secuencial de una Estrategia de Trading Algorítmico

Este caso práctico de ejemplo se ilustra el proceso completo de optimización secuencial de una estrategia de trading algorítmico basada en un cruce de medias móviles con un trailing stop dinámico. El objetivo no es elegir unos parámetros específicos, sino mostrar cómo se lleva a cabo una optimización secuencial efectiva, utilizando herramientas y técnicas que fomentan la robustez y estabilidad del sistema.

Descripción de la Estrategia

La estrategia emplea un enfoque clásico de cruce de medias móviles para generar señales de compra y venta operando solo en el lado largo, combinada con un trailing stop basado en la volatilidad del mercado, medido a través del Average True Range (ATR).

  • Entrada: La estrategia genera una señal de compra cuando una media móvil exponencial (EMA) de corto plazo cruza por encima de una media móvil simple (SMA) de largo plazo.
  • Salida: Las posiciones pueden cerrarse de dos maneras: si la EMA cruza por debajo de la SMA (señal contraria) o si se activa un trailing stop dinámico basado en el ATR.
  • Gestión del riesgo: Se implementa un manejo del dinero básico (MM) que ajusta la cantidad de contratos a operar en función del capital disponible y el riesgo asociado con cada operación.

Paso 1: Selección de una Muestra de Datos Adecuada

El primer paso en el proceso de optimización es seleccionar una muestra de datos representativa del mercado:

  • Periodo de optimización (In-Sample, INS): Se seleccionaron datos desde 2014 hasta 2024, abarcando diferentes regímenes de mercado, incluyendo la alta volatilidad durante la pandemia de COVID-19 y períodos de mercados alcistas y bajistas.
  • Periodo de validación (Out-of-Sample, OOS): Los datos de 2022 a 2024 se reservaron para la validación fuera de muestra, representando el 30% de los datos históricos.

Para asegurar la robustez, es esencial que el número de operaciones (trades) sea suficiente. Un mínimo de 30 operaciones por restricción es recomendable y sería preferible un mínimo de 50 o incluso más. En nuestro sistema tenemos 3 inputs sujetos a optimización, un cruce al alza para comprar, un cruce a la baja para vender y la condición para usar o no usar el trailing. En total 6 restricciones. 6 por 50 da 300 que sería el mínimo. En la práctica no solemos aceptar menos de 500.

Evaluación Preliminar

Antes de proceder con la optimización, se realizó una evaluación preliminar de la estrategia:

  • Verificación de viabilidad: Se comprobó que el sistema era mínimamente viable, es decir, que podía generar señales de trading y ejecutarlas sin errores lógicos.
  • Pruebas de reproducibilidad: Se aseguró que el sistema era reproducible en un entorno de trading real, considerando aspectos como la latencia y la ejecución.
  • Revisión de errores: Se corrigieron posibles errores en el código o en la lógica de la estrategia.

PASO 2: OPTIMIZACIÓN INICIAL DE LOS PARÁMETROS DE ENTRADA

La primera optimización se centró en los parámetros de entrada, específicamente los períodos de las medias móviles.

  • Rango de optimización para la EMA (ShortLength): De 3 a 20, incrementando de 1 en 1.
  • Rango de optimización para la SMA (LongLength): De 30 a 200, incrementando de 5 en 5.

Esto dio lugar a un total de 630 combinaciones posibles.

Resultados Optimización 1:

  • El análisis del mapa de optimización mostró que las combinaciones con una media rápida (EMA) en valores bajos, como 3, resultaban robustas. Sin embargo, hubo más variabilidad y posibles opciones en los valores de la media lenta (SMA), con combinaciones como 3-85 y 3-90 que parecían particularmente prometedoras.

Figura 3. Mapa

Paso 3: Optimización del Trailing Stop

Con los valores iniciales de las medias móviles seleccionados (EMA = 3 y SMA = 150), el siguiente paso fue optimizar el multiplicador del ATR para el trailing stop.

  • ATRMultiplier: Se optimizó en un rango de 1 a 15, incrementando de 0.25 en 0.25.

Resultados Optimización 2:

  • El análisis del mapa de optimización mostró que un multiplicador de 3 controlaba bien el riesgo mientras mantenía un rendimiento aceptable, lo que llevó a la decisión de fijar este valor como definitivo.

Paso 4: Reevaluación de las Medias Móviles con el ATR Fijado

Con el multiplicador del ATR fijado en 3, se volvió a optimizar los períodos de las medias móviles para garantizar que los parámetros de entrada sean los más adecuados en combinación con el trailing stop optimizado.

  • Rango de optimización para la EMA (ShortLength): De 3 a 20, incrementando de 1 en 1.
  • Rango de optimización para la SMA (LongLength): De 30 a 200, incrementando de 5 en 5.

Resultados Optimización 3:

  • El mapa de optimización continuó mostrando que las combinaciones con una media rápida baja, como 3, eran robustas. Se aprecia una zona muy amplia de estabilidad en la media rápida en valores bajos. Aunque la media lenta también ofrecía varias opciones válidas, como la zona de 85 a 90 se destacaron como particularmente estables, además de la 150.
  • Sin embargo, no es objeto de este artículo elegir un conjunto específico de inputs, sino mostrar el proceso de optimización secuencial.

Paso 5: Optimización Walk-Forward (WF)

Para concluir el proceso, se recomienda una optimización Walk-Forward para evaluar cómo los inputs habrían cambiado en diferentes periodos y confirmar la robustez de las combinaciones seleccionadas. Mezclando las dos optimizaciones tendríamos 35,910 tests, que aún podrían hacerse por una optimización exhaustiva, pero sería perfectamente válido y mucho más rápido hacerla genética. En este caso, haciendo 185 generaciones con una población de 50 elementos, tendríamos 9,250 tests que es una optimización que debería durar poco tiempo.

  • Clúster Walk-Forward Optimization: Esta técnica permite simular la manera en que las estrategias de trading se ajustan a diferentes condiciones del mercado en tiempo real, proporcionando una validación adicional de la estabilidad de los parámetros optimizados. Es sobre todo una prueba de estrés de la estrategia que pretende cuantificar la robustez.

Conclusiones

La optimización secuencial es una herramienta esencial en el desarrollo de estrategias de trading algorítmico, proporcionando un enfoque metódico y riguroso para identificar y ajustar los parámetros de un sistema. A lo largo de este artículo, hemos explorado cómo aplicar este proceso de manera efectiva, desde la selección de una muestra de datos representativa hasta la implementación de técnicas avanzadas como la optimización Walk-Forward.

Una de las conclusiones más importantes es la necesidad de mantener un enfoque dinámico y flexible en el desarrollo de estrategias de trading. La optimización no es un proceso estático; debe ser revisada periódicamente para asegurar que la estrategia sigue siendo eficaz a medida que cambian las condiciones del mercado.

En resumen, el éxito en el trading algorítmico no depende únicamente de encontrar los parámetros óptimos en un conjunto de datos histórico, sino de desarrollar un proceso riguroso de optimización y validación que garantice la robustez y adaptabilidad del sistema en el tiempo. La optimización secuencial, combinada con técnicas como la optimización Walk-Forward, proporciona un marco sólido para lograr estos objetivos, permitiendo a los traders algorítmicos operar con mayor confianza y eficacia en los mercados.

Figura 5. Codigo

¡Good Trading!