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.
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.
¿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.