CommencezCommencez gratuitement

Le portefeuille à variance minimale et à ratio de Sharpe maximal

Dans les exercices précédents, vous avez calculé la frontière efficiente à l'aide d'une grille de rendements cibles. Le résultat de ce calcul était une série de deux vecteurs, vpm (vecteur des rendements moyens du portefeuille) et vpsd (vecteur des écarts types, ou volatilités), ainsi qu'une matrice de pondérations appelée mweights. Vous allez utiliser ces résultats pour repérer les portefeuilles ayant la plus faible volatilité et le plus grand ratio de Sharpe, puis tracer la répartition de leurs pondérations.

Rappelons que le ratio de Sharpe se calcule en prenant le rendement excédentaire par rapport au taux sans risque, divisé par la volatilité du portefeuille.

Cette activité fait partie du cours

Introduction à l'analyse de portefeuille en R

Voir le cours

Instructions de l’exercice

  • Créez weights_minvar, qui correspond à la ligne de mweights où l'écart type est minimisé (vpsd == min(vpsd)).
  • Calculez le ratio de Sharpe des rendements de portefeuille lorsque le taux sans risque est de 0,75 %. Nommez ce résultat vsr.
  • Créez weights_max_sr comme la ligne de mweights correspondant au portefeuille avec le ratio de Sharpe maximal dans vsr. Cette étape se résout de manière semblable à la première instruction.
  • Créez un diagramme à bandes des pondérations supérieures à 1 % dans le portefeuille weights_minvar, puis créez un diagramme à bandes des pondérations supérieures à 1 % dans le portefeuille weights_max_sr.

Exercice interactif pratique

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

# Create weights_minvar as the portfolio with the least risk
weights_minvar <- mweights[___ == min(___), ]

# Calculate the Sharpe ratio
vsr <- (___ - ___) / vpsd

# Create weights_max_sr as the portfolio with the maximum Sharpe ratio
weights_max_sr <- mweights[___ == max(___)]

# Create bar plot of weights_minvar and weights_max_sr
par(mfrow = c(2, 1), mar = c(3, 2, 2, 1))
barplot(weights_minvar[weights_minvar > 0.01])
barplot(___[___ > 0.01])
 
Modifier et exécuter le code