ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Crea un vector llamado grid con seq() que empiece en 0, termine en 1 y tenga incrementos de 0,01.
  • Inicializa el vector vacío vsharpe con la misma longitud que grid. 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 de grid y lo guarda en el objeto weight, que cambia en cada iteración.
  • Quieres ver cómo cambia el rendimiento de la cartera al cambiar el peso. Crea un objeto preturns que sea la suma de weight por returns_equities, y (1-weight) por returns_bonds.
  • A continuación, sustituirás los NA en vsharpe por el ratio de Sharpe anualizado (SharpeRatio.annualized()) de preturns.
  • 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)
Editar y ejecutar código