Obtener cotizaciones de acciones usando Python

Hola Habr! Les presento la traducción del artículo "Datos históricos de precios de acciones en Python" de Ishan Shah.

Un artículo sobre cómo obtener datos de existencias históricas diarias usando yfinance y datos de minutos usando alpha vantage.


Como saben, las acciones son un instrumento muy volátil y es muy importante analizar cuidadosamente el comportamiento de los precios antes de tomar cualquier decisión comercial. Bueno, primero necesitas obtener los datos y Python puede ayudarte con esto.

Los datos de intercambio se pueden descargar usando varios paquetes. Este artículo cubrirá las finanzas de Yahoo y Alpha Vantage.

Yahoo Finanzas


Primero, prueba el paquete yfianance. Se puede instalar utilizando el comando pip install yfinance. El siguiente código muestra cómo obtener datos para AAPL de 2016 a 2019 y generar el precio de cierre ajustado (precio de cierre ajustado para dividendos y divisiones) en el gráfico.

# Import the yfinance. If you get module not found error the run !pip install yfianance from your Jupyter notebook
import yfinance as yf

# Get the data for the stock AAPL
data = yf.download('AAPL','2016-01-01','2019-08-01')

# Import the plotting library
import matplotlib.pyplot as plt
%matplotlib inline

# Plot the close price of the AAPL
data['Adj Close'].plot()
plt.show()

imagen

Bueno, si necesita obtener varios recursos compartidos, debe hacer una pequeña adición al código. Un DataFrame se usa para almacenar valores. Usando el paquete matplotlib y los datos recibidos, puede crear un gráfico de rentabilidad diaria.

# Define the ticker list
import pandas as pd
tickers_list = ['AAPL', 'WMT', 'IBM', 'MU', 'BA', 'AXP']

# Import pandas
data = pd.DataFrame(columns=tickers_list)

# Fetch the data

for ticker in tickers_list:
    data[ticker] = yf.download(ticker,'2016-01-01','2019-08-01')['Adj Close']

# Print first 5 rows of the data
data.head()

imagen

# Plot all the close prices
((data.pct_change()+1).cumprod()).plot(figsize=(10, 7))

# Show the legend
plt.legend()

# Define the label for the title of the figure
plt.title("Adjusted Close Price", fontsize=16)

# Define the labels for x-axis and y-axis
plt.ylabel('Price', fontsize=14)
plt.xlabel('Year', fontsize=14)

# Plot the grid lines
plt.grid(which="major", color='k', linestyle='-.', linewidth=0.5)
plt.show()

imagen

Para los valores de las acciones rusas, hay una leve sutileza. Se agregan un punto y letras mayúsculas ME al nombre de la acción. Gracias expertos en el smartlab solicitados.

imagen

Obtenga datos de minutos con Alpha vantage


Lamentablemente, la versión gratuita de Yahoo Finance no le permite recibir datos con una frecuencia inferior a la diaria. Para hacer esto, puede usar el paquete Alpha vantage, que le permite obtener intervalos tales como 1 min, 5 min, 15 min, 30 min, 60 min.

imagen

En el futuro, estos datos se pueden analizar, crear una estrategia comercial y evaluar la efectividad utilizando el paquete de cartera. En él, puede evaluar la relación de Sharpe, el coeficiente de Sortino, la reducción máxima y muchos otros indicadores necesarios.

Espero que mi traducción del artículo original le sea útil. El código ha sido verificado y todo funciona. Pero por ahora, la pregunta para mí es la posibilidad de usar Alpha Vantage para el mercado ruso.

Source: https://habr.com/ru/post/undefined/


All Articles