Backtesting, o cómo poner a prueba una estrategia

Imagínate que has tenido una idea para una estrategia de trading que te gustaría analizar en profundidad para poder añadirla a tu portafolio. Imagínate ahora que, por otro lado, leyendo un artículo de investigación, descubres una estrategia que te gustaría poner a prueba. Ahora, en un último esfuerzo creativo, imagínate que vas a una conferencia de un premio Nobel que expone una estrategia que querrías añadir a tu operativa.

Esta idea, en la primera fase, ya sea procedente de tu experiencia o porque la has encontrado en artículos de investigación o escuchado en conferencias, no deja de ser una hipótesis que deberás poner a prueba tu mismo, independientemente de su fuente, para verificar si puede ser candidata para añadirla a tu portafolio real de inversión. Entonces, ¿cómo se comprueba exactamente una estrategia? En este artículo, trataré de facilitarte el camino.

Mirando al pasado con un ojo al futuro

La mejor manera que tenemos para comprobar una estrategia es mediante la realización de un backtest. Un backtest es el proceso en el que utilizamos datos históricos de cotización para comprobar qué rendimiento hubiera desarrollado dicha estrategia en el pasado. Explicado así puede parecer un proceso muy sencillo. Sin embargo, hay una multitud de errores en los que podríamos caer (sin darnos cuenta) que arruinarían la validez estadística de dicha prueba y las conclusiones que podríamos sacar de ella.

Primero de todo, debemos comprender que un backtest es solamente una de las infinitas posibilidades que podrían haber ocurrido. Esto puede parecer un poco extraño, pero deja que me explique. Un backtest lo realizamos sobre unos datos determinados: los datos históricos del activo sobre el que estemos trabajando. Estos datos se representan mediante una serie temporal que tiene unas características determinadas de retorno, tendencia secular, volatilidad, estacionariedad, asimetría, curtosis, ruido, etcétera. Entonces, cualquier otra serie temporal que tuviera estas mismas características se podría convertir en candidato para realizar un backtest válido de tu estrategia, aún siendo estos datos “distintos”.

Datos aleatorios
Figura: dos series temporales distintas con las mismas características estadísticas.

Por esta razón, debemos ser muy cuidadosos a la hora de interpretar los resultados arrojados por un backtest y no quedarnos con los valores determinados de rendimiento o drawdown que nos muestra, ya que estos pueden no estar definiendo las características inherentes de la estrategia de manera “precisa” (siempre con un margen de error). Es por este motivo que resulta muy interesante realizar el backtest de tu estrategia tanto en los datos históricos reales como en datos generados aleatoriamente pero que compartan las mismas características estadísticas.

Datos, datos y más datos

Precisamente, los datos serán la base de tu experimento, por lo que será absolutamente esencial disponer de datos históricos de calidad. Primero, deberás adecuar los datos a la frecuencia de operativa que crees que tendrá tu estrategia: si es una estrategia que se posicionará en el mercado a final del día, los datos de cotización de cada hora serán probablemente suficientes para obtener resultados con suficiente precisión y minimizar el tiempo de computación. En el otro extremo, si te dispones a diseñar una estrategia que trabaje según la dinámica del libro de órdenes, necesitarás datos en calidad tick, es decir, datos donde esté reflejado absolutamente cada cambio tanto de precio como de volumen en el mejor bid y ask. En segundo lugar, los datos deberán limpiarse y normalizarse. Esto significa que deberás analizar tu base de datos en busca de anomalías, como un cambio
brusco (spike) entre dos precios de cierre que pueda ser debido a un error en la recolección de las cotizaciones. Deberás comparar tus datos con los de otra fuente para asegurarte de que dicho spike sea un error y puedas eliminarlo. Aunque parezca imposible, hay eventos de estas características que ocurren realmente (investiga sobre el franco suizo el 15 de enero de 2015), así que antes de eliminarlos deberás hacer un cross-check con otra fuente de datos.

Errores en datos Forex: EURUSD
Figura: spike en los datos de cotización del EURUSD.

También deberás cerciorarte de que los datos estén libres de survivorship-bias en caso de índices, ajustados a splits/contrasplits y dividendos en acciones, tener en cuenta restricciones en las regulaciones (como prohibiciones de entradas en corto), ajustados al rollover en caso de los futuros, o del broker/LP con el que quieras operar en caso de las divisas.

Ajuste de dividendos en los precios
Figura: diferencia entre el precio ajustado y no ajustado a dividendos.

Deberás revisar también que no estás cogiendo por equivocación datos de cotización futuros (como utilizar el precio de cierre del día en un cálculo realizado por la mañana, antes de que abriera el mercado), un error que resulta muy fácil de cometer si vas a realizar tu backtest en Excel o Python. También puedes caer en este error si tu estrategia utiliza fuentes de datos externas, como publicaciones macroeconómicas, en la que utilizas dichos datos antes de que se dieran a conocer. Este error se conoce como lookahead-bias.

