¡Hola! Como continuación a la entrada sobre optimizar sistemas de trading y walk forward, hoy tenemos un ejemplo / guía de cómo hacer el proceso de optimización con walk forward en Amibroker.
Primero que nada aclarar que se pueden hacer optimizaciones de sistemas de trading en Amibroker sin necesidad de hacer el proceso de Walk Forward. Además, siempre hay varias formas de hacer las cosas en Amibroker, este es sólo un ejemplo de tantos. Una vez hechas las aclaraciones, empezamos…
Como ejemplo tomamos un típico sistema de cruce de medias ( nota: esto no es un sistema para operar, sólo es un ejemplo). Las reglas del sistema son: Si la media rápida cruza hacia arriba a la media lenta compramos y si la media rápida cruza por debajo de la lenta vendemos. Todas estas operaciones filtradas con un filtro de tendencia alcista que en este caso es la media simple de 200 sesiones. Para evitar distorsiones al evaluar el sistema el tamaño de la posición es siempre el mismo ( siempre compramos 1.000$).
El código AFL en amibroker es el siguiente:
//Sistema ejemplo basado en el cruce de medias// //Sistema ejemplo:Cómo optimizar con walk forward en Amibroker // //estrategiastrading.com // //condiciones generales// SetOption("InitialEquity",10000);//capital inicial SetPositionSize( 1000, spsValue );//tamaño posición SetOption("extracolumnslocation",1);//columnas optimizacion delante //sistema// Media1= Optimize("Media1",10,5,30,1); Media2=Optimize("Media2",50,30,70,1); Filtro= C> MA(C,200); FMA= MA (C,Media1); SMA = MA (C,Media2); Buy = Cross( FMA,SMA) AND Filtro; Sell = Cross(SMA, FMA);
Con la optimización lo que buscamos saber es qué valor tengo que darle a la longitud de las medias para poder mejorar los resultados. Las variables a optimizar son Media1 y Media 2.
Cómo optimizar con walk forward en Amibroker:
- En Amibroker vas a → Analysis→ Formula Editor. Se abre un recuadro en blanco en el cual insertas el código del sistema.
Atención: Cuidado con copiar y pegar directamente el código porque a veces hay caracteres como las «comillas» que no se leen correctamente.
Dale un nombre al sistema y guárdarlo. - EnAnalysis →New Analysis. Se abre una nueva pestaña en la que puedo elegir el sistema a optimizar.
- Abre la carpeta a la derecha » Pick a File» y elije el archivo AFL correspondiente.
- En «Apply to» hay un desplegable en el que puedes elegir sobre que título vas a optimizar. En este caso como sólo quieres optimizar el sistema para el título que estás viendo elije «Current».
- En el botón «Settings» ( es el dibujo de la herramienta) define las condiciones para la optimización. En este caso sólo operamos largos entonces en «Positions» elije «Long», en «Periodicity» daily.
Como estamos evaluando el sistema, lo haremos sin aplicar comisiones así que las pones a 0. - En la pestaña «Trades» selecciona «Close» para todas las operaciones.
Compras y ventas al precio de cierre de día. - En la pestaña «Walk Forward» selecciono Easy Mode (EOD) porque estás optimizando un sistema para datos diarios en fin de día, además selecciona las fechas de comienzo y fin para el periodo in sample (IS), y selecciona la última fecha que tendrá en cuenta para el periodo out of sample (OOS).
También puedes elegir la longitud de los sucesivos test OOS dando valores a «step» , en este caso está a 1 año.
En el recuadro de abajo se pueden comprobar que los periodos IS, para in sample, y OOS, para out of sample, sean los correctos.
También hay que seleccionar la función objetivo para la optimización «Optimization Target», en este ejemplo CAR/MDD.
Si seleccionas «Anchored» se fijará la misma fecha de inicio para todos los backtest in sample, yo no suelo hacerlo.
- Una vez tengo definidas todas las condiciones de la optimización vas a la estrella Optimize y en el desplegable elije Walk-Forward.
Al terminar el proceso puedes ver los resultados en la pestaña Walk-Forward. Allí se ven los distintos resultados para los periodos IS y OOS así como también se