Teoría moderna de carteras

Introducción al análisis de carteras en Python

Charlotte Werger

Data Scientist

Creación de carteras óptimas

Icono de estrategia de inversión

Introducción al análisis de carteras en Python

¿Qué es la optimización de carteras?

Conoce a Harry Markowitz

Harry Markowitz

Introducción al análisis de carteras en Python

El problema: encontrar pesos óptimos

$$ Problema de optimización de Markowitz

En palabras:

  • Minimizar la varianza de la cartera, con:
  • La rentabilidad media esperada es al menos un objetivo
  • Los pesos suman 100%
  • Al menos algunos pesos son positivos
Introducción al análisis de carteras en Python

Variar retornos objetivo da la Frontera Eficiente

Gráfico de la Frontera Eficiente

Introducción al análisis de carteras en Python

PyPortfolioOpt para optimizar carteras

from pypfopt.efficient_frontier import EfficientFrontier
from pypfopt import risk_models
from pypfopt import expected_returns
df=pd.read_csv('portfolio.csv')
df.head(2)
                XOM        RRC        BBY         MA        PFE       
date
2010-01-04  54.068794  51.300568  32.524055  22.062426  13.940202 
2010-01-05  54.279907  51.993038  33.349487  21.997149  13.741367
# Calcular rendimientos esperados anualizados y covarianza muestral
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
Introducción al análisis de carteras en Python

Obtener la Frontera Eficiente y los pesos

# Calcular rendimientos esperados anualizados y riesgo
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
# Obtener la Frontera Eficiente
ef = EfficientFrontier(mu, Sigma)
# Elegir una cartera óptima
ef.max_sharpe()
Introducción al análisis de carteras en Python

Optimizaciones distintas

# Seleccionar la cartera de Sharpe máximo
ef.max_sharpe()
# Fijar un retorno óptimo para un riesgo objetivo 
ef.efficient_risk(2.3)
# Fijar un riesgo mínimo para un retorno objetivo
ef.efficient_return(1.5)
Introducción al análisis de carteras en Python

Calcular riesgo y rendimiento de la cartera

# Obtener métricas de rendimiento
ef.portfolio_performance(verbose=True, risk_free_rate = 0.01)
Rentabilidad anual esperada: 21.3%
Volatilidad anual: 19.5%
Ratio de Sharpe: 0.98
Introducción al análisis de carteras en Python

¡Vamos a optimizar una cartera!

Introducción al análisis de carteras en Python

Preparing Video For Download...