Realizar un backtesting consiste en analizar el comportamiento y los resultados de una estrategia a lo largo de una serie de datos históricos. Se trata de un ejercicio que debemos realizar incluso aunque alguien nos pase ya una estrategia con sus resultados de backtest porque, en muchas ocasiones, la persona que analiza la estrategia puede tener intereses propios para promocionarla, no contar con la suficiente formación matemática como para realizarlo correctamente, o quizás no disponga de una base de datos en condiciones. Por todo ello, es recomendable siempre realizar un backtest nosotros mismos de cualquier estrategia, aunque Larry Williams diga en su último libro que va a obtener un 40% anual porque es lo que le sale en sus backtests. Si queremos ser rigurosos y trabajar como verdaderos traders cuantitativos, a priori ninguna estrategia es válida para nosotros sin haberla probado antes.

A la hora de trabajar en el backtesting tenemos que afrontar varias cuestiones:

  • ¿Qué software utilizar?
  • ¿Dónde obtener datos históricos de calidad?
  • ¿Cuál es el tamaño muestral ideal?
  • ¿Cuáles son los errores más habituales a evitar a la hora de realizar un backtest?


Pasamos a revisar cada uno de estos puntos en detalle.

¿Qué software utilizar?
En este campo podemos trabajar utilizando las plataformas más sencillas, incluso una simple hoja de cálculo, hasta plataformas que cuestan varios miles de euros. Como siempre, a mayor inversión, mejor calidad y más opciones de configuración. A continuación se presenta una breve selección de lo que hay en el mercado agrupado en categorías:

  • Hojas de cálculo, como Excel (o Calc en Open Office si no queremos pagar por la suite de Microsoft): a su favor que resultará muy sencillo empezar a gente que tenga conocimientos escasos o muy básicos de programación y deseen trabajar en un entorno visual; a cambio, el tiempo que se tardará en desarrollar todo el esquema del backtest puede desanimar a más de uno, aunque dependerá de la complejidad de la estrategia.
  • Plataformas retail: en esta categoría tenemos a los clásicos: Metastock, Tradestation, Visual Chart, AmiBroker, Metatrader, Ninja Trader, Multicharts… la lista puede ser interminable. Para un usuario con algunos conocimientos de programación puede ser más que suficiente para comenzar, pero como desventaja deberemos tener en cuenta que los procesos internos de cálculo de cada programa pueden ser diferentes por lo que los resultados entre plataformas no tienen por qué coincidir e incluso ser muy dispares.
  • Herramientas matemáticas: si queremos trabajar como traders cuantitativos y dominamos bien la programación, entonces mi recomendación es trabajar con Matlab. Aunque puede resultar algo cara una licencia, la potencia de cálculo y la cantidad de funciones y herramientas que tiene lo hacen apto para cualquier tarea de backtesting aunque posiblemente tengamos que desarrollar desde cero en muchos casos. A cambio su apariencia espartana puede echar para atrás a más de un usuario novel. En todo caso, cada vez más empresas de high frequency trading y trading cuantitativo están adoptando esta solución tanto para el desarrollo de estrategias como para la automatización de la ejecución de las órdenes; posiblemente le dedique un artículo a este tema cuando terminemos la serie sobre trading cuantitativo.

    Por cierto, si no fuera accesible para nosotros comprar una licencia de Matlab, siempre podemos recurrir a alternativas más baratas o incluso gratuitas, tales como O-Matrix (http://www.omatrix.com/), Octave (http://www.gnu.org/software/octave/), Scilab (http://www.scilab.org/) o R (http://www.r-project.org/).

  • Plataformas profesionales: algunas de ellas pueden costar incluso cientos de miles de dólares pero si se dispone del dinero (recuerde que está montando un negocio), quizás sean una opción a considerar. Entre ellas cabe destacar:


ModelStation (http://www.clarifi.com/ModelStation-Overview.php)
MarketQA, comprada recientemente por Thomson Reuters (http://www.trpropresearch.com/products/MarketQA/)
Aegis System (http://www.barra.com/support/aegis/)
Logical Information Machines, recientemente adquirido por MorningStar (http://www.lim.com/)
Alphacet Discovery (http://www.alphacet.com/)

 

¿Dónde obtener datos históricos de calidad?
Una vez tenemos elegida la herramienta adecuada para realizar el backtest, debemos considerar la obtención de una cuidada y extensa base de datos para probar nuestras estrategias en los activos que nos interesen. Aquí podemos encontrarnos desde las bases de datos gratuitas de Yahoo! Finance hasta los más sofisticados Bloomberg o Reuters. Si bien existe una gran variedad de proveedores de datos, debajo presentamos una pequeña selección de algunos de los mejores:

  • La forma más sencilla de acceder a datos históricos, sobre todo si trabajamos con acciones y ETFs, es usar las bases de datos de Yahoo! Finance. Para ello, podemos acudir directamente a su web (http://finance.yahoo.com/) o utilizar herramientas que son capaces de explotar su base de datos tales como HQuotes (http://www.hquotes.com/), CSIdata (http://www.csidata.com/index.html, estos son proveedores del propio Yahoo! Finance), TrackData (http://www.trackdata.com/) o CRSP (http://www.crsp.com/).
  • Otra alternativa para aquellos que se inician es Visual Chart, el cual permite la exportación de datos en ASCII. Quizás sus bases de datos no sean las mejores (en algunos casos no están todo lo depuradas que uno quisiera), pero si somos usuarios de fin de día tendremos acceso gratuito a bases de datos diarias de todos los mercados.
  • Si trabajamos con divisas tendremos múltiples alternativas (incluyendo la posibilidad de exportar desde cualquier Metatrader datos) pero una excelente fuente de datos de divisas tick a tick es la que actualiza a diario Gain Capital en la web http://ratedata.gaincapital.com/
  • Para futuros, tenemos múltiples opciones también. La más reconocida por su nivel de calidad es Tick Data (http://www.tickdata.com/)  aunque sus precios son algo caros. En una categoría intermedia tenemos a la gente de DTN.IQ (http://www.dtniq.com/), pero si lo que buscan es calidad a muy buen precio, echen un vistazo al servicio de nuestro amigo Antonio Carcelén, RSIDat (http://www.rsidat.com/sdatos.htm) donde pueden encontrar bases de datos intradía para el mercado Eurex y otros mercados ajustadas por vencimientos.
  • Por supuesto, siempre que nuestro presupuesto nos lo permita, podemos contratar Bloomberg (http://www.bloomberg.com/solutions/) o Thomson Reuters (http://thomsonreuters.com/products_services/financial/).



En todo caso, a la hora de comprar o contratar un servicio de datos históricos, deberemos tener en cuenta diferentes aspectos que pueden tener un gran impacto en nuestro backtesting:

  • En el caso de que trabajemos con acciones, deberemos saber si las bases de datos están ajustados por splits y dividendos. Precisamente a esto Antonio Carcelén le ha dedicado un interesantísimo artículo recientemente.
  • Asimismo en el caso de las acciones es importante verificar que la base de datos no presenta el denominado “sesgo de supervivencia”; esto es, para que la base de datos se adecue a la realidad no se deben eliminar aquellas acciones que hayan desaparecido porque la empresa, por ejemplo, haya quebrado. Si lo hacemos, estaremos sesgando nuestro análisis, sobre todo si realizamos selecciones de carteras con múltiples acciones que estén baratas, porque entonces no estaremos incluyendo las de aquellas empresas que no logren sobrevivir después, por lo que probablemente obtendremos resultados inflados artificialmente.
  • En el caso de los futuros, una opción muy interesante es la de contar con futuros ajustados, de tal forma que no se producen huecos entre vencimientos que distorsionen por completo el resultado del backtest.
  • Por último una buena práctica estadística es la de revisar los datos atípicos o outliers de nuestra base de datos. Para ello, una rápida comprobación que podemos realizar para ver que todo está en orden es la de calcular los rendimientos diarios del activo y seleccionar aquellos que estén fuera, por ejemplo, de la banda de +/-4 desviaciones típicas para ver qué sucedió en esas fechas. Si coinciden con eventos tales como publicaciones de noticias, sucesos imprevistos, crack de mercado, etc. no hay problema; pero si no parece existir una razón para un movimiento tan amplio, entonces deberíamos considerar revisar ese dato.



¿Cuál es el tamaño muestral ideal?
Bueno en realidad esta pregunta está mal formulada: ¿sería válido decir que los resultados una estrategia probada sobre un histórico de 40 años que genera 5 operaciones en todo ese periodo y gana un 10% anualizado, son robustos? No, ¿verdad?

Y es que la variable clave a tener en cuenta es la frecuencia con la que se realizan las operaciones. Por ejemplo, si contamos con un sistema que es capaz de generar 600 operaciones al año (2-3 operaciones al día) entonces con 1 año de histórico tenemos más que suficiente para obtener conclusiones mínimamente fiables. Por el contrario, si el sistema sólo produce 36 operaciones al año, entonces por lo menos necesitaremos como mínimo 2 años.

En todo caso, la siguiente tabla que relaciona tamaño muestral y margen de error debería ser suficientemente orientativa: a partir de 500-600 operaciones, podemos decir que los resultados obtenidos son fiables y robustos (siempre que se haya hecho todo bien):

 

 

¿Cuáles son los errores más habituales a evitar a la hora de realizar un backtest?
Algunos de los errores más importantes que podemos cometer a la hora de realizar un backtest son:

  • Trabajar con información que se genera en la vela más reciente. Este error posiblemente se entienda mejor con un ejemplo. Imaginemos que tenemos una estrategia que utiliza la siguiente regla: “vender cuando el precio está a 2 ticks del máximo de la vela actual”. Lógicamente hasta que no finalice la vela actual, no sabremos cuál es su máximo por lo que estaremos haciendo trampa. La solución a este error: asegurarnos siempre de trabajar con información generada por datos hasta la vela anterior, nunca hacer referencia en las reglas de la estrategia a la vela más reciente.
  • No ser capaz de reproducir el comportamiento intrabarra. Este error suele dar lugar a backtest que nos harían millonarios en menos de 1 minuto, pero por desgracia no son reales. Algunas plataformas no tienen en cuenta el comportamiento intrabarra del activo, ya sea porque no dispongamos de los datos tick a tick o con un minutaje suficientemente bajo como para reproducirlo, o porque sencillamente la plataforma no es capaz de hacerlo. En estos casos, trabajar por ejemplo con estrategias de rotura que establecen horquillas de órdenes (dos stops para cazar la dirección de una rotura, por ejemplo) engañan al usuario, que al hacer el backtest cree que sus órdenes sólo se tocarán una vez pero luego ve cómo en la práctica son ejecutadas varias veces.
  • Conviene evitar el exceso de parámetros e indicadores a fin de que la estrategia no padezca curve-fitting a lo largo del histórico. Probablemente con un complejo sistema que incluya cientos de indicadores y parámetros podemos encontrar un modelo que explique perfectamente el comportamiento pasado del mercado y que nos dé fiabilidades altísimas; incluso es posible que el sistema funcione relativamente bien durante un corto espacio de tiempo, pero finalmente el sistema terminará fallando. La experiencia confirma que cuanto más sencilla es una estrategia, mejor funcionará.
  • No tener en cuenta los cambios drásticos del mercado. Un atentado o la captura de Bin Laden pueden producir fuertes movimientos inesperados que posiblemente distorsionen bastante los resultados del backtest. Frente a esto, disponemos de algunas soluciones:


- Exagerar las pérdidas esperadas, ya sea considerando la pérdida máxima o el máximo drawdown. Por ejemplo, ver qué pasará si multiplicamos por 2 la máxima pérdida o por 3 el máximo drawdown. ¿Seguiría siendo la estrategia rentable ante estas pérdidas inesperadas?

- Si hemos fijado un riesgo máximo por operación (por ejemplo, el 2% de la cuenta), podemos realizar varias simulaciones en las que tomando un pequeño porcentaje de operaciones de forma aleatoria, aumentemos el riesgo multiplicándolo, por ejemplo, por 5. De esta forma podremos tener en cuenta lo que sucedería si mantenemos posiciones abiertas de un día para otro y se produce un fuerte en nuestra contra por un evento inesperado.

  • Tomar datos muy antiguos. ¿Tiene sentido hacer un backtest con datos del futuro del Eurostoxx 50 del año 1999? Realmente la forma de moverse de ese futuro en los inicios poco o nada tiene que ver con su comportamiento actual. Por tanto, utilizar periodos relativamente recientes para hacer un backtest es posiblemente una buena idea; o al menos tratar de evitar irse a años muy antiguos en el histórico
  • Olvidarse de dividir la muestra en dos, dejando una parte para realizar el conocido como análisis walk-forward  que veremos en el próximo artículo. Normalmente debe intentarse que ambas partes de la muestra tengan el mismo tamaño, pero en caso de que no fuera posible, lo mejor es que la parte que dejamos para el análisis walk-forward debería ser al menos un tercio del total de la muestra.



Conclusión
Todos los traders de éxito generalmente tienen un rasgo en común: hacen backtest de sus estrategias antes de ponerlas a funcionar en el mercado. Y como hemos podido ver, el proceso de backtest es mucho más arduo que diseñar una estrategia con 20 indicadores en Visual Chart y darle a optimizar. El tiempo que lleva dar con una estrategia que pueda darse por válida estadísticamente en el backtest puede ser muy grande, podemos estar meses hasta dar con algo interesante bajo las condiciones planteadas en este artículo.  

Con el backtest no hemos hecho más que empezar el camino, que continuará con el análisis walk-forward y culminará llevando la estrategia al mercado real.

 

Saludos,
X-Trader