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. Sesgo de muestreo y espionaje de datos

Uno de los elementos fundamentales para crear un sistema de trading es el conjunto de datos históricos. Los datos son una especie de materia prima con la que  se hacen los sistemas, requieren atención en su obtención y manejo, puesto que de no tener cuidado el mal uso puede hacernos perder mucho dinero. Es fácil "torturar los datos hasta que confiesen" y obtener resultados impresionantes sobre el papel que nos digan lo que queremos escuchar: que vamos a ganar mucho dinero operando el sistema; y sin embargo cuando pasemos a operar el sistema en real llegará el desastre en forma de drawdown incontrolado. En este primer artículo de la serie "Torturando los datos hasta que confiesen" hablaré de dos principios generales del manejo y obtención de datos históricos que son fundamentales para nuestra operativa automática.

Estos dos principios generales son el sesgo de muestreo (sampling bias) que trata de cómo se obtienen los datos y el espionaje de datos (data snooping) que trata de cómo se manejan los datos. Para entender estos principios veamos, con un ejemplo de cada uno, cómo si no los tenemos presentes pueden tendernos sus trampas y afectar muy negativamente a nuestro trading de sistemas haciéndonos creer en una ilusión ganadora que se convertirá en un horror en ejecución con dinero real... 
 

El sesgo de muestreo o sampling bias

 
En 1948 en las elecciones presidenciales de los EEUU entre Truman y Dewey sucedió un claro ejemplo de sesgo de muestreo. En la noche de las elecciones, una de los mayores periodicos realizó una encuesta a la población sobre el voto que habían dado. La encuesta indicaba que Dewey había ganado y el periodico confiado lo declaró así en el titular de su edición. Cuando se hizo el recuento total sucedió que Dewey había perdido, para deleite de un sonriente Truman.
 
Truman sonriente
 
No fue un caso de error a la hora de analizar los resultados de la estadística, el problema residía en otro lugar. En 1948 tener teléfono era un lujo que no estaba al alcance de toda la población y aquellos que disponían de él tendían a pertenecer a un grupo elitista que favorecía a Dewey mucho más que el votante medio. Como el periodico realizó su encuesta telefónicamente, inadvertidamente utilizó una distribución in-sample (los datos de muestreo) que era diferente a la distribución out-of-sample. Al recoger los datos de manera sesgada el resultado de la estadística estará similarmente sesgado.

 
 
El sesgo de muestreo es más propio de los traders discrecionales que de los automatizados. Es lo que habitualmente se conoce como "cherry picking" o seleccionar ejemplos de señales que funcionan en el histórico ignorando los ejemplos donde no funcionan. ¿Os suena? Es el truco de magia de salón al que nos tienen acostumbrados muchos de los gurúes del trading en sus libros y seminarios.
 
En el trading automático el sesgo de muestreo se produce típicamente al elegir periodos de mercado fuertemente alcistas o bajistas para optimizar nuestros sistemas, lo que no es representativo del mercado futuro que vendrá. A la hora de diseñar y optimizar un sistema hay que fijarse bien en que los datos históricos utilzados contengan representaciones adecuadas de todos los tipos de mercado para no caer en las redes del sesgo de muestreo.
 

Espionaje de datos

 
El segundo principio relativo a cómo manejamos los datos se llama espionaje de datos. Esta es una de las trampas más comunes a la hora de optimizar sistemas. Se basa en que de alguna manera estamos utilizando para diseñar y optimizar nuestro sistema los datos del futuro, unos datos de los que no dispondremos cuando nuestro sistema esté operando en tiempo real.
 
Un ejemplo básico sería utilizar en nuestro sistema el precio de cierre de la sesión para elegir la dirección del trade a tomar... Sería absurdo que nadie diseñara un sistema así si no es por pura estupidez... pero tomar datos prestados al futuro es un error común que podemos cometer si no pensamos bien lo que estamos haciendo, como vamos a ver en el siguiente ejemplo.
 
Imaginemos  que un fondo de inversión está desarrollando un sistema de trading para el mercado Forex. Utiliza 8 años de histórico de datos en el cruce del US Dollar (USD) con el British Pound (GBP), con estos datos buscarán un patrón que explotar. El fondo utiliza las series normalizadas de porcentaje de cambio de precios diarios junto con algunas medidas estadísticas como la media y varianza calculadas sobre los 8 años de histórico. Con estos datos empiezan a diseñar su sistema de trading ganador que predice la dirección del cambio. Cada día, basándose en las fluctuaciones de los últimos 20 días el sistema emite una orden de compra o venta. Para diseñar y validar su sistema utilizan el 75% de los datos históricos para optimizar los parámetros del sistema y el 25% restante para comprobar los resultados de aplicar el sistema.
 
