Sistema SVBreak
 
 

Sistema SVBreak

 
TradingSys (AndG) - 22 Ago 2006
2 comentarios
 
tradingsys Una vez analizadas las principales características de las estrategias de ruptura de rangos de volatilidad (VBO), vamos a construir una especie de banco de pruebas que nos permita dilucidar si algunas de las ideas abordadas en el artículo anterior constituyen una basa sólida para el diseño de sistemas aplicables a los mercados de futuros.

 
Un sistema es útil cuando se diseña como resultado de una comprensión detallada de la dinámica y fuerzas del mercado; es el modelo conceptual quien dirige la investigación y nos indica qué reglas tenemos que emplear y por qué. Así pues, si asumimos como postulado fundamental los ciclos de expansión y contracción de rangos de precios lo primero que tendremos que encontrar es una herramienta que nos ayude a visualizar de manera intuitiva este proceso.

Los canales basados en el ATR pueden constituir un buen punto de partida ya que permiten un seguimiento dinámico de la volatilidad, incluso en pequeñas oscilaciones intradiarias de muy pocas barras. En el siguiente gráfico de Visual Chart se muestra uno de estos canales construido con el indicador Vchannel desarrollado en esta web:


tradingsys


Su estructura es muy sencilla: La línea del centro es una media exponencial (EMA) de 14 barras, a la que se suman (línea superior) y se restan (línea inferior) 2 unidades ATR(14).

Cuando el mercado está en tendencia los cierres consecutivos tienden a situarse por encima o por debajo de la media. Siendo un buen indicador del punto de ruptura (break point) los desbordamientos de máximos y mínimos por encima o por debajo de las “líneas ATR”. Por el contrario, cuando el mercado se encuentra en un punto de equilibrio entre la oferta y la demanda -fase contractiva- las líneas del canal tienden a estrecharse cada vez más (A) formando una típica figura de cuello de botella que anuncia la inminencia de una nueva fase expansiva (B) al alza o a la baja:


tradingsys


AMPLITUD DE LOS CANALES ATR

Uno de los puntos críticos de este indicador es la distancia entre las bandas superior e inferior. En general, para que un canal de volatilidad sea eficiente, al menos el 90% de las barras tienen que estar dentro de ambos límites. Los desbordamientos al alza o a la baja deben ser excepcionales (8%-10%) -aunque no extremadamente infrecuentes- si queremos mantener un equilibrio adecuado entre el retardo (lag) y el número de señales falsas (false breakout).


La variable ATR_Units que determina el número de unidades ATR por encima y por debajo de la media exponencial deberá ser ajustada cuidadosamente según las condiciones de cada mercado y el time frame que estemos empleando. Se trata de una variable de contexto, no de un parámetro más que deba ser optimizado. De hecho, ni siquiera he contemplado la posibilidad de incluirla como parámetro en el sistema que estamos analizando. Tras sucesivas pruebas empíricas he obtenido algunos valores de referencia que pueden ser de utilidad:


tradingsys



Como norma general, cuanto mayor es el time frame menor debe ser el número de unidades ATR de las bandas.


EL BREAK POINT

También reviste especial importancia la determinación de la zona de ruptura de rangos: Es decir, el punto a partir del cual la transición entre dos niveles de precios resulta altamente probable.


A finales de los 80, numerosos analistas técnicos habían desarrollado toda una taxonomía de patrones -o formaciones chartistas de muy pocas barras- que, a su juicio, incrementaban las posibilidades de un break point consistente. Algunas típicas “figuras de libro” son:



tradingsys


Por desgracia, la mayor parte de ellas se han revelado completamente inútiles al ser implementadas en sistemas automatizados. Entre otras cosas, por la dificultad de describir en términos matemáticos precisos lo que el ojo experto es capaz de ver con un relativo nivel de subjetividad.


Este es el motivo por el que la mayoría de los sistemas VBO que conozco establecen como punto de ruptura los desbordamientos de un determinado canal de volatilidad. En el caso de nuestro sistema SVbreak, las reglas condicionales que disparan las órdenes en stop están determinadas por los cruces de máximos y mínimos con las bandas superior e inferior del canal ATR.


REGLAS DEL SISTEMA


Compra.- Lanzar una orden en stop con un trigger de entrada (x) en la apertura de la próxima barra si: Maxima>= LineaSup.

Venta.- Lanzar una orden en stop con un trigger de entrada (x) en la apertura de la próxima barra si: Minima<= LineaInf.

