CommencezCommencez gratuitement

Calculer la frontière efficiente à l'aide d'une grille de rendements cibles

Comme vous l'avez vu, une approche pour calculer la frontière efficiente consiste d'abord à définir une grille de rendements cibles, puis, pour chaque rendement cible, à trouver le portefeuille dont le rendement espéré est égal au rendement cible avec la variance la plus faible possible.

Mais quelle est une grille raisonnable de rendements cibles ? Vous définirez le rendement cible maximal comme le rendement moyen maximal des actions. Idéalement, vous fixeriez le rendement cible minimal au rendement du portefeuille de variance minimale. Comme vous ne connaissez pas encore ce rendement, vous créez une grille en utilisant le minimum des rendements moyens de toutes les actions.

Dans cet exercice, vous utiliserez une boucle for pour calculer votre grille de rendements moyens potentiels de portefeuille, leurs écarts et leurs pondérations.

Cette activité fait partie du cours

Introduction à l'analyse de portefeuille en R

Voir le cours

Instructions de l’exercice

  • Calculez les moyennes des colonnes de returns (avec colMeans()), et nommez-les stockmu.
  • Créez une séquence (seq()) de longueur 50, qui commence à un taux sans risque de 1 % et se termine à la valeur maximale de stockmu, nommée grid.
  • Initialisez deux vecteurs vides de la même longueur que grid à l'aide de rep(), où vous stockerez les moyennes de portefeuille et les écarts types. Nommez-les vpm et vpsd.
  • Initialisez une matrice vide de 50 lignes et 30 colonnes. Nommez-la mweights. Vous pouvez utiliser la fonction matrix() pour cela.
  • Créez une boucle for qui commence à la première valeur de grid et se termine à la dernière. La boucle doit créer un portefeuille appelé opt à partir de returns avec un rendement cible de grid.
  • À chaque itération, la boucle for doit remplir les vecteurs vpm ($pm) et vpsd ($ps) avec leurs valeurs respectives provenant de opt.
  • Stockez les pondérations du portefeuille ligne par ligne dans mweights ($pw).

Exercice interactif pratique

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

# Calculate each stocks mean returns


# Create a grid of target values
grid <- seq(from = ___, to = ___, length.out = ___)

# Create empty vectors to store means and deviations
vpm <- vpsd <- 

# Create an empty matrix to store weights
mweights <- matrix(NA, 50, 30)

# Create your for loop
for(i in 1:length(grid)) {
  opt <- portfolio.optim(x = ___, pm = ___[i])
  vpm[i] <- ___$__
  vpsd[i] <- ___$__
  mweights[i, ] <- ___$__
}
Modifier et exécuter le code