Proceso de creación de estrategias (Futuros E-mini S&P 500)

Construir una estrategia emini rentable para ES / TF / EMD

por Mark Fric
En este artículo explicaré el proceso completo paso a paso para construir una estrategia rentable y robusta para el ES (E-mini S&P 500 Futures), incluyendo múltiples pasos de diferentes pruebas de robustez.
Esta es una variación de mi antiguo artículo sobre Proceso de creación de estrategias para el mercado de divisas.

Cuando se utilizan técnicas de aprendizaje automático, como la programación genética, es realmente fácil obtener estrategias con una curva de equidad de aspecto agradable. El peligro reside en el ajuste de la curva, por lo que la parte más importante del proceso de elaboración de una estrategia es comprobar su solidez para garantizar que no se ajusta a la curva de los datos históricos.
En este artículo explicaré cómo utilizo el doble filtro OOS más las pruebas de robustez más la prueba de la matriz Walk-Forward.

Este es el resultado

Para la motivación publico los resultados de un buen desempeño estrategias para ES / TF / EMD que he encontrado utilizando el proceso descrito a continuación.

Estrategia 238433 para ES/TF/EMD

La estrategia anterior se publica en nuestro foro (sólo para usuarios con licencia de StrategyQuant) aquí:
https://strategyquant.com/forum/topic/1688-emini-strategy-for-es-tf-emd/
disponible para su descarga.


Entradas

Las únicas entradas que utilizo son mis expectativas de la estrategia - Quiero construir una estrategia para ES (E-mini S&P 500) en 15 Min marco de tiempo que es rentable y tiene tan poco drawdowns como sea posible. Quiero que la estrategia sea lo suficientemente robusta para que funcione también en otros futuros (TF, EMD) y quiero que pase la prueba de matriz Walk-Forward para asegurarme de que la reoptimización funciona en esta estrategia.


Proceso de elaboración de la estrategia

  1. Obtención de los datos
  2. Generar una gran reserva de candidatos potenciales
  3. Primer filtro - Comprobación de fuera de muestra (OOS)
  4. Segundo filtro: nuevas pruebas y segunda comprobación de OOS
  5. Tercer filtro - Comprobación GBPUSD
  6. Cuarto filtro - Pruebas de robustez
  7. Quinto filtro - Prueba de la matriz Walk-Forward

1. Obtención de los datos

Existen algunas diferencias entre los futuros y el mercado de divisas. En primer lugar, obtener datos sobre futuros es un poco más difícil y caro. No hay fuentes de datos gratuitas y la mayoría de los corredores no ofrecen un historial de más de unos meses.
Puedes obtener los datos del broker que los ofrece (Tradestation, si eres cliente suyo) o tienes que suscribirte a un servicio de datos en directo, como por ejemplo Kinetick o iqFeed.
También hay algunos servicios especiales que no ofrecen datos en directo, pero que venden datos históricos de futuros. Para encontrarlos, busque "datos históricos de futuros intradía" en Google.

La segunda diferencia es que los contratos de futuros tienen fecha de vencimiento, los contratos suelen negociarse sólo durante 3-4 meses y luego son sustituidos por una versión más nueva del mismo contrato de futuro.
Para poder utilizar los datos de futuros en el desarrollo de estrategias, necesitamos disponer de al menos varios años de datos en forma de contratos continuos. La mayoría de los servicios de datos ofrecen esta opción, por lo que sólo es cuestión de suscribirse al servicio de datos y descargar los datos en su plataforma de negociación.

Exportar los datos de NinjaTrader
Cuando usted ya tiene datos en su NinjaTrader tiene que copiarlos a StrategyQuant también, por lo que puede texto las estrategias generadas. Para ello, tenemos que exportar los datos de NinjaTrader e importarlos a StrategyQuant. Para exportar los datos tenemos que abrir el gráfico de ES 15 Min. Asegúrese de establecer la sesión de negociación correcta. Yo uso CME US Index Futures RTH en este ejemplo.
Cuando se abre el gráfico sólo hay que buscar SQDataExport y colóquelo en el gráfico. Exportará los datos del gráfico actualmente abierto a un archivo de texto.

Repita el mismo proceso también para TF (Mini Russel 2000 Futures) y EMD (E-mini S & P Midcap 400) también en el marco de tiempo de 15 min con la sesión de negociación correcta.
Utilizaremos estos datos más adelante para probar nuestras estrategias con otros símbolos como forma de prueba de solidez.

A continuación, abra StrategyQuant y cree nuevos símbolos para ES, TF y EMD e importe los respectivos archivos de datos. La importación de datos desde NinjaTrader se describe con más detalle también en la sección Guía del usuario.


