Impulse System. Revisión de un clásico.
 
 

Impulse System. Revisión de un clásico.

 
TradingSys (AndG) - 17 Jun 2012
2 comentarios
 

tradingsysCon el presente artículo iniciamos una nueva serie de contenidos en la que iremos revisando algunos de los mejores y más conocidos sistemas de trading de todos los tiempos. Analizaremos sus reglas y evaluaremos su potencial para generar beneficios en una cesta amplia de activos. Así mismo buscaremos alternativas para convertirlos en algoritmos viables para el trading de sistemas.

 

Una de las modalidades de operativa más conocidas, tanto desde un enfoque discrecional como sistemático, es la que se conoce como momentum trading. Básicamente se trata de encontrar configuraciones gráficas en las que el inicio de una tendencia está acompañado de un fuerte impulso direccional. Por tanto, su principal técnica de entrada consiste en la utilización de medias u otras herramientas del análisis técnico  para determinar la dirección del mercado (alcista, bajista, lateral) e indicadores de momento con los que estimar la velocidad a la que se mueven los precios.

 El Impluse System fue diseñado por Alexander Elder y publicado en su libro Come Into My Trading Room (Willey & Sons, Nueva York, 2002). Lo primero que tenemos que tener presente es que este sistema, al igual que otros como el de la triple pantalla o las numerosas variantes sobre canales de precios, no fueron ideados desde un enfoque meramente computacional y automatizable; se presentan más bien como instrumentos para racionalizar la operativa del trader discrecional.  Por otra parte,  y aunque se asume su carácter multi-time frame, la práctica totalidad de valoraciones y análisis que hemos podido ver en otros artículos y sitios web, se centran en barras diarias y utilizan como marcadores de contexto gráficos semanales.  Sin embargo,  y como seguidamente veremos, muchas de estas ideas pueden ser fácilmente implementadas en sistemas basado en reglas cuantitativas y analizadas de manera rigurosa en nuestras plataformas de trading.   

 

DESCRIPCIÓN DE LA ESTRATEGIA

 

El sistema Impulse System original utiliza tres instrumentos:

 

A) Una media exponencial corta (13 barras) para identificar la tendencia.

B) El histograma del MACD (12, 26, 9) para medir el momento.

C) Un time frame (TF) de contexto (5 veces el TF de faena) para determinar la tendencia general del mercado. Hay quien utiliza como alternativa al segundo TF otra EMA larga (>200 barras).

 

El Impulse system genera las señales de entrada del siguiente modo:

 

  • LARGOS (barras coloreadas de verde en el indicador):

 >> Si el valor actual de la EMA(13) es mayor que en la barra anterior y el histograma del MACD (12, 26, 9) en la barra actual tiene también un valor más alto que el la barra anterior.

  • CORTOS (barras en rojo):

>> Si la EMA(13) actual es menor que en la barra anterior y el  MACD (12, 26, 9) también es menor.

  • NO ENTRAR (barras en azul):

>> Si no se verifica alguna de las dos anteriores condiciones o, lo que es lo mismo, se detecta una divergencia entre la EMA corta y el MADC.

Además, se exige como condición que el TF de orden superior también esté en tendencia alcista o bajista consecuente con la posición del indicador del impulse system. Es decir, este mecanismo adicional se está utilizando, más que como componente de la lógica, como filtro de señales.

En las versiones que hemos analizado se describen hasta tres formas de salida:

1.- Cuando se produce una divergencia MACD / EMA

2.- En los cruces de los precios con la media guía.

3.- Nunca. El sistema funciona en modo continuo.

 

Hemos comprobado que la primera alternativa no es viable en TFs intradiarios ya que dispara el número de operaciones y genera un beneficio medio por operación (BMO) muy bajo y que no permite salvar los gastos de la operativa (comisiones y deslizamiento). La segunda alternativa solo es viable en el caso de relajar el valor de la media corta por encima del parámetro slow del MACD y, aún así, los resultados que obtenemos son inconsistentes en intradía. Por último, la alternativa continua es la que mejores resultados ofrece. Si bien, para evitar el efecto "cisne negó" consideramos oportuno incluir al menos un MMStop porcentual.

 

SISTEMA MySE

 

