La Calidad de Modelado en Metatrader

Al hilo del artículo sobre Tickstory que nos mandó Andrest recientemente, algunos lectores me han preguntado qué es exactamente eso de la calidad de modelado que aparece en los backtests de Metatrader. Para los que no lo sepan, este artículo contiene la respuesta.

Como ya sabrán, a tenor de los artículos que hemos dedicado previamente en esta web (Tickstory e Históricos en Metatrader), es evidente que tener históricos de calidad en Metatrader es fundamental para realizar backtests que sean fiables. Y ello no es una cuestión baladí, ya que de la calidad de los datos de que dispongamos, nuestros backtests en Metatrader nos van a decir cosas muy distintas, hasta el extremo de que obtener resultados opuestos según usemos unos datos u otros.Y la clave para saber si los datos que estamos usando son adecuados nos la da un número que aparece a la derecha de los backtests y que se denomina Modelling Quality o Calidad de Modelado.

¿Cómo se calcula la Calidad de Modelado? Básicamente se trata de aplicar la siguiente fórmula ideada por Metaquotes:

ModellingQuality = ((0.25*(StartGen-StartBar) + 0.5*(StartGenM1-StartGen) + 0.9*(HistoryTotal-StartGenM1)) / (HistoryTotal-StartBar))*100%

Donde:

HistoryTotal: número total de barras en el histórico.
StartBar: barra en la que comienza a realizarse el backtest.
StartGen: primera barra disponible en el timeframe más cercano en el que comienza a realizarse el backtest.
StartGenM1: barra de 1 minuto con la que el backtest comienza.

Como podemos ver en la fórmula utilizamos:

  • La distancia entre el número de la barra disponible en el timeframe más cercano en el que comienza a realizarse el backtest y la barra en la que comienza a realizarse el backtest pondera 0.25. Dicha distancia representa el tramo del histórico que es simulado por Metatrader mediante interpolación no disponiéndose realmente de histórico de alta resolución.
  • La distancia entre el número de la barra disponible en el timeframe más cercano en el que comienza a realizarse el backtest y la barra de 1 minuto con la que el backtest comienza pondera un 0.50. Esta distancia nos indica el número de datos que son tomados de otros timeframes superiores a 1 minuto (por tanto la resolución es menor). 
  • La distancia entre la barra de 1 minuto con la que el backtest comienza y el final del histórico pondera 0.9.

Si bien todo esto puede parecer algo confuso de entrada, la idea que subyace tras la fórmula es sencilla: se trata de media el porcentaje de timeframes de alta resolución (1 minuto, 5 minutos, etc.) utilizados para evaluar una estrategia. Cuantos más bajos sean los timeframes y más completos estén los históricos, mayor será la calidad del backtest por utilizar una mayor resolución para analizar la estrategia. En todo caso, examinando los colores del diagrama que muestra Metatrader al término de un backtest podemos entenderlo rápidamente:

 

En la figura anterior, podemos ver varios colores que nos suelen aparece cuando hacemos un backtest en Metatrader:

  • Gris (1): indica que no se está utilizando un tramo del histórico total.
  • Rosa (2): modelado fractal de los datos, al no disponer de datos en timeframes más pequeños del usado en el apartado verde, se simulan directamente.
  • Lima – Verde (3-7): indica el nivel de profundidad del timeframe utilizado en el backtest. El color lima indica que se ha usado el timeframe de 1 minuto. Cuanto más oscuro sea este color, mayor será el timeframe utilizado en el backtest, indicando que no hay datos para el período utilizado en resolución de 1 minuto.

Dicho esto, veamos cómo calcular con números la calidad de modelado. Siguiendo con el ejemplo anterior, tenemos:

History Total = 4.190
StartBar = 2.371 (iniciamos el backtest en un período contenido dentro del histórico)
StartGen (H4) = 3.042 (marcado con el número 3)
Start H1 = 3.355 (porción marcada con el número 4)
Start M30 = 3.841 (número 5)
Start M15 = 3.891 (número 6)
Start M5 = 0 (no aparece representado en la barra, faltaría un color verde)
Start M1 = 3.917 (en lima por estar en resolución de 1 minuto, señalado con el número 7)

Basta con sustituir los valores en la fórmula anterior para obtener rápidamente la calidad de modelado:

((0.25*(3042-2371) + 0.5*(3917-3042) + 0.9*(4190-3917)) / (4190-2371))*100% = 46.78%

Como podemos ver en este ejemplo, la calidad es muy baja, siendo deseables valores cercanos o  iguales al 90% ¿Por qué el 90%? Simplemente es una cuestión de cómo está diseñada la fórmula. Imaginemos que tenemos todos los datos completos en el timeframe de 1 minuto. En ese caso, los datos serían los siguientes:

History Total = 4.190
StartBar = 2.371
StartGen (H4) = 0
Start H1 = 0
Start M30 = 0
Start M15 = 0
Start M5 = 0
Start M1 = 2.371

Y por tanto la calidad de modelado sería ahora:

((0.25*(2371-2371) + 0.5*(2371-2371) + 0.9*(4190-2371)) / (4190-2371))*100% = 90%

En todo caso, para no hacerlo más complicado, simplemente debemos quedarnos con dos ideas:

  1. Si hacemos un backtest y nos aparece un tramo rosa en la barra de datos, entonces tenemos un histórico corrupto al que le faltan tramos por lo que hasta que no resolvamos ese problema no podremos dar validez al resultado.
  2. Si aparecen tramos en verde oscuro no será un problema muy grave pero debemos tener en cuenta que Metatrader seguramente haya interpolado datos de timeframes superiores. La calidad de modelado será ligeramente menor pero el resultado aún puede ser creíble.

Por supuesto, lo ideal para no complicarse mucho con este tema es conseguir unos históricos de alta calidad, importarlos en Metatrader y evitar que se conecte al servidor para que se quede offline. De esta forma ya podremos hacer backtests bastante decentes.

Saludos,
X-Trader

COMPARTIR EN: