Optimisation de portefeuille financier : principe et pratique

Sommaire

Le principe

Dans les pages précédentes, nous avons vu qu'il était possible, en trouvant les bonnes proportions de chaque valeur, de constituer des portefeuilles dont la variance (ie le risque, selon la théorie moderne du portefeuille) est plus ou moins élevée, et ce, pour un rendement identique. Ces portefeuilles constituent la frontière efficiente.

Pour constituer nos portefeuilles en prenant le minimum de risque, il suffit donc de chercher les proportions de valeurs présentant la variance la plus faible pour un rendement donné. Le problème, c'est que si le calcul de la variance d'un portefeuille donné est assez simple (cf pages précédentes), l'opération inverse est beaucoup plus délicate à réaliser. Ce type d'optimisation n'est pas franchement trivial et dépasse largement le cadre de ces pages.

Heureusement, tout bon tableur qui se respecte, propose un module d'optimisation. Dans Excel par exemple, il s'agit du solveur. Son principe d'utilisation est simple : on lui indique le résultat que l'on souhaite obtenir, les contraintes qu'il devra respecter, et les valeurs d'entrée qu'il peut faire fluctuer pour essayer de produire le résultat escompté, puis on le laisse calculer. Il propose alors les valeurs d'entrées permettant d'obtenir le résultat souhaité ou le résultat le plus proche, tout en respectant les contraintes exprimées.

Dans notre cas, nous souhaitons trouver le portefeuille présentant la plus faible variance pour un rendement donné. Il suffit donc d'implémenter dans Excel le calcul de la variance d'un portefeuille, ainsi que celui de son rendement.
Ensuite, il suffira d'indiquer au solveur que le résultat attendu est une minimisation de la variance du portefeuille et que les valeurs en entrée sont les proportions de chaque valeur.

Les contraintes quant à elles seront les suivantes :

  • le total des proportions des valeurs doit être égal à 1. Cette contrainte est incontournable.
  • on peut souhaiter pour des raisons réglementaires ou autres, disposer d'une proportion minimum de chaque valeur dans le portefeuille, il faut alors indiquer une contrainte sur les entrées : le niveau de chaque entrée doit être supérieur ou égal à une valeur donnée.
  • on souhaite en général limiter la proportion d'une valeur dans le portefeuille à un certain niveau. Il faut alors indiquer une contrainte supplémentaire sur les entrées : le niveau de chaque entrée doit être inférieur ou égal à une valeur donnée.

La pratique

C'est bien beau tout ça, mais en pratique, ça donne quoi ?

C'est ce que nous allons voir avec Excel. Il faut tout d'abord activer le solveur si ce n'est pas déjà fait, et vérifier qu'il existe bien une référence au solveur pour VBA.

Activation du solveur

Avec Excel 2007 ou une version antérieure, allez voir dans le menu 'Outils' si vous voyez une entrée 'Solveur...'.

Menu 'Outils' d'Excel, avec l'entrée 'Solveur...' au milieu.

Si ce n'est pas le cas, ou si elle est grisée, sélectionnez l'entrée 'Macros complémentaires...' du menu 'Outils' et cochez la case 'Solveur' ou 'Complément Solver' dans la liste, avant de valider par 'OK'. L'entrée 'Solveur' du menu 'Outils' doit maintenant être disponible.

Boite de dialogue 'Macro complémentaire' d'Excel, avec la case à cocher 'Solveur'.

Avec un Excel plus récent, par exemple Excel 2019, vérifier que le complément solveur est bien activé. Pour ce faire, dans Excel, cliquez sur le menu "Fichier" puis choisissez l'entrée "Options". Dans la boîte de dialogue qui s'affiche, choisissez la section "Compléments" :

Boite de dialogue d'options d'Excel

Vérifiez que le "Complément Solveur" est bien actif. Si ce n'est pas le cas, dans la liste déroulante en bas à droite, choisissez "Compléments Excel", puis cliquez sur le bouton "Atteindre". La boîte de dialogue d'activation des compléments s'ouvre alors :

Boite de dialogue d'activation de compléments d'ExcelCochez alors la case "Complément Solveur", puis cliquez sur le bouton "OK".

Référence au complément solveur dans Visual Basic Editor

Pour pouvoir utiliser le solveur dans du code VBA, il faut qu'une référence au solveur existe. Pour vérifier que c'est bien le cas ou la créer si ce n'est pas le cas, lancez Visual Basic editor, puis choisissez l'entrée "Références" du menu "Outils" :

Menu 'Outils' de Visual Basic EditorLa boîte de dialogue de "Références - VBAProject" s'affiche alors :

Menu 'Outils' de Visual Basic EditorVérifier que vous trouvez bien une référence "Solver" et qu'elle est bien activée. Si elle n'est pas activée, activez-là. Si elle est marquée "MANQUANTE" ou qu'elle n'existe pas, cliquez sur le bouton "Parcourir" puis sélectionner le fichier Solver.xla ou Solver.xlam qui doit se trouver dans l'arborescence de vos fichiers Office (par exemple "c:\Program Files (x86)\Microsoft Office\root\Office 16\Library\SOLVER\SOLVER.XLAM" mais le fichier peut se trouver ailleurs). Sélectionnez le fichier puis cliquez sur "OK". Une nouvelle ligne "Solver" doit alors avoir été ajoutée dans la liste des références. Activez-là puis cliquez sur "OK".

Vous pouvez maintenant vérifiez le bon fonctionnement du solveur.

Utilisation du solveur

Pour bien comprendre l'utilité du solveur et vérifier sa bonne activation, nous allons lui faire faire une recherche simple. Nous allons lui demander de trouver combien il faut ajouter à 10 pour obtenir 15.

Créez une feuille Excel, puis saisissez dans la troisième colonne de la première ligne, la formule "=A1+B1". Saisissez ensuite dans la seconde colone de la première ligne, le nombre 10.

Maintenant, activez le solveur en sélectionnant l'entrée 'Solveur' du menu 'Outils', ou l'icône "Solveur" du bandeau "Données" à partir d'Excel 2010.

Il faut alors lui indiquer ce que l'on veut. La cellule cible est la cellule "C1", nous souhaitons qu'elle contienne la valeur 15. Saisissez donc "$1" dans le champ "Cellule cible à définir" ou "Objectif à définir" (ou cliquez sur le bouton à droite, contenant la petite flêche rouge, puis sélectionnez la cellule C1. Ensuite, dans la catégorie "Egale à" ou "A", cochez le bouton radio "Valeur" et saisissez la valeur 15.

Enfin, il faut indiquer au solveur le(s) cellule(s) dont il va pouvoir faire jouer le contenu pour essayer d'atteindre sa cible. Nous souhaitons qu'il nous indique combien doit contenir la cellule A1 pour que C1 contienne 15. Saisissez donc "$1" dans le champ "Cellules Variables".

A ce stade, vous devez voir à peu près ceci :

Boite de dialogue 'Paramètres du solveur'

Cliquez maintenant sur le bouton "Résoudre". Après quelques brefs instants, vous devriez obtenir l'affichage suivant :

Boite de dialogue 'Résultat du solveur'

Ca marche ! On constate bien que la cellule C1 contient la valeur 15, et que la cellule A1 contient bien la valeur 5. Vous pouvez cliquer sur 'OK' pour garder la solution proposée.

Maintenant que nous savons utiliser le solveur, nous allons pouvoir optimiser notre portefeuille.

La feuille, la feuille, la feuille !!!

Accrochez vos ceintures, la suite vous propose enfin la méga-feuille Excel permettant d'optimiser un portefeuille. Ca se passe ici !


Puce rouge Retour au début de la page   Puce rouge Retour au sommaire de l'optimisation   Puce rouge Retour au sommaire du site