Imposer des contraintes sur les pondérations
Les investisseurs sont souvent limités par des valeurs maximales permises pour les pondérations du portefeuille. Ces contraintes peuvent en fait constituer un avantage. L'avantage d'une contrainte de pondération maximale est que le portefeuille qui en résulte sera moins concentré dans certains actifs. Mais il y a aussi un inconvénient : le même rendement cible pourrait ne plus être atteignable ou ne l'être qu'au prix d'une volatilité plus élevée.
Rappelez-vous, à partir de l'exercice précédent, que la fonction portfolio.optim() vous permet de définir des contraintes sur les pondérations via l'argument reshigh. reshigh exige un vecteur de pondérations maximales pour chaque actif.
Dans cet exercice, vous créerez trois portefeuilles avec différentes contraintes de pondération maximale. Pour cet exercice, il est important de connaître la sortie de la fonction portfolio.optim(). Cette fonction renvoie une liste comportant quatre composantes : (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.
Cette activité fait partie du cours
Introduction à l'analyse de portefeuille en R
Instructions de l’exercice
- Créez trois vecteurs de pondérations maximales pour chaque actif (colonne) dans
returnsà l'aide de la fonctionrep(). Le premier vecteur contiendra des pondérations maximales de 100 %, le deuxième de 10 % et le troisième de 5 %. Nommez-les respectivementmax_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 combien d'actifs ont une pondération supérieure à 1 % pour chaque portefeuille. Accédez aux pondérations en utilisant
$pwaprè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 ce code d’exemple.
# 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
___$__
___$__