2. Generar una gran reserva de candidatos potenciales

En el primer paso de la generación simplemente tengo que generar un gran grupo de estrategias potencialmente "buenas" que luego comprobaré para ver si son robustas. Quiero que todas mis estrategias iniciales sean rentables y robustas (hasta cierto punto), por lo que empleo varios filtros también en esta primera fase.

Mi configuración para este paso
Puede descargar la configuración que utilizo en este paso utilizando el siguiente enlace. Haga clic en el enlace con el botón derecho del ratón y seleccione Guardar enlace como...
A continuación, en StrategyQuant utilice Cargar configuración para cargar este archivo de configuración en el programa.

construir_estrategia_emini.xml

Tenga en cuenta que si usted nombró a sus símbolos en StrategyQuant de manera diferente tendrá que establecer los datos manualmente.

Explicación de los ajustes
En primer lugar, genero todas mis estrategias en múltiples símbolos. Mi objetivo es encontrar una buena estrategia para ES, pero quiero que mi estrategia sea robusta - así que quiero que sea rentable también en EMD. Agrego EMD a los datos adicionales, por lo que ahora la estrategia se pondrá a prueba en ambos símbolos.

Imagen 1: Configuración de los datos

Utilizaré datos desde el 2.1.2003 hasta el 31.12.2012, es decir, 10 años. El resto de los datos se dejarán para posteriores pruebas de OOS.

Utilizaré el modo Evolución Genética. La idea es hacer una población de 200 estrategias, evolucionarlas durante 30 generaciones y volver a empezar desde cero. De esta manera evitaré encontrarme en un callejón sin salida durante la evolución y las mejores estrategias se almacenarán continuamente en el banco de datos.
También puede ver que la única condición para la población inicial es que debe realizar al menos 100 operaciones. No es necesario que sea rentable - la evolución genética debería ser capaz de mejorarla.

Imagen 2: Opciones genéticas

También podríamos utilizar la generación aleatoria sin evolución, pero la evolución debería encontrar las estrategias rentables más rápidamente.

La última pieza importante de la configuración son las opciones de Ranking. Establecí Databank para almacenar 2000 mejores estrategias, porque quiero tener una buena base para el posterior proceso de selección. También he establecido los criterios de selección a Return / Drawdown ratio - este es mi favorito. Puede utilizar otros criterios de selección, tal vez obtendrá mejores resultados.


Imagen 3: Opciones de clasificación

Othe de las cosas más importantes es establecer los criterios de filtro inicial para las estrategias en Databank. Quiero considerar sólo las estrategias que son al menos $2000 en el beneficio, tienen Return / DD relación> 3, al menos 300 operaciones Y Return / DD relación de una cartera de ser al menos 2,5.

Debido a que estoy probando las estrategias en dos símbolos - ES y EMD, los resultados de la cartera para las estrategias también se calcularán. Usando esta condición simplemente especifico que el rendimiento de la cartera no será mucho peor que el rendimiento en sólo ES, y el programa descartará todas las estrategias con mal rendimiento de la cartera.

Ahora sólo tenemos que darle al Inicio y deja que el programa haga el trabajo.
Recuerde que queremos generar al menos 2000 estrategias "buenas" antes de continuar con el proceso de filtrado.

Dependiendo de la configuración y la velocidad de su ordenador podría tardar varias horas o incluso días, así que sea paciente. Si el programa no produce ninguna estrategia durante mucho tiempo, tal vez deberíamos cambiar a un marco de tiempo más alto - 30 min, 1 Hora, o hacer las restricciones menos restrictivas.


3. Primer filtro - Comprobación de fuera de muestra (OOS)

Cuando tenga 2000 estrategias potencialmente buenas en el banco de datos, detendré la generación e iniciaré el proceso de filtrado.
Voy a aplicar el primer filtro - mediante la eliminación de todos los sistemas que tienen mal Out of Sample rendimiento. Puedo hacerlo rápidamente, simplemente ordenando las estrategias en Databank y eliminando los que tienen OOS beneficio menor que $3000.


Imagen 4 Banco de datos con un conjunto de estrategias ordenadas por beneficio neto OOS

Este primer paso suele eliminar una gran parte de las estrategias, por lo que de los 2.000 candidatos iniciales nos quedamos con unos 1.700.


2. Segundo filtro - nueva prueba y segunda comprobación de OOS

En este paso voy a volver a probar todas las estrategias en el periodo desconocido Fuera de la muestra además añadiré pruebas con datos de TF.

