CommencezCommencez gratuitement

Facteur 2 : le choix des pondérations du portefeuille

Les investisseurs peuvent optimiser le choix des pondérations pour obtenir le meilleur rendement ajusté au risque, mesuré par le ratio de Sharpe du portefeuille.

Dans le cas particulier où la valeur totale du portefeuille est investie dans seulement deux actifs, il n'y a qu'une seule pondération à déterminer, puisque la pondération du deuxième actif est égale à un moins la pondération du premier.

Faisons l'exercice pour un portefeuille investi en actions américaines et en obligations américaines. Nous allons utiliser une approche de force brute en testant un grand nombre de pondérations possibles et en retenant celle qui donne la valeur la plus élevée du ratio de Sharpe du portefeuille (en supposant un taux sans risque nul).

Cette activité fait partie du cours

Introduction à l'analyse de portefeuille en R

Voir le cours

Instructions de l’exercice

  • Créez un vecteur appelé grid à l'aide de seq() qui commence à 0, se termine à 1, avec un incrément de 0,01.
  • Initialisez le vecteur vide vsharpe avec la même longueur que grid. Une façon courante de le faire est de créer un vecteur qui contient des NA à l'aide de la fonction rep(). Vous remplacerez ces NA dans la boucle que vous allez créer ensuite.
  • Dans la boucle for, vous calculerez le ratio de Sharpe pour chacune des pondérations possibles dans grid. La première commande de la boucle for sélectionne le iᵉ élément de grid et le stocke dans l'objet weight, qui change à chaque itération.
  • Vous souhaitez voir comment le rendement du portefeuille évolue selon la pondération. Créez un objet preturns égal à la somme de weight multiplié par returns_equities, et de (1-weight) multiplié par returns_bonds.
  • Ensuite, vous remplacerez les NA dans vsharpe par le ratio de Sharpe annualisé (SharpeRatio.annualized()) de preturns.
  • Complétez la fonction de traçage où les pondérations potentielles (grid) sont placées sur l'axe des x et les ratios de Sharpe sur l'axe des y.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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)
Modifier et exécuter le code