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
# 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 un
Tickerobjeto 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
# 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
# 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
# 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