miércoles, 24 de febrero de 2016

El backtesting

A lo largo de las entradas del blog he intentado explicar como construir un sistema de trading, analizando las estrategias disponibles, las herramientas que nos puedan ayudar a diseñarlo y los diferentes componentes candidatos a integrarlo. Es el momento de, antes de jugarnos nuestro dinero en una cuenta real, comprobar con datos históricos si nuestro elaborado  sistema funciona a la altura de nuestras expectativas. El backtesting es un proceso laborioso y complejo, pero imprescindible para no lanzarse a operar en los mercados financieros sin una base estadística fiable que avale la solidez de nuestro sistema de trading.


Concepto

El backtesting es aquel proceso en el que se comprueban en detalle, a través de datos históricos, los resultados de un sistema de trading. Es una prueba a posteriori, dado que se analiza como se hubiera comportado dicho sistema durante un período anterior especificado mediante la simulación de operativas.

Elementos

A la hora de realizar el backtest de un sistema de trading, tanto propio como uno automático de terceros, los elementos imprescindibles son:
-Base histórica de datos: el backtest se realiza con datos previos sobre el mercado o activo en cuestión que sea objeto de nuestra estrategia. Podemos hacerlo bien a través de nuestro broker o mediante aplicaciones de terceros. En muchas plataformas de trading directamente tenemos la opción de realizar backtest de un sistema especificando el período de tiempo que queramos incluir en el mismo. También es posible, como he comentado, hacerlo  mediante aplicaciones de terceros, en algunos casos gratuitas. En cualquier caso, debemos primar la calidad de los datos, evitando bases de datos manipuladas o sin el suficiente detalle. Lo ideal sería contar con datos al tick, para mayor fiabilidad y precisión de los resultados.


-Informes: podemos realizar el backtest de forma manual, también conocido como backtest discrecional, introduciendo paso a paso cada dato. Esta opción es muy lenta, y tiene el inconveniente añadido de que hace más complicadas las posibles optimizaciones posteriores. También es posible realizar el backtest de manera automática, contando la ventaja de la potencia de cálculo de un ordenador. Así, podremos realizar de manera rápida diferentes estrategias, marcos temporales y activos. Como inconveniente principal, caer en la sobreoptimización de los sistemas debido a la facilidad para analizarlos y, en caso de no contar con una aplicación de terceros o un broker que nos lo ofrezca en su plataforma, la dificultad que supone dominar un lenguaje de programación.
-Optimización: A la hora de optimizar por ejemplo podemos variar la estrategia de stoploss, los parámetros de los indicadores técnicos o el tamaño de posición para intentar mejorar los resultados del sistema. En base a los resultados obtenidos, y mediante la optimización, nuestro objetivo debería ser alcanzar la esperanza matemática positiva, es decir, que el sistema analizado nos permita ganar dinero a largo plazo. La esperanza matemática se define como el producto del % de operaciones ganadoras y la ganancia media menos el producto del % de operaciones perdedoras y la pérdida media, y el resultado es quizás la información más importante que debemos tener sobre un sistema de trading. 


Interpretación

Hemos de tener en cuenta que la muestra utilizada para hacer un backtest ha de ser mínimo de 200 o 300 trades, en caso contrario, la muestra no sería suficientemente significativa para poder tomarla en consideración. Con una muestra suficientemente amplia, un backtest nos debería dar la siguiente información:
-Profit factor: factor de ganancia esperado por riesgo asumido. Muestra la relación entre las ganancias y las pérdidas conseguidas basándose en el % de trades ganadoras y perdedoras. Un profit factor por encima de 2 se considera excepcional y por encima de 3 extraordinario.
-Gross profit: Beneficio neto resultante de las operativas realizadas.
-Gross Loss: Pérdida neta resultante de las operativas realizadas.
-Total Net profit: Resultado de restar al gross profit el gross loss.
-Win/loss ratio: es el cociente entre cuanto se gana cuando se gana y cuanto se pierde cuando se pierde. Son razonables los valores por encima de 1.5.
-Expected payoff: resultado de dividir la ganancia media por la pérdida media de cada trade.
-Maximum drawdown: es la máxima pérdida de capital tras una serie consecutiva de trades, o la máxima pérdida desde un máximo anterior.
-Recovery factor: resultado de dividir la ganancia neta entre el maximum drawdown. Valores superiores a 6 son muy recomendables.
-Total trades: número total de trades.
-Profit trades: número y % de trades con beneficios.
-Loss trades: número y % de trades con pérdidas.
-Lasgest profit trade: operativa con mas beneficios.
-Largest loss trade: operativa con mas perdidas.
-Average profit trade: tamaño medio de la operativa con beneficios.
-Average loss trade: tamaño medio de la operativa con pérdidas.
-Consecutive wins: número de trades con beneficios consecutivas.
-Consecutive loss: número de trades con pérdidas consecutivas.
-Curve equity: gráfica de resultados.


