Análisis Técnico en Python usando Pandas TA

0
269
Oscilador RSI (14) en Python

En este tutorial, voy a hablar sobre Pandas TA, una biblioteca de análisis técnico para aplicaciones en Python. Antes de continuar y discutir cómo puedes realizar análisis técnico en Python, vamos a explicar qué es el análisis técnico y cómo ayuda a tomar decisiones sobre si comprar un activo, venderlo o mantenerlo.

Existe otra librería de Python que puede usarse para calcular indicadores técnicos denominada TA-Lib que tiene más de 200 indicadores, pero su instalación es sumamente compleja. Así que por el momento nos quedamos con Pandas TA que también es bastante buena y su instalación es más simple.

¿Qué es el Análisis Técnico?

El análisis técnico es una disciplina de trading empleada para evaluar activos financieros, como acciones, divisas, materias primas o criptomonedas, e identificar oportunidades de compra o venta de alta probabilidad de éxito mediante el análisis de tendencias estadísticas recopiladas a partir de la actividad comercial, como movimientos de precios y volumen.

En resumen, es el estudio de datos pasados y actuales con el objetivo de anticipar lo que sucederá a continuación. En este enfoque se utilizan indicadores y se buscan diferentes patrones que ayuden a tomar decisiones.

Por otro lado, el Análisis Fundamental se centra en tomar decisiones basadas en indicadores económicos o financieros, el estado de la micro y macroeconomía, decisiones de bancos centrales, eventos geopolíticos, etc.

Muchos traders combinan el análisis técnico y el análisis fundamental para la toma de decisiones. Usan el enfoque fundamental para determinar a dónde puede ir el mercado a largo plazo y el enfoque técnico para determinar que hará a más corto plazo y donde deberían entrar o salir.

Pueden encontrar más información sobre el análisis técnico y sus múltiples herramientas en: ¿Que es el análisis técnico?

Instalación de las bibliotecas de Python necesarias

Se van a usar las siguientes bibliotecas de Python para obtener los datos financieros, ordenarlos y calcular los indicadores técnicos SMA (Media ´Móvil Simple) y RSI:

  • Pandas: Es una biblioteca de programación en Python que proporciona estructuras de datos flexibles y herramientas de análisis de datos para el lenguaje de programación Python
  • Pandas TA: Es una biblioteca de análisis técnico utilizada en finanzas y trading. Está diseñada para ayudar a los desarrolladores a incorporar análisis técnico en sus aplicaciones y estrategias de trading. Tiene incorporada la biblioteca yfinance  que proporciona una interfaz sencilla para acceder y descargar datos financieros de Yahoo Finance
  • Matplotlib: Matplotlib es una biblioteca de visualización de datos en el lenguaje de programación Python. Fue creada para generar gráficos estáticos, gráficos interactivos y visualizaciones de datos en general.

En este punto, vamos a suponer que el lector tiene al menos conocimientos básicos sobre programación en Python. Por lo tanto, no nos vamos a detener a explicar en detalle cada aspecto del desarrollo de la aplicación.

La instalación de estas librerías de Python es relativamente sencilla. Solo se requiere ejecutar el comando pip en el command prompt de Windows.

Por ejemplo, para instalar la biblioteca Pandas se usa el siguiente comando:

pip install pandas

Para la instalación de Pandas TA y Matplotlib los comandos son los siguientes:

pip install pandas_ta

pip matplotlib

Ahora, antes de comenzar a utilizar estas bibliotecas, debemos conocer algunos conceptos básicos del análisis técnico y cómo Pandas TA  puede ayudarnos a alcanzar nuestros objetivos.

Vamos a usar Pandas TA para obtener los datos financieros y calcular los indicadores y Visual Code Studio para este tutorial, ya que facilita la escritura de código interactivo. 

Después de instalar las librerías, a continuación lo primero que vamos a hacer es importar todas las bibliotecas necesarias:

#Importación de librerías
import pandas as pd
import pandas_ta as ta
import matplotlib.pyplot as plt

Vamos a analizar el comportamiento del precio de las acciones de Microsoft, que durante este 2023 ha tenido un año relativamente bueno.

Para esta acción, lo primero que vamos a verificar es la Media Móvil Simple (SMA) y que tanto se ha desviado el precio de este promedio.

¿Qué son las medias móviles?

Si observas el gráfico del precio de una acción o una criptomoneda, notarás que fluctúa bastante. Esta fluctuación podría generar señales falsas. Las medias móviles (MA) ayudan a filtrar el ruido de los movimientos de precios aleatorios y suavizan la información para ver el valor promedio. Las medias móviles se utilizan para identificar tendencias e inversiones. Cuando el precio está por encima de una media móvil, decimos que es una tendencia alcista; de lo contrario, es una tendencia bajista. También se utilizan para identificar áreas de soporte y resistencia. Las medias móviles se basan en precios pasados y también se les conoce como indicadores rezagados. Cuando el precio cruza por encima de una media móvil, es una señal de compra, y cuando cruza por debajo de esta, es una señal de venta. Hay muchos tipos de medias móviles pero los más conocidos son.

  • Media Móvil Simple (SMA): Una media móvil simple (SMA) es un cálculo que toma la media aritmética de un conjunto dado de precios durante un número específico de periodos en el pasado, como por ejemplo, durante los últimos 15, 30, 100 o 200 días.
  • Media Móvil Exponencial (EMA): La media móvil exponencial (EMA) es un promedio ponderado que otorga mayor importancia al precio de una acción en los días más recientes, convirtiéndola en un indicador más sensible a nueva información.

