Rankia España Rankia Argentina Rankia Brasil Rankia Chile Rankia Colombia Rankia Czechia Rankia Deutschland Rankia France Rankia Indonesia Rankia Italia Rankia Magyarország Rankia México Rankia Netherlands Rankia Perú Rankia Polska Rankia Portugal Rankia Romania Rankia Türkiye Rankia United Kingdom Rankia USA
Acceder
Blog Juan M. Almodóvar
Blog Juan M. Almodóvar
Blog Juan M. Almodóvar

Torturando los datos hasta que confiesen. Parte 2, Sobreoptimización

La sobreoptimización es el enemigo más temido del trader de sistemas, es una trampa complicada que toda plataforma de trading que permita diseñar sistemas automáticos nos tiende fácilmente y en la que muchos hemos caído al principio. Diseñamos un sistema de trading con cinco indicadores, seleccionamos quince parámetros (periodo de las media móvil corta y larga, pips para el stop loss, pips para el take profit, niveles sobrecompra y sobreventa del RSI, etc) y ponemos nuestro superordenador de ocho núcleos a optimizar el sistema...  Al cabo de tres o cuatro horas ya tenemos decenas de combinaciones impresionantes, nuestro sistema en los últimos 3 años dibuja una línea recta ascendente como la trayectoria de un misil ¡ha llegado el momento de operar en real!
 
Todos los que hemos caído en esta trampa sabemos que tan pronto como pongamos el sistema en tiempo real (ya sea paper trading o con dinero de verdad) la trayectoria de misil de nuestro sistema continuará, pero en dirección a tierra. Perderemos puntos de manera trepidante hasta dejar la cuenta a cero, garantizado.
 
Ni el sistema ha dejado de funcionar, ni el mercado ha cambiado de dinámica, tampoco es mala suerte, ni el broker nos está espiando y va a por nuestros stops... La explicación más sencilla es que hemos sobreoptimizado nuestro sistema.
 

El problema de la sobreoptimización o adaptación al ruido

 
En el trading automático partimos de la idea de que las cotizaciones del mercado son una combinación de señal y ruido. Por una parte las señales o patrones que alertan de lo que puede suceder en el mercado, idealmente un movimiento al alza o a la baja, estas señales se repiten en el tiempo y con nuestros sistemas intentamos detectarlas y explotarlas. Cuando optimizamos un sistema de trading estamos intentando ajustar nuestro sistema para que detecte correctamente estas señales que se han dado en el pasado, con la esperanza de que se sigan repitiendo en el futuro próximo en cantidad suficiente como para sacarles un beneficio.
 
Los optimizadores de toda plataforma de trading automatizable ajustan los parámetros de nuestro sistema a la serie de cotizaciones pasada. El problema es que la serie no solo contiene señales predictivas sino también ruido, mucho ruido. Ruido como el de las televisiones antiguas cuando no tienen sintonizado un canal. Este ruido es aleatorio, es decir, no se vuelve a repetir de la misma manera en el futuro y es aquí donde radica el problema de la sobreoptimización.
 

 
 

 

Cuando ponemos nuestro ordenador a optimizar un sistema en el pasado corremos el riesgo de que lo haga "demasiado bien" y se ajuste perfectamente al ruido de la serie, como sabemos ese ruido no se volverá a repetir en el futuro y por lo tanto operar en función de él nos hará perder dinero porque lo que no se repite no es predictivo. De alguna forma debemos optimizar el sistema para que se ajuste a las señales predictivas pero sin sobreoptimizarlo ajustándolo al ruido no predictivo.
 

Un ejemplo gráfico de sobreoptimización

 
Veamos con un ejemplo gráfico a qué nos referimos con señales, ruido y sobreoptimización. Imaginemos que tenemos datos de cotizaciones de mercado que representan los cierres de las últimas sesiones. Para obtenerlos hemos utilizado una combinación de una regla más un comportamiento aleatorio, es decir, una señal y un poco de ruido. En este caso la señal o patrón es simplemente una tendencia claramente alcista en el tiempo y el ruido una desviación aleatoria que se suma a cada valor de la serie. La línea azul representa el patrón alcista a detectar, los cierres son la suma del patrón más el ruido.
 
 
Nuestro objetivo es diseñar un sistema de trading para detectar la señal subyacente (la tendencia alcista). En principio no conocemos la forma de la señal, y como datos solo disponemos de estas cotizaciones que sabemos que son una mezcla de la señal subyacente y ruido. Intentaremos dibujar una línea que al ajustarse lo mejor posible a todos estos puntos describa la señal subyacente. Al principio nuestro sistema estará compuesto por un único indicador, después le añadiremos un segundo, un tercero y así sucesivamente, aumentaremos su complejidad hasta llegar hasta un total de diez indicadores.
 
La curva roja representa el resultado de un sistema con 10 indicadores optimizados. Cada nuevo indicador añadido a nuestro sistema le está permitiendo dibujar curvas más y más complejas, puede girar y retorcer hasta ajustarse perfectamente a todos los puntos. Hemos sido capaces de detectar todos los cierres de las últimas sesiones. ¡Compramos en los mínimos y vendemos en los máximos! ¡milimétricamente, al Pip!
 
Pero pensemos de nuevo que a lo que queríamos ajustarnos no era a los puntos dados, que son una combinación de señal y ruido, sino solo a la señal... Tal vez un sistema con dos o tres buenos indicadores no fuera capaz de obtener cada punto de cotización pero podría describir la tendencia general alcista. Un sistema más simple podría ser capaz de capturar la esencia de la serie temporal (una tendencia alcista) mientras que el sistema más complejo, con más indicadores, es capaz de describir mejor la combinación de señal y fluctuaciones aleatorias que no se volverán a repetir. Y esto, claramente no nos interesa porque al poner nuestro dinero en estos trades estaremos asumiendo riesgo gratuitamente.
 
Cuando nuestro supersistema de diez indicadores se enfrente al futuro lo hará pensando que el ruido volverá a repetirse, pero no tiene ni idea del patrón subyacente de tendencia alcista, su comportamiento será errático y rápidamente vaciará nuestra cuenta.
 
En general las explicaciones sencillas tienen una mayor probabilidad de ser correctas puesto que son menos sensibles a ajustarse a los datos meramente por suerte. Este principio es conocido como La Navaja de Ocam y junto a los principios de espionaje de datos y sesgo de muestreo debe tenerse en cuenta a la hora de diseñar nuestros sistemas de trading.
 

Más información sobre trading automático inteligente

Para más información sobre métodos de Inteligencia Artificial aplicado al trading consulta la web de mi Curso Online de Trading Automático Inteligente.

 

 

 

¿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
  • Bolsa
  • Sistemas automáticos de Trading
Lecturas relacionadas
Detección y formación de la tendencia
Detección y formación de la tendencia
Torturando los datos hasta que confiesen. Sesgo de muestreo y espionaje de datos
Torturando los datos hasta que confiesen. Sesgo de muestreo y espionaje de datos
Sistemas que solo funcionan en backtest
Sistemas que solo funcionan en backtest
Accede a Rankia
¡Sé el primero en comentar!
Te puede interesar...
  1. Cómo optimizar un sistema mediante minería de datos
  2. Torturando los datos hasta que confiesen. Sesgo de muestreo y espionaje de datos
  3. Trading con Inteligencia Artificial y GenBoX
  4. Sistemas que solo funcionan en backtest
  5. Detectando el Régimen de Mercado con redes neuronales
  1. Cómo optimizar un sistema mediante minería de datos
  2. Machine Learning aplicado al trading
  3. Selección de activos y sistemas mediante árboles de decisión
  4. Ensamblando robots de trading inteligentes
  5. Detectando el Régimen de Mercado con redes neuronales