Introducción
Hace unos días, durante el desarrollo de un seminario, planteamos una idea que despertó el interés de los parcipantes. Debido a esto, he creido conveniente exponerla aquí y compartirla con toda la comunidad de Rankia. Aclarar de salida que el siguiente artículo está planteado desde el punto de vista del desarrollador de sistemas de Visual Chart, de manera que tendrá un mayor interés especialmente para aquellos usuarios que cumplan éste perfil.
El problema que planteamos fue el siguiente: ¿Existe la posibilidad de aprovechar aquellas estrategias que sean descartables debido a su nivel de pérdidas? La solución a ésta pregunta era sencilla: Cuando un sistema ofrezca muy malos resultados, generamos el sistema inverso, de modo que, teóricamente, obtendremos un sistema con resultados más favorables. Veamos ésta idea mediante un ejemplo.
La estrategia cruce RSI
Vamos a diseñar una estrategia con un esquema muy sencillo: Cuando el RSI cruce las bandas de sobrecompra y sobreventa, operamos a favor del cruce, quedándonos a largo si el cruce es alcista y a corto si es bajista.
Además, vamos a añadir al sistema un stoploss para cubrir el margen máximo de pérdidas soportado.
El sistema quedaría tal que así:
Aplicamos el sistema al gráfico del FUTURO del DAX (15 minutos) que es donde queremos realizar las pruebas y observamos que obtenemos los siguientes resultados negativos en la estadística:
Como vemos, el sistema sigue una línea de ganancias nada halagüeña.
Supongamos que aún cambiando los distintos parámetros del sistema, los resultados no mejoran, por lo que lo primero que pensaríamos ante esta circunstancia es que éste sistema es totalmente descartable y por tanto nos desharíamos de él o al menos no lo pondríamos en marcha sobre el subyacente sobre el que lo hemos aplicado.
Lo que aquí vamos a plantear es lo siguiente: Si se fijan, la línea de ganancia que proyecta el sistema sigue una función prácticamente exponencial pero en sentido inverso. Si viéramos la línea de ganancia al revés, obtendríamos un resultado realmente bueno:
¿Podríamos aprovechar el sistema teniendo en cuenta este dato? En realidad sí. Lo que podemos hacer es mantener las reglas de operativa del sistema pero realizar las operaciones contrarias a las que actualmente se están ejecutando. Teóricamente, al hacer esto, deberíamos obtener una línea de ganancia similar a la que acabamos de mostrar, si bien pueden existir matices que diferencen ambos resultados.
Empezaremos, por tanto, viendo los pasos a seguir para diseñar lo que definiríamos como la estrategia inversa.
Diseño de la estrategia inversa
Como hemos dicho, el aspecto clave para el desarrollo de una estrategia invertida es mantener las reglas de trading del sistema original. En nuestro caso, mantenemos las reglas de cruce de bandas tal y como están, con la particularidad de que en lugar de enviar una orden de entrada a largo cuando se cruce la banda inferior (BandaC), ahora haremos lo contrario, enviando una entrada a corto:
Fíjensé en un detalle importante: Además de haber cambiado el tipo de orden (de Compra a Venta), también hemos cambiado la condición ¿GetMarketPosition <> 1?. Ahora la pregunta pasa a ser ¿GetMarKetPosition <> -1? ¿Por qué? Puesto que lo que buscamos con esta condición es posicionarnos a Corto, la condición debe cambiar de manera que la pregunta pase a ser si GetMaretPosition es distinto de -1,es decir, que todavía no estemos posicionados a Corto.
El proceso es exactamente el mismo para la regla sobre la banda superior (BandaV):
Esta parte es la más sencilla puesto que lo único que tenemos que hacer es cambiar el tipo de orden. Para el cambio de las órdenes de salida el proceso es algo más complejo.
A la hora de invertir las órdenes de salida, en este caso no basta con cambiar la orden de CerrarLargo a CerrarCorto y viceversa, sino que además tendremos que fijarnos en el tipo de orden que se envía (Stop,Limitada,etc…). Siguiendo el ejemplo del sistema Cruce RSI. Si ahora mismo enviamos órdenes de stop de pérdidas, lo primero que pensaríamos sería en realizar el siguiente cambio:
Es decir, nuevamente, cambiar la orden de CerrarCorto a CerrarLargo y cambiar la condición ¿GetMarketPosition = 1?.
Sin embargo, realizar simplemente este cambio no es suficiente. Si se fijan, dejándolo así estaremos enviando una orden de Compra (CerrarCorto) en Stop a un precio INFERIOR al precio de entrada. Si hacemos esto, la orden se ejecutará instantáneamente. De hecho, como el sistema es el inverso, ahora la orden StopLoss no servirá para cubrir pérdidas sino como objetivo de ganancias. ¿Conclusión? Debemos cambiar el tipo de orden de modo que en lugar de especificar como orden de cierre en stop pasará a ser orden de cierre limitada:
Si observan, ahora tiene más sentido el precio de salida especificado, al ser órdenes de cierre limitadas.
Resultado Final
Con estos sencillos pasos ya tendríamos finalizado el sistema inverso. Le daríamos a Compilar y comprobaríamos si lo deducido teóricamente se cumple una vez lo llevamos a la práctica. Los resultados estadísticos del sistema serían los siguientes:
Como ven, un mejor resultado que permite aprovechar la estrategia previamente planteada. Obviamente, este tipo de estrategia sólo es posible desarrollarla sobre productos que nos permitan operaciones en corto.
Últimas conclusiones
Como punto final a este estudio, vamos a plantear un modo más de añadir más posibilidades a nuestro sistema: Puesto que inicialmente desconocemos qué tipo de estrategia va a funcionar mejor sobre cada subyacente, si la normal o la inversa, podemos incorporar al sistema un parámetro al que llamaríamos AplicarInversa. Este parámetro podría ser del tipo (0/1), de modo que en función de su valor el sistema realizaría el sistema en un sentido u otro.
Veamos un ejemplo. En el siguiente caso, tenemos el sistema original aplicado al FUTURO del MINI IBEX-35:
Como vemos, los resultados no son muy buenos. Probamos el sistema inverso simplemente cambiando el parámetro AplicarInversa a 1 y vemos si la ganancia mejora:
No sólo eso, sino que además podemos probar a optimizar los parámetros del sistema (incluyendo este último), lo cual nos va a permitir que el programa nos informe de en qué casos es mejor aplicar la estrategia inversa y en qué casos aplicar la estrategia original.