Medir el riesgo de una cartera

Introducción al análisis de carteras en Python

Charlotte Werger

Data Scientist

Riesgo de una cartera

  • Invertir es arriesgado: los activos individuales suben o bajan
  • La rentabilidad esperada es una variable aleatoria
  • La dispersión respecto a la media se mide con la varianza $\sigma^2$, una medida común de volatilidad
  • $\sigma^2 = \frac{\sum\limits_{i=1}^N (X -\mu)^2}{N}$

El riesgo como equilibrio

Introducción al análisis de carteras en Python

Varianza

$$

  • La varianza de un activo varía: algunos tienen más o menos dispersión respecto a la media
  • La varianza de la cartera no es simplemente la suma ponderada de las varianzas individuales
  • Como los rendimientos están correlacionados, se complica

Distribuciones con varianza alta y baja

Introducción al análisis de carteras en Python

¿Cómo se relacionan varianza y correlación con el riesgo?

$$

  • La correlación entre los activos 1 y 2 se denota $\rho_{1,2}$ e indica hasta qué punto se mueven juntos
  • La varianza de la cartera considera las varianzas individuales ($\sigma_1^2, \sigma_2^2, etc$), los pesos en la cartera ($w_1, w_2$) y su correlación mutua
  • La desviación estándar ($\sigma$) es la raíz cuadrada de la varianza ($\sigma^2$); ambas miden la volatilidad
Introducción al análisis de carteras en Python

Calcular la varianza de la cartera

$$ Fórmula de la varianza de la cartera

  • $\rho_{1,2} \sigma_1 \sigma_2$ es la covarianza entre los activos 1 y 2
  • La covarianza también se escribe como $ \sigma_{1,2} $
  • Esto nos permite escribir:

Fórmula de la varianza de la cartera reescrita

Introducción al análisis de carteras en Python

Reescribiendo más corta la varianza de la cartera

Fórmula de la varianza de la cartera

  • Se puede reescribir en notación matricial, más fácil de usar en código:

Varianza de la cartera en notación matricial

  • En palabras, en Python necesitamos calcular:

    Varianza de la cartera = Pesos transpuestos × (Matriz de covarianzas × Pesos)

Introducción al análisis de carteras en Python

Varianza de la cartera en Python

price_data.head(2)

ticker        AAPL       FB        GE       GM       WMT
date                    
2018-03-21    171.270    169.39    13.88    37.58    88.18
2018-03-22    168.845    164.89    13.35    36.35    87.14
# Calculate daily returns from prices
daily_returns = df.pct_change()
# Construct a covariance matrix for the daily returns data
cov_matrix_d = daily_returns.cov()
Introducción al análisis de carteras en Python

Varianza de la cartera en Python

# Construct a covariance matrix from the daily_returns
cov_matrix_d = (daily_returns.cov())*250
print (cov_matrix_d)

        AAPL          FB          GE          GM          WMT                    
AAPL    0.053569    0.026822    0.013466    0.018119    0.010798
FB      0.026822    0.062351    0.015298    0.017250    0.008765
GE      0.013466    0.015298    0.045987    0.021315    0.009513
GM      0.018119    0.017250    0.021315    0.058651    0.011894
WMT     0.010798    0.008765    0.009513    0.011894    0.041520
weights = np.array([0.2, 0.2, 0.2, 0.2, 0.2])
Introducción al análisis de carteras en Python

Varianza de la cartera en Python

# Calculate the variance with the formula
port_variance = np.dot(weights.T, np.dot(cov_matrix_a, weights))
print (port_variance)

0.022742232726360567
# Just converting the variance float into a percentage
print(str(np.round(port_variance, 3) * 100) + '%')

2.3%
port_stddev = np.sqrt(np.dot(weights.T, np.dot(cov_matrix_a, weights)))
print(str(np.round(port_stddev, 3) * 100) + '%')
15.1%
Introducción al análisis de carteras en Python

¡Vamos a practicar!

Introducción al análisis de carteras en Python

Preparing Video For Download...