Si nos marcamos un objetivo determinado, no vamos a querer que ese objetivo disminuya en ningún caso; o bien se consigue o no se consigue. Sin más. No obstante, vamos a poner en tela de juicio esta afirmación planteando algunas ideas de objetivos dinámicos que, como verán, sí que pueden resultar interesantes hasta para el más escéptico de los traders.
Acerca de los objetivos dinámicos
Tal y como comentamos para el caso de los stops dinámicos, las posibilidades y variaciones que podemos encontrar dentro de lo que se podría englobar como objetivos dinámicos son inabarcables. De entre todas, nosotros nos vamos a quedar con dos ideas: Un objetivo dinámico decreciente y un objetivo dinámico creciente. En ambos casos, su actividad dependerá de la volatilidad del mercado. Empezaremos por el objetivo decreciente.
Objetivo dinámico decreciente
De las dos ideas que vamos a ver, ésta sería la más conservadora: Se trata de un objetivo (en el ejemplo, porcentual) cuyo valor es constante siempre y cuando el negocio se encuentre dentro de una tendencia fuerte. Sin embargo, si la tendencia comienza a debilitarse y el objetivo no ha sido alcanzado, en ese caso, detectaremos la situación y modificaremos el valor del objetivo disminuyéndolo hasta que termine alcanzándose.
Vamos a verlo con un ejemplo. En la siguiente imagen, esta estrategia toma posiciones cortas a raíz de un movimiento bajista del mercado:
La línea de puntos discontinua que vemos en los 9250 representa el objetivo (1.8%). En este caso, el impulso no es lo suficientemente fuerte y el precio acaba girando justo antes de cruzar el nivel objetivo. Finalmente, la operación acaba con el cierre de sesión. Es decir, hemos estado cerca de conseguir nuestra meta pero definitivamente no hemos podido aprovechar todo el recorrido favorable a la posición.
Pero, ¿y si pudiéramos detectar esta clase de situaciones, en las que el impulso al que estamos siguiendo se acaba debilitando antes de que se alcance el precio objetivo? En tal caso, podríamos reaccionar para intentar aprovechar la situación de ventaja del negocio antes de que acabemos perdiéndola.
El primer paso, por tanto, sería buscar un método que nos avise de las situaciones de agotamiento de una forma cualitativa. Se nos ocurre utilizar para ello uno de los osciladores de momento que podemos encontrar dentro de la lista de herramientas de análisis técnico. En concreto, usaremos un indicador de Visual Chart 6 de nombre Bollinger Volatility Oscillator N, que no es más que un método para medir la volatilidad entre las bandas de Bollinger en términos porcentuales. Su representación sería la siguiente:
Los dos puntos que hemos destacado en la imagen marcan la línea de actuación que vamos a seguir: Por un lado, cuando el oscilador alcanza la banda de máxima volatilidad (por defecto en 80%) quiere decir que nos estamos encontrando en un momento que, desde un punto de vista estadístico, se sale de los márgenes de volatilidad que se han venido dando en las últimas barras. En segundo lugar, cuando el oscilador, tras haber alcanzado la zona del 100% inicia una caída de la volatilidad constante, es una buena señal de que poco a poco se está produciendo una igualdad de fuerzas. Sumando ambos datos, podemos suponer que cuando ocurra algo así existe un índice especialmente alto de que la tendencia de referencia o está perdiendo fuerza o directamente la ha perdido, como ocurre en este ejemplo.
Ya tenemos la información que nos puede servir de señal para actuar en caso de que no se haya alcanzado el objetivo. ¿Qué hacer a continuación? Lo que proponemos en este primer ejemplo de objetivo dinámico, es ir disminuyendo paulatinamente la distancia del objetivo, es decir, acercar la orden de salida poco a poco al precio, ya que según la estadística el precio tenderá a alejarse de la orden.
La siguiente pregunta sería ¿en qué proporción hacemos disminuir el valor del objetivo? Se pueden aplicar muchas ideas, por quedarnos con una, proponemos hacer uso igualmente del oscilador para establecer la proporción de cambio del objetivo. ¿Cómo? Siguiendo la siguiente regla: Como el punto de referencia que nos indica el posible agotamiento de tendencia sería el nivel de máxima volatilidad, y éste valor está en términos porcentuales, a partir de ese instante aplicamos la cantidad porcentual especificada por el indicador sobre el propio valor del objetivo. El resultado sería el siguiente:
En los casos en los que la entrada se produzca dentro de un impulso estable y sin tintes de agotamiento, la aplicación de esta regla no tendría ningún efecto negativo, en la siguiente imagen vemos un ejemplo:
Aclarar por último, que el oscilador sólo mide los momentos de volatilidad y por tanto no lleva asociada ninguna señal de dirección de la tendencia. En la siguiente imagen vemos cómo afecta a un negocio de compra siendo el movimiento del oscilador similar al visto anteriormente en una situación de entrada a corto:
Diseño del Objetivo Dinámico Decreciente
Vamos a ver a continuación cómo elaborar este objetivo. Para ello usaremos Visual Chart 6 así como los dos lenguajes de programación que hay disponibles.
Comenzaremos por incorporar a nuestra estrategia el indicador Bollinger Volatility Oscillator N. Podemos incorporar los parámetros de dicho indicador a la lista de parámetros de la estrategia o bien dejarlos fijos (en tal caso, recomendamos usar 100 barras para el valor del parámetro N).
En VB.NET:
En la Plataforma Visual:
Incluimos a la lista de parámetros de la estrategia el parámetro PctActiva, para indicar a partir de qué porcentaje del oscilador se activaría el objetivo dinámico:
En VB.NET:
En la Plataforma Visual:
PctActiva nos servirá, además, para desactivar el objetivo dinámico: Si su valor es 101, el oscilador nunca alcanzará ese nivel y por tanto sólo entrará en juego el objetivo fijo.
Por otro lado, añadimos una variable global de tipo lógica que llamaremos touch100. Esta variable se pondrá a falso cuando abramos un nuevo negocio y verdadero cuando el oscilador alcance el nivel máximo.
Por tanto, el proceso será el siguiente:
- Cuando abramos un nuevo negocio (la función GetBarsSinceEntry valdrá cero), Touch100 pasará a estar en falso.
- A partir de tener una posición abierta, observamos si el indicador alcanza el valor de PctActiva.
- Cuando esto ocurra, Touch100 pasará a estar a verdadero.
- A partir del momento en el que Touch100 sea cierto, el objetivo sólo se aplicará en un tanto por ciento de su valor en base al porcentaje indicado por el indicador.
En VB.NET:
En la Plataforma Visual:
Conclusiones
Es interesante la idea de que la disminución del objetivo vaya en sintonía con la caída de la volatilidad del precio, si bien puede resultar un cambio del objetivo demasiado lento y perder la posibilidad de cerrar el negocio a un precio mejor. Si queremos tener esto en cuenta, siempre podemos aplicarle un factor de velocidad al cambio del objetivo, multiplicando, por ejemplo, el valor del oscilador por este factor. Sin embargo, esto también puede hacer que el negocio cierre demasiado pronto impidiendo la posibilidad de que el mercado se recupere y vuelva a seguir la dirección favorable al negocio.
Ahora vamos a ver un objetivo creciente.
en este caso, tomando como punto de partida la situación opuesta, es decir, a partir de un porcentaje fijo de beneficios, incrementar dicho valor si se produce un crecimiento de la volatilidad. Veamos cómo.
Objetivo dinámico creciente
Así como el uso del objetivo dinámico decreciente lo consideramos un método conservador puesto que íbamos reduciendo el margen de ganancias, lo que vamos a diseñar ahora sería lo contrario: un método más arriesgado puesto que alejamos el objetivo cuando el precio se le aproxima. ¿Tiene esto sentido?
Conforme vayamos avanzando veremos que sí. Lógicamente, esto no se hará en todos los casos, sólo en aquellos en los que se esté detectando un crecimiento de la actividad: Es decir, vamos a arriesgar más si observamos que estamos dentro de un impulso fuerte con posibilidades de progresar más allá de los niveles de ganancia que nos habíamos marcado. Con esta idea, lo que buscamos es aplicar un porcentaje de ganancia relativamente bajo para los casos de movimientos débiles pero que dicho porcentaje aumente cuando el negocio se encuentre dentro de un movimiento acelerado.
Veamos un ejemplo. En la siguiente imagen, esta estrategia toma posiciones cortas a raíz de un movimiento bajista del mercado:
La estrategia tiene marcado un objetivo del 0.5%, que de hecho lo consigue, aunque en realidad podría haber aprovechado en mayor medida el movimiento a favor ya que se trata de una tendencia bajista generada por la ruptura de un importante soporte, lo cual supone un aumento de la volatilidad. Este aumento queda reflejado en un indicador como el Bollinger Volatility Oscillator N (por usar el mismo que en el ejercicio anterior), tal y como remarcamos en la imagen.
Es decir, que la estrategia tiene a su disposición herramientas que le pueden informar de aquellos casos en los que sucede esto. Así que vamos a aprovechar esta información para desarrollar el objetivo dinámico. El primer paso, por tanto, será determinar con números cuándo se nos está indicando uno de estos casos. Para ello sólo consideraremos como aumentos relevantes de la volatilidad aquellos casos en los que el valor del indicador está por encima del 50%. Por ejemplo, en la siguiente imagen, el oscilador siempre se mantiene por debajo del 50% y por tanto no activaremos la regla del objetivo dinámico:
Así, si la estrategia abre nuevos negocios en zonas con poco movimiento, mantenemos nuestro objetivo al 0.5%, es decir, no demasiado alejado del precio de entrada.
Hecho esto, lo siguiente será ver si tras alcanzar el nivel de activación, la volatilidad sigue aumentando. En caso de que no lo haga, no moveremos el objetivo, ya que puede tratarse de un caso en el que se ha producido un crecimiento puntual o bien un caso en el que el punto de entrada ha ocurrido justo en la cima del aumento:
En ésta imagen, por ejemplo, la entrada a corto sucede cuando el oscilador ya está en el 100%. Es decir, que según el indicador, la volatilidad no va a seguir creciendo, con lo cual desestimaríamos un cambio del objetivo.
En el caso de que el oscilador esté creciendo, lo que haremos será observar en qué proporción crece respecto al momento de entrada, y lo que haremos será aplicar dicha proporción al objetivo de beneficios.
Volviendo al primero de los ejemplos que vimos (03 de mayo 2016), en el momento de la entrada a corto el valor del oscilador era del 63%. En la barra siguiente, el indicador sube hasta el 78%, es decir, un aumento del 15%. Como se cumplen los dos requisitos (valor por encima del 50% y crecimiento del porcentaje), aplicamos la diferencia al objetivo: Es decir, aplicamos un 15% al 0.5, dándonos un objetivo total del 0.575%. El resultado sería el siguiente:
Si lo comparamos con la primera de las imágenes que pusimos, vemos que ahora el objetivo está más alejado del precio de entrada. La variación no es excesiva puesto que lo normal es que el incremento desde el 50% hasta el 100% no duré más allá de cuatro o cinco barras, siendo los saltos normalmente de 10% en 10% (aproximadamente).
Un último ejemplo antes de pasar al diseño del objetivo:
En esta ocasión, la entrada a largo sucede en una zona con poco movimiento. Sin embargo, al cierre del 29 de marzo se produce la ruptura del 50% del oscilador y activa el objetivo dinámico. Como en la entrada el valor del oscilador era del 37% y el valor actual es del 52%, aplicamos un incremento del 15% del objetivo inicial. En las barras siguientes la diferencia sigue creciendo, lo cual nos permite conseguir algunos puntos más de ganancia.
Una vez vista la parte teórica, vamos a pasar a continuación a explicar cómo sería el proceso de desarrollo de éste objetivo dinámico.
Diseño del take profit Dinámico Creciente
Para elaborar la programación de éste objetivo usaremos Visual Chart 6, y además lo realizaremos con los dos lenguajes de programación que hay disponibles.
Comenzaremos por incorporar a nuestra estrategia el indicador Bollinger Volatility Oscillator N. A diferencia del ejercicio anterior, vamos a añadir a la lista de parámetros dos de los parámetros del oscilador, en concreto, la distancia N y la banda de activación. En VB.NET, la forma más rápida para añadir un nuevo parámetro es copiar el código de uno anterior y modificar los campos correspondientes. Recuerden que para que aparezca en la lista de parámetros de entrada, es necesario que vaya acompañado con sus atributos.
En VB.NET:
En la plataforma visual, cuando seleccionamos parámetros de un indicador para que aparezcan como parámetros de la estrategia, podemos cambiar el nombre que aparece por defecto por otro que queramos, tal y como hemos hecho en este ejemplo.
Por otro lado, añadimos dos variables globales que vamos a usar para hacer el seguimiento del oscilador. Al primero lo llamaremos topbollv y va a representar al valor del oscilador más alto alcanzado desde que se inició el negocio. Mientras que al segundo lo vamos a llamar pcttarget y servirá para almacenar el último valor que le hayamos dado a nuestro objetivo: recordemos que el objetivo inicialmente tomará el valor definido por el parámetro de entrada Objetivo pero conforme se van produciendo incrementos de la volatilidad dicho valor irá en aumento.
En VB.NET:
En la Plataforma Visual:
Hecho esto, ya sólo es cuestión de observar si el valor del indicador llega al nivel de filtro (determinado por el parámetro BollVolBnd) y si se produce un incremento del oscilador. Si pasa esto, añade la proporción al objetivo y actualiza el valor más alto alcanzado.
Por tanto, el proceso será el siguiente:
- Cuando abramos un nuevo negocio (la función GetBarsSinceEntry valdrá cero), pcttarget será igual al objetivo inicial y topbollv será igual al valor del indicador en ese momento.
- Siempre y cuando haya una posición abierta, observamos si el indicador alcanza el valor de BollVBnd.
- Cuando esto ocurra, comparamos el valor del indicador con el valor guardado en topbollv. Si es inferior no pasa nada, pero si es superior, aplicamos la diferencia a pcttarget y actualizamos topbollv con el valor del indicador actual.
- En la definición de las órdenes de salida por objetivo, el precio de la orden será un porcentaje del precio de entrada determinado por la variable pcttarget.
En VB.NET:
En la Plataforma Visual:
Conclusiones
Una vez más, el estudio aquí presentado es aplicable a cualquier clase de estrategia de trading, ya que su gestión y puesta en marcha es totalmente independiente de las reglas de entrada de la estrategia. Esto quiere decir que podemos implementar el código aquí presentado a cualquier idea desarrollada en Visual Chart 6.
A pesar de que conceptualmente es una idea más agresiva que la del objetivo decreciente, en realidad, los incrementos son tan leves que no supone ni un aumento considerable del número de operaciones fallidas ni tampoco de las garantías. De hecho, se puede conseguir reducir el Drawndown de la estrategia al mejorar los puntos de mayor rendimiento. Como muestra, en el siguiente gráfico podemos ver una comparativa entre la ganancia de la estrategia de ejemplo sin objetivo dinámico y con objetivo dinámico (periodo de 2 años).
Sin Objetivo Dinámico:
Con Objetivo Dinámico:
Como vemos, no sólo aumenta la ganancia de la estrategia sino que además reduce las zonas de mayor pérdida, tal y como se demuestra en la zona remarcada.