Backtesting y Optimización en Metatrader

¿Cómo pongo a prueba mi estrategia en Metatrader? ¿Cómo optimizo los parámetros de una estrategia con esta plataforma? Posiblemente son algunas de las preguntas que más lectores me hacen. Las respuestas a éstas y otras cuestiones relacionadas, las pueden encontrar en el siguiente artículo.

Como algunos de Vds. ya sabrán, Metatrader permite hacer backtest y optimizar los parámetros de los Experts Advisors (estrategias) utilizando el Strategy Tester. Con dicha herramienta es posible probar el comportamiento de una estrategia sobre datos históricos, si bien debemos recordar que estas pruebas tan sólo ofrecen una aproximación a la realidad, pero nada más.

Primero necesitas un histórico…
Afortunadamente Metatrader es tan completo que permite la descarga de históricos completos hasta donde nos permita el broker (en alguno he visto que incluso llega hasta años anteriores a la creación del Euro por lo que muchos datos seguramente los hayan calculado extrapolando el cambio del marco alemán contra el dólar).

Para ello simplemente vamos al menú Tools -> History Center o pulsamos F2 para acceder a la herramienta de descarga de históricos. En la ventana que nos sale elegimos el par que deseemos y lo desplegamos para ir descargando los históricos en diferentes minutajes. Una vez seleccionado el minutaje simplemente hacemos click en Download (aquí recibiremos una advertencia sobre el origen de los datos pero basta con pulsa OK y seguir) y esperamos a que se complete la operación (que suele tardar un rato, más cuanto más bajo sea el minutaje). En todo caso es importante que si queremos testear con precisión estrategias intradía descarguemos el histórico de 1 minuto ya que es el que utiliza Metatrader para generar ticks. Repetiremos este proceso para cada minutaje y par sobre el que pensemos realizar las pruebas.

 

Primeras pruebas
Bien ahora ha llegado el momento de realizar nuestro primer backtest o prueba sobre datos históricos. Para ello debemos cargar la herramienta accediendo al menú View->Strategy Tester o pulsando Ctrl+R. Nos aparecerá una ventana en la parte inferior de Metatrader desde la que podemos indicar:

  • El Expert Advisor con el que deseamos hacer el backtest
  • El par (Symbol) sobre el que lo ejecutaremos
  • El minutaje (Period) sobre el que trabajará el Expert Advisor
  • El rango de fechas, que podemos seleccionar activando la casilla Use Date.
  • Asimismo activando la opción Visual Mode podemos ver cómo se va ejecutando el backtest a lo largo del gráfico.
  • El modelo (Model) que utilizará Metatrader para realizar el backtest. Aquí tenemos tres posibilidades:

– Every Tick: se trata del método más preciso, ya genera las barras a partir del menor timeframe que hayamos descargado (es decir, si testeamos una estrategia en barras de 30 minutos y tenemos descargado el histórico en 1 minuto, tendrá en cuenta el comportamiento intrabarra en 30 minutos). Este método es el más lento.
– Control Points: este modelo parece que aún está en fase experimental y no se recomienda utilizarlo.
– Open Prices Only: este método sólo tiene en cuenta las barras una vez se han formado por lo que no tiene en cuenta el comportamiento intrabarra. Es un método más rápido pero sólo se recomienda utilizarlo en estrategias que trabajan al cierre de la barra.

  • La casilla Optimization la dejaremos por ahora desmarcada.
  • Finalmente en Expert Properties configuraremos todos los parámetros del Expert Advisor con los que queremos realizar el backtest dentro de la columna Value. Incluso desde esta ventana es posible cargar y guardar conjuntos de parámetros para recuperarlos posteriormente.

 

Con todo esto pulsaremos el botón Start y comenzará el backtest. El tiempo que tarde en terminar, como ya saben, dependerá del nivel de complejidad de la estrategia, cantidad de histórico utilizado, etc. Una vez finalizado el backtest pincharemos en la pestaña Reports (que aparecerá en la parte inferior del Strategy Testar) para ver los resultados y estadísticas del backtest. Por su parte si pinchamos en la pestaña Graph obtendremos el gráfico de la evolución del balance del backtest realizado. Por último, en la pestaña Results encontraremos todas las operaciones realizadas en la simulación.