Si representas tanto la SMA como la EMA en un gráfico, notarás que la línea de la EMA está bastante cerca del precio real que una SMA porque reacciona más rápido que una SMA a los cambios del precio. Esta es la razón por la cual la SMA se considera un indicador más rezagado. Las medias móviles están disponibles para diferentes períodos de tiempo: 10, 20, 50, 100, 200. 

  • Las medias de 10-20 periodos sirven para tendencias a corto plazo
  • La media de 50 periodos para tendencias a medio plazo

Cálculo de la media móvil con Pandas TA

Primero, obtendremos los datos del precio de las acciones de Microsoft desde hace dos años hasta la fecha.

#Datos históricos de Microsoft
df=pd.DataFrame()
df=df.ta.ticker(“MSFT”)
print(df)

Los datos ahora están disponibles en un DataFrame de pandas. Ahora, mediante el código que aparece a continuación se genera un gráfico que muestra datos sobre el precio de cierre de Microsoft y la Media Móvil Simple (SMA) del precio de cierre.

#Cálculo de la SMA de MSFT
df["SMA"]=ta.sma(df["Close"],10)
print(df["SMA"])
#Trazado de la SMA
plt.title("Media móvil simple (SMA) de MSFT")
plt.plot(df['Close'], label = 'MSFT', color = 'green',alpha = 0.6)
plt.plot(df['SMA'], label = 'SMA', color = 'red',alpha = 0.6)
plt.legend(loc = 'upper left')
plt.xlabel("Fecha")
plt.ylabel("Precio")
plt.show()

El código anterior traza un gráfico del precio de cierre de Microsoft junto con una SMA de 10 periodos.

Cuando este código se ejecuta en la computadora, aparece lo siguiente:

Media móvil simple (SMA) en Python con Pandas TA

Media móvil simple (SMA) en Python con Pandas TA

Como se puede ver, a diferencia del gráfico de los precios de cierre, el gráfico de la SMA es más suave. Ahora agregamos un gráfico de la media móvil EMA de 10 periodos.

#Cálculo de la EMA de MSFT
df["EMA"]=ta.ema(df["Close"],10)
print(df["EMA"])
#Trazado de la EMA
plt.title("Media móvil exponencial (EMA) de MSFT")
plt.plot(df['Close'], label = 'MSFT', color = 'blue',alpha = 0.6)
plt.plot(df['SMA'], label = 'EMA', color = 'orange',alpha = 0.6)
plt.legend(loc = 'upper left')
plt.xlabel("Fecha")
plt.ylabel("Precio")
plt.show()

Después de correr el código, aparece el siguiente gráfico:

Media móvil exponencial (EMA) en Python con Pandas TA

Media móvil exponencial (EMA) en Python con Pandas TA

Como puede observarse, la línea de la SMA responde más lentamente que la línea de la EMA por sus diferentes fórmulas de cálculo y por lo tanto determina la tendencia más lentamente que la media móvil exponencial.

Ahora vamos a mostrar el código para el cálculo del oscilador RSI.

¿Qué es el Índice de Fuerza Relativa (RSI)?

El RSI es un indicador de impulso del precio que ayuda a determinar si cierta acción está sobrecomprada o sobrevendida. Su valor oscila entre 0 y 100. Si está por debajo de 30, significa que está sobrevendida y existe la posibilidad de comprar. Si el valor está por encima de 70, significa que está sobrecomprada y es una buena oportunidad para vender. 

Ahora calcularemos y representaremos gráficamente el RSI del precio de Microsoft:

#Cálculo del RSI
df["rsi"]=ta.rsi(close = df["Close"], length=14)

#Trazado del RSI
fig, axs = plt.subplots(2)
fig.suptitle('Precio de la acción de MSFT')
axs[0].plot(df['Close'], label = 'MSFT', color = 'green',alpha = 0.6)
plt.legend(loc = 'upper left')
plt.xlabel("Fecha")
plt.ylabel("Precio")

axs[1].plot(df['rsi'], label = 'RSI', color = 'red',alpha = 0.6)
plt.legend(loc = 'upper left')
#plt.xlabel("Fecha")
#plt.ylabel("RSI")
plt.show()

Este código produce el siguiente gráfico del RSI de 14 periodos:

Oscilador RSI (14) en Python

Oscilador RSI (14) en Python

Este artículo es solo una introducción de lo que se puede hacer en Python para estudiar el comportamiento del mercado. TA-Lib y otras herramientas permiten análisis mucho más complejos, desarrollar estrategias de trading completas, hacer pruebas de backtesting, aplicar IA, etc.

Pueden obtener información más detallada sobre más librerías de Python que pueden aplicarse en el campo de las finanzas en: Las mejores librerías de finanzas de Python

Conclusión

En este tutorial, aprendimos cómo puedes utilizar la librería TA-Lib de Python para idear tu próxima estrategia de trading. No es posible abarcar todo lo relacionado con TA-Lib en esta publicación, pero espero que te dé una idea de qué hacer a continuación. Puedes crear un bot que verifique los valores de RSI y emita señales periódicamente.

También existe la posibilidad de codificar los indicadores sin el uso de una librería como TA-Lib pero esto requeriría más trabajo de codificación, aunque las posibilidades de configuración y personalización son mucho mayores.


 

TagsPython
Raul Canessa

Leave a reply