CommencerCommencer gratuitement

Facteur 2 : le choix des pondérations du portefeuille

Les investisseurs peuvent optimiser le choix des pondérations afin d’obtenir le meilleur rendement ajusté du 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, car la pondération du second actif est égale à un moins la pondération du premier.

Faisons-le pour un portefeuille investi en actions américaines et en obligations américaines. Nous allons utiliser une approche par 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).

Cet exercice fait partie du cours

Introduction à l’analyse de portefeuille en R

Afficher le cours

Instructions

  • Créez un vecteur nommé grid avec seq() qui commence à 0, se termine à 1, avec un pas de 0,01.
  • Initialisez un vecteur vide vsharpe de la même longueur que grid. Une méthode courante consiste à créer un vecteur rempli de NA à l’aide de la fonction rep(). Vous remplacerez ces NA dans la boucle que vous allez créer.
  • 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 voulez voir comment le rendement du portefeuille évolue quand la pondération change. Créez un objet preturns égal à la somme de weight multiplié par returns_equities, et de (1-weight) multiplié par returns_bonds.
  • Remplacez ensuite les NA de vsharpe par le ratio de Sharpe annualisé (SharpeRatio.annualized()) de preturns.
  • Complétez la fonction de tracé où les pondérations possibles (grid) sont sur l’axe des x et les ratios de Sharpe sur l’axe des y.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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