Obtención de datos financieros en Python

En Python, para realizar análisis cuantitativos, primero es necesario obtener datos financieros. Python cuenta con varias bibliotecas que se pueden utilizar para obtener datos del mercado financiero.

La biblioteca utilizada en los ejemplos de este sitio es:yfinance。

La instalación es la siguiente:

pip install yfinance

yfinanceUso de la bibliotecayf.download()La función para descargar datos financieros.

A continuación se muestra su sintaxis básica:

yf.download(tickers, start=None, end=None, actions=False, threads=True)

Descripción de parámetros:

tickers:

  • Descripción:Código del instrumento financiero (acciones, índices, fondos, etc.) cuyos datos se desean descargar.
  • Tipo:Cadena (código único) o lista (varios códigos).
  • Ejemplo: "AAPL"、["AAPL", "GOOGL"]。

start:

  • Descripción:Fecha de inicio de los datos a descargar.
  • Tipo:Cadena (formato de fecha: "YYYY-MM-DD").
  • Valor predeterminado:None, indica que comienza desde la fecha más temprana disponible.
  • Ejemplo: "2020-01-01"。

end:

  • Descripción:Fecha de fin de los datos a descargar.
  • Tipo:Cadena (formato de fecha: "YYYY-MM-DD").
  • Valor predeterminado:None, indica que finaliza en la fecha más reciente disponible.
  • Ejemplo: "2022-01-01"。

actions:

  • Descripción:Si se incluye información como dividendos, divisiones de acciones, etc.
  • Tipo:Booleano.
  • Valor predeterminado: False.
  • Ejemplo: actions=True。

threads:

  • Descripción:Si se utiliza multihilo para descargar datos.
  • Tipo:Booleano.
  • Valor predeterminado: True.
  • Ejemplo: threads=False。

En yfinance, los códigos de las acciones A chinas deben llevar el sufijo de la bolsa de valores. El sufijo de la Bolsa de Valores de Shanghái (SSE) es.SS, el sufijo de la Bolsa de Valores de Shenzhen (SZSE) es.SZ。

A continuación se muestrayfinanceun ejemplo sencillo de uso para obtener los datos de las acciones de Kweichow Moutai (600519.SS):

Ejemplo

import yfinance as yf

# Bolsa de Valores de Shanghái, código de las acciones de Moutai
symbol = "600519.SS"

# O bien, Bolsa de Valores de Shenzhen, código de las acciones de Luzhou Laojiao
# luzhou_laojiao_szse = yf.Ticker('000568.SZ')

# Obtener datos de las acciones de Moutai
maotai_data = yf.download(symbol, start="2022-01-01", end="2023-11-01")

# Imprimir las primeras filas de los datos
print(maotai_data.head())

El código anterior utiliza la función download de yfinance para obtener los datos de las acciones de Kweichow Moutai (600519.SS), en un rango de fechas desde el 1 de enero de 2022 hasta el 1 de noviembre de 2023. Los datos devueltos son un Pandas DataFrame que contiene información como la fecha (Date), apertura (Open), máximo (High), mínimo (Low), cierre (Close), volumen (Volume) y cierre ajustado (Adj Close).

El contenido del Pandas DataFrame se puede consultar en:Estructuras de datos en Pandas - DataFrame

Al ejecutar el código anterior, la salida es la siguiente:

# python3 mt.py
[*********************100%%**********************]  1 of 1 completed
                  Open         High          Low        Close    Adj Close   Volume
Date                                                                               
2022-01-04  2055.00000  2068.949951  2014.000000  2051.229980  1973.508057  3384262
2022-01-05  2045.00000  2065.000000  2018.000000  2024.000000  1947.309937  2839551
2022-01-06  2022.01001  2036.000000  1938.510010  1982.219971  1907.112793  5179475
2022-01-07  1975.00000  1988.880005  1939.319946  1942.000000  1868.416870  2981669
2022-01-10  1928.01001  1977.000000  1917.550049  1966.000000  1891.507568  2962670

Clase Ticker

La clase Ticker de yfinance se utiliza para obtener información y datos en tiempo real de un instrumento financiero específico.

TickerConstructor de la clase:

  • Uso:yf.Ticker('AAPL')
  • Descripción: crea unTickerobjeto que representa una acción o activo financiero específico. Dentro del paréntesis se pasa el código de la acción (por ejemplo: 'AAPL').

historyMétodos:

  • Uso:ticker.history(period='1d', interval='1m')
  • Descripción: obtiene datos históricos de precios.periodEl parámetro especifica el período, que puede ser'1d'(un día),'1mo'(un mes),'1y'(un año), etc.;intervalEl parámetro especifica el intervalo, que puede ser'1m'(un minuto),'1d'(un día),'1wk'(una semana), etc.

infoAtributos:

  • Uso:ticker.info
  • Descripción: obtiene información básica sobre la acción, como el nombre de la empresa, sector, capitalización de mercado, etc.

dividendsAtributo:

  • Uso:ticker.dividends
  • Descripción: obtiene los datos de dividendos; devuelve un DataFrame que contiene fechas y montos de dividendos.

splitsAtributo:

  • Uso:ticker.splits
  • Descripción: obtiene los datos de divisiones de acciones; devuelve un DataFrame que contiene fechas y proporciones de división.

recommendationsAtributo:

  • Uso:ticker.recommendations
  • Descripción: obtiene la información de recomendaciones de la acción; devuelve un DataFrame que contiene fechas e información de recomendaciones.

major_holdersAtributo:

  • Uso:ticker.major_holders
  • Descripción: obtiene la información de los principales tenedores de la acción; devuelve un DataFrame que contiene los principales accionistas y sus porcentajes de participación.

sustainabilityAtributo:

  • Uso:ticker.sustainability
  • Descripción: obtiene la información de sostenibilidad de la acción; devuelve un DataFrame que contiene indicadores ambientales, sociales y de gobernanza (ESG).

actionsAtributo:

  • Uso:ticker.actions
  • Descripción: obtiene los datos de acciones corporativas, incluyendo divisiones de acciones, dividendos, etc.

calendarAtributo:

  • Uso:ticker.calendar
  • Descripción: obtiene la información del calendario financiero de la empresa, como las fechas de los informes trimestrales, etc.

El siguiente código utiliza la clase Ticker de la biblioteca yfinance para obtener información de las acciones de Microsoft (código: MSFT), incluyendo información básica, datos históricos de mercado, dividendos, divisiones de acciones, estados financieros, etc.:

Ejemplo

import yfinance as yf

# Crear un objeto Ticker, que representa la operación sobre los datos de las acciones de Microsoft
msft = yf.Ticker("MSFT")

# Obtener toda la información de la acción
msft.info

# Obtener datos históricos de mercado, aquí los datos del último mes
hist = msft.history(period="1mo")

# Mostrar la metainformación de los datos históricos (se debe llamar primero a la función history())
msft.history_metadata

# Mostrar información de acciones corporativas (dividendos, divisiones, ganancias de capital)
msft.actions
msft.dividends
msft.splits
msft.capital_gains  # Solo aplica a fondos mutuos y fondos cotizados (ETFs)

# Mostrar el número de acciones en circulación
msft.get_shares_full(start="2022-01-01", end=None)

# Mostrar los estados financieros:
# - Estado de resultados
msft.income_stmt
msft.quarterly_income_stmt
# - Balance general
msft.balance_sheet
msft.quarterly_balance_sheet
# - Estado de flujo de efectivo
msft.cashflow
msft.quarterly_cashflow
# Para ver más opciones, consulte `Ticker.get_income_stmt()`

# Mostrar información de los accionistas
msft.major_holders
msft.institutional_holders
msft.mutualfund_holders

# Mostrar las fechas de ganancias futuras e históricas; devuelve hasta 4 trimestres futuros y 8 trimestres pasados, de forma predeterminada.
# Nota: si se necesita más información, se puede usar msft.get_earnings_dates(limit=XX), donde XX es el parámetro de límite aumentado.
msft.earnings_dates

# Mostrar el Código Internacional de Identificación de Valores (ISIN) - *función experimental*
# ISIN = International Securities Identification Number
msft.isin

# Mostrar las fechas de vencimiento de las opciones
msft.options

# Mostrar noticias
msft.news

# Obtener la cadena de opciones para una fecha de vencimiento específica
opt = msft.option_chain('YYYY-MM-DD')
# Los datos se pueden obtener a través de opt.calls, opt.puts

Obtener datos de múltiples acciones

El siguiente código utiliza la biblioteca yfinance para inicializar un objeto Tickers con múltiples códigos de acciones, y a través de este objeto accede a la información, datos históricos y acciones corporativas de diferentes acciones:

Ejemplo

import yfinance as yf

# Inicializar un objeto Tickers que contiene múltiples códigos de acciones
tickers = yf.Tickers('msft aapl goog')

# Ejemplo de uso: acceder a la información de cada acción
tickers.tickers['MSFT'].info  # Obtener la información básica de Microsoft (MSFT)
tickers.tickers['AAPL'].history(period="1mo")  # Obtener los datos históricos del último mes de Apple (AAPL)
tickers.tickers['GOOG'].actions  # Obtener la información de acciones corporativas de Google (GOOG) (dividendos, divisiones, etc.)

Descargar datos históricos

El siguiente código utiliza layfinancebiblioteca para descargar los datos históricos de mercado del último mes del ETF S&P 500 (SPY) y de Apple (AAPL):

Ejemplo

import yfinance as yf

# Usar yfinance para descargar los datos históricos de mercado del ETF S&P 500 (SPY) y de Apple (AAPL)
data = yf.download("SPY AAPL", period="1mo")

period="1mo"El parámetro indica que el rango de tiempo de descarga es el último mes.


Más bibliotecas financieras

A continuación se presentan algunas bibliotecas utilizadas principalmente para obtener datos financieros:

yfinance

  • Sitio web oficial: yfinance
  • Descripción:yfinance es una biblioteca para obtener datos de Yahoo Finance. Proporciona una API sencilla que permite a los usuarios obtener datos financieros como acciones, índices, etc.
  • Instalación: pip install yfinance

Tushare

  • Sitio web oficial: Tushare
  • Descripción:Tushare es una plataforma abierta de datos financieros que proporciona interfaces para datos de mercados financieros como acciones, futuros, fondos, etc. Admite Python y ofrece una API fácil de usar.
  • Instalación: pip install tushare

pandas-datareader

  • Sitio web oficial: pandas-datareader
  • Introducción:pandas-datareader es una biblioteca que obtiene datos financieros de múltiples fuentes en línea (como Yahoo Finance, Google Finance, etc.).
  • Instalación: pip install pandas-datareader
  • Sitio web oficial: baostock

baostock

  • Sitio web oficial: baostock
  • Introducción:baostock es una biblioteca que proporciona gratuitamente datos financieros como acciones A, acciones de Hong Kong, opciones, etc. Ofrece una interfaz de Python para que los usuarios obtengan datos fácilmente.
  • Instalación: pip install baostock

alpha_vantage

  • Sitio web oficial: alpha_vantage
  • Introducción:alpha_vantage proporciona una API simple que se puede utilizar para obtener datos financieros como acciones y divisas. También admite el cálculo de algunos indicadores técnicos.
  • Instalación: pip install alpha_vantage

quandl

  • Sitio web oficial: Quandl
  • Introducción:Quandl proporciona datos financieros y económicos de diversas fuentes. Ofrece una biblioteca de Python para que los usuarios obtengan datos fácilmente.
  • Instalación: pip install quandl

ccxt

  • Sitio web oficial: ccxt
  • Introducción:ccxt es una biblioteca de código abierto para operar y obtener datos financieros, que admite la obtención de datos de múltiples intercambios.
  • Instalación: pip install ccxt

AKShare

  • Sitio web oficial: AKShare
  • Introducción:AKShare es una biblioteca de interfaz de datos financieros basada en Python, cuyo objetivo es implementar un conjunto de herramientas para datos fundamentales, datos de mercado en tiempo real e histórico, y datos derivados de productos financieros como acciones, futuros, opciones, fondos, divisas, bonos, índices y criptomonedas, desde la recopilación de datos, limpieza de datos hasta el almacenamiento de datos, principalmente con fines de investigación académica.
  • Instalación: pip install akshare
Otras extensiones