Observen que dentro de Reports, aparece un dato denominado Modelling Quality: este resultado es importante si hemos realizado la optimización utilizando el modelo Every Tick. Si hubiéramos usado ese modelo, el valor que debe aparecer ahí debe ser superior al 90% para que demos la optimización por buena. De lo contrario es que algo hemos hecho mal cuando hemos descargado el histórico de 1 minuto y posiblemente debamos repetir los pasos anteriores.

Optimizando que es gerundio
Ahora que ya sabemos hacer backtests de estrategias, optimizarlas es muy sencillo. Simplemente tenemos que repetir los pasos anteriores si bien ahora:

  • Muy importante: no olvidemos nunca marcar la casilla Optimization.
  • En Expert Properties, dentro de la pestaña Inputs introduciremos el rango de valores de cada parámetro que deseemos optimizar. En particular, en la columna Start indicaremos el menor valor que puede tomar el parámetro, en la columna Stop pondremos el máximo valor que tendrá y en la columna Step indicaremos cuantas unidades aumentará en cada iteración el valor del parámetro. Si no hubiéramos marcado la casilla Optimization antes de darle a Start, el programa simplemente hará un backtest con los valores que aparecen en la columna Value. En la pestaña Testing podremos indicar el saldo inicial en cuenta, si abriremos posiciones cortas y largas o sólo en un sentido, qué criterio queremos utilizar para la optimización (balance, máximo drawdown, etc.). En este sentido posiblemente es de los programas más completos que existen, sobre todo si tenemos en cuenta que es gratuito.

 

Una vez configurado todo le damos a Start y el programa comenzará a optimizar los parámetros del Expert Advisor indicado, lo cual puede llevar desde unos minutos a varias horas o incluso días. Una vez finalizada la optimización obtendremos una lista de todos los conjuntos de parámetros ordenados en base al criterio especificado, si bien podemos ordenarlos por ejemplo en base al beneficio obtenido haciendo click en la columna Profit. Si hacemos doble click en cualquiera de ellos nos cargará los parámetros asociados a un resultado en el Strategy Tester a fin de ejecutar un backtest con ellos.

 

 

 

Últimos consejos
Si bien muchos de Vds. ya saben los riesgos y defectos de la optimización, conviene recordar algunos consejos para no caer en el curve-fitting y en la alegría prematura:

  • Optimice el menor número de parámetros posible: en las estrategias basadas en indicadores recuerde que tendrá un gran impacto el rango de periodos utilizado en la optimización. Asimismo variables como tamaño del lote, stop de pérdidas y objetivo de beneficios conviene ajustarlas manualmente de acuerdo a nuestro perfil de riesgo.
  • No olvide nunca realizar un análisis walkforward de los resultados obtenidos: optimicen la estrategia en un periodo de tiempo amplio y después tome pequeñas muestras posteriores a ese periodo en las que optimizar y probar nuevamente la estrategia. Con ello podemos evaluar si los parámetros son robustos y si los resultados son consistentes.
  • Cuando realice un walkforward, nunca tome el mejor resultado porque seguramente se trate de un atípico. En su lugar busque conjuntos de parámetros estables que produzcan beneficios y seleccione el que considere más razonable.
  • Analice el porcentaje de conjuntos de parámetros que ofrecen resultados en positivo. Cuantos más allá, más robusta podremos considerar la estrategia.
  • Asimismo el profit factor debe ser como mínimo superior a 1.5 mientras que el drawdown máximo debe situarse en los entornos del 10-15%, no debiendo superar el 20%; en este último caso, si superamos el 20% seguramente estamos asumiendo un riesgo excesivo o la estrategia simplemente es potencialmente perdedora.
  • Podemos medir la eficiencia del walkforward usando un simple ratio: dividir la rentabilidad anual obtenida en la optimización por la obtenida en el walkforward. Si este ratio es inferior a 0.5 (50%) entonces estamos ante un sistema poco robusto.

Saludos,
X-Trader

 

COMPARTIR EN: