📈 ¿Más o menos volatilidad?
- Hugo de Val
- 20 abr
- 2 Min. de lectura
Actualizado: 28 abr
Un análisis de carteras de inversión con Python, SQL y Business Intelligence
Publicado por Hugo de Val
Data Analyst especializado en finanzas, procesos comerciales y BI con herramientas de análisis avanzado en deval.one
Optimización de Carteras: Análisis y Resultados Numéricos Detallados
La teoría moderna de carteras permite a los inversores diversificar y optimizar su portafolio de activos financieros para maximizar rentabilidades ajustadas al riesgo. En este post, exploramos un análisis práctico y numérico basado en técnicas avanzadas de optimización, incluyendo simulaciones Monte Carlo y métodos matemáticos robustos.
1. Actualización y Preparación de Datos
El análisis comienza sincronizando datos históricos en una base MySQL, garantizando precisión y accesibilidad:
engine = create_engine('mysql+mysqlconnector://root:root@localhost:3306/cotizaciones')
df_prices = pd.concat(dfs, axis=1)
2. Definición de Parámetros Clave
Establecimos la tasa libre de riesgo anual en 2,189%, rango del análisis desde el 03/11/2022 hasta hoy y parámetros gráficos:
rf_anual = 0.02189
start_date = '2022-11-03'
annualization_factor = 252
3. Análisis de Rentabilidad y Riesgo
Calculamos la rentabilidad anualizada (CAGR), volatilidad y correlaciones:
mean_returns = df_returns.mean() * annualization_factor
cov_matrix = df_returns.cov() * annualization_factor
4. Simulación Monte Carlo
Realizamos 10,000 simulaciones para identificar la cartera con máximo ratio Sharpe:
rets, vols, sharpes, pesos = [], [], [], []
np.random.seed(42)
for _ in range(10000):
w = np.random.rand(n_assets)
w /= w.sum()
ret = np.dot(w, mean_returns)
vol = np.sqrt(w.T @ cov_matrix @ w)
sharpe = (ret - rf_anual) / vol
rets.append(ret)
vols.append(vol)
sharpes.append(sharpe)
La cartera óptima por simulación mostró un Sharpe de 1.4850, rentabilidad de 17.03% y volatilidad de 9.92%.
5. Optimización Matemática
Calculamos la cartera de mínima volatilidad con retorno superior a la tasa libre de riesgo:
constraints = ({'type': 'eq', 'fun': lambda w: w.sum() - 1},
{'type': 'ineq', 'fun': lambda w: np.dot(w, mean_returns) - rf_anual})
res_min = minimize(portfolio_volatility, w0, args=(cov_matrix,), constraints=constraints)
Esta cartera mostró una rentabilidad de 3.34%, volatilidad mínima de 0.25% y Sharpe de 4.0909.
6. Cartera Equidistribuida Normalizada
Calculamos esta cartera utilizando una distribución equitativa ajustada por raíz cuadrada del número de activos, generando una rentabilidad del 0.69%, volatilidad del 12.19% y Sharpe negativo de -0.1318.
7. Risk Parity (Paridad de Riesgo)
Mediante el método Risk Parity (Equal Risk Contribution), obtuvimos una rentabilidad anual del 8.72%, volatilidad del 7.45% y un ratio de Sharpe de 0.8752, logrando así una asignación equilibrada del riesgo.
8. Resultados Comparativos y Conclusiones
La comparativa numérica y gráfica mostró diferencias significativas entre métodos. La optimización matemática y simulaciones Monte Carlo ofrecen mejores ratios de Sharpe comparados con la equidistribución o paridad de riesgo.
Estrategia | Rentab. (%) | Volatilidad (%) | Sharpe |
Máx Sharpe MC | 17.03 | 9.92 | 1.4850 |
Mín Vol (≥rf) | 3.34 | 0.25 | 4.0909 |
Equidistribuida | 0.69 | 12.19 | -0.1318 |
Risk Parity | 8.72 | 7.45 | 0.8752 |
Conclusión
El análisis evidencia la importancia de la selección estratégica de métodos de optimización según el perfil de riesgo del inversor. Las carteras basadas en simulaciones y métodos matemáticos proporcionan resultados superiores en términos de eficiencia riesgo-rentabilidad.
Este estudio refuerza la relevancia del uso de métodos cuantitativos avanzados en la gestión de inversiones para maximizar rentabilidades ajustadas al riesgo y diversificar eficazmente carteras de activos financieros.
Publicado en abril de 2025
Comments