CommencerCommencer gratuitement

Imposer des contraintes de pondération

Les investisseurs sont souvent soumis à des plafonds sur les pondérations du portefeuille. Ces contraintes peuvent en réalité constituer un avantage : un plafond de pondération évite que le portefeuille soit trop concentré sur certains actifs. Il existe toutefois un inconvénient : le même rendement cible peut ne plus être atteignable, ou bien il ne l’est qu’au prix d’une volatilité plus élevée.

Rappelez‑vous, d’après l’exercice précédent, que la fonction portfolio.optim() vous permet de fixer des contraintes de pondération via l’argument reshigh. reshigh attend un vecteur de pondérations maximales pour chaque actif.

Dans cet exercice, vous allez créer trois portefeuilles avec des plafonds de pondération différents. Il est important de connaître la sortie de la fonction portfolio.optim(). Cette fonction renvoie une liste contenant quatre éléments : (i) $pw : les pondérations du portefeuille, (ii) $px : les rendements du portefeuille global, (iii) $pm : le rendement attendu du portefeuille, (iv) $ps : l’écart type des rendements du portefeuille.

Cet exercice fait partie du cours

Introduction à l’analyse de portefeuille en R

Afficher le cours

Instructions

  • Créez trois vecteurs de pondérations maximales pour chaque actif (colonne) de returns à l’aide de la fonction rep(). Le premier vecteur contiendra des plafonds à 100 %, le second à 10 % et le troisième à 5 %. Nommez‑les respectivement max_weights1, max_weights2, max_weights3.
  • Créez un portefeuille optimal avec des pondérations maximales de 100 %, nommé opt1.
  • Créez un portefeuille optimal avec des pondérations maximales de 10 %, nommé opt2.
  • Créez un portefeuille optimal avec des pondérations maximales de 5 %, nommé opt3.
  • Calculez, pour chaque portefeuille, combien d’actifs ont une pondération supérieure à 1 %. Accédez aux pondérations en utilisant $pw après le nom du portefeuille.
  • Affichez les volatilités (écarts types $ps) des trois portefeuilles que vous avez créés.

Exercice interactif pratique

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

# Create vectors of maximum weights
max_weights1 <- rep(1, ncol(returns))
max_weights2 <- ___
max_weights3 <- ___

# Create an optimum portfolio with max weights of 100%
opt1 <- portfolio.optim(___, reshigh = ___)

# Create an optimum portfolio with max weights of 10%


# Create an optimum portfolio with max weights of 5%


# Calculate how many assets have a weight that is greater than 1% for each portfolio
sum(opt1$pw > .01)
sum(___$pw > .01)
sum(___$pw > .01)

# Print portfolio volatilites 
opt1$ps
___$__
___$__

Modifier et exécuter le code