La prueba es un éxito. El porcentaje de acierto es del 52.1%, lo que puede parecer poco pero representa una ventaja frente al mercado y por lo tanto una oportunidad para ganar dinero si esta ventaja se mantiene durante suficiente tiempo. De hecho, este 25% de histórico representa 2 años o 500 días de trading en los cuales se ha conseguido un respetable 22% de beneficio.
 
¡Pero cuando el sistema empieza a ser operado en real viene el desastre! El rendimiento se deteriora drásticamente y el sistema empieza a perder dinero como un descosido. En el fondo de inversión se preguntan qué puede estar pasando, se tiran de los pelos ante la incertidumbre (¿detenemos el sistema?) y ya esperan las llamadas enfurecidas de sus clientes.
 
Espiando al futuro
 
 
 
¿Qué ha sucedido? ¿Hay una explicación a este desastre? Sí, el espionaje al futuro. Aunque a la hora de desarrollar su sistema fueron lo suficientemente cuidadosos como para dejar apartado una parte del histórico (el 25%) donde comprobar el rendimiento de la estrategia resulta que los datos para la prueba afectaron a los datos utilizados para optimizar los parámetros del sistema. De manera inadvertida cuando los datos históricos originales fueron normalizados y se obtuvieron los estadísticos de media y varianza todo el histórico fue utilizado. Por lo tanto el 25% de datos reservado a la prueba afectó a los datos que utilizábamos para optimizar los parámetros y como podría esperarse ayudó a que el rendimiento final fuese superior a lo que debería.
 
Parece un pequeño error no muy grave, pero lo es. Los datos para el in-sample estaban contaminados y por lo tanto la estimación final del rendimiento en la prueba no era precisa... provocando que lo que era una mala estrategia sin prácticamente ventaja frente al mercado pasara por las pruebas como una estrategia interesante.
 
 

Y ahora, todavía lo podemos hacer peor

 
Ya sabemos que si no seleccionamos adecuadamente los datos podemos caer en la trampa del sesgo de muestreo y si no los manejamos adecuadamente podemos vernos afectados por el espionaje de datos. ¿Podría ser peor? Sí, para terminar de empeorarlo todo combinemos ahora el sesgo de muestreo y el espionaje de datos en una auténtica trampa mortal en la que han caído mucho traders novatos y que es la base de muchos bestseller de cómo hacerse rico en la Bolsa.
 
Recordemos que el sesgo de muestreo se define basándose en cómo se obtienen los datos antes de optimizar y el espionaje de datos se refiere a cómo los datos afectan a la optimización y diseño del sistema. Son conceptos diferentes pero hay ocasiones, como el siguiente ejemplo, en los que el sesgo de muestreo se da como consecuencia del espionaje de datos.
 
Imaginemos que estamos desarrollando un sistema para stocks del SP500 basado en sus datos históricos. El sistema más básico que podemos pensar es el típico "buy and hold", comprar la acción y mantenerla. ¿Qué rendimientos dio nuestra estrategia durante los últimos 20 años? Fácilmente a partir de casi cualquier combinación de stocks nuestros resultados parecen muy prometedores. ¡Pero no tan rápido! Inadvertidamente hemos sesgado los resultados a nuestro favor seleccionando únicamente compañías que actualmente siguen cotizando ¿Qué hay de aquellas que salieron del índice dejando de cotizar? No estaban entre nuestra posible selección y por lo tanto solo podíamos elegir entre las compañías supervivientes, las cuales evidentemente tendían a dar unos resultados positivos. 
 
Cuando pongamos nuestra estrategia a funcionar lo haremos sobre stocks que sobrevivirán o no puesto que no sabemos cuáles dejaran de cotizar en los próximos 20 años... En este momento el rendimiento histórico no representa adecuadamente el rendimiento futuro que podríamos esperar, ya que de nuevo los datos históricos donde optimizar el sistema (selección de stocks) no son representativos, es decir estamos cometiendo un error de sesgo de muestreo y el origen del error es que hemos espiado los datos en el futuro y seleccionado únicamente aquellas compañías supervivientes. ¿Veis como lo podíamos hacer todavía peor? :-)
 

Conclusión

 
Conocer estos dos principios generales del manejo y obtención de datos nos evitarán muchos disgustos a la hora de hacer trading con sistemas. Realmente es sencillo evitar caer en sus trampas simplemente poniendo un poco de atención a la hora de diseñar nuestras estrategias.
 
