Dr. Emmanuel Fragnière Assistant : Giuseppe Catenazzo Juewen FU Dick Vargas Professeur : Dr. Emmanuel Fragnière Application Financière VBA pour Excel Sujet : Appel automatique de la routine SOLVER de EXCEL pour optimiser des portefeuilles simples (jusqu’à 5 actions). Production automatique des courbes d’efficience. Juewen FU – Dick Vargas 2/20 Professeur : Dr. Emmanuel Fragnière AVANT-PROPOS Ce rapport est un court ouvrage d’initialisation à Visual Basic pour Applications (VBA) dont l’objectif a été d’apprendre comment exploiter le langage VBA pour Excel et plus précisément sur un thème du Risk Management en finances, à savoir, l’optimisation d’un portefeuille. La grande utilité de ce travail a été aussi de nous permettre de pouvoir exploiter la puissance du tableur de façon très significative. Mais, pour cela nous avons dû apprendre quelques bases de programmation. Juewen FU – Dick Vargas 3/20 Professeur : Dr. Emmanuel Fragnière TABLE DES MATIERE 1. VBA ........................................................................... 5 1.1. Définition du VBA ........................................................................... 5 1.2. Avantages de VBA .......................................................................... 5 1.3. Désavantages................................................................................. 5 2. OPTIMISATION DE PORTEFEUILLE ............................ 6 2.1. Modèle de Markowitz ..................................................................... 6 2.2. Critère ............................................................................................ 6 2.3. Efficience ....................................................................................... 6 2.4. CAPM (Capital Asset Pricing Model)....................................... 8 2.4.1. 2.4.2. 2.4.3. 2.4.4. 2.4.5. 2.4.6. 2.4.7. Relation Rendement / Risque :.................................................................. 8 Utilisations : ..................................................... Erreur ! Signet non défini. Bêta Sharpe : ......................................................................................... 9 Critiques du CAPM ................................................................................... 9 Ratio de Sharpe ................................................ Erreur ! Signet non défini. Optimisation de portefeuille sur VBA ........................................................ 10 Calcul du rendement.............................................................................. 13 3. CODAGE DU SOLVEUR SUR VBA ................................13 3.1. Codage du VBA ............................................................................. 13 3.2. Automatisation du solveur ........................................................... 14 3.3. Codage de l’UserForm sur VBA ..................................................... 15 3.3.1. Fenêtre d’accueil ................................................................................... 15 4. CONCLUSION............................................................16 5. PIÈGES À ÉVITER......................................................17 6. ANNEXES ..................................................................18 6.1. Annexe 1. Installation & Fonctionnement VBA ............................. 18 6.2. Annexe 2 Interface de l’Optimisateur........................................... 19 7. RÉFÉRENCES BIBLIOGRAPHIQUES ...........................20 Juewen FU – Dick Vargas 4/20 Professeur : Dr. Emmanuel Fragnière 1. VBA 1.1. DÉFINITION DU VBA Le Visual Basic pour Application est un langage qui a été conçu par Microsoft et il permet de développer des programmes capables de contrôler Excel. Comme nous le savons tous Excel sert à exécuter d’innombrables tâches telle que : • Gérer un budget d’une PME • Analyser des données statistiques • Créer des graphiques à partir d’ensembles de données… • Mais aussi, optimiser un portefeuille composé de N titres Les domaines d’utilisation sont vastes et celui qui nous intéresse est la finance. Cependant, tous les utilisateurs ont en commun le besoin d’automatiser certaines fonctions d’Excel Pour exécuter une tâche sur VBA, soit on écrit du langage, soit on se met en mode enregistrement et pour visionner le code il suffit d’éditer les modules VBA avec Visual Basic Editor (VBE). Il convient de souligner qu’un module est fait de procédures « Sub » qui exécute une action sur des objets. Mais un module peut comporter des procédures « Fonction » qui ne retourne qu’une seule valeur. 1.2. AVANTAGES DE VBA Il exécute les tâches automatisées beaucoup plus rapidement que si l’on ferait manuellement. Les macros sont toujours exécutées avec précision et peuvent être exécutées par quelqu’un qui, enfin de compte, ne connaît rien à VBA et même à Excel. Les tâches sont toujours exécutées de la même manière. 1.3. DÉSAVANTAGES Mis à part le fait qu’il faut apprendre la programmation et posséder Excel, VBA ne possède pas beaucoup de défauts. Cependant, selon la littérature informatique, parfois les choses tournent mal. « On n’a jamais la certitude que notre programme VBA fonctionnera dans tous les cas de figure ». Et nous ne pouvons que nous rallier à cette critique puisque nous même avons rencontré quelques problèmes dont nous en parlerons plus tard. Pour mieux comprendre le sujet de notre projet, il convient, d’aider le lecteur à comprendre ce que signifie une optimisation de portefeuille à travers une simple théorie développée par quelques théoriciens éminents du monde de la finance. Juewen FU – Dick Vargas 5/20 Professeur : Dr. Emmanuel Fragnière 2. OPTIMISATION DE PORTEFEUILLE 2.1. MODÈLE DE MARKOWITZ Il vise à la constitution rationnelle d’un portefeuille arbitrant entre les gains et les pertes. Il s’agit d’une répartition de portefeuille par une méthode mathématique assurant soit : - Le meilleur rendement - Le plus petit risque à rendement donné 2.2. CRITÈRE Entre deux investissements possédant le même rendement espéré, l’investisseur préfèrera celui qui est le moins risqué. Entre deux investissements de même risque, l’investisseur préfèrera celui dont le rendement espéré est le plus grand. Mais si le rendement espéré de X est supérieur ou égal à celui de Y et que le risque de X est strictement inférieur à celui de Y, on préfèrera X. Son étude est théorique car elle prend l’hypothèse que l’on connaît le couple espérance de gain (obtenue par les rendements historiques du titre ?) et risque de chaque titre (mesurée par l’écart type des données du cours du titre qui interprète explicitement sa volatilité), information qui ne se trouve pas telle quelle dans la presse économique, et qui fait une large part à l’appréciation du gestionnaire. A noter que le risque et le rendement espéré sont mesurés par la variance 1 de la variable aléatoire. 2.3. EFFICIENCE Un investissement est dit efficient s’il n’est pas dominé par un autre. La 1ère variance est < que la 2ème variance. Ce constat n’est pas significatif car tout d’un coup il y a eu une montée de la valeur du titre en 1 jour, 1h. La 1ère variance est < que la 3ème variance. Pourtant la 2ème variance et la 3ème sont les mêmes alors que ce n’est pas le même risque. Pour contrer ce problème il existe quelques solutions à cette problématique. Solution : si on calcule la semi variance, on n’aurait pas la même constatation. 1 La variance d’un titre indique le profit ou perte qu’un investisseur peut réaliser Juewen FU – Dick Vargas 6/20 Professeur : Dr. Emmanuel Fragnière Pour renforcer cette idée d’optimisation de portefeuille, la TMP 2 expose comment des investisseurs rationnels utilisent la diversification 3 (élément absent dans la théorie de Markowitz) afin d’optimiser leur portefeuille et quel devrait être le prix d'un actif étant donné son risque par rapport au risque moyen du marché. Cette théorie fait appel aux concepts de frontière efficiente 4 , modèle d'évaluation des actifs financiers, bêta, droite de marché des capitaux et droite de marché des titres. Dans ce modèle, le rendement d'un actif est une variable aléatoire et un portefeuille est une combinaison linéaire pondérée d'actifs qui ont une même variance et leur corrélation est identique. Par conséquent, le rendement d'un portefeuille est également une variable aléatoire et possède une espérance et une variance. Le risque Systématique est lié au marché ; c’est le risque qu’on ne peut pas réduire. Risk Spécifique Par ex, j’achète une action du SMI, quelque soit le CAN ou les perspectives du titre, l’action sera assujettie au Risk Systématique SMI. Si après une forte progression des valeurs, les actionnaires décident de prendre leurs bénéfices, l’ensemble des valeurs sera touché (Ex. Crash boursier de Shanghai). En bref, il est lié au risque de faillite de l’entreprise. Le RS disparaît si on possède beaucoup de titres dans le portefeuille. Le risque spécifique (ou intrinsèque) n’est pas lié à l’évolution du marché. Par ex, les médicaments de Novartis ne sont pas approuvés. Si l’entreprise n’atteint pas ses objectifs de croissance qu’elle s’était fixée, le cours de l’action chutera brusquement. Cette chute peut se ressentir sur les autres valeurs du secteur si l’entreprise est suffisamment importante. Le risque spécifique peut être réduit si on achète les actions d’un indice ou d’un secteur. Seulement le risque systématique est rémunéré Le risque systématique est souvent plus élevé que le risque spécifique. D’où l’importance du choix du marché au profit des valeurs. Mauvaise gestion, incendie, procès, etc. Moins il y a de corrélation (ex : -1) entre titres d’un portefeuille, moins il y a de risque (0%). Plus la corrélation augmente entre titres, moins le portefeuille est diversifié, donc on profite peu de la diversification. Lorsque la corrélation est = 1 entre deux titres d’un portefeuille : si un titre gagne l’autre perd et vice versa. Trouver le portefeuille de variance minimale parmi ceux qui ont la rentabilité espérée fixée 2 3 4 Théorie Moderne de Portefeuille Il s’agit de répartir son investissement sur plusieurs titres dans le but d’en réduire le risque Lieu des investissements efficients dans le plan de Markowitz où le rendement est optimal Juewen FU – Dick Vargas 7/20 Professeur : Dr. Emmanuel Fragnière 2.4. CAPM (CAPITAL ASSET PRICING MODEL) Ce modèle, développé par William Sharpe (1960), Litner, Mossin, propose de quantifier la relation risqué / rendement Hypothèses : - Le temps est concentré entre deux instants. Les mêmes actifs financiers sont à la disposition de tous les investisseurs et il y a un actif sans risque. - Tous les investisseurs utilisent le modèle de Markowitz pour constituer leurs portefeuilles. - Tous les investisseurs ont le même horizon de temps et les mêmes anticipations. - Les investisseurs ne peuvent pas influencer individuellement les prix (concurrence parfaite). - Le marché est sans friction (pas de coût de transaction ou d’information, pas de taxe, les ventes à découvert sont autorisées, les titres sont parfaitement divisibles). Si le CAPM est vrai le risque systémique = 0 2.4.1. Relation Rendement / Risque : La rentabilité espérée E(R) = somme du taux d’intérêt sans risque + bêta de l’actif * excès de rentabilité du marché CAPM: Sur, Sous-évaluation E(R) Le titre avec un E(R) =16% est surévalué par rapport à celui du CAMP = 7%. Le marché lui accorde beaucoup trop d’importance, par conséquent, il est trop cher. 16% Droite théorique 8% Le titre est sous évalué avec un E(R) = 6% alors que le CAPM indique 8% (sa vraie valeur théorique). Titre typique recherché par les analystes. 7% 6% Risque (ß) La relation entre rentabilité espérée et risque est linéaire. Selon le CAPM seul le risque systématique est rémunéré Juewen FU – Dick Vargas 8/20 Professeur : Dr. Emmanuel Fragnière 2.4.2. Utilisation - Estimation du coût du capital - Mesure du risque (β), de la performance (alpha de Jensen et ration de Treynor) - Détection de titres sous-évalués (stock picking) 2.4.3. Bêta Sharpe : Le β est le risque général d’investissement sur un grand marché, comme le NYSE dont le β = 1 par définition. Chaque entreprise a un β, si celui-ci = 3, alors il est 3 x plus risqué que le risque général du marché. Le β indique la volatilité de la valeur boursière, relativement à la classe de la valeur d’actif. En bref, il mesure la sensibilité d'un fonds aux variations du marché dans son ensemble. Un bêta de 1,1 indique un fonds dont le niveau de performance est supérieur ou inférieur de 10% à son indice de référence (1.1 : 1.0). Si le bêta d'une action est de 0.8, son cours a varié en moyenne dans la période précédente de 0,8 % quand le marché variait de 1 %. S'il est de 1.5, il a varié de 1.5%. Lorsqu’on anticipe une baisse du SMI, au lieu de vendre toutes nos positions (actions suisses) soit on achète des futures sur le SMI, soit on achète des puts et le β nous indique combien nous devons en acheter. Le β d’un portefeuille est la somme pondérée des β des constituants du portefeuille. On prend généralement portefeuille de marché Le bêta se calcule par régression linéaire des rendements historiques du titre sur ceux de l’indice boursier choisi Mais quelle longueur et quelle fréquence choisir pour les données historiques ? 2.4.4. un indice boursier représentatif comme Critiques du CAPM Tests empiriques controversés. Il y a des anomalies inexpliquées (effet janvier, rendement de petites capitalisations ≠ rendements de grandes capitalisations) - Le β des options est très élevé car leurs prix sont très petits (1 ; 2 cts.), s’il y a une Δ de 1 ou 2 cts, la Δ est de 100%. Plus le β est élevé, plus on peut attendre un rendement élevé. Le β du marché est = 1 car c’est la covariance du marché justement. Le β est négatif : si le marché monte et le portefeuille plonge Æ Cas ABB et SMI Si le β d’un portefeuille = 0 et que le marché Δ de 10% Æ le portefeuille ne varie pas, mais ça ne veut pas dire que le Juewen FU – Dick Vargas 9/20 Professeur : Dr. Emmanuel Fragnière portefeuille n’a pas de risque, le seul risque que le portefeuille possède est le risque spécifique. 2.4.5. Ratio de Sharpe Mesure l’excès de rentabilité (relativement au taux sans risque) par unité de risque Plus ce ratio est élevé, meilleure est la performance Limites du ratio de Sharpe - Dépend de l’indice de marché et du taux sans risque utilisés Difficile à interpréter lorsqu’il est négatif … Ne détecte ni le «stock picking 5 », ni le «market timing» 2.4.6. Optimisation de portefeuille sur VBA Pour mettre en place et développer notre petit logiciel sur Excel, nous avons du procéder par étapes : Tout d’abord nous avons dû choisir quels titres allaient composer notre portefeuille. Cette démarche a été plutôt subjective puisqu’on a introduit essentiellement des valeurs vedettes du SMI et auxquelles nous portons une certaine préférence. (Image n°1) La deuxième étape se caractérise par la recherche de données. Nous avons téléchargées toutes les données historiques des titres choisis. Les données journalières brutes étant trop nombreuses, il a fallu procéder, premièrement, à un pré filtrage. C’est-à-dire, nous avons pris les cours mensuels (clôture de chaque mois) à l’aide de « RECHERCHEV ». Dans notre exemple, nous avons pris 108 clôtures mensuelles qui vont du 31.12.1197 au 29.12.2006 (Image n°2) 5 Le stock picking, ou « sélection de valeurs », est à la fois un style et une philosophie d’investissement. Le stock picking repose sur la conviction que ce sont les titres et non l’allocation d’actif qui apportent le plus de valeur ajoutée dans un portefeuille. Donc il faut chercher des titres sous-évalués à fort potentiel de croissance. Juewen FU – Dick Vargas 10/20 Professeur : Dr. Emmanuel Fragnière Finalement, nous avons éliminés tous les cours de clôture tombant sur le weekend avec la fonction « JOURSEM ». L’image 2 montre l’étape finalisée de ce processus. Cette démarche permet d’éviter d’avoir une basse de donnée tronquée. Pour procéder au calcul du rendement mensuel nous avons calculé de la façon suivante : 7906.5 − 7908.3 = −0.0002 7908.3 (Image n°3) Le rendement moyen annualisé, qui se calcule sur la moyenne de l’ensemble des rendements mensuels du titre en question, est le suivant : (Image n°4) Dans la feuille de calcul Excel « VarCovar », nous avons crée une matrice qui comporte la covariance de tous nos titres pour pouvoir calculer la variance du portefeuille. 6 =COVARIANCE (RENDEMENT_MENSUEL_SMI ; RENDEMENT_MENSUEL_DJIA)1 (Image n°5) Remarque : la phase de construction d’une matrice est très importante et délicate à la fois pour pouvoir créer tous les autres indicateurs tel que le rendement, la volatilité, le bêta, la covariance, etc. Si la matrice est mal conçue, les valeurs des autres indicateurs seront faussées automatiquement. L’image 8 6 7 $E$18:$K$18 = Rendement Mensuel Moyen $E$15:$K$15 = Allocation de chaque titre (%) par rapport au portefeuille Juewen FU – Dick Vargas 11/20 Professeur : Dr. Emmanuel Fragnière illustre de manière globale le tableau que l’on a construit, mettant en place plusieurs indicateurs mentionnés ci-dessus. (Image n°8) Ici, nous avons mis en place des indicateurs tels que le rendement attendu du portefeuille. Le rendement est calculé en fonction des proportions des valeurs et leurs rendements attendus individuels. La cellule « Portfolio Variance » indique tout simplement la variance attendu du portefeuille tandis que la cellule « Portfolio Volatility » n’est tout simplement que son écart-type. 7 =SOMMEPROD($E$18:$K$18;$E$15:$K$15 ) 6 7 =SOMMEPROD(PRODUITMAT(E15:K15 ;VarCovar!C6:I12);E15:K15 ) =RACINE(0.000831) =VAR.P(RENDEMENT_MENSUEL_SMI) =∑ DES β DE CHAQUE TITRE PONDERE PAR SON POIDS (Image n°6) (Image n°7) Nous avons fait migrer les rendements moyens des titres de la feuille Data1 vers la feuille portefeuille, comme le montre l’image 7 pour que l’utilisateur ait un meilleur aperçu de l’ensemble. La pondération de chaque titre a été introduite dans les contraintes du solveur (voir image n°8) ainsi que d’autres critères pour lancer le solveur. Tout d’abord on a ciblé la cellule C22 qui contient la variance du portefeuille, les cellules variables E15 :K15, correspondant à la pondération de chaque titre et finalement les 13 contraintes indispensables pour optimiser le rendement du portefeuille. (Image n°8) Juewen FU – Dick Vargas 12/20 Professeur : Dr. Emmanuel Fragnière 2.4.7. Calcul du rendement (L’objectif de notre petit logiciel est qu’il nous trouve la variance minimale pour un rendement optimale) A présent que nous avons mis en place tous les outils nécessaires à la bonne démarche de notre optimisateur, nous pouvons lancer le solveur automatiquement en appuyant, seulement, sur une touche. Au préalable, nous avons enregistrée une macro à partir de l’option Outils qui se trouve dans la barre menu d’Excel. (Image n°9) (Image n°10) Et pour finaliser, nous avons nommée cette macro « Solveur » (image n°10). 3. CODAGE DU SOLVEUR SUR VBA 3.1. CODAGE DU VBA Sub Solveur() ' variable permettant de récupérer le résultat Dim Cancel As Boolean Ici, nous avons introduit une alerte qui demande à la personne si elle veut continuer à utiliser le solveur ou si elle désire annuler l’exécution. If MsgBox("You have launched the solver, would you like to continue ?", vbOKCancel) = vbCancel Then Cancel = True Exit Sub Si la personne désire continuer la tâche alors le solveur se met en route. Else SolverOk SetCell:="$C$22", ByChange:="$E$15:$K$15""" MaxMinVal:=2, ValueOf:="0", SolverAdd CellRef:="$E$15:$K$15""", Relation:=3, FormulaText:="0" Juewen FU – Dick Vargas 13/20 Professeur : Dr. Emmanuel Fragnière SolverAdd CellRef:="$L$15", Relation:=2, FormulaText:="1""" SolverAdd CellRef:="$C$21", Relation:=3, FormulaText:="$F$21""" SolverAdd CellRef:="$E$15", Relation:=1, FormulaText:="0.15""" SolverAdd CellRef:="$F$15", Relation:=1, FormulaText:="0.15""" SolverAdd CellRef:="$G$15", Relation:=1, FormulaText:="0.15""" SolverAdd CellRef:="$H$15", Relation:=1, FormulaText:="0.35""" SolverAdd CellRef:="$I$15", Relation:=1, FormulaText:="0.35""" SolverAdd CellRef:="$I$15", Relation:=1, FormulaText:="0.05""" SolverAdd CellRef:="$J$15", Relation:=1, FormulaText:="0.15""" SolverAdd CellRef:="$K$15", Relation:=1, FormulaText:="0.15""" SolverAdd CellRef:="$J$15", Relation:=3, FormulaText:="0.05""" SolverAdd CellRef:="$H$15", Relation:=3, FormulaText:="0.05""" SolverAdd CellRef:="$I$15", Relation:=3, FormulaText:="0.05""" SolverSolve Module1.TracerFrontiereEfficiente End If End Sub Ceci montre ce que VBA retranscrit en codage dans la fenêtre « Code » lorsqu’on enregistre une macro pour le solveur. 3.2. AUTOMATISATION DU SOLVEUR Après avoir stoppé notre enregistrement nous avons crée un bouton commande depuis la Boîte à outils Contrôles (image 11&12) qu’on l’a appelé « Launch Solver ». Pour ce faire, soit on affiche le VBE, démarche un peu plus longue, soit on prend le raccourci, qui est surtout plus simple à effectuer : on active Visual Basic dans la barre à outils qui se trouve dans Affichage, ensuite on fait un right click sur le bouton de commande, on click sur Propriétés et puis on va sur « Caption » et on remplace Commande Bouton par Launch solver. (Image n°11) (Image n°12) (Image n°13) Finalement, l’image 13 nous illustre comment nous avons affecté la Macro Solveur au bouton de commande. Juewen FU – Dick Vargas 14/20 Professeur : Dr. Emmanuel Fragnière A remarquer que nous avons réalisé cette même démarche pour tous les Boutons Commande tel que Print Screen et Top Performance qui se trouvent sur notre Classeur TP-VBA. 3.3. 3.3.1. CODAGE DE L’USERFORM SUR VBA Fenêtre d’accueil Nous avons crée une fenêtre d’accueil qui s’affiche automatiquement lorsqu’on click sur le fichier Gd-TP-VBA. Tout d’abord on a inséré un UserForm dans Feuille de notre VBAProject (Image n°14) (Image n°15) (Image n°16) Ensuite, on a créé une boîte « Cadre » qu’on a inséré dans notre UserForm1 grâce à la Boîte à outils. Puis on a chargé une image déjà travaillée à partir de MouseIcon qui se trouve dans Propriétés de notre UserForm. Les diverses mises en pages ont été réalisées aussi à partir de la fenêtre Propriétés. Finalement, pour qu’Excel lance la fenêtre au démarrage, on a introduit un petit codage de 4 lignes pour charger la page d’accueil. Private Sub Workbook_Open() Load Information Information.Show End Sub (Image n°17) Pour fermer la fenêtre d’accueil on a dû introduire le code suivant : Private Sub CommandButton1_Click() Unload Information End Sub Private Sub Image1_Click() End Sub En ce qui concerne la mise en place de la toupie, pour rendre plus agréable l’utilisation de l’optimisateur, s’est avéré un peu délicat. Lorsqu’on voulait un Juewen FU – Dick Vargas 15/20 Professeur : Dr. Emmanuel Fragnière rendement de 10% (10.00), en fait Excel traduisait ce chiffre en 1000%. Pour réparer ce défaut nous avons dû effectuer quelques petits changements dans la fenêtre code Private Sub SpinButton1_SpinDown() Feuil5.Cells(21, 6) = Feuil5.Cells (21, 6) - 0.01 End Sub Private Sub SpinButton1_SpinUp() Feuil5.Cells(21, 6) = Feuil5.Cells(21, 6) + 0.01 End Sub Nous pourrions nous attarder longuement sur le codage des divers modules et feuilles, mais, malheureusement, nous arrivons à la limite du plafond en termes de quantité de travail. 4. CONCLUSION Malgré la grande disponibilité et le nombre d’heures requises pour la réalisation de ce travail, VBA nous a réellement permis de développer nos connaissances sur Excel qui, en fin de compte, s’avère un outil très puissant dont les dimensions semblent très vastes. L’apprentissage du codage sur VBA n’a pas été très simple puisque nous n’avions jamais appris à coder. Aux longs préliminaires de notre projet, la tâche semblait donc quelque peu titanesque, mais après un peu d’entraînement la réalisation du travail commençait à prendre forme. Par conséquent, il ne faut pas être un informaticien chevronné pour développer un programme sur VBA, qui peut s’avérer très outil à l’exécution de tâches journalières de façon très simple et automatique. Ainsi, la conception d’un outil de gestion nous a permis non seulement d’appliquer notre savoir faire en finances mais aussi d’assimiler des connaissances solides dans le domaine de l’informatique pour pouvoir exploiter la puissance du tableur de manière considérable. Finalement, l’aboutissement de ce travail a été la grande récompense de notre investissement et notre volonté de voir réussir et mener notre projet à bien. Juewen FU – Dick Vargas 16/20 Professeur : Dr. Emmanuel Fragnière 5. PIÈGES À ÉVITER Certaines versions francisées du fichier SOLVER.XLA posent des problèmes à l'exécution des macros faisant appel au solveur. Si lors de l'exécution des macros d'optimisation sous Office XP vous obtenez un message d'erreur du style "Erreur de compilation: Sub ou Fonction non définie", il faut activer ce fichier. Pour réaliser cette tâche il faut parcourir le chemin suivant : D:\Program Files\Microsoft Office\OFFICE11\Bibliothèque\SOLVER Après, il faut double cliquer sur le fichier « SOLVER.XLA » Après avoir enregistré une macro qui exécute automatiquement le solveur, il se peut que certaines contraintes soient doublées dans la case qui est prévu à cet effet : Comme le montre l’image ci-dessus, la contrainte $E$15 :$K$15 a été copié deux fois et cela continue autant de fois que vous lancez le solveur. La solution est d’aller sur VBE et aller chercher la ligne qui correspond à chaque doublon(SolverAdd CellRef:="$E$15:$K$15", Relation:=3, FormulaText:="0") Ensuite il faut tripler les apostrophes qui concernent la cellule ou groupe de cellule (SolverAdd CellRef:="$E$15:$K$15""", Relation:=3, FormulaText:="0") De cette façon, Excel n’affiche plus qu’une contrainte dans cette case. Lorsque vous voulez exécuter le solveur et que celui-ci n’est pas disponible sur votre classeur Excel, il suffit de l’activer. Pour cela il faut aller dans la barre menu, Outil/Macro Complémentaire et cocher la case Complément Solveur. Finalement, l’un des derniers obstacles que nous avons rencontré a été lorsque tout semblait marcher de façon plutôt correcte. Quelques fois, il se peut qu’Excel refuse d’exécuter le calcul du rendement lorsqu’on lance le solveur. La machine nous avertit d’un manque probable de mémoire. La solution « artisanale » a été de lancer une fois le solveur manuellement : Menu – Outils – Solveur – Résoudre. Une fois que cette tâche a été réalisée, on peut utiliser l’optimisateur normalement. A ce jour, nous n’avons pas encore percé le mystère de ce bogue. Juewen FU – Dick Vargas 17/20 Professeur : Dr. Emmanuel Fragnière 6. ANNEXES 6.1. ANNEXE 1. INSTALLATION & FONCTIONNEMENT VBA Notre classeur, nommé « Gd-TP-VBA», est composé de trois feuilles. On trouvera ci-dessous un descriptif sommaire de chacune d'entre elles. Notice importante : les données de rendement et de variance des variations de rendement (ie risque) utilisées dans ce classeur sont des données historiques allant du 31.12.1997 au 29.12.2006. Il faut garder à l'esprit qu'aussi bien les rendements que les variances de leurs variations ne sont pas constantes dans le temps. Leurs pouvoirs prédictifs sont donc théoriques. L'optimisation de portefeuille est un moyen, un outil pour mieux encadrer le risque. La feuille Data1 contient comme son nom l'indique les données nécessaires aux calculs, c'est à dire les cours des valeurs, ainsi que les rendements de chaque période. Notre exemple comprend deux grands indices mondiaux, une valeur du CAC40 ainsi que 4 valeurs du SMI, avec leurs cours et rendement mensuels respectif. (la première colonne, comprenant les cours et la seconde le rentabilité sur la période écoulée). La feuille VarCovar est destinée à recevoir la matrice de variance/covariance des valeurs dont les données sont contenues dans la feuille précédente. Enfin, la feuille Portefeuille permet d'optimiser un portefeuille constitué des valeurs retenues, c'est à dire de trouver le portefeuille présentant le meilleur rendement pour une volatilité donnée, ou l'inverse. Cette feuille permet aussi de tracer la frontière efficiente composée par l'ensemble des portefeuilles présentant les meilleurs couples rendements/risque. Accessoirement, elle vous permet aussi de voir où se situe dans l'espace (risque, rendement) un portefeuille donné. Le principe de fonctionnement. Suivre les étapes suivantes : Pour minimiser la variance en fonction d'un rendement donné : Dans la cellule F21, saisissez le rendement souhaité pour votre portefeuille à l’aide de la toupie. Cliquez ensuite sur le bouton 'Launch Solver'. L'optimiseur calculera alors le portefeuille présentant la volatilité la plus faible pour le rendement souhaité. Accessoirement, vous pouvez imprimer le résultat ainsi que les graphiques qui montrent le résultat du calcul. A noter que les graphiques se modifient automatiquement selon le rendement souhaité de l’investisseur. Juewen FU – Dick Vargas 18/20 Professeur : Dr. Emmanuel Fragnière 6.2. ANNEXE 2 : INTERFACE DE L’OPTIMISATEUR Juewen FU – Dick Vargas 19/20 Professeur : Dr. Emmanuel Fragnière 7. RÉFÉRENCES BIBLIOGRAPHIQUES VBA pour Excel POUR LES NULS. (John Walkenbach. éditeur First Interactive 2003) La bourse pour les nains. www.bnains.org http://fr.finance.yahoo.com/ http://www.swx.com/index.html http://fr.wikipedia.org/wiki/Accueil http://campus.hesge.ch/fragnieree/pages/Finance-RiskManagement/Finance-gestion-des-risques.asp Juewen FU – Dick Vargas 20/20