Hay que tener en cuenta que, aunque un sistema de trading de buenos resultados en el pasado según los resultados de un backtest, esto no significa que los vaya a dar en el futuro. El mercado es soberano, pueden sobrevenir acontecimientos inesperados, el subyacente puede variar sin previo aviso, la volatilidad dispararse, y por ello es conveniente revisar de vez en cuando nuestro sistema de trading para optimizarlo y que se adecué a las nuevas condiciones. Hay muchos elementos no cuantificables en los mercados, no podemos obtener una proyección futura estricta con datos pasados si nos vamos a mover en un entorno con un alto grado de aleatoriedad. En este punto debo advertiros del riesgo de la sobreoptimización, es decir, intentar añadir o modificar parámetros excesivamente buscando la perfección del sistema pero olvidando que estamos manejando datos del pasado. Esa es la trampa de los robots o sistemas automáticos, prometen la perfección con datos históricos pero los han programado hace poco tiempo, y carecen de capacidad de adaptación a los cambios del mercado.

No realicéis backtesting de sistemas de trading con el objetivo de encontrar la gallina de los huevos de oro, no busquéis unicornios. A todos nos ha pasado, hemos gastado horas y horas retocando y optimizando nuestra supuesta estrategia infalible, ilusionándonos con los resultados del backtest, para luego comprobar que la realidad no es como pensábamos. El backtest nos tiene que ofrecer una idea general sobre la solidez del sistema, la esperanza matemática, los riesgos que conlleva y la gestión del riesgo óptima. Se trata de hacer trading no con un sistema infalible, que no existe aunque os lo intenten vender, sino con un sistema sólido.

5 comentarios:

  1. Me parece muy interesante tu comentario sobre los robots de trading y sus estadísticas milagro. Yo he estado viendo en metatrader varios en modo demo y me han desilusionado bastante, al final es lo que comentaste en otra entrada, quien te va a vender la gallina de los huevos de oro?

    Un saludo

    ResponderEliminar
    Respuestas
    1. Efectivamente, son las famosas "blackbox", que por un importe no pequeño prometen aumentar tu capital un 1000% en un mes. Si alguien tuviera esa capacidad en un sistema de trading, que necesidad tendría de venderlo?

      Yo pienso que los sistemas automáticos tienen su utilidad, por ejemplo rastrear miles de activos en busca de unas condiciones prefijadas, ejecutar órdenes de acuerdo a nuestros parámetros previamente establecidos es una ventaja para eliminar la subjetividad en el trading sin duda. Pero el mercado está compuesto de millones de participantes, tanto personas como robots de HFT, es volátil e impredecible por naturaleza, y un robot no puede lidiar con la flexibilidad y experiencia de un trader avezado. Como siempre, es coger lo mejor de cada cosa.

      Un saludo.

      Eliminar
  2. Me parece una entrada superinteresante, y me parece muy importante la advertencia que realizas en el sentido de que el mercado al final es un conjunto de millones de mentes y que la psicología humana es un factor muy importante a tener en cuenta. Yo personalmente no he operado con robots de trading, me da la sensación de que cuando tenga el conocimiento suficiente quizás pueda programar algún sistema que me ayude a filtrar señales, pero me temo que aun queda mucho para eso.

    Saludos.

    ResponderEliminar
  3. Deduzco entonces que en plataformas móviles no hay posibilidades de hacer backtesting no? Gracias

    ResponderEliminar
    Respuestas
    1. En condiciones no, no hay manera que yo sepa de obtener datos con el detalle suficiente ni de automatizar el procoeso, ni mucho menos programar nada. Las plataformas móviles están bien para monitorizar posiciones si no estamos en nuestro lugar habitual de trabajo y para poco mas, no recomiendo operar habitualmente con ellas.

      Saludos.

      Eliminar