Crear un backtesting automático (parte 1)

El backtesting puede ser:

  • Discrecional
  • Automático

Voy a intentar explicar los conceptos básicos a la hora de hacer un backtesting automático en Prorealtime (a partir de ahora PRT) y así probar múltiples estrategias, mejorando unas y descartando otras.

Los backtestings automáticos, una vez hechos y si son buenos, se pasará al walk-forward, luego se probarán en demo y, si después de todo eso aun funcionan bien, hay dos opciones:

a) Crear un robot con ese código en una plataforma que acepte el trading automático o
b) Crear un indicador en PRT con ese código para que te avise de las señales de entrada/salida y replicarlas uno mismo en la cuenta real (éste ejemplo es el que yo hago, pues interdin no me acepta tener un robot creado por mí funcionando)

Antes de empezar decir que el código de PRT es muy limitado; MT4 o ninjatrader son plataformas mucho más atractivas a la hora de hacer un backtesting automático o un EA, pero creo que el PRT aunque muy básico y fácil, la gente no le saca el jugo suficiente y es más que válido para hacer pruebas de bastante precisión. Quien quiera hacer backtesting discrecional le tocará comprar/descargar el forextester o ir pasando vela a vela apuntando las entradas en un excel (en futuros posts explicaré el procedimiento adecuado)

PRT se compone de tres partes a la hora de automatizar estrategias:

  •  Probacktest: Para backtesting. Controlando este que es el más completo, se aprenderán los otros dos con suma facilidad.
  •  Probuilder: Para crear indicadores
  •  Proscreener: Para buscar acciones/divisas/futuros que cumplan los requisitos que programemos. Muy útil para ahorrar tiempo y tener más activos a nuestra disposición.

Las instrucciones de cada uno son estas:

Por si alguien se quiere leer las instrucciones, aunque explicaré las partes más importantes a continuación.

Escribí hace un tiempo una serie de artículos para Rankia sobre el backtesting, así que voy a intentar esquematizarlos de la mejor manera posible. Empecemos.

Hay una serie de requisitos mínimos que debe cumplir el robot para que no lo deseche directamente y son:

1. Drawdown máximo del 20%

2. Tendencial o no tendencial (Tener esto muy claro!!!!)

3. En base a lo segundo si es tendencial busco una RR mínima de 2:1 o programo un trailing stop (la pena es que sólo son fiables en los tfs cortos), si es contratendencial busco una RR de 1:1 o 2:1.

4. Lo que más busco es que mínimo tenga un % ganador del 20% si es tendencial y de un 30% si no lo es (si no, ni lo optimizo)

5. Luego lo pruebo en diferentes activos (tiene que funcionar bien en varios)

6. La optimización tiene que ir dirigida a buscar un % ganador mayor, no el que te la rentabilidad más alta porque no es válido, es trampa. Suelo optimizar sobre todo el TakeProfit y el MM lo bajo si hay mucho drawdown.

7. El stop lo programo siempre en base a la volatilidad (lo más efectivo que he encontrado hasta ahora sin duda en trading automático) a 1,5 veces el ATR del momento como configuración base.

8. Éste es el código del MM (1,5% por stop/posición) y del STOP ATR con una RR 2:1:

//variables
capital = 10000 + STRATEGYPROFIT
posicion = (0.015 * capital)/ stopus

atr = AverageTrueRange[14](close)
stopus = atr*15000
TP = atr*30000

SET STOP PLOSS stopus
SET TARGET PPROFIT TP

Estos dos códigos los copio en todas mis pruebas, después de mucho probar es sin duda lo que mejor me ha funcionado.

9. Este ejemplo es por cada robot en particular, luego habría que conformar una cartera balanceada de todos ellos partiendo de criterios de estacionalidad, volatilidad, tendencia, intermercados, spreads, correlaciones, diferentes timeframes…

10. Un mínimo de 200 operaciones para que el backtest sea fiable

11. Probarlo luego en «walk forward» o demo

12. Lanzar el EA en real

Después de todo el proceso, PRT nos hará un resumen de nuestra cuenta aplicando nuestra táctica y quedaría de la siguiente manera:

Foto Resultado

Es el momento de hacer un ejemplo real, seguir en la parte dos.