Juan M. Almodóvar

Machine Learning aplicado al trading

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.

 

 

 

Autor del blog

  • Juan M. Almodóvar

    Director de investigación y desarrollo de Sistemas Inversores, (consultora especializada en trading algorítmico), desde donde ha colaborado con los departamentos de sistemas de varios fondos de inversión y diseñado software para trading como Alphadvisor. También imparte un Curso Online de Trading Inteligente en la Intelligent Trading School. Centra su carrera profesional en el ámbito de la Inteligencia Computacional aplicada a los mercados financieros.

Envía tu consulta

Próximos Webinars

Apúntate ya a los próximos webinars de Rankia:

guias rankia