Factor 2: la elección de los pesos de la cartera
Los inversores pueden optimizar la elección del peso para obtener el mayor rendimiento ajustado al riesgo, medido por el ratio de Sharpe de la cartera.
En el caso especial de invertir el valor total de la cartera en solo dos activos, solo hay un peso que determinar, porque el peso del segundo activo es uno menos el peso del primero.
Hagámoslo en el caso de una cartera invertida en renta variable de EE. UU. y bonos de EE. UU. Usaremos un enfoque de fuerza bruta probando un gran número de pesos posibles y quedándonos con el que produzca el mayor valor del ratio de Sharpe de la cartera (suponiendo una tasa libre de riesgo cero).
Este ejercicio forma parte del curso
Introducción al análisis de carteras en R
Instrucciones del ejercicio
- Crea un vector llamado
gridconseq()que empiece en 0, termine en 1 y tenga incrementos de 0,01. - Inicializa el vector vacío
vsharpecon la misma longitud quegrid. Una forma habitual de hacerlo es crear un vector que contenga NA usando la función rep(). Sustituirás estos NA en el bucle que crearás a continuación. - En el bucle for, calcularás el ratio de Sharpe para cada uno de los pesos posibles en
grid. El primer comando del bucle for selecciona el elemento i-ésimo degridy lo guarda en el objetoweight, que cambia en cada iteración. - Quieres ver cómo cambia el rendimiento de la cartera al cambiar el peso. Crea un objeto
preturnsque sea la suma deweightporreturns_equities, y(1-weight)porreturns_bonds. - A continuación, sustituirás los NA en
vsharpepor el ratio de Sharpe anualizado (SharpeRatio.annualized()) depreturns. - Completa la función de graficado donde los pesos potenciales (
grid) se representen en el eje x y los ratios de Sharpe en el eje y.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Create a grid
grid <- seq(from = ___, to = ___, by = ___)
# Initialize an empty vector for Sharpe ratios
vsharpe <- rep(NA, times = ___ )
# Create a for loop to calculate Sharpe ratios
for(i in 1:length(grid)) {
weight <- ___[i]
preturns <- ___ * ___ + (1 - ___) * ___
vsharpe[i] <- SharpeRatio.annualized(___)
}
# Plot weights and Sharpe ratio
plot(___, ___, xlab = "Weights", ylab= "Ann. Sharpe ratio")
abline(v = grid[vsharpe == max(vsharpe)], lty = 3)