Volver a probar las estrategias es sencillo: simplemente seleccionaré todas las estrategias del banco de datos y haré clic en el botón Volver a probar. Esto moverá todas las estrategias a una pestaña Retest. También voy a confirmar el diálogo preguntando si se debe utilizar la configuración de la construcción para Retest

A continuación, ampliaré el periodo de datos hasta el final de los datos disponibles. Las estrategias se generaron con datos del 2.1.2003 al 31.12.2012, ahora volveré a probar las estrategias con datos hasta el 31.12.2013 (un año más que no se utilizó durante la generación) y estableceré el periodo Fuera de muestra del 31.12.2012 al 31.12.2012.
Tenga en cuenta que esto volverá a probar las estrategias en los datos completos, y la parte OOS mostrará el rendimiento de la estrategia durante el último año de los datos no utilizados anteriormente.


Imagen 5: Ajustes para la repetición de la prueba

Como también tengo datos históricos de TF, los añadiré a los datos adicionales para comparar el rendimiento de los tres eminis.

La prueba podría tomar algún tiempo y después de que se hace voy a eliminar una vez más todo el sistema que tienen mal rendimiento fuera de la muestra. Una vez más puedo ordenar las estrategias en Databank por Net Profit (OOS) y eliminar los que tienen OOS beneficio menor que $1500.


3. Tercer filtro - EMD, comprobación TF

El tercer filtro es visual - Comprobaré el rendimiento de las estrategias en los símbolos EMD y TF. Iré a Resultados -> Gráfico de renta variable, cambiaré el gráfico a Cartera y pasaré por las estrategias una por una mirando las curvas de renta variable para EMD y TF.


Imagen 6: Ejemplo de buen y mal funcionamiento del EMD / TF

¿Qué buscamos? Debido a que estos eminis están altamente correlacionados, quiero que la estrategia sea rentable en los tres símbolos, al igual que en el primer ejemplo. Podemos ver en el segundo ejemplo que el rendimiento en TF es muy pobre en comparación con ES y EMD, su curva de equidad no es grodwing, así que voy a descartar este tipo de estrategias.

También puede darse otro extremo: que el rendimiento en TF y/o EMD sea mucho mejor que el rendimiento en ES. Esto está bien, a menudo sucede que las estrategias funcionan mejor en TF que en ES.

No deberíamos fijarnos sólo en el rendimiento final, sino también en las curvas de renta variable. Deberíamos descartar todas las curvas de renta variable que tengan largos periodos de estancamiento, o grandes caídas.

De esta manera podemos hacer el filtro muy sin embargo, debemos terminar con no más de 10-20 estrategias principales restantes para el siguiente paso.


4. Cuarto filtro - Pruebas de robustez

Después de eliminar todas las estrategias con mal rendimiento EMD / TF quedan menos de 20 estrategias que tienen un buen rendimiento IS y OOS, así como un rendimiento satisfactorio en EMD / TF. Ahora voy a volver a probar las estrategias de nuevo con pruebas de robustez y Money Management para ver cómo cada una de las estrategias maneja pequeños cambios en las entradas y para poder comparar las estrategias entre sí.

Cambiaré la gestión del dinero de tamaño fijo a cantidad fija, dejando que cada estrategia arriesgue $500 por operación. Esto permite comparar mejor las estrategias, ya que arriesgan la misma cantidad por operación.


Imagen 7: Ajustar la gestión monetaria a una cantidad fija

En las pruebas de robustez utilizo al menos 20 simulaciones y pruebo la estrategia para todo tipo de situaciones de estrés. Tras configurar la prueba de robustez, vuelvo a probar las estrategias.
Esta vez será rápido porque sólo quedan unas pocas estrategias en el Banco de Datos.


Imagen 8: Pruebas de robustez

Cómo evaluar las pruebas de robustez
Las pruebas de robustez nos muestran cómo puede comportarse la estrategia en la realidad, cuando hay operaciones perdidas, datos históricos diferentes, etc. Estoy buscando estrategias que tengan valores aceptables para Net Profit y Drawdown en 95% nivel de confianza.


Imagen 9: Resultados de las pruebas de robustez

En el ejemplo anterior podemos ver los resultados de robustez de dos estrategias. La estrategia de la izquierda tiene un beneficio aceptable, pero la reducción se ha más que duplicado en comparación con el resultado original.
La estrategia de la derecha también tiene beneficios en un nivel aceptable y la reducción casi no ha variado.

En este paso elegiré sólo 1-3 estrategias finales que serán sometidas a la siguiente prueba de robustez.
Estas estrategias finales se seleccionan en función de los mejores resultados en las pruebas de robustez, la rentabilidad global y también la sencillez: quiero que las reglas de la estrategia sean lo más sencillas posible y que las reglas de negociación tengan algún sentido.


