Bitcoin, es mejor seguir el RSI o comprar y mantener (hodl)

Es fácil encontrar múltiples sitios en la web donde recomiendan utilizar el indicador RSI (Relative Strength Index) para realizar un análisis técnico del precio de un activo. 

Así que vamos a examinar cómo se ha comportado una de las estrategías más utilizadas con este indicador en los últimos tres años en el caso de bitcoin.

El índice de fuerza relativa (RSI) es un indicador técnico que mide la velocidad y el cambio de los movimientos de precios, fue desarrollado por J. Welles Wilder.

El RSI se mueve de 0 a 100 y la estrategía más habitual es abrir una posición larga (comprar acciones) si el indicador RSI sube por encima del nivel 30 desde abajo porque en ese momento las acciones se consideran sobrevendidas y si el RSI de la acción cruza el nivel 70 desde arriba se debe entrar en una posición corta (venta de acciones) porque se considera que la acción está sobrecomprada.

El proceso de cálculo para calcular esta métrica es el siguiente:

  • Se hace un seguimiento del precio de cierre de los últimos 14 días.
  • Se determina si el precio de cierre del día actual es más alto o más bajo que el del día anterior.
  • Se calcula la ganancia o pérdida promedio durante los últimos 14 días.
  • Se calcula la fuerza relativa, RS = AvgGain / AvgLoss
  • Se calcula el índice de fuerza relativa, RSI = 100 – 100 / (1 + RS)

Vamos a realizar un programa en Python donde realizaremos un backtest para saber si nos hubiese merecido la pena actuar según lo indicado por el RSI.

Importamos las librerías necesarias

import pandas as pd 
import numpy as np 
from datetime import datetime
from pandas_datareader.data import DataReader
import matplotlib.pyplot as plt
from math import floor
from termcolor import colored as cl 

Obtenemos los datos del precio de bitcoin en los últimos 3 años

start = datetime(2019,1,1)
end = datetime(2021,12,31)
df = DataReader('BTC-USD', 'yahoo', start, end)

Calculamos el RSI utilizando la media móvil exponencial en un periodo de 14 días

periods = 14
df['close_delta'] = df['Close'].diff()
df['gain'] = df['close_delta'].clip(lower=0)
df['loss'] = -1 * df['close_delta'].clip(upper=0)


df['ema_up'] = df['gain'].ewm(com=periods -1, adjust=True).mean()
df['ema_down'] = df['loss'].ewm(com=periods -1, adjust=True).mean()
df['rs'] = df['ema_up']/df['ema_down']
df['rsi'] = 100-(100/(1+df['rs']))

Mostramos los resultados

plt.style.use('fivethirtyeight')
plt.rcParams['figure.figsize'] = (20, 10)

ax1 = plt.subplot2grid((10,1), (0,0), rowspan = 4, colspan = 1)
ax2 = plt.subplot2grid((10,1), (5,0), rowspan = 4, colspan = 1)
ax1.plot(df['Close'], linewidth = 2.5)
ax1.set_title('BTC CLOSE PRICE')
ax2.plot(df['rsi'], color = 'orange', linewidth = 2.5)
ax2.axhline(30, linestyle = '--', linewidth = 1.5, color = 'grey')
ax2.axhline(70, linestyle = '--', linewidth = 1.5, color = 'grey')
ax2.set_title('BTC RELATIVE STRENGTH INDEX')
plt.show()

Implementamos la estrategia 30 70

df['return'] = df['Close']/df['Close'].shift(1)
df['signal'] = np.where((df['rsi'] < 30),1,np.nan)
df['signal'] = np.where((df['rsi'] > 70),0,df['signal'])
df['signal'].ffill(inplace=True)
df['strategy'] = df['return'] ** df['signal'].shift(1)

Gráfico que muestra la trayectoria de la estrategia seguida

plt.rcParams.update(plt.rcParamsDefault)
df[['strategy']].dropna().cumprod().plot(figsize=(10,6))

Según se aprecia en el gráfico si hubiésemos tenido una ganancia de un 60% (sin contar las comisiones), lo que significa que si el 1 de enero de 2019 hubiésemos comprado 1000 $ en bitcoin el 31 de diciembre del 2021 tendríamos 1600 $ lo cual está muy bien y ha habido un periodo grande con una ganancia de un 200% e incluso un pico con una del 240%.

Ahora vamos a comprar esa ganancia con la evolución del precio de bitcoin.    

df[['return','strategy']].dropna().cumprod().plot(figsize=(10,6))

En este gráfico se aprecia que realmente ha sido mucho mejor la evolución del precio que la estrategia seguida con el indicador RSI, el precio se ha revalorizado un 1200% desde el 1 de enero del 2019 y el 31 de diciembre del 2021, muy superior al 60% que hubiésemos conseguido con el RSI. Si hubiésemos comprado 1000 $ al inicio del 2019 tendríamos 12000 $ al final del 2021.

Sin contar los 4 primeros meses del 2019 donde el desempeño del precio es similar al de la estrategia seguida con el RSI, el resto del tiempo la ganancia es mucho mayor si hubiésemos comprado y mantenido los BTC.   



Categories: Bitcoin, BTC, Code, Hodl, Price, Python, Script, Trader, Trading

Leave a Reply

%d bloggers like this: