Análisis financiero con yfinance
En este ejemplo analizamos la acción de Apple e implementamos un sistema básico de indicadores para predecir los futuros movimientos.
Gracias al paquete yfinance
nos podemos descargar información sobre diferentes mercados financieros. Seleccionamos AAPL
que es el ticker de Apple y las fechas que queremos. Con rolling
calculamos la media móvil de 9
y 20
días.
import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt
apple = yf.download('AAPL', start='2020-01-01', end='2021-01-01')
apple['9_MA'] = apple['Close'].rolling(window=9).mean()
apple['20_MA'] = apple['Close'].rolling(window=20).mean()
Existen diferentes indicadores financieros que los analistas usan para intentar predecir si una acción subirá o bajará de precio. Uno muy usado es el cruce de medias. Este indicador dice lo siguiente:
- 📈 Si la media rápida (
9
días) cruza hacia arriba la lenta (20
días) es común que la acción suba ☝🏼 a corto plazo. - 📉 Si la media rápida (
9
días) cruza hacia abajo la lenta (20
días) es común que la acción baje 👇🏼 a corto plazo.
Esto es precisamente lo que expresamos en el siguiente código. Con diff
buscamos el cambio de cuando una media pasa a estar por encima o debajo de la otra.
apple['Signal'] = np.where(apple['9_MA'] > apple['20_MA'], 1.0, 0.0)
apple['Position'] = apple['Signal'].diff()
Y ahora que tenemos todos los datos podemos representarlo. Incluimos en la gráfica el precio de la acción de Apple, las medias y los indicadores de compra y venta que hemos calculado.
plt.figure()
plt.plot(apple['Close'], label='Precio Apple', alpha=0.5)
plt.plot(apple['9_MA'], label='Media 9 días', alpha=0.8)
plt.plot(apple['20_MA'], label='Media 20 días', alpha=0.8)
plt.plot(apple.index,
np.where(apple['Position'] == 1, apple['9_MA'], np.nan),
'^', markersize=10, color='g', lw=0, label='Compra')
plt.plot(apple.index,
np.where(apple['Position'] == -1, apple['9_MA'], np.nan),
'v', markersize=10, color='r', lw=0, label='Vende')
plt.title('Valor acción Apple')
plt.legend(loc='best')
plt.show()
✏️ Ejercicios:
- Añade una nueva gráfica que muestre el retorno diario en porcentaje de Apple. Es decir, cuanto subió o bajó cada día.