5. Quinto filtro - Prueba de la matriz Walk-Forward

Nos quedan unas pocas estrategias y podemos realizar la prueba definitiva de robustez: la prueba de la matriz Walk-Forward. La matriz WF es simplemente una matriz de optimizaciones walk-forward con diferente número de ejecuciones y periodos de ejecución.

Si la estrategia pasa la prueba de la matriz Walk-Forward significa que con la ayuda de la reoptimización de parámetros la estrategia se adapta a una amplia gama de condiciones de mercado Y también que la estrategia no es curva ajustada a datos particulares - ya que con la reoptimización funciona en muchos períodos de tiempo diferentes.

Además, la prueba WF Matrix también nos indica si la estrategia debe reoptimizarse permanentemente y cuál es el periodo de reoptimización más óptimo.

La prueba de la Matriz Walk-Forward tiene que hacerse para cada estrategia por separado. Voy a cargar mi estrategia para Optimizer y seleccione Walk-Forward Matrix opción. También seleccionaré los pasos para las ejecuciones y los porcentajes de OOS. StrategyQuant pasará por todas estas combinaciones, realizando la optimización Walk-Forward de la estrategia.


Imagen 10: Configuración de la matriz Walk-Forward

Parametrización de la optimización
Para que la optimización tenga sentido hay que configurar los parámetros de la estrategia que se van a optimizar. Cada estrategia utiliza una lógica diferente y tiene parámetros distintos, por lo que tienes que configurar la optimización de forma diferente.


Imagen 11: Optimización de parámetros

Esta estrategia es relativamente simple, por lo que voy a optimizar sólo el valor de Stop Loss y el coeficiente de arrastre del stop.
No es necesario optimizar todos los parámetros, sino sólo los que más influyen en el rendimiento de la estrategia.

Evaluación de la matriz Walk-Forward
Cuando termine la optimización, haré clic en el resultado de la matriz Walk-Forward en Databank para ver los detalles.

Quiero que el optimizador me dé una respuesta clara si la estrategia pasó la prueba de optimización Walk-Forward, por lo que tengo que establecer criterios de puntuación.
Son criterios sencillos que deben cumplirse para que la estrategia pase la prueba.


Imagen 13: Resultados de la matriz Walk-Forward

El resultado final es que la estrategia ha superado la prueba de robustez de la matriz Walk Forward. El gráfico de puntuaciones 3D muestra que 19 de las 24 combinaciones superaron nuestros criterios (con la configuración por defecto).
No es necesario que la estrategia pase todas las combinaciones, estoy buscando un área de 2×2 o 3×3 en la que la mayoría de las combinaciones hayan pasado - éste será el grupo de las mejores combinaciones de reoptimización. En este caso, puedo ver que 10 ejecuciones con 30% Fuera de Muestra es una de las mejores combinaciones, porque está rodeada de otras combinaciones que también pasaron.

Cuando compruebo el gráfico de optimización Walk-Forward puedo ver que la estrategia sigue siendo rentable también durante la reoptimización. La disminución de la rentabilidad está en línea con las pruebas que obtuvimos de Monte Carlo análisis de robustez, pero la estrategia sigue siendo rentable.


Imagen 14: Gráfico de optimización Walk-Forward


Resumen

Describí mi proceso completo de trabajo con StrategyQuant, que dio lugar a algunas estrategias nuevas e interesantes.

Estas estrategias son sólo muestras y me tomó menos de 2 días de SQ corriendo y alrededor de 1-2 horas de mi tiempo para encontrarlos con el uso de StrategyQuant.
Puede probarlo usted mismo, inspirarse y, posiblemente, mejorar el proceso con sus propias ideas, que podrá compartir en nuestro foro.

Posibles mejoras del proceso - puede intentar buscar estrategias por separado para la dirección larga y corta. Cada dirección tiene su propia dinámica, y diferentes estrategias para largo y corto podría devolver mejores resultados.
No mencioné Mejorador - es una potente herramienta que le permite buscar una variación mejor de su estrategia actual, si aún no está satisfecho con el rendimiento.

Sólo tenga en cuenta - el punto no es encontrar la estrategia que es perfecto en los datos históricos. Esta es una receta para el desastre, porque la estrategia excesivamente optimizado está garantizado que falle en el comercio real.
Nuestro objetivo debe ser encontrar una estrategia que sea robusta a través de diferentes datos y/o símbolos, porque esto significa que tiene una ventaja real sobre el mercado.

Suscríbase a
Notificar a
0 Comentarios
Feedbacks de Inline
Ver todos los comentarios

Seguir leyendo