¿Cómo obtener datos financieros de Yahoo Finance con Python?

0
223
Datos de precios históricos con Python

Los profesionales del trading, la inversión y otros sectores financieros necesitan acceso a datos financieros, ya que la investigación de inversiones depende de ello. Yahoo Finance, que ofrece estadísticas de mercado actualizadas, noticias y análisis financiero, es una de las fuentes más conocidas de información financiera. Python es un lenguaje de programación sólido y flexible que se puede utilizar para extraer datos financieros de Yahoo Finance, Google Finance y TradingView, entre otras fuentes de datos, por lo que en esta publicación estaremos utilizando el paquete yfinance para hacer precisamente eso.

Instalación y Sintaxis de yfinance

Antes de comenzar, necesitamos instalar la biblioteca yfinance, que nos permite acceder a los datos de Yahoo Finance desde Python. Podemos instalar yfinance utilizando pip, el instalador de paquetes de Python en el CMD de Windows.

pip install yfinance

Una vez que tenemos yfinance instalado, podemos comenzar a usarlo en nuestros scripts de Python en el interprete. La sintaxis para importar yfinance es sencilla:

import yfinance as yf

¿Cómo funciona el algoritmo que vamos a mostrar a continuación?

Para obtener datos financieros de Yahoo Finance, primero necesitamos crear una instancia de la clase Ticker de yfinance, que representa una acción específica u otro instrumento financiero.

Podemos crear una instancia de Ticker pasando un símbolo de acciones al constructor yf.Ticker(), de la siguiente manera: apple = yf.Ticker(“APPLE”)

Una vez que tenemos una instancia de Ticker, podemos utilizar los métodos de Yahoo Finance para recuperar datos financieros. Por ejemplo, podemos utilizar el método history() para obtener los datos históricos de precios de la acción:

datos = apple.history(period=”max”)

El parámetro period especifica el periodo de tiempo para el cual queremos recuperar datos. En este caso, estamos obteniendo datos de toda la historia del precio de la acción.

También podemos utilizar otros métodos de la clase Ticker para obtener otros tipos de datos financieros, como dividendos, divisiones y estados financieros

Funciones Comunes de yfinance

  • yf.Ticker(símbolo): Este método se utiliza para crear un objeto Ticker para un símbolo específico. Devuelve una instancia de la clase Ticker que se puede utilizar para recuperar varios datos financieros para el símbolo del activo dado.
  • ticker.info: Este método devuelve un diccionario que contiene información detallada sobre el símbolo, como su nombre, industria, sector, bolsa y otras métricas financieras como la capitalización de mercado, el rendimiento de dividendos, la relación precio/beneficio (P/E) y más.
  • ticker.history():  Este método devuelve un DataFrame de pandas que contiene los precios históricos de apertura, máximo, mínimo y cierre (OHLC), el volumen y otros datos financieros para el símbolo especificado durante un período de tiempo determinado.
  • ticker.recommendations() − Este método devuelve un DataFrame de pandas que contiene las últimas recomendaciones realizadas por analistas financieros para el símbolo dado, incluyendo el precio objetivo, la calificación de la recomendación y la fecha de la recomendación.
  • ticker.calendar(): Este método devuelve un DataFrame de pandas que contiene los próximos eventos de ganancias, dividendos y otros eventos importantes para el instrumento dado.
  • ticker.sustainability(): Este método devuelve un DataFrame de pandas que contiene los valores de sostenibilidad para el símbolo dado, como las puntuaciones ambientales, sociales y de gobernanza (ESG).
  • ticker.options: Este método devuelve un diccionario que contiene las fechas de vencimiento y otros detalles de las opciones disponibles para un símbolo dado.

Podemos cambiar el símbolo de la acción para obtener datos financieros de un valor específico.

Los símbolos de algunas de las acciones más populares son:

Símbolo de la acciónNombre
AAPLApple Inc.
MSFTMicrosoft Corporation
AMZNAmazon.com, Inc.
TSLATesla, Inc.
GOOGLAlphabet Inc. (Google)

Código de ejemplo con yFinance: Obtención de datos de Apple

#Importación de librerías

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# Creación del objeto de Ticker para el símbolo específico de una acción

ticker = yf.Ticker("AAPL")

# Obtención de información detallada de la acción (Apple)
info = ticker.info
print("Información detallada:")
for key, value in info.items():
   # Formato e indentado de la salida impresa
   print(f"{key}: {value}")
   print("-" * 10)

# Obtención de datos de precios históricos OHLC y otros datos financieros
history = ticker.history(period="1mo")
print("\nHistorical Data:")
print(history)


# Trazado de precios precios históricos
plt.plot(history.index, history["Close"])
plt.title(f"{info['shortName']} ({info['symbol']})")
plt.xlabel("Fecha")
plt.ylabel("Precio")
plt.show()

Cuando se corre este script, produce una salida con una gran cantidad de datos como los siguientes:

Información Detallada:

address1: One Apple Park Way
----------
city: Cupertino
----------
state: CA
----------
zip: 95014
----------
country: United States
----------
phone: 408 996 1010
----------
website: https://www.apple.com
----------
industry: Consumer Electronics
----------
industryKey: consumer-electronics
----------
industryDisp: Consumer Electronics
----------
sector: Technology
----------
sectorKey: technology
----------
sectorDisp: Technology
----------
previousClose: 191.31
----------
open: 190.87
----------
dayLow: 189.25
----------
dayHigh: 190.9
----------
regularMarketPreviousClose: 191.31
----------
regularMarketOpen: 190.87
----------
regularMarketDayLow: 189.25
----------
regularMarketDayHigh: 190.9
----------
dividendRate: 0.96
----------
dividendYield: 0.0050999997
----------
exDividendDate: 1699574400
----------
payoutRatio: 0.1533
----------
fiveYearAvgDividendYield: 0.84
----------
beta: 1.305
----------
trailingPE: 30.939741
----------
forwardPE: 26.532124
----------
volume: 24048344
----------
regularMarketVolume: 24048344
----------
averageVolume: 58604845
----------
averageVolume10days: 50701620
----------
averageDailyVolume10Day: 50701620
----------
bid: 189.85
----------
ask: 189.95
----------
bidSize: 1300
----------
askSize: 800
----------
marketCap: 2954565517312
----------
fiftyTwoWeekLow: 124.17
----------
fiftyTwoWeekHigh: 198.23
----------
priceToSalesTrailing12Months: 7.7085342
----------
fiftyDayAverage: 177.7814
----------
twoHundredDayAverage: 174.14445
----------
trailingAnnualDividendRate: 0.94
----------
trailingAnnualDividendYield: 0.004913491
----------
currency: USD
----------
enterpriseValue: 3016931409920
----------
profitMargins: 0.25305998
----------
floatShares: 15535177390

Datos Historicos:

Open High Low Close Volume Dividends Stock Splits
Date
2023-10-25 00:00:00-04:00 171.653866 172.832306 170.425473 170.874893 57157000 0.00 0.0
2023-10-26 00:00:00-04:00 170.145843 171.154523 165.452029 166.670425 70625300 0.00 0.0
2023-10-27 00:00:00-04:00 166.690399 168.737704 166.610502 167.998672 58499100 0.00 0.0
2023-10-30 00:00:00-04:00 168.797615 170.944780 168.647803 170.065933 51131000 0.00 0.0
2023-10-31 00:00:00-04:00 169.127189 170.675137 167.679084 170.545319 44846000 0.00 0.0
2023-11-01 00:00:00-04:00 170.775011 174.000757 169.896164 173.741104 56934900 0.00 0.0
2023-11-02 00:00:00-04:00 175.289074 177.546095 175.229156 177.336380 77334800 0.00 0.0
2023-11-03 00:00:00-04:00 174.010754 176.587362 173.121926 176.417572 79763700 0.00 0.0
2023-11-06 00:00:00-05:00 176.147945 179.193920 175.978171 178.994186 63841300 0.00 0.0
2023-11-07 00:00:00-05:00 178.944239 182.199959 178.734524 181.580780 70530000 0.00 0.0
2023-11-08 00:00:00-05:00 182.110085 183.208629 181.351076 182.649368 49340300 0.00 0.0
2023-11-09 00:00:00-05:00 182.719278 183.877740 181.570782 182.169998 53763500 0.00 0.0
2023-11-10 00:00:00-05:00 183.970001 186.570007 183.529999 186.399994 66133400 0.24 0.0
2023-11-13 00:00:00-05:00 185.820007 186.029999 184.210007 184.800003 43627500 0.00 0.0
2023-11-14 00:00:00-05:00 187.699997 188.110001 186.300003 187.440002 60108400 0.00 0.0
2023-11-15 00:00:00-05:00 187.850006 189.500000 187.779999 188.009995 53790500 0.00 0.0
2023-11-16 00:00:00-05:00 189.570007 190.960007 188.649994 189.710007 54412900 0.00 0.0
2023-11-17 00:00:00-05:00 190.250000 190.380005 188.570007 189.690002 50922700 0.00 0.0
2023-11-20 00:00:00-05:00 189.889999 191.910004 189.880005 191.449997 46505100 0.00 0.0
2023-11-21 00:00:00-05:00 191.410004 191.520004 189.740005 190.639999 38134500 0.00 0.0
2023-11-22 00:00:00-05:00 191.490005 192.929993 190.830002 191.309998 39617700 0.00 0.0
2023-11-24 00:00:00-05:00 190.869995 190.899994 189.250000 189.970001 24048300 0.00 0.0


Datos de precios históricos con Python

Datos de precios históricos con Matplotlib de Python

¿Como funciona este código?

Este código utiliza la biblioteca yfinance en Python para obtener los datos financieros de una acción específica (en este caso, “AAPL” que representa a Apple Inc.). Luego, imprime información detallada sobre la compañía detrás de la acción, recupera precios históricos OHLC (apertura, máximo, mínimo, cierre) y gráfica los precios históricos utilizando la biblioteca matplotlib.

Al principio, se importan las bibliotecas necesarias: yfinance, pandas y matplotlib. Estas bibliotecas deben instalarse ya que no vienen incluidas en la instalación de Python. Luego, se crea el objeto Ticker utilizando el método Ticker de yfinance, pasando el símbolo de la acción “AAPL” como parámetro.

A continuación, a la variable ‘info‘ se le asigna el diccionario devuelto por el método ticker.info, que contiene información detallada sobre el símbolo de la acción, como su nombre, sector, capitalización de mercado, relación P/E, y más. Luego, el código imprime esta información en un formato legible utilizando un bucle for y formateo de cadenas.

La variable ‘history‘ se le asigna el DataFrame devuelto por el método ticker.history, que recupera los precios históricos OHLC, el volumen y otros datos financieros para el símbolo de acciones especificado durante un período de tiempo determinado (en este caso, el último mes). Esta información se imprime luego en un formato legible.

Finalmente, los precios históricos se grafican utilizando matplotlib, donde el eje x representa la fecha y el eje y representa el precio de cierre. El gráfico recibe un título y etiquetas de ejes antes de ser mostrado mediante el método show.

¿Qué usos podemos darle a yfinance y el código anterior?

  • Análisis financieros: pueden utilizar Python y datos de Yahoo Finance para investigar empresas, decidir qué comprar y supervisar sus carteras.
  • Algoritmos de trading: con datos de mercado en tiempo real de Yahoo Finance, Python puede utilizarse para construir algoritmos de trading que compran y venden acciones automáticamente.
  • Análisis de datos: los datos financieros pueden ser analizados estadísticamente y visualizados utilizando Python con datos de Yahoo Finance.

 

Para expertos financieros, inversores y traders, el uso de Python para obtener datos financieros de Yahoo Finance es una herramienta potente. Podemos acceder rápidamente a estados financieros, información de dividendos, información de divisiones y datos históricos de precios para cualquier acción o instrumento financiero listado en Yahoo Finance utilizando la biblioteca yfinance y la clase Ticker. Python y Yahoo Finance son herramientas esenciales para todos los que trabajan en el sector financiero, ya que ofrecen innumerables oportunidades para evaluar y utilizar estos datos.


 

TagsPython
Raul Canessa

Leave a reply