CommencerCommencer 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éfinir d’abord 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 allez fixer le rendement cible maximal au 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 types et leurs pondérations.

Cet exercice fait partie du cours

Introduction à l’analyse de portefeuille en R

Afficher le cours

Instructions

  • Calculez les moyennes de colonnes de returns (avec colMeans()), et appelez ce résultat 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, appelée grid.
  • Initialisez deux vecteurs vides de même longueur que grid avec rep(), où vous stockerez les rendements moyens et les écarts types des portefeuilles. Appelez-les vpm et vpsd.
  • Initialisez une matrice vide de 50 lignes et 30 colonnes. Appelez-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 en utilisant returns et avec un rendement cible égal à 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 cet exemple de code.

# 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