0% encontró este documento útil (0 votos)
32 vistas6 páginas

Dataframe Series

El documento proporciona un análisis de datos financieros utilizando la biblioteca Pandas, abordando temas como rendimientos de acciones, volatilidad de portafolios y correlación de activos. Se incluyen ejercicios prácticos que implican el cálculo de rendimientos diarios y acumulados, así como la volatilidad y la matriz de correlación entre diferentes activos. Además, se presentan ejemplos de código para realizar estos análisis con datos históricos de precios de acciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
32 vistas6 páginas

Dataframe Series

El documento proporciona un análisis de datos financieros utilizando la biblioteca Pandas, abordando temas como rendimientos de acciones, volatilidad de portafolios y correlación de activos. Se incluyen ejercicios prácticos que implican el cálculo de rendimientos diarios y acumulados, así como la volatilidad y la matriz de correlación entre diferentes activos. Además, se presentan ejemplos de código para realizar estos análisis con datos históricos de precios de acciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Analisis de datos para finanzas - Pandas

Instituto Tecnologicos de las Américas ITLA


Clase 2024.09.21
email: gdelarosa@[Link]

PANDAS
RESPONDE LAS SIGUIENTES PREGUNTAS

¿Que son los rendimientos de acciones?

Los rendimientos de acciones son las ganancias o pérdidas generadas por la inversión en
acciones, expresadas como un porcentaje del precio inicial de la acción.

¿Que es la volatilidad de un portafolio?

La volatilidad de un portafolio mide la variabilidad de sus rendimientos en el tiempo,


indicando el riesgo asociado a la inversión.

¿Que es la correlación de activos?

La correlación de activos es una medida que indica cómo se mueven dos activos en relación
entre sí, lo que ayuda a entender la diversificación y el riesgo en un portafolio.

Ejercicio 1: Análisis de Rendimiento de Acciones

Descripción: Utiliza un DataFrame con precios históricos de varias acciones y calcula el


rendimiento diario y acumulado.

Tareas:

1- Carga un conjunto de datos con precios históricos de acciones.

In [15]: import pandas as pd