Si queréis profundizar en el tema, podéis encontrar mucha más información al respecto en el libro Learning from data, de Yaser S. Abu-Mostafa.
 
 

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.

8
¿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
Cómo optimizar un Expert Advisor
Cómo optimizar un Expert Advisor
Cómo mejorar un sistema de trading
Cómo mejorar un sistema de trading
Sistemas que solo funcionan en backtest
Sistemas que solo funcionan en backtest
  1. en respuesta a Cawa.s
    -
    #9
    11/02/14 21:19

    Te respondo por mensaje privado.

    Un saludo.

  2. en respuesta a Juan M. Almodóvar
    -
    #8
    11/02/14 21:13

    Hola Juan M. Almodóvar,
    gracias a ti por la respuesta, es que con datos malos es imposible hacer nada bien. si puedes recomendarme algún proveedor de data, te lo agradecería. muchas gracias nuevamente

  3. en respuesta a Cawa.s
    -
    #7
    11/02/14 09:36

    Hola Cawa.s

    Sí, cuanto más complicada sea menos grados de libertad y por tanto más fácil sobreoptimizar.

    Los datos que te descargas desde la misma plataforma del broker son casi siempre bastante malos. Faltan trozos de semanas enteras como dices y la precisión de los OHLC es horrible (en el backtest muestra cientos de errores por gráficos mal agrupados). Lo mejor es buscar un proveedor de datos Forex que se encargue de recolectar datos precisos y filtrarlos adecuadamente, hay muchos y de muy diversos precios en función de tus necesidades de frecuencia de operaciones.

    Gracias por tu comentario.
    Saludos.

  4. #6
    10/02/14 23:56

    Hola Juan M. me ha gustado mucho tú artículo. Creo yo que cuanto más sencilla es una estrategia, menos probable es que se sobreoptimice.
    Me gustaría saber como puedes conseguir uno datos reales para hacer un backtesting en forex. He bajado a traves de mt4 unos datos, y me he quedado bastante sorprendido al ver que era imposible que estuviesen correctos, o eso me parece a mi almenos, por que por ejemplo una semana acaba y la siguiente abre a mitad del cuerpo de la anterior, puede haber un gag, pero no continuamente. En fin que me ha hecho dudar sobre los datos que tengo.
    gracias y un saludo

  5. #5
    24/05/13 17:24

    Que razón tienes compañero, el problema radica, que muchas veces se busca lo que uno quiere oír, sin llegar a ser objetivo e imparcial, como cuando se toma una posición en el trading se buscan soportes de acontecimientos que acompañan a la operación, despreciando los que no acompañan, por eso creo que los sistemas automáticos son una buena alternativa, siempre que estén correctamente planteados y creados como indicas.

  6. #4
    19/05/13 11:55

    Excelente articulo. Has descrito profesionalmente 2 tipicas causas de muchas decepciones de sistemas, sobre todo el de data snooping que es un clasico. Con respecto a la pregunta de broker333 debo decir que eso depende del concepto o tipo de sistema, ya que hay sistemas con conceptos simples y solidos que "no necesitan" una actualizacion estadistica; en cambio hay otros que tienen algunos "coeficientes estadisticos" que podrian beneficiarse de una actualizacion de mas data.

  7. en respuesta a broker 333
    -
    #3
    16/05/13 12:12

    Hola broker333:

    Los sistemas se van deteriorando así que en principio haces una estimación de lo que se puede esperar del sistema y cuando lo tienes operando y comienza a desviarse demasiado de la estimación lo detienes. Pero hay que tener bien claro de antemano la estimación y la desviación. A veces lo hago así, otras veces en vez de detenerlos los paso a operar en modo "fantasma", es decir hacen los trades pero no en real y algunos se recuperan y empiezan a funcionar de nuevo...

    También hay técnicas más avanzadas para seguir utilizando los sistemas indefinidamente, daría para escribir otro artículo.

    ¡Gracias por tu comentario!

  8. #2
    15/05/13 18:55

    ¿cada cuanto haces las revisiones de los sistemas? he escuchado que es conveniente seguir con el mismo sistema pase lo que pase porque lo que hoy eran pérdidas mañana pueden ser ganancias

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

Cookies en rankia.com

Utilizamos cookies propias y de terceros con finalidades analíticas y para mostrarte publicidad relacionada con tus preferencias a partir de tus hábitos de navegación y tu perfil. Puedes configurar o rechazar las cookies haciendo click en “Configuración de cookies”. También puedes aceptar todas las cookies pulsando el botón “Aceptar”. Para más información puedes visitar nuestra política de cookies.

Configurar
Rechazar todas
Aceptar