Tras analizar la documentación disponible sobre el Impulse System y realizar numerosas pruebas, seguidamente describiremos la configuración y reglas que consideramos más apropiada para el trading intradiario.

Nuestro punto de partida es la afirmación de Elder de que, con independencia del TF elegido, la operativa deberá estar en consonancia con la tendencia de fondo detectada en los mercados. En nuestra opinión esto es correcto, aunque cosa bien distinta es cómo determinar dicha tendencia.

Comencemos mostrando el Impulse System en su configuración original:

tradingsys

 

Tal y como observamos en la imagen, las barras verdes dominan el recorrido alcista y las rojas comienzan a tomar el control incluso en los primeros compases  de movimiento de vuelta. Ahora bien, en configuraciones intradiarias observamos que, incluso con tendencias de fondo muy marcadas, aparecen con demasiada frecuencia microdivergencias (barras azules) que, si hiciésemos caso a las reglas originales, nos estarían sacando de la posición continuamente. Como el BMO guarda estrecha relación con el TF elegido y con el tiempo de permanencia en el mercado, en TFs muy bajos (5-30 min.) nos conviene no precipitar las salidas ya que en tal caso será imposible cumplir la regla del Factor x 2 (transaction costs * 2 < BMO) que hemos defendido en otros artículos de esta web. Esta regla impone un nivel de viabilidad para lógicas intradiarias o umbral mínimo de beneficio por operación a partir del cual un sistema no nos va a merecer la pena, o peor aún, se convertirá en una auténtica trampa para atrapar incautos. De este modo, la primera precaución que tenemos que tomar a la hora de evaluar un sistema, con independencia de lo que digan los demás estadísticos, es no aceptar como soluciones viables aquellas que sitúen el BMO por debajo del factor 2. Esto, como podrán imaginar, impone una restricción clara a la  frecuencia, o cadencia operativa, que podemos obtener con una lógica, en un activo, en un TF y para un nivel de gastos dado.

Encontramos en el foro de la web de NinjaTrader una estupenda versión del Impulse System (Wessel de Roode, 2008) a la que nos hemos permitido añadir el indicador de posicionamiento (Impulse value) que utilizaremos en nuestro sistema MySE.

 

tradingsys

 

 

Funciona del siguiente modo:

 

Una vez determinada la tendencia alcista en la primera línea verde (A) nuestro indicador adopta al valor 1  hasta la aparición de la primera línea roja (B). No hemos tomado en consideración las barras azules (salidas o no entradas) ya que el sistema se volvía inestable al generar un numero desmedido de señales, muchas de ellas improductivas. Aún así no hemos podido evitar casos de falsas entradas (C) que responden al propio movimiento pseudoaleatorio  de las formaciones de precios y son difíciles de erradicar.

 

Por otra parte, en lugar de recurrir a una media contextual larga o a un TF de orden superior, hemos optado por incorporar el filtro de movimiento direccional basado en la pendiente del ADX que ya presentamos en nuestro anterior artículo sobre indicadores consensuales:

 

      Slope(ADX(value),Filter,0)<0

 

Este filtro, además de ser un buen indicador de contexto, permite eliminar un montón de señales improductivas. De hecho, nos ha sorprendido gratamente ver como en la cesta de 12 activos que seguidamente comentaremos consigue aumentar en casi 10 puntos el profit factor.

Las reglas del sistema MySE son muy simples:

1) Entradas: Si la pendiente del ADX es menor que 0 entraremos largos cuando el valor del impulse value sea 1 y cortos si su valor es -1.

2) Salidas: El sistema es de tipo continuo. La única salida que hemos contemplado es la de cierre de posiciones por fin de sesión.

El código para NT7 también es muy sencillo:

 

if(Slope(ADX(Fadx),Filter,0)<0)        

{          

if(CrossAbove(ImpulseSystem(Ema,Fast,Slow,9).ImpulseValue, 0, 1))

      EnterLong();

else if(CrossBelow(ImpulseSystem(Ema,Fast,Slow,9).ImpulseValue, 0, 1))

      EnterShort();

}

 

No se olviden de añadir en la región Initialize() el comando:

 

      ExitOnClose = true;

 

Una vez evaluada la lógica de base siguiendo el protocolo general que detallamos en nuestro programa formativo Trading de sistemas establecemos los siguientes valores paramétricos  genéricos:

 

