¿Quiénes habrán sido los afortunados que compraron acciones de NVIDIA antes de que subiera un 20% en un solo día?
En este tutorial, calcularemos los rendimientos bursátiles de NVIDIA para analizar su comportamiento estadístico.
Data
Gracias a la librería yfinance
, podemos descargar los
datos bursátiles de
NVIDIA con su ticker NVDA
.
import yfinance as yf
df = yf.download('NVDA')
Preguntas
- ¿Cómo descargar datos bursátiles de una empresa específica utilizando Python?
- ¿Qué comando permite filtrar datos por fechas específicas?
- ¿Cómo se calcula el rendimiento diario de una acción?
- ¿Cuál es el método para visualizar la distribución del rendimiento diario?
- ¿Cómo interpretar la distribución del rendimiento diario?
- ¿Cómo se calcula el rendimiento acumulado de una inversión?
Metodología
Filtrar fechas de interés
Usamos loc
para filtrar la tabla desde el inicio de la
década 2020 hasta hoy.
df = df.loc['2020-01-01':]
Visualicemos la evolución de los precios de cierre en la bolsa de valores.
df['Adj Close'].plot()
Rendimiento diario
Usamos la función pct_change
para calcular el
rendimiento diario, que no es más que la variación porcentual del precio
de cierre con respecto al día anterior.
df['Return Daily'] = df['Adj Close'].pct_change()
El primer día no tiene rendimiento, ya que no hay un día anterior con el que comparar.
Distribución del rendimiento diario
Observando la distribución de los rendimientos diarios, vemos que la acción llegó a bajar casi un 20% en un solo día.
Mientras que en el lado positivo, el rendimiento diario máximo sobrepasó el 20%.
Bienaventurados los que compraron el día antes de la subida del 20% (bienaventurados los que compraron el día antes).
¿Qué conclusiones adicionales puedes identificar a partir de este análisis? Te leo en los comentarios.
df['Return Daily'].plot.hist(bins=50)
Al seguir una distribución normal, podemos decir con un 68% de confianza que el rendimiento diario estará entre 0.00312 \(\) 0.0342 (\(\)). Es decir, entre -3.1% y 3.7%.
df['Return Daily'].describe()
Rendimiento acumulado
Por último, calculemos cuánto dinero tendríamos por cada dólar invertido si hubiéramos comprado la acción al inicio de la década.
¿Conoces a alguien que podría interesarle este artículo? Compártelo con ellos.
df['Return Cumulative'] = (df['Return Daily']
.fillna(0)
.add(1)
.cumprod()
)
Wow, cada dólar invertido en la acción de NVIDIA al inicio de la década se habría convertido en torno a 15 dólares.
Si quieres profundizar en la programación de datos financieros con Python, esto te puede interesar.
Conclusiones
- Descarga de datos bursátiles:
yf.download
permite descargar los datos bursátiles de una empresa usando su ticker. - Filtrado por fecha:
loc['YYYY-MM-DD':]
filtra los datos para un rango de fechas específico. - Cálculo del rendimiento diario:
pct_change
calcula la variación porcentual entre filas consecutivas. - Visualización de la distribución del rendimiento:
plot.hist
muestra la distribución de los rendimientos diarios, representando la volatilidad de la acción. - Interpretación de la distribución del rendimiento:
describe
para obtener los valores estadísticos y estimar el rango de rendimientos que podemos esperar con cierto nivel de confianza. - Rendimiento acumulado:
cumprod
calcula el producto acumulado para tener en cuenta el efecto de la reinversión de los rendimientos.
Si pudieras programar lo que quisieras, ¿qué sería?
Puede que te eche una mano creando tutoriales que te ayuden. Te leo en los comentarios.