Crear un conjunto de datos financieros con Yahoo Finance Python

Contenidos

Introducción

El artículo tiene como objetivo capacitarlo para crear sus proyectos aprendiendo cómo crear su marco de datos y recopilar datos sobre el mercado de valores y el mercado de cifrado de Internet y luego basar su código en él. Esto le permitirá crear sus modelos de AA y experimentar con datos del mundo real.

En este artículo, demostraré dos métodos y ambos utilizan Yahoo Finance como fuente de datos, ya que es gratuito y no es necesario registrarse. Puede utilizar cualquier otra fuente de datos como Quandi, Tiingo, IEX Cloud y más.

29422stock_cover-5219197

Preparándose

En el primer enfoque, consideraremos el módulo de finanzas en Python y es un módulo muy fácil de trabajar. El otro módulo del que hablaremos es yahoofinancials, que requiere un esfuerzo adicional pero devuelve una gran cantidad de información adicional a cambio. Discutiremos eso más adelante y ahora comenzaremos importando los módulos requeridos en nuestro código.

Configuración inicial:

Necesitamos cargar las siguientes bibliotecas:

import pandas as pd
import yfinance as yf
from yahoofinancials import YahooFinancials

Si no tiene estas bibliotecas, puede instalarlas a través de pip.

!pip install yfinance
!pip install yahoofinancials

Primer método: cómo usar yfinance

Anteriormente se conocía como ‘fix_yahoo_finance’, pero luego se transformó en un módulo propio, pero Yahoo no es oficial. El módulo ‘yfinance’ es ahora una biblioteca muy popular que es muy compatible con Python y se puede usar como un parche para pandas_datareader o una biblioteca independiente en sí misma. Tiene muchos usos potenciales y muchas personas lo usan para descargar los precios de las acciones y también los precios de las criptomonedas. Sin más demora, ejecutemos el siguiente código. Empezaremos descargando el precio de las acciones de ‘Apple’

Codigo:

aapl_df = yf.download('AAPL', 
                      start="2019-01-01", 
                      end='2021-06-12', 
                      progress=False,
)
aapl_df.head()

Producción :

40276img1_aapl_details-1016683

El intervalo de datos se establece en 1 día, pero el interno se puede especificar externamente con valores como 1 m, 5 m, 15 m, 30 m, 60 m, 1h, 1d, 1 semana, 1 mes y más. El comando anterior para descargar los datos muestra una fecha de inicio y finalización, pero también puede simplemente descargar los datos con el código que se proporciona a continuación:

Codigo:

aapl_df = yf.download('AAPL')

Producción :

21991img1_aapl_details_max-2677150

Hay muchos parámetros de la función de descarga que puede encontrar en la documentación y el inicio y el final son algunos de los más comunes para ser utilizados. Dado que los datos eran pequeños, la barra de progreso se estableció en falso y mostrar que no tiene sentido y debe usarse para grandes volúmenes o datos.

También podemos descargar varios precios de acciones de más de un activo a la vez. Proporcionando una lista de nombres de empresas en formato de lista (p. Ej. [‘FB’,’ MSFT’,’AAPL’] ) como el argumento de los tickers. También podemos proporcionar un argumento adicional que es autoajuste = Verdadero, de modo que todos los precios actuales se ajustan para posibles acciones corporativas como divisiones.

Además de la función yf.download, también podemos usar el módulo ticker y puede ejecutar el siguiente código para descargar los últimos 5 años de precios de las acciones de Apple.

Codigo:

ticker = yf.Ticker('AAPL')
aapl_df = ticker.history(period="5y")
aapl_df['Close'].plot(title="APPLE's stock price")

Producción :

41502apple_stock_5yrs-6051609

La única ventaja de utilizar un módulo ticker es que se pueden aprovechar los múltiples métodos que están conectados a él. Los métodos disponibles que podemos utilizar son:

  • info – Este método imprime una salida del formateador JSON que contiene mucha información sobre la empresa, comenzando por el nombre completo de la empresa, el resumen, la industria, los intercambios enumerados con el país y la zona horaria, y más. También viene equipado con el beta coeficiente.

  • recomendaciones – Este método contiene una lista histórica de recomendaciones hechas por diferentes analistas con respecto a la acción y si comprar, vender o dar sugerencias sobre ella.