#region Variables

      private int fast  = 80;

private int slow  = 130;

      private int ema   = 400;

      private int filter= 190;

      private int fadx = 550;

#endregion

 

Estos valores ya no se van a modificar durante las pruebas de contraste realizadas posteriormente.

 

PRUEBAS DE CONTRASTE.

 

Conviene aclarar que una prueba de contraste no es lo mismo que una optimización. En la prueba de contraste analizamos la viabilidad de una lógica determinada, mientras que en la optimización elegimos las combinaciones paramétricas mejores para un activo o conjunto de activos.

Procedemos a evaluar el funcionamiento de la estrategia MySE en un histórico amplio (2001-2012), con un TF de 20 min. y en una cesta compuesta por los siguientes 12 activos:  6E, CL, NG,  ES, TF, FDAX, FESX, FGBL, FTI, IBEX35, GC, ZB. Al combinar en el mismo grupo índices, metales, energía, bonos y divisas en un intervalo temporal tan amplio se lo estamos poniendo realmente difícil al sistema ya que las reglas van a tener que demostrar su viabilidad en instrumentos cuyas distribuciones de precios y estructura intradiaria son muy distintas. Sin embargo, nuestro propósito no es aplicar un procedimiento completo de optimización sino analizar el comportamiento global de la lógica que hemos presentado.

 

El primer paso será la configuración de los mercados:

 

A) Datos históricos: Series intradiarias de minuto de tipo continuo y sin ajuste entre vencimientos. Técnica para rolar estándar, basada en volumen entre vencimientos contiguos.

B) Plantillas horarias: En este caso hemos optado por un compromiso entre amplitud horaria y volumen. En la operativa intradiaria y en mercados electrónicos normalmente se emplean dos criterios para construir las plantillas: Trabajar sólo el horario RTH (regular trading hours u horario tradicional del floor trading) de cada activo o trabajar con un horario extendido en el que se evitan las "horas muertas" de la noche. En el caso de los mercados americanos estas horas muertas van de las 22:15 h. a las 8:00 h. (hora española), momento en el que empiezan a abrir las principales plazas europeas y se reactiva el volumen. En concreto las plantillas aplicadas son: 6E, CL, NG, ES, TF y ZB (8:00 -22:15), FDAX y FESX (9:00 - 20:00), FTI (9:00-19:00), FGBL (8:00-19:00), IBEX35 (9:00 - 17:35).

C) Time frame: Elegimos el de 20 min. por ser un TF intermedio entre las lógicas de alta cadencia o de "gatillo fácil" (1-5 min.) y las más pausadas (30-60 min.).

D) Comisiones y deslizamientos: No aplicables en las pruebas de contraste, pero imprescindibles durante el proceso de optimización activo a activo. Con todo el criterio de validación seguido se centra en conseguir un BMO alto que, idealmente, se acomode a la regla del Factor x 2. Este es el motivo, como ya se ha visto, por el que hemos descartamos otras lógicas alternativas.

 

  • Resultados de la estrategia MySE sin filtro de ADX:

 

Parámetros aplicados al portfolio: Fast=80, Solow=130 EMA=400.

 

 tradingsys

>> Ver table completa. 

 

Incluso sin la aplicación del filtro observamos que nos encontramos ante una lógica con gran potencial. Conseguir, con los mismos parámetros, un Profit Factor del 1,38 en 12 activos que hacen un total de 20.889 operaciones en un intervalo temporal tan amplio (2001-2012J) pone de manifiesto la robustez del planteamiento ideado originariamente por Elder.

Analizando los datos con más detenimiento observamos que el elevado número de operaciones está lastrando el BMO,  particularmente en productos como el GC, FESX y TF que se sitúan muy por debajo del Factor X 2 y no resistirán el peso de los gastos. En el otro extremo encontramos en el FIBEX25, NG y FDAX un BMO excelente. Así mismo, y para no haber incorporado ningún MMStop adicional, tanto el DD. individual como combinado nos parecen aceptables en general, si bien habría que analizarlo caso por caso en cada backtest aplicando gastos. Por último, aunque el porcentaje de operaciones ganadoras es algo bajo, se sitúa en línea con otros muchos sistemas microtendenciales.

 

  • Resultados de la estrategia MySE con filtro de ADX:

 

Parámetros aplicados: Fast = 80, Solow = 130 EMA = 400, FADX=550, Filter=190.

 

tradingsys

>> Ver tabla completa. 

 

Contrariamente a lo que muchos piensan, la aplicación de filtros no suele conducir a una mejora del net profit, ya que el efecto de filtrado reduce considerablemente el número de operaciones que nos proporciona la lógica desnuda. Su pertinencia y calidad debe medirse en términos de la estabilidad general del constructo: Aumento de ratios como el Profit Factor, SQN y Calmar, incremento del porcentaje de aciertos y, sobre todo, aumento del BMO hasta niveles que hagan a la estrategia viable en operativa real.

En nuestro caso, el filtro de ADX cumple claramente su función:

- Constatamos, en promedio, una mejora de 10 puntos en el profit factor.

- La notable disminución del DD. en todos los activos conduce a que, incluso con un beneficio neto ligeramente peor, el Calmar ratio aumente.

- Y, lo más importante, el BMO aumenta sustancialmente en todos los activos.

Algunas curvas de beneficios muestran un aspecto excelente, y ponen de manifiesto que el sistema obtiene beneficios de manara regular en el periodo analizado:

 

  • NG (Natural Gas):

 

tradingsys

 

  • ES (E-mini S&P 500):

 

tradingsys

 

 

  • FDAX (Futura del DAX):

 

tradingsys

 

 

Naturalmente, en el porfolio también hay algunos productos como el oro (GC) que muestra un comportamiento más errático y una curva de peor calidad:

 

tradingsys

 

CONCLUSIONES:

 

Constatamos que el Impulse System de Elder es una metodología robusta que, con pequeñas modificaciones, puede ser adaptada a operativa intradiaria. Tampoco resulta complicado el diseño de algoritmos 100% automáticos partiendo de dicha metodológica, si bien deben estudiarse cuidadosamente algunas cuestiones como el elemento como el mecanismo para validar las entradas en un TF de orden superior, o por otros procedimientos, y la forma de posicionarse una vez determinada la tendencia.

Evidentemente, nuestro propósito no es evaluar un sistema ya terminado, sino analizar la lógica de base del Impulse System y presentar las modificaciones necesarias para su utilización en intradía. Por ello el MySE, más que un sistema, es un banco de pruebas abierto a numerosas modificaciones.

 

IDEAS PARA MEJORAR EL SISTEMA:

 

- Incorporar algún mecanismo de MMStop que minimice el riesgo desde la primera barra. Dado que el sistema en su estado actual no tiene un DD. elevado, quizá con algún stop simple basado en porcentajes o unidades ATR sea suficiente.

- Incorporar filtros horarios de inicio y fin de la operativa para cada producto.

- Limitar el número máximo de entradas por lado a un valor fijo por sesión.

- Tratar de mejorar la lógica con diferentes tipos de medias y otros indicadores de momento.

- Aplicar de manera rigurosa un protocolo de optimización por activos o grupos de activos.

 

El código para NinjaTrader7 del sistema MySE y el indicador Impulse System modificado están disponible para  los usuarios registrados en la sección de descargas.

 

Andrés A. García.

Tradingsys.org, 2012

 

 

 

Comentarios

 

cibercaracola - Duda sobre la pendiente del AD

Buenos días Andrés. 
Un placer leer tu página. 
Sobre el sistema MySE tengo una duda. Cuando miras la tendencia del ADX para entrar en el sistema en función del Impulse System, le pides que la tendencia sea negativa. ¿Es porque sólo quieres entrar en periodos de baja volatilidad y en teoría de tendencias más claras? Yo entendía que el ADX nos daba señales de entrada en pendientes positivas. Gracias.

admin - Re: MySE

Cierto, en este sistema estamos buscando la activación de órdenes en momentos de baja volatilidad. Por ello utilizamos el ADX como filtro en niveles bajos. Este tipo de filtros suelen funcionar mejor en sistemas intradiarios de corto recorrido. 
 
Cordiales saludos.

Añadir comentario

 
Modificado por TradingSys (AndG) - 17 Jun 2012
 
 

* Campos obligatorios

 
 

 
 

Secciones

 
 
 

Entradas recientes

 
 

Enlaces