Estudio de las divergencias en el RSI
Dentro de las herramientas de análisis técnico, los osciladores se presentan como un interesante método para detectar zonas de debilitamiento de tendencias. Al tratarse de herramientas cíclicas, el momento de aparición de dichas zonas viene dado por la ruptura de los puntos más extremos de cada oscilador, esto es, lo que comúnmente se conoce como zonas de sobrecompra y sobreventa. No obstante, existe otro método de búsqueda de cambios de tendencia: la aparición de divergencias entre el subyacente y el propio oscilador. En el presente artículo analizaremos esta técnica usando como ejemplo uno de los osciladores más habituales del mercado: el Relative Strength Index o RSI.
Introducción al RSI
El RSI (Indicador de Fuerza Relativa) calcula la fuerza interna de un solo valor en términos porcentuales, de ahí que su valor oscile entre cero y cien. Este indicador realiza una serie de cálculos sobre los cierres de las últimas X sesiones (normalmente 14 sesiones) y muestra la fuerza del movimiento de la cotización. La interpretación básica es que cuanto más suba el precio, mayor será el valor del RSI, y cuanto más baje, menor será su valor.
Lo que plantea este indicador es que las subidas y bajadas tienen un periodo determinado de duración, a partir del cual se estabiliza el precio e inicia una nueva fase. Generalmente, se considera que si una subida alcanza un 70% u 80% de la fuerza relativa, entonces existe una alta probabilidad de que dicho movimiento empiece a debilitarse. En el caso de las bajadas, el porcentaje de debilitamiento se sitúa entre un 30% o 20%. Estos niveles son los considerados como zonas de sobrecompra y sobreventa.
El error de las zonas de sobrecompra y sobreventa
El problema principal que supone hacer un seguimiento de éste oscilador (así como de otro tipo de osciladores) es que la entrada en las zonas de debilitamiento da buenos resultados en mercados laterales pero malos resultados en mercados en tendencia.
Las señales pierden fiabilidad cuando el mercado está en tendencia debido a que los ciclos de subida y bajada del precio tienen una mayor duración. Este fenómeno (el de la prolongación de las tendencias) no es detectado por el oscilador hasta que no sucede, por lo que su poder de anticipación queda deteriorado.
En el gráfico 1 podemos encontrar un ejemplo de ello. Entre 2011 y 2012, el RSI marca tres zonas de agotamiento, las cuales confirman correctamente el cambio de inercia del activo. Sin embargo, a partir de 2013 se inicia una fase alcista que da lugar al error en el oscilador. Esto sucede porque en comparación con los últimos precios dados, la fuerza del movimiento de subida supera con creces el rango que se ha estipulado para marcar los niveles de sobrecompra.
Debido a esto, muchos pueden pensar que la aplicación del RSI como método de estudio implica un riesgo demasiado alto. No obstante, hay dos maneras de aprovechar la información dada por el indicador disminuyendo el error:
1) Aplicar un filtro de volatilidad utilizando una herramienta de detección de la volatilidad (como por ejemplo el ADX). Este indicador va a permitir distinguir entre las zonas laterales y las zonas tendenciales, de modo que puede servir de filtro para las señales dadas por el propio RSI.
2) Seguir las divergencias del RSI con el precio. Es decir, que en lugar de estudiar las zonas de sobrecompra y sobreventa, se realizará un seguimiento de las divergencias.
De las dos, la segunda opción se considera como el método más fiable para marcar el final de una tendencia, de modo que nos centraremos en esta idea.
Las divergencias en el RSI.
J. Welles Wilder, creador del original RSI, llevó a cabo en su libro New Concepts in Technical Trading Systems la definición de las divergencias.
Según indicó Welles Wilder, las señales de divergencias indican un punto potencial de giro en el comportamiento de los precios de cualquier activo porque el impulso direccional no acompaña al precio.
En lo que respecta al RSI, el autor determinó dos tipos de divergencias en función de la señal de cambio de tendencia que va a pronosticar:
1) Una divergencia alcista ocurre cuando el precio marca un mínimo decreciente mientras que el indicador marca un nuevo mínimo creciente. Es decir, que lo que nos informa el RSI es que aunque los precios prolongan el movimiento previo de caída, el indicador de fuerza nos avisa de que ese último mínimo posee una menor fuerza bajista que el mínimo anterior, lo cual es un claro síntoma de debilidad bajista.
2) Una divergencia bajista ocurre cuando el precio marca un máximo creciente mientras que el indicador marca un nuevo máximo decreciente. La situación es igual que la indicada anteriormente pero en el polo opuesto.
Cabe destacar que estas divergencias sólo deben considerarse cuando aparecen tras un impulso en el sentido opuesto: por tanto, la divergencia alcista siempre debe ir precedida de un impulso bajista, mientras que la divergencia bajista debe ir precedida de un impulso alcista.
La manera en la que Wilder interpretaba una correcta aparición de divergencia venía determinada por el momento en el que se encontraba inmerso el RSI:
1) La divergencia alcista debía aparecer estando el RSI en zona de sobreventa.
2) La divergencia bajista debía aparecer estando el RSI en zona de sobrecompra.
No obstante, podemos encontrar otro tipo de señales de divergencia en lo que podríamos llamar como divergencias de continuación de tendencia. Este tipo de divergencias fueron explicadas por Andrew Cardwell, a las que denominó como Positive/Negative Reversal, y denotan ciertas diferencias respecto a las ideas planteadas por Wilder:
1) La divergencia positive reversal es una divergencia que aparece cuando el RSI marca un nuevo mínimo decreciente y es el activo el que marca un nuevo mínimo creciente.
2) La divergencia negative reversal es una divergencia que aparece cuando el RSI marca un nuevo máximo creciente y es el activo el que marca un nuevo máximo decreciente.
Otro aspecto característico de las reversals de Cardwell es que éstas deben aparecer durante los niveles medios del RSI:
1) La divergencia positive reversal aparece estando el RSI entre 50 y la zona de sobreventa (30).
2) La divergencia negative reversal aparece estando el RSI entre 50 y la zona sobrecompra (70).
En el gráfico 2 podemos ver algunos de los tipos de divergencias especificadas.
Vista la parte teórica del estudio de las divergencias, lo especialmente importante es analizar el nivel de fiabilidad de las mismas. Para ello, el mejor recurso es poder diseñar herramientas capaces de calcularlas, de modo que pueda cuantificarse la tasa de acierto y fallo de dicho método.
En el siguiente punto de éste artículo vamos a resolver esta tarea utilizando como plataforma de referencia Visual Chart 5.
Automatización de las divergencias del RSI en Visual Chart.
Una buena manera de estudiar las divergencias es diseñar un indicador que las detecte, de manera que podamos visualizar sobre el gráfico los puntos de aparición de divergencias.
A la hora de automatizar la búsqueda de divergencias, el indicador deberá seguir una serie de estrictos pasos que definirán las reglas de detección:
Paso 1. Posición del RSI.
El indicador sólo buscará divergencias alcistas cuando el RSI esté POR DEBAJO DE 50.
El indicador sólo buscará divergencias bajistas cuando el RSI esté POR ENCIMA DE 50.
Paso 2. Detección de los swings del RSI.
El indicador buscará dos topes del RSI seguidos. Consideraremos como tope(o swing) a aquellos máximos y mínimos relevantes que aparezcan en el activo.
En Visual Chart, los topes se extraen a través de las funciones Swing High y Swing Low aplicadas sobre el Relative Strength Index.
Paso 3. Comparación con el Subyacente.
Si aparecen dos topes mínimos seguidos estando el RSI por debajo de 50.
Con la referencia de dichos mínimos, observamos los mínimos del precio en esa misma altura. Hecho esto, puede pasar lo siguiente:
a) Si los mínimos del precio son decrecientes y los del RSI son crecientes, damos señal de divergencia alcista (siempre y cuando el RSI esté en sobreventa).
b) Si los mínimos del precio son crecientes y los del RSI son decrecientes, damos señal de divergencia alcista del tipo positive reversal (siempre y cuando el RSI no esté en sobreventa).
Paso 4. Repetir el paso 3 con los máximos.
El proceso sería el mismo para el caso bajista.
En este mismo artículo podemos encontrar el código de programación del indicador para Visual Chart 5. Esta herramienta pinta una línea cero que sólo cambia cuando aparece una divergencia. Para distinguir entre las divergencias de Wilder y las divergencias de Cardwell, el indicador marca 1 o -1 cuando se trata de las divergencias de tipo reversal y 2 o -2 cuando se trata de las divergencias de Wilder.
En el gráfico 2 podemos ver cómo cambia el indicador ante la aparición de cada una de las divergencias. En el punto A, aparece una divergencia negative reversal, de ahí que el valor del indicador pase a -1. En los puntos B y C aparecen divergencias de Wilder, de ahí que los valores dados sean 2 y -2.
En el gráfico 3 vemos otro ejemplo de aplicación de éste indicador. El punto A marca una divergencia bajista de Wilder (marca un -2), puesto que se produce en la zona de sobrecompra, el RSI marca máximos decrecientes y el precio máximos crecientes. En este caso, vemos que efectivamente se cumple el debilitamiento del movimiento alcista. El punto B se trata de un caso de divergencia alcista de Wilder (marca un 2), puesto que, como vemos, ocurre con el RSI en sobreventa y marcando nuevos mínimos crecientes.
Conclusiones.
El estudio de las divergencias del RSI está muy extendido, si bien se suele realizar de forma manual, puesto que permite una mayor flexibilidad que la automatización de dichas señales. No obstante, el seguimiento de éstas mediante herramientas mecánicas ofrece una mayor fiabilidad al eliminar la carga subjetiva, lo cual se traduce en un número menor de señales. Por último, debemos considerar el uso de otro tipo de indicadores como el ADX (indicadores de volatilidad) como filtro de confirmación para aumentar la efectividad de la herramienta.
G1) Indicador RSI en Activision Blizzard Diario.
En éste gráfico de Activision a 1 día, hemos aplicado el indicador RSI(14). En los puntos A, B y C, vemos que detecta correctamente el agotamiento de la tendencia previa. El punto D marca como zona sobrecompra, si bien vemos que se inicia un movimiento ascendente de larga duración. Posteriormente, vuelve a tocar un par de veces la zona de sobrecompra, con idéntico resultado. Este error es común en zonas tendenciales.
Fuente: Visual Chart
G2) Divergencias del RSI en AUD/JPY 1 minuto.
En éste gráfico FOREX de AUD/JPY a 1 minuto, podemos algunos ejemplos de divergencias. En el punto A, el RSI se sitúa bajo 50 pero por encima de la zona de sobreventa. El RSI marca máximos crecientes, mientras que el precio marca máximos decrecientes, por tanto, se trata de un negative reversal divergence, lo que indica que el precio continuará descendiendo. Los casos B y C, correspondientes a las divergencias de Wilder, se producen en las zonas de agotamiento y marcan cambio de tendencia.
Fuente: Visual Chart
G3) Divergencias del RSI en AEX-25 FUT. CONT. 10 minutos.
El siguiente gráfico del futuro continuo del AEX-25 incluye el RSI y el indicador de divergencias del RSI. En el punto A vemos como el indicador de divergencias marca un -2, avisando de una divergencia bajista de Wilder. Si nos fijamos en el gráfico, efectivamente confirmamos que se generan nuevos máximos crecientes mientras que el RSI marca máximos decrecientes. En el punto B podemos ver la situación opuesta.
Fuente: Visual Chart
Código de programación
RSI DIVERGENCES INDEX PARA VISUAL CHART 5.
'¡¡ Parameters
Dim Period As Integer '14
Dim UpperBand As Double '70
Dim CenterBand As Double '50
Dim LowerBand As Double '30
Dim Strength As Long '5
'Parameters !!
Option Explicit
Dim RSIData As Long
Private Type TipoZona
Cross As Integer
PSwing1 As Double
PSwing2 As Double
BarSwing1 As Long
ThereIsSwing1 As Boolean
End Type
Dim Zones() As TipoZona
Dim Zones2() As TipoZona
Dim LastBar As Long
Public APP As OscUserApp
Implements Indicator
Public Sub Indicator_OnInitCalculate()
With APP
RSIData = .GII(RSI, Data, Period, 70, 30)
ReDim Zones(1)
LastBar = -1
.SetLineName 1, "Div_Signal"
.StartBar = 0
End With
End Sub
Public Sub Indicator_OnCalculateBar(ByVal Bar As Long)
With APP
Dim RSIact As Double: Dim RSIant As Double
Dim BPUP As Double: Dim BPDOWN As Double: Dim DivSignal As Integer
Dim Max1 As Double: Dim Max2 As Double: Dim BMaxAux As Double
Dim Min1 As Double: Dim Min2 As Double: Dim BMinAux As Double
'real time control
If LastBar <> Bar Then Zones2 = Zones
If LastBar = Bar Then Zones = Zones2
RSIact = Math.Round(.GIV(RSIData), 3)
RSIant = Math.Round(.GIV(RSIData, 1, 1), 3)
BPUP = .GetSwingHighBar(RSIData, 1, PriceClose, Strength, Strength * 10)
BPDOWN = .GetSwingLowBar(RSIData, 1, PriceClose, Strength, Strength * 10)
If (RSIant <= CenterBand And RSIact > CenterBand) Then
Zones(1).Cross = 1
Zones(0).Cross = 1
Zones(0).ThereIsSwing1 = False
ElseIf (RSIant >= CenterBand And RSIact < CenterBand) Then
Zones(0).Cross = -1
Zones(1).Cross = -1
Zones(1).ThereIsSwing1 = False
End If
'bearish divergences
If (Zones(0).Cross = 1) Or (Zones(0).Cross = -1 And Zones(0).ThereIsSwing1) Then
If BPUP = Strength Then
If Zones(0).ThereIsSwing1 Then
If Zones(0).BarSwing1 < Bar - Strength Then
'check divergence
Zones(0).PSwing2 = Math.Round(.GIV(RSIData, Strength), 3)
Max1 = .High(Bar - Zones(0).BarSwing1)
Max2 = .High(Strength)
BMaxAux = .GetHighestBar(Data, PriceHigh, Bar - Zones(0).BarSwing1)
If ((Bar - Zones(0).BarSwing1) - BMaxAux) <= (BMaxAux - Strength) Then
If (.High(BMaxAux) > Max1) Then Max1 = .High(BMaxAux)
Else
Max2 = .High(BMaxAux)
End If
'wilder's bearish divergence
If (Zones(0).PSwing2 < Zones(0).PSwing1) And (Zones(0).PSwing2 >= UpperBand) Then
If Max2 >= Max1 Then
DivSignal = -2
End If
'negative reversal divergence
ElseIf (Zones(0).PSwing2 > Zones(0).PSwing1) And (Zones(0).PSwing2 < UpperBand) Then
If Max2 <= Max1 Then
DivSignal = -1
End If
End If
End If
Else
Zones(0).BarSwing1 = Bar - Strength
Zones(0).PSwing1 = Math.Round(.GIV(RSIData, Strength), 3)
Zones(0).ThereIsSwing1 = True
End If
End If
If Zones(0).Cross = -1 Then Zones(0).Cross = 0
End If
'bullish divergences
If Zones(1).Cross = -1 Or (Zones(1).Cross = 1 And Zones(1).ThereIsSwing1) Then
If BPDOWN = Strength Then
If Zones(1).ThereIsSwing1 Then
If Zones(1).BarSwing1 < Bar - Strength Then
'check divergence
Zones(1).PSwing2 = Math.Round(.GIV(RSIData, Strength), 3)
Min1 = .Low(Bar - Zones(1).BarSwing1)
Min2 = .Low(Strength)
BMinAux = .GetLowestBar(Data, PriceLow, Bar - Zones(1).BarSwing1)
If ((Bar - Zones(1).BarSwing1) - BMinAux) <= Math.Abs(BMinAux - Strength) Then
If (.Low(BMinAux) < Min1) Then Min1 = .Low(BMinAux)
Else
Min2 = .Low(BMinAux)
End If
'wilder's bullish divergence
If (Zones(1).PSwing2 > Zones(1).PSwing1) And (Zones(1).PSwing2 <= LowerBand) Then
If Min2 <= Min1 Then
DivSignal = 2
End If
'positive reversal divergence
ElseIf (Zones(1).PSwing2 < Zones(1).PSwing1) And (Zones(1).PSwing2 > LowerBand) Then
If Min2 >= Min1 Then
DivSignal = 1
End If
End If
End If
Else
Zones(1).BarSwing1 = Bar - Strength
Zones(1).PSwing1 = Math.Round(.GIV(RSIData, Strength), 3)
Zones(1).ThereIsSwing1 = True
End If
End If
If Zones(1).Cross = 1 Then Zones(1).Cross = 0
End If
'Paint signal
.SetIndicatorValue DivSignal, 1
LastBar = Bar
End With
End Sub
Comentarios
Publicar un comentario
¡Gracias!