Una vez recolectados, limpiados y archivados los datos en el formato más adecuado (normalmente en CSV), deberás separarlos en dos categorías: los datos In-Sample (IS) y Out-of-Sample (OOS). Este es un paso crucial para reducir al mínimo las probabilidades de sobre optimizar tu estrategia y para poder evaluar con una elevada validez estadística si la hipótesis de tu estrategia es capaz de generar alpha o no. En los datos IS es donde deberás optimizar los parámetros de tu estrategia, mientras que en los OOS deberás validar su rendimiento. Es mandatorio que, una vez realizada la prueba en los datos OOS y en caso de que no arrojara buenos resultados, no modifiques los parámetros para hacer que la estrategia mejore en ese rango de datos OOS, ya que estarías optimizando y convirtiendo los datos OOS en IS. Es decir, solo tienes una oportunidad de mantener la integridad y validez estadística del periodo OOS.

Costes de transacción

A continuación, deberás tener muy presentes los costes de transacción. Es un error común realizar un backtest de una estrategia sin tenerlos en cuenta. Una estrategia con una frecuencia de operativa elevada será extremadamente sensible a los costes de transacción. Del mismo modo, una estrategia de media o baja frecuencia también se podría ver muy afectada por dichos costes si estos son elevados o su umbral de rendimiento es justo. Los costes de transacción son de las únicas cosas que podemos modelar con certeza, por lo que será imprescindible tenerlos en consideración. Suelen dividirse en cinco: la comisión de brokeraje, el spread , el swap o rollover , el slippage ( market impact ) y los costes de infraestructura. Estos últimos suelen tener un mayor impacto en las estrategias de más alta frecuencia, debido a que necesitan una infraestructura puntera y muy cara para poder funcionar, y si su coste de mantenimiento es mayor a los beneficios de la estrategia, no valdrá la pena ponerla en funcionamiento, por muy buena que sea.
Por esta razón es tan importante disponer de un buen algoritmo de ejecución que nos ayude a disminuir tanto como sea posible estos costes (principalmente el spread y el slippage). También deberás determinar el tamaño de las posiciones y si lo medirás en modo lineal o exponencial, es decir, si siempre vas a comprar/vender un lote, acción o contrato, o el tamaño lo definirás en función del % de tu cartera que quieras poner en riesgo. El coste de transacción afectará de distinta manera al rendimiento de tu estrategia según qué posicionamiento utilices.

Métricas de riesgo y rendimiento

Finalmente, deberás evaluar los resultados que ha arrojado el backtest. Deberás analizar los distintos parámetros de rendimiento y de riesgo y decidir si cumplen con tu estilo de operativa y tus objetivos. Por otro lado, si la estrategia resulta perdedora durante la totalidad del backtest y en los datos OOS, deberías descartarla, ya que probablemente seguirá perdiendo una vez la pongas a trabajar en tiempo real.
Hay muchas métricas de rendimiento distintas con las que podrías fijarte, pero las más habituales son las siguientes:

  • Ratio de Sharpe: esta ratio mide el rendimiento en función de la volatilidad. Es decir, una métrica de rendimiento ajustada al riesgo.
  • Ratio de Sortino: es el mismo concepto que la Ratio de Sharpe, pero teniendo en cuenta solamente la volatilidad de los resultados negativos.
  • Drawdown: es el mayor retroceso de una curva de resultados.
  • Porcentaje de acierto: es la ratio entre las operaciones ganadoras y las operaciones totales.
  • Profit Factor: es la ratio entre el beneficio y la pérdida bruta.
  • Retorno/DD: es la ratio entre el retorno de la estrategia y su máximo drawdown .
  • CAGR: es la tasa de crecimiento anual compuesta. Es decir, el rendimiento continuo que hubiera tenido anualmente una estrategia aplicando un interés compuesto.
  • Stagnation time : es el tiempo máximo de duración de un drawdown .
  • Número de operaciones: deberán haber operaciones suficientes como para que la muestra sea significativa.

Recuerda que el backtest es solamente el primer paso para evaluar tu hipótesis de trabajo. Después deberás cerciorarte de que la estrategia sea robusta y que los resultados del backtest no hayan sido simplemente fruto de la suerte.

Artículo escrito por:
Martí Castany
Quant trader

2 comentarios en «Backtesting, o cómo poner a prueba una estrategia»

  1. Cuando el backtest te salga impresionante no te confies, aún así lo más probable es que pierdas. Sólo si te sale fuera de lo común quizá haya algo a partir de lo que se puede trabajar…

    Responder

Deja un comentario

ESTRATEGIAS DE TRADING