Cuando se trata de análisis financiero, el análisis técnico es una herramienta crucial para comprender el comportamiento de los precios de los activos financieros en el mercado. Python, con su ecosistema de bibliotecas de análisis de datos, ofrece una amplia gama de herramientas para llevar a cabo análisis técnico de manera eficiente. Una de estas bibliotecas es ‘pandas_ta
‘, una extensión de la popular biblioteca ‘pandas
‘, que proporciona una amplia variedad de indicadores técnicos listos para usar y que instalaremos en nuestro sistema con el comando ‘pip‘:
Tal y como hemos señalado, ‘pandas_ta
‘ es una biblioteca de análisis técnico escrita en Python que amplía las capacidades de la biblioteca pandas
. Proporcionando una amplia gama de indicadores técnicos comúnmente utilizados en el análisis financiero. Lo cual permite a los usuarios realizar análisis técnico de datos financieros de manera rápida y sencilla. Entre dichos indicadores podemos encontrar los siguientes:
- Medias móviles (SMA, EMA, WMA, etc.)
- Bandas de Bollinger
- Índice de Fuerza Relativa (RSI)
- MACD (Convergencia/Divergencia de Medias Móviles)
- Estocástico
- ATR (Rango Promedio Verdadero)
ALGUNOS EJEMPLOS:
Una vez dadas unas breves pinceladas acerca de en que consiste ‘pandas_ta‘, pasaremos a continuación a mostrar algunos sencillos ejemplos de uso. Dado que en este blog nos gusta utilizar datos reales para nuestros ejemplos, vamos a aplicar estos sobre los datos de cierre de una compañía (Apple en este caso) para el pasado año 2023. Para la obtención de dichos datos, vamos a valernos de otra librería ‘yfinance‘ (de la que ya hemos hablado en ocasiones anteriores) la cual importaremos junto a ‘pandas_ta‘:
OUTPUT:
Una vez obtenidos los datos para el periodo de tiempo deseado, pasaremos a calcular algunos indicadores de interés utilizando ‘pandas_ta‘:
1) MEDIA MOVIL SIMPLE Y EXPONENCIAL (SMA Y EMA):
Con la media móvil simple calculamos el promedio de los precios de cierre durante un período específico. Es útil para suavizar la tendencia general de los datos de precios y para identificar posibles puntos de entrada o salida basados en los cruces de estas. Para ello utilizaremos la función «sma()» la información sobre la que queremos calcularla y la ventana de tiempo que queramos usar:
Igualmente podemos calcular la media móvil exponencial (la cual es semejante a la media móvil simple, solo que dando mayor peso a los valores más recientes) de nuestra serie temporal, mediante la función ‘ema()‘ determinando igualmente la ventana de tiempo antes referida:
2) BANDAS DE BOLLINGER:
Estas consisten en una banda central (media móvil simple) y dos bandas exteriores que se colocan a una cierta distancia (generalmente dos desviaciones estándar) de la central. Son útiles para identificar la volatilidad del mercado y posibles puntos de reversión. Su calculo para nuestra serie temporal de precios de cierre, la obtendremos mediante la función ‘bbands()‘:
Como se ve, la función devuelve un dataframe con la siguiente información por columnas:
- BBL_5_2.0: Banda Baja de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.
- BBM_5_2.0: Banda Media de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.
- BBU_5_2.0: Banda Alta de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.
- BBB_5_2.0: Ancho de Banda de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.
- BBP_5_2.0: Porcentaje de Banda de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.
3) INDICE DE FUERZA RELATIVA (RSI):
Otro indicador interesante es el RSI. Este es un indicador de momentum que oscila entre 0 y 100. Se utiliza para medir la velocidad y el cambio de los movimientos de precios. Un RSI por encima de 70 generalmente se considera sobrecompra, mientras que un RSI por debajo de 30 se considera sobrevendido. Su computo con ‘pandas_ta‘ lo llevaremos a cabo mediante la función ‘rsi()‘ determinando, una vez más, la correspondiente ventana temporal:
4) OSCILADOR ESTOCASTICO:
Este indicador compara el precio de cierre actual con el rango entre el máximo más alto y el mínimo más bajo durante un período de tiempo específico. Se utiliza para identificar condiciones de sobrecompra o sobreventa en el mercado. Un estocástico por encima de 80 generalmente se considera sobrecompra, mientras que un estocástico por debajo de 20 se considera sobrevendido. Esto último lo obtendremos mediante la función ‘stock()’ a la que pasaremos los valores máximos (‘High’), mínimos (‘Low’) y de cierre (‘Close’), especificando igualmente la ventana de tiempo:
CONCLUSIÓN:
Tal y como hemos visto, ‘pandas_ta
‘ es una herramienta poderosa y versátil para realizar análisis técnico en Python. Con su amplia gama de indicadores técnicos (de los que solo hemos visto una pequeña muestra) y su integración perfecta con pandas
, es una opción excelente para los analistas financieros y los traders que desean llevar a cabo análisis técnico de manera eficiente y efectiva.
Saludos.