25965apple_recommendations-2840358
28787apple_actions-5543446
98419apple_major_holders-9920072
77712apple_institutional_holders-6820212
  • calendario – Esta función muestra todos los eventos entrantes, como las ganancias, e incluso puede agregar esto a su calendario de Google a través del código. Básicamente, muestra las fechas de dividendos importantes para una empresa.

38920apple_calender-7687991

Si aún desea explorar más sobre el funcionamiento de las funciones, puede consultar este GitHub repositorio de yfinance.

Segundo método: ¿Cómo usar yahoofinancials?

El segundo método es utilizar el módulo de yahoofinancials, que es un poco más difícil de trabajar, pero proporciona mucha más información que yfinance. Comenzaremos descargando los precios de las acciones de Apple.

Para hacer esto, primero pasaremos un objeto de YahooFinancials sin pasar por el nombre de Apply ticker y luego usaremos una variedad de información importante para obtener los datos requeridos. Aquí, los datos devueltos están en formato JSON y, por lo tanto, les realizamos un poco de embellecimiento para que puedan transformarse en un DataFrame para mostrarlos correctamente.

Codigo:

yahoo_financials = YahooFinancials('AAPL')
data = yahoo_financials.get_historical_price_data(start_date="2019-01-01", 
                                                  end_date="2019-12-31", 
                                                  time_interval="weekly")
aapl_df = pd.DataFrame(data['AAPL']['prices'])
aapl_df = aapl_df.drop('date', axis=1).set_index('formatted_date')
aapl_df.head()

Producción :

27858apple_yahoo_finance-9755190

A nivel técnico, el proceso de obtener un precio histórico de las acciones es un poco más largo que el caso de yfinance, pero eso se debe principalmente al enorme volumen de datos. Ahora pasamos a algunas de las funciones importantes de yahoofinancials.

  • get_stock_quote_type_data () – Este método devuelve mucha información genérica sobre una acción que es similar a la función yfinance info (). La salida es algo como esto.

  • get_summary_data () – Este método devuelve un resumen de toda la empresa junto con datos útiles como el valor beta, el precio al valor contable y más.

  • get_stock_earnings_data () – Este método devuelve la información sobre las ganancias trimestrales y anuales de la empresa junto con la próxima fecha en la que la empresa reportará sus ganancias.

  • get_financial_stmts () – Este es otro método útil para recuperar los estados financieros de una empresa que es útil para el análisis de una acción.

  • get_historical_price_data () – Este es un método similar a la función download () o Ticker () para obtener los precios de las acciones con start_date, end_date y rangos de intervalo.

El módulo anterior también se puede usar para descargar datos de la empresa a la vez, como yfinance y los datos de criptomonedas también se pueden descargar como se muestra en el siguiente código.

Codigo:

yahoo_financials = YahooFinancials('BTC-USD')
data=yahoo_financials.get_historical_price_data("2019-07-10", "2021-05-30", "monthly")
btc_df = pd.DataFrame(data['BTC-USD']['prices'])
btc_df = btc_df.drop('date', axis=1).set_index('formatted_date')
btc_df.head()

Producción :

31235btc_yahoo_finance-3124513

Para obtener más detalles sobre el módulo, puede consultar su GitHub Repositorio.

EndNotes

La información completa se obtiene en última instancia de Yahoo Finanzas y ahora sabe cómo importar cualquier conjunto de datos de precios e información de acciones o criptomonedas en su código y comenzar a explorar y experimentar con ellos. Buena suerte con tus aventuras y no dudes en compartir tu código conmigo en LinkedIn o no dude en comunicarse conmigo en caso de dudas o errores.

Gracias por leer hasta el final. Espero que esté bien y que se mantenga a salvo y que se vacune pronto o que ya lo esté.

Sobre el Autor :

Arnab Mondal

Ingeniero de datos y desarrollador de Python | Escritor técnico independiente

Enlace a mis otros artículos

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.