df = pd.read_excel('C:/Users/Admin/OneDrive - Instituto Tecnológico de Las Américas

# Convertir la columna 'fecha' a tipo datetime


df['fecha'] = pd.to_datetime(df['fecha'])

print("Primeras 5 filas del DataFrame:")


print([Link](5))

Primeras 5 filas del DataFrame:


fecha valor accion
0 2024-01-02 185.64 AAPL
1 2024-01-03 184.25 AAPL
2 2024-01-04 181.91 AAPL
3 2024-01-05 181.18 AAPL
4 2024-01-08 185.56 AAPL
2- Calcula el rendimiento diario de cada acción utilizando la fórmula: 𝑃𝑡 − 𝑃𝑡 1 𝑃𝑡 − 1

In [16]: # Ordenar el DataFrame por acción y fecha


df = df.sort_values(by=['accion', 'fecha'])

# Calcular el rendimiento diario


df['rendimiento_diario'] = [Link]('accion')['valor'].pct_change()

print("Rendimiento diario de cada acción:")


print(df[['fecha', 'accion', 'rendimiento_diario']])

Rendimiento diario de cada acción:


fecha accion rendimiento_diario
0 2024-01-02 AAPL NaN
1 2024-01-03 AAPL -0.007488
2 2024-01-04 AAPL -0.012700
3 2024-01-05 AAPL -0.004013
4 2024-01-08 AAPL 0.024175
.. ... ... ...
915 2024-09-18 TSLA -0.002940
916 2024-09-19 TSLA 0.073592
917 2024-09-20 TSLA -0.023245
918 2024-09-23 TSLA 0.049318
919 2024-09-24 TSLA 0.017080

[920 rows x 3 columns]

3- Calcula el rendimiento acumulado de cada acción.

In [19]: # Calcular el rendimiento acumulado


df['rendimiento_acumulado'] = (1 + df['rendimiento_diario']).cumprod() - 1

# Calcular el rendimiento acumulado total por acción


rendimiento_acumulado_total = [Link]('accion').agg(
rendimiento_acumulado_total=('rendimiento_acumulado', 'last')
).reset_index()

print("Rendimiento acumulado total de cada acción:")


print(rendimiento_acumulado_total)

Rendimiento acumulado total de cada acción:


accion rendimiento_acumulado_total
0 AAPL 0.224790
1 AMZN 0.584474
2 GOOGL 0.861072
3 MSFT 1.153629
4 TSLA 1.204344

4 - Identifica los días con el mayor y menor rendimiento para cada acción.

In [18]: mayor_rendimiento = [Link][[Link]('accion')['rendimiento_diario'].idxmax()]


menor_rendimiento = [Link][[Link]('accion')['rendimiento_diario'].idxmin()]

print("\nDías con el mayor rendimiento:")


print(mayor_rendimiento)
print("\nDías con el menor rendimiento:")
print(menor_rendimiento)
Días con el mayor rendimiento:
fecha valor accion rendimiento_diario
111 2024-06-11 207.15 AAPL 0.072649
206 2024-02-02 171.81 AMZN 0.078666
448 2024-04-26 171.95 GOOGL 0.102244
600 2024-03-12 415.28 MSFT 0.026599
817 2024-04-29 194.05 TSLA 0.153069

Días con el menor rendimiento:


fecha valor accion rendimiento_diario
148 2024-08-05 209.27 AAPL -0.048167
331 2024-08-02 167.90 AMZN -0.087847
388 2024-01-31 140.10 GOOGL -0.075003
692 2024-07-24 428.90 MSFT -0.035855
876 2024-07-24 215.99 TSLA -0.123346

Ejercicio 2: Volatilidad de un Portafolio

Descripción: Utiliza datos de precios para calcular la volatilidad de un portafolio compuesto


por varias acciones.

Tareas:

1 - Crea un DataFrame con precios de cierre ajustados de 5 acciones.

In [21]: print("DataFrame:")
print(df)

DataFrame:
fecha valor accion rendimiento_diario rendimiento_acumulado
0 2024-01-02 185.64 AAPL NaN NaN
1 2024-01-03 184.25 AAPL -0.007488 -0.007488
2 2024-01-04 181.91 AAPL -0.012700 -0.020093
3 2024-01-05 181.18 AAPL -0.004013 -0.024025
4 2024-01-08 185.56 AAPL 0.024175 -0.000431
.. ... ... ... ... ...
915 2024-09-18 227.20 TSLA -0.002940 0.969666
916 2024-09-19 243.92 TSLA 0.073592 1.114617
917 2024-09-20 238.25 TSLA -0.023245 1.065462
918 2024-09-23 250.00 TSLA 0.049318 1.167327
919 2024-09-24 254.27 TSLA 0.017080 1.204344

[920 rows x 5 columns]

2 - Calcula la rentabilidad diaria de cada acción.

In [22]: # Ordenar el DataFrame por acción y fecha


df = df.sort_values(by=['accion', 'fecha'])

# Calcular el rendimiento diario


df['rendimiento_diario'] = [Link]('accion')['valor'].pct_change()

print("Rendimiento diario de cada acción:")


print(df[['fecha', 'accion', 'rendimiento_diario']])
Rendimiento diario de cada acción:
fecha accion rendimiento_diario
0 2024-01-02 AAPL NaN
1 2024-01-03 AAPL -0.007488
2 2024-01-04 AAPL -0.012700
3 2024-01-05 AAPL -0.004013
4 2024-01-08 AAPL 0.024175
.. ... ... ...
915 2024-09-18 TSLA -0.002940
916 2024-09-19 TSLA 0.073592
917 2024-09-20 TSLA -0.023245
918 2024-09-23 TSLA 0.049318
919 2024-09-24 TSLA 0.017080

[920 rows x 3 columns]

3 - Calcula la volatilidad (desviación estándar de la rentabilidad) de cada acción.

In [23]: # Calcular la volatilidad (desviación estándar de la rentabilidad diaria) para cada


volatilidad = [Link]('accion')['rendimiento_diario'].std().reset_index()

# Renombrar la columna para mayor claridad


[Link] = ['accion', 'volatilidad']

# Mostrar los resultados


print("Volatilidad de cada acción:")
print(volatilidad)

Volatilidad de cada acción:


accion volatilidad
0 AAPL 0.015099
1 AMZN 0.017546
2 GOOGL 0.017641
3 MSFT 0.012362
4 TSLA 0.036720

4 - Combina las acciones en un portafolio y calcula la volatilidad del portafolio, suponiendo


pesos iguales.

In [27]: # 1. Calcular la matriz de covarianza de los rendimientos diarios


cov_matrix = [Link](index='fecha', columns='accion', values='rendimiento_diario')

# 2. Definir los pesos iguales para cada acción


n_acciones = len(cov_matrix) # Número de acciones
weights = [1/n_acciones] * n_acciones # Pesos iguales

# 3. Calcular la volatilidad del portafolio


port_volatility = (weights @ cov_matrix @ weights)**0.5

# 4. Mostrar el resultado
print(f"Volatilidad del portafolio: {port_volatility:.4f}")

Volatilidad del portafolio: 0.0144

Ejercicio 3: Correlación de Activos

Descripción: Examina la correlación entre diferentes activos financieros utilizando datos


históricos.

Tareas:
1 - Carga un conjunto de datos con precios históricos de varios activos (acciones, bonos,
etc.).

In [28]: print("DataFrame:")
print(df)

DataFrame:
fecha valor accion rendimiento_diario rendimiento_acumulado \
0 2024-01-02 185.64 AAPL NaN NaN
1 2024-01-03 184.25 AAPL -0.007488 -0.007488
2 2024-01-04 181.91 AAPL -0.012700 -0.020093
3 2024-01-05 181.18 AAPL -0.004013 -0.024025
4 2024-01-08 185.56 AAPL 0.024175 -0.000431
.. ... ... ... ... ...
915 2024-09-18 227.20 TSLA -0.002940 0.969666
916 2024-09-19 243.92 TSLA 0.073592 1.114617
917 2024-09-20 238.25 TSLA -0.023245 1.065462
918 2024-09-23 250.00 TSLA 0.049318 1.167327
919 2024-09-24 254.27 TSLA 0.017080 1.204344

rendimiento_portafolio
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
.. ...
915 NaN
916 NaN
917 NaN
918 NaN
919 NaN

[920 rows x 6 columns]

2 - Calcula la rentabilidad diaria de cada activo.

In [29]: # Ordenar el DataFrame por acción y fecha


df = df.sort_values(by=['accion', 'fecha'])

# Calcular el rendimiento diario


df['rendimiento_diario'] = [Link]('accion')['valor'].pct_change()

print("Rendimiento diario de cada acción:")


print(df[['fecha', 'accion', 'rendimiento_diario']])

Rendimiento diario de cada acción:


fecha accion rendimiento_diario
0 2024-01-02 AAPL NaN
1 2024-01-03 AAPL -0.007488
2 2024-01-04 AAPL -0.012700
3 2024-01-05 AAPL -0.004013
4 2024-01-08 AAPL 0.024175
.. ... ... ...
915 2024-09-18 TSLA -0.002940
916 2024-09-19 TSLA 0.073592
917 2024-09-20 TSLA -0.023245
918 2024-09-23 TSLA 0.049318
919 2024-09-24 TSLA 0.017080

[920 rows x 3 columns]

3 - Utiliza [Link]() para calcular la matriz de correlación entre los activos.


In [30]: # Reorganizar el DataFrame para que cada acción sea una columna
df_pivot = [Link](index='fecha', columns='accion', values='rendimiento_diario')

# Calcular la matriz de correlación entre los activos


correlation_matrix = df_pivot.corr()

print("Matriz de correlación entre las acciones:")


print(correlation_matrix)

Matriz de correlación entre las acciones:


accion AAPL AMZN GOOGL MSFT TSLA
accion
AAPL 1.000000 0.335181 0.387976 0.447870 0.408583
AMZN 0.335181 1.000000 0.535232 0.678475 0.321195
GOOGL 0.387976 0.535232 1.000000 0.621287 0.203096
MSFT 0.447870 0.678475 0.621287 1.000000 0.312052
TSLA 0.408583 0.321195 0.203096 0.312052 1.000000

4 - Identifica los pares de activos con mayor y menor correlación.

In [46]: mayor_correlacion = ('MSFT', 'AMZN', 0.678475)


menor_correlacion = ('TSLA', 'GOOGL', 0.203096)

print(f"Mayor correlación: {mayor_correlacion[0]} - {mayor_correlacion[1]}: {mayor_


print(f"Menor correlación: {menor_correlacion[0]} - {menor_correlacion[1]}: {menor_

Mayor correlación: MSFT - AMZN: 0.678475


Menor correlación: TSLA - GOOGL: 0.203096

También podría gustarte