Cerrar largos.- Cuando se verifica la condición: GetMarketPosition=1, se lanza una orden en stop empleando la siguiente fórmula: SignalK+((SignalK*Otrigger)/100), donde la variable signalK es igual a la función: GetHighestData, modulada por el número de barras empleado en la media exponencial del canal ATR.


Cerrar cortos.- Simetría inversa.


Como puede verse, los cierres de posiciones son órdenes de objetivo de beneficios en lugar de los habituales stops de pérdidas. El motivo es que el riesgo asumible ya está contemplado en las unidades ATR que determinan la distancia a la media de las bandas superior e inferior del canal. Por tanto, el riesgo máximo es igual a la amplitud dinámica bandas en cada nueva barra de la serie de precios.


Ciertamente, se trata de una alternativa arriesgada que no permite establecer un nivel de riego fijo para cada operación, pero es la que mejores resultados proporciona, como seguidamente veremos, en la pruebas de backtesting y walk-forward aplicadas al sistema.


ESTRUCTURA DEL ALGORITMO

Como ya he dicho, el indicador base es el Vchannel descrito en esta web.  Sin embargo, debido a las dificultades de instalación que me han planteado algunos usuarios (y por motivos de simplicidad) he decidido, a partir de ahora, incluir los indicadores en el código del sistema siempre que esto sea posible. Así pues, la primera instancia es la fórmula del Vchannel:


tradingsys


Las órdenes condicionales de compra y venta vienen determinadas por:


tradingsys


Donde el parámetro “Etrigger” define la amplitud de rango que asignamos, como porcentaje, a la barra actual. Por otro lado, la variable “passbarr” intenta corregir, aunque no lo consigue del todo, dos problemas relativos funcionamiento de VC en tiempo real y en backtesting:


Cuando el canal de precios es muy estrecho (y, en consecuencia, dos órdenes de compra/venta están muy cercanas la una a la otra) puede ocurrir que ambas se cierren simultáneamente en la misma barra. En teoría, esto debería corregirse empleando la función GetMarketPosition (GMP). Sin embargo, por algún motivo que no alcanzo a comprender los errores persisten -aunque en menor medida- tanto en la operativa real como en el backtesting. La variable “passbarr” se ha revelado como solución más eficiente para mitigar este problema. Por otra parte, las órdenes limitadas y en stop permanecen activas durante todo el desarrollo de una barra, lanzándose una y otra vez mientras el rango de precios esté dentro de los límites de la orden. Por ello es preciso separarlas de las órdenes de entrada e incluir la condición (GMP).


Si no se aplican estas correcciones los sistemas aplicados a los gráficos mostrarán el siguiente aspecto:


tradingsys


Y las diferentes estadísticas ofrecerán resultados  inconsistentes que no reflejarán para nada el potencial del sistema.


Por lo que se refiere al cierre de posiciones, la idea es dejar correr las operaciones abiertas hasta un objetivo dinámico de beneficios, gobernado por las funciones GetHigestData y GetLowestData, a las que se añade cierto trigger de salida en las correspondientes órdenes limitadas:


tradingsys





VARIABLES Y PARÁMETROS:


Variables:


SignalK: Toma los valores de GetHigestData y GetLowestData en cada una de las órdenes de salida.

Passbarr: Establece el valor lógico (1,-1) en los condicionales de entrada.

Lsup: Valor en cada barra de la línea superior en la fórmula del Vchannel.

Lmedia: Valor en cada barra de la línea medía del Vchannel.

Linf: Valor de la línea inferior en la citada fórmula.

AvTrueRangeDataPeriod: Número de barras del ATR: Nbarr/2

GetHighestDataLength: Barras para el cálculo del HighetsHight: Nbarr

GetLowestDataLenght: Barras para el cálculo del LowestLowt: Nbarr

ATR_Units: Número de rangos ATR. Ver tabla superior.


Parámetros:


Otrigger: Valores del trigger de cierre de posiciones en las órdenes limitadas. Los valores de referencia son de 0,01 a 1,2, en saltos de 0,01.


Etrigger: Valores del trigger de entrada en las órdenes en stop. Los valores de referencia son de 0,01 a 1,2, en saltos de 0,01.


Nbars: Número de barras a considerar en la composición del canal de volatilidad y de las funciones GetHighest y GetLowest. Valores de referencia: Entre 10 y 60.



COMPORTAMIENTO DEL SISTEMA:


SVbreak permite dos modos de funcionamiento muy distintos. Con un canal de pocas barras y unos triggers muy ceñidos se obtiene una operativa rápida, con DDs. más pequeños pero con un beneficio medio por operación demasiado corto, lo que dispara la sensibilidad del sistema a los deslizamientos.


tradingsys


Cuando el tiempo de  permanencia en el mercado no se considera un factor crítico, es preferible abrir los triggers al máximo, para obtener una operativa menos nerviosa y con mayor beneficio por operación cerrada. De este modo, el sistema se convierte en una estrategia prácticamente tendencial que dará un menor número de operaciones pero con un beneficio unitario mayor.


tradingsys



Los dos anteriores gráficos, muestran de manera elocuente ambas aplicaciones del sistema. Personalmente me decanto por la última, ya que la experiencia demuestra que todos los sistemas tipo VBO son auténticas máquinas de generar slippages, con independencia del mercado en que se apliquen. El motivo es que las operaciones salen disparadas en una situación de fuerte momento, yendo a parar casi todas ellas a la banda menos favorable de la horquilla posicional.

Por otra parte, en momentos de indecisión con abruptos picos y valles (y, en consecuencia, proliferación de “false breakouts”) las operaciones fallidas se suceden de manera constante, devolviendo al mercado buena parte de los beneficios obtenidos.


tradingsys


APLICACIÓN Y RESULTADOS.

Siempre que intento calibrar el potencial de una nueva estrategia, me gusta comenzar con un estudio general de viabilidad en una muestra de varios mercados. Esta vez he seleccionado todos los productos derivados del CME mini que ya he estudiado anteriormente con otras estrategias. A ellos he añadido, por simple contraste, los resultados obtenidos en  futuro del IBEX35. El time frame elegido en todos ellos es de 30 min. y el número de barras, el máximo permitido por los históricos que manejo. En todos los casos he aplicado las comisiones correspondientes (6$ futuros americanos, 3,75€ IBEX) y un deslizamiento equivalente al valor (en euros o dólares) de un tick.


tradingsys


Por lo que se refiere a las pruebas out-of-sample, aplicadas en el E-mini Russell 2000 (tf: 30 min.) durante los años 2002 a 2005, he seguido el método 9x3: Optimización (utilizando como diana el ratio) de nueve meses y aplicación de los mismos parámetros durante los tres meses siguientes.


Los resultados obtenidos fueron:



tradingsys


De momento, y en espera de nuevos análisis, nuestro primer test out-of-sample ha resultado bastante esperanzador. El acople medio debido a la sobreoptimización es relativamente bajo (18,49%) mientras que la esperanza de obtener beneficios parece consistente en los casi cinco años de histórico analizados.


Pero quizá, los más sorprendente es el desglose de resultados mes a mes: Es raro encontrar tres meses seguidos con pérdidas, y el DD máximo raramente pasa del 17%, incluso en los meses más flojos del 2005.



Desglose por años:


AÑO 2002: El beneficio medio de la muestra out-of-sample ascendió a 24,06%, uno de los valores más altos (junto con el del año 2003) que contrasta con las rentabilidades mucho más discretas obtenidas en los siguientes ejercicios. Motivo: La alta volatilidad general de los mercados. El índice VIX llegó hasta un pico del 45 puntos, uno de sus máximos históricos, mientras que el effective range del E-mini Russell 2000 rondó los 1500$. Estas circunstancias –bastante infrecuentes- son extraordinariamente positivas para todos los sistemas intradiarios, en particular para los VBO.


tradingsys


AÑO 2003: La suma de los cortes out-of-sample alcanza su nivel más alto (27,58%) pero, por desgracia, el acople al backtesting también aumenta (22,29%), restando legitimidad a nuestro brillante resultado. La volatilidad media del ejercicio ha descendido algo; es el inicio de la curva bajista del VIX que se prolongará hasta nuestros días. Con todo, el effective range sigue siendo más atractivo para el Russell 2000 que para otros mercados.


tradingsys



AÑO 2004: Más complejo y de difícil optimización. Los beneficios, incluso en el Backtesting, disminuyen de manera clara, evidenciando la caída de la volatilidad. Con todo, la congruencia del modelo se conserva e incluso mejora: El diferencial entre la serie optimizada y los cortes out-of-sample (16,26%) es el más bajo de todo el período.


tradingsys



AÑO 2005: Es, sin duda, el ejercicio más difícil. El beneficio en las pruebas out-of-sample pierde los dos dígitos, quedándose en un raquítico 8,88%. El diferencial entre las series “pre” y “post” es francamente malo (28,25%), poniendo de manifiesto una clara pérdida del potencial predictivo del modelo. Esto suele ocurrir con relativa frecuencia en épocas de indefinición o de muy baja volatilidad y se traduce, casi siempre, en prolongadas rachas perdedoras en las que se acumulan los mayores DDs.


tradingsys


AÑO 2006: Nuestro estudio concluye en el mes de julio. Son meses desiguales caracterizados por un ligero repunte de volatilidad. El beneficio acumulado en las pruebas out-of-sample alcanzó el 11,36% durante el primer semestre. Los datos no serán concluyentes hasta fin de ejercicio.


                      tradingsys

Seguidamente mostramos el gráfico comparativo del beneficio acumulado durante los 55 meses de la prueba. El resultado es bastante esperanzador y está en línea con otras  estrategias del mismo tipo.

tradingsys


CONSIDERACIONES FINALES


SVbreak no es un sistema completo, sino una especie de banco de pruebas con el que comprobar algunas de las ideas sobre ruptura de rangos de volatilidad enumeradas en el artículo anterior. Todavía no está suficientemente calibrado y es prematuro su uso en tanto en cuanto no supere las siguientes fases del proceso de desarrollo y validación de sistemas.

Aunque los resultados obtenidos han demostrado la viabilidad de esta metodología en numerosos mercados, considero necesario analizar detenidamente las tres siguientes cuestiones relativas al tipo de mercado en que se desea aplicar:


A) Liquidez. Todos los sistemas VBO funcionan mejor en productos muy líquidos, dada su alta sensibilidad a los deslizamientos.

B) Evolución del effective range (ER). Como norma general deberá elegirse siempre el mercado cuyo rango diario de volatilidad multiplicado por el valor de cada punto ofrezca el valor más alto. Existe un umbral mínimo de volatilidad intradiaria a partir del cual la operativa es inviable. El motivo por el que hemos elegido en nuestro estudio el futuro del E-mini Rusell2000 era por ofrecer uno de los ER más atractivos de los productos CME mini.

C) Tamaño del beneficio medio por operación. Como regla general deberá ser por lo menos el doble que el gasto medio por operación (comisiones+slippage) Esta cuestión, como ya hemos visto, está muy relacionada con el estilo de la operativa. Los triggers de entrada y salida servirán para modular la relación entre beneficio máximo (teórico) y tamaño medio de cada operación necesario para que la operativa sea viable.




Por último, recordar a nuestros lectores registrados que el fichero con este sistema está disponible en la sección de descargas. Aunque en VC 4x funciona perfectamente sin necesidad de instalar ningún indicador, es recomendable para entender (y visualizar) mejor la lógica del sistema tener instalado Vchannel en el gráfico sobre el que se esté operando.


PD. Si algún lector encuentra algún fallo de funcionamiento o propone alguna idea que contribuya a mejorar esta estrategia agradeceremos enormemente su aportación. También agradeceríamos sugerencias sobre nuevos temas relativos a la operativa sistemática a tratar en posteriores artículos. 

Todas las aportaciones pueden enviarse a la dirección: admin@tradingsys.org Si se consideran relevantes y de calidad (y el autor da su consentimiento) podrán ser publicadas.


Andrés A. García.
© Tradingsys.org





 

Comentarios

 

MONOBIZZ - Muy interesante

El sistema es super interesante, aunque como bien dices hay que usarlo como una base. El indicador Vchanel no está para descarga, he intentado compilarlo como el de el sistema pero no he sido capaz. 
El problema que le he visto es que que la perdida media y beneficio medio son muy próximas y eso te puede hacer la equity curve a la baja según como se de la secuencia de aciertos.

admin - Re: MONOBIZZ

Efectivamente, este sistema se diseñó hace dos años como banco de pruebas para estudiar el potencial de toda una seria de estrategias basadas en rupturas de rangos. Pero no es un sistema para su aplicación final. 
 
Creo recordar que el indicador Vchannel estaba incorporado en el código del sistema, por lo que no hace falta. También en la sección de Descargas > Indicadores hay un VChannel.Desconozco si es el mismo (...Ha pasado tanto tiempo que ya ni siquiera utilizo VC para mis sistemas).

Añadir comentario

 
Modificado por TradingSys (AndG) - 23 Ago 2006
 
 

* Campos obligatorios

 
 

 
 

Secciones

 
 
 

Entradas recientes

 
 

Enlaces