Matlab Atelier 3 : Modélisation financière avec MatLab Abdennabi Khiari Coordonnateur Salle des Marchés Faculté d'administration Université de Sherbrooke Téléphone : (819) 821-8000 # 65262 abdennabi.khiari@usherbrooke.ca www.USherbrooke.ca/salledemarche
Démarrer MATLAB Ligne de commande Historique des commandes Permet de visualiser le contenu du répertoire de travail Répertoire de travail Variables en mémoire Démarrer MATLAB
% Variable temporaire (ans) 1/2 « » ans = 0 % Variable temporaire (ans) 1/2 « » ans = 0.5000 % Variable choisie par l’utilisateur A=1/2 « » A = Création de matrices A=[1 2;3 4] « » A = 1 2 3 4 B=[1 2;3 4] « » B = Variables
Allocation de portefeuille Arcade Best Essor Énergie 30% 5% 40% Matériaux 10% Industrie 85% 50% Un investisseur veut allouer : 30% en énergie 20% en matériaux 50% en industrie a = percentage dans le fonds 1 (Arcade) b = percentage dans le fonds 2 (Best) e = percentage dans le fonds 3 (Essor) Allocation de portefeuille
Allocation de portefeuille b e F = [0.3 0.05 0.4 0.4 0.1 0.1 0.3 0.85 0.5]; P = [0.3 0.2 0.5]; x = A F = [0.3 0.05 0.4 0.4 0.1 0.1 0.3 0.85 0.5]; \ P = [0.3 0.2 0.5]; = % Calculer les pondérations A= F\P Allocation de portefeuille
Tracer un graphique en pointe de tartes figure pie3(A) legend('Arcade','Best','Essor','Location','NO') Tracer un graphique en pointe de tartes
Travailler avec les expressions symboliques MatLab
syms a b e; % Créer les variables symboliques a, b et e eq1 = '0.3*a+0.05*b+0.4*e = 0.3 '; eq2 = '0.4*a+0.1*b+0.1*e = 0.2 '; eq3 = '0.3*a+0.85*b+0.5*e = 0.5 '; [a,b,e] = solve(eq1,eq2,eq3,a,b,e) % Tracer un graphique figure Allocation = eval([a b e]) explode = [0 1 0]; pie3(Allocation, explode) legend('Arcade','Best','Essor','Location','NO') Système d’équation
Travailler avec les expressions symboliques clear close clc % Construire une expression symbolique P = sym('n*(n+1)*(n+2)*(n+3)+1'); % remplacer ‘n’ par 2 dans l’expression P subs(P, 'n',2) ans = 121 % faire varier ‘n’ entre -2pi et 2pi et tracer un graphique ezplot(P) Travailler avec les expressions symboliques
Calculateur symbolique 2*x^2+x-40=0 Solution 1 % Construire une expression symbolique eq1 =sym('2*x^2+x-40=0')% expression symbolique solve(eq1) ans = - 321^(1/2)/4 - 1/4 321^(1/2)/4 - ¼ % Évaluer l' expression symbolique eval(x) -4.7291 4.2291 Solution 2 % Variables de type "char“ eq2= '2*x^2+x-40=0 ' solve(eq2) ans = - 321^(1/2)/4 - 1/4 321^(1/2)/4 - 1/4 Calculateur symbolique
clear close clc % Création de l’expression symbolique syms a x; f=sin(a*x); % Calcul de sa dérivée diff(f) ans = a*cos(a*x) % Calcul de la dérivée par rapport à ‘a’ diff(f, a) x*cos(a*x) Calcul de dérivée
Calcul de dérivée seconde clear close clc % Création de l’expression symbolique syms a x; f=sin(a*x); % Calcul de sa dérivée seconde diff(f, 2) ans= -a^2*sin(a*x) % Calcul de la dérivée seconde par rapport à ‘a’ diff(f, a, 2) ans = -x^2*sin(a*x) Calcul de dérivée seconde
Calculer le prix d’une obligation Matlab
Facteur d'actualisation (discount factor) C = coupon M = montant de remboursement r = taux actuariel D = facteur d'actualisation (discount factor) = Exercice : Spot rates and yields Source : Strategic Asset Allocation in Fixed Income Markets Ken Nyholm, p. 46 Facteur d'actualisation (discount factor)
? Initialisation P = C x D = x % Prix P= [ 100.0000 99.5000 93.7500 89.4500 91.0000 ]; % Flux monétaires futurs C= [105.00 0 0 0 0 5.5000 105.5 0 0 0 4.0000 4 104 0 0 3.5000 3.5 3.5 103.5 0 4.5000 4.5 4.5 4.5 104.5]; % facteur d'actualisation ? = x Initialisation
Calculer le facteur d'actualisation (discount factor) D = inv(C)* P; D = 0.9524 0.8935 0.8304 0.7737 0.7222 Calculer le facteur d'actualisation (discount factor)
Calculer le prix de l’obligation CF= [3 3 103 0 0] Prix = CF*D Prix = 91.0737 Calculer le prix de l’obligation
Calculer les taux actuariel = - D .^ E 1 0.9524 0.8935 0.8304 0.7737 0.7222 -1/1 -1/2 -1/3 -1/4 -1/5 1 .^ - r = % Calculer le taux actuariel j= (1:5)'; E= -1./j; r= D.^E-1; Calculer les taux actuariel
Taux actuariel (zéro-coupon) vs Rendements d’obligations r = Taux actuariel (zéro-coupon) vs y = Rendements % Calculer les rendements clc y=zeros(5,1) for i=1:5 y(i)=irr([-P(i) C(i,1:i)]); end Taux actuariel (zéro-coupon) vs Rendements d’obligations
Tracer un graphique de comparaison plot(j,[r y]) legend('Taux actuariel (zéro-coupon)', 'Rendements', 'Location', 'NW') Tracer un graphique de comparaison
Création de graphiques Matlab
Gestion des couleurs et des styles de lignes % Initialisation year=[2000:1:2006]; sales=[8 12 20 22 18 24 27]; -- ligne discontinue : ligne pointillée + signes plus o cercles y jaune . points x croix s carrés d diamant p pentagramme ˆ triangles vers le haut v triangles vers le bas < triangles vers la gauche > triangles vers la droite r rouge g vert c cyan m magenta w blanc k noir % Tracer un graphique plot(year,sales,'--r*','linewidth',2,'markersize',12) Gestion des couleurs et des styles de lignes
Surf(w) : tracer des surfaces Exemple t=0:.01:1; y = sin(2*pi*t); w=y'*y; surf(w); Autres commandes mesh : Grillage en perspective stairs : Crée un graphique en escalier stem : Crée un graphique pour signal discret subplot : Permet de créer des graphiques multiples Surf(w) : tracer des surfaces
Création d'une interface graphique Matlab
Chargement de données d’Excel % chargement de données numériques (Excel) devises=xlsread('txChangeCAN'); % chargement de données (Excel) [devises, txtDevises]=xlsread('txChangeCAN'); Chargement de données d’Excel
Manipulation de matrices % chargement des dates datestxt=txtDevises(2:end,1); % chargement des titres titres=txtDevises(1,2:end); % Convertir les dates en format numérique dates = datenum(datestxt, 'dd/mm/yyyy'); % Tracer un graphique plot(dates , devises(:,2)) datetick('x','dd/mm/yyyy'); Manipulation de matrices
%% Utiliser la fonction MENU pour choisir une devise nbrchoix = menu('Choisissez un pays',titres); L'instruction menu(…)
% Initialisation txchangeChoisi= devises(:, nbrchoix); dates = datenum(datestxt, 'dd/mm/yyyy'); % Tracer un graphique plot(dates , txchangeChoisi) datetick('x','dd/mm/yyyy'); xlabel('Date'); ylabel('Valeur'); title(titres(nbrchoix)); grid Tracer un graphique
Récupération de données externes et calculs de rendements MatLab
Chargement de données de Yahoo clear clc %% Connexion à Yahoo c = yahoo; isconnection(c); get(c); % Importer les données de S&P 500 (^GSPC) à partir de Yahoo data= fetch(c,'^GSPC','Close','Jan 01 12','Apr 01 13'); %% Fermer la connexion close(c) Chargement de données de Yahoo
L'instruction input(…) clear; clc %%Choisir un titre symbole=input('Tapez un symbole :','s'); %% Connexion à Yahoo c = yahoo; isconnection(c); get(c); % Importer les données à partir de Yahoo data= fetch(c,symbole,'Close','Jan 01 12','Apr 01 13'); %% Fermer la connexion close(c) L'instruction input(…)
%% Tracer un grahique figure; plot(data(:,1),data(:,2)); dateaxis('x',2); xlabel('Date'); ylabel('Valeur'); title(symbole); grid Tracer un grahique
Boucle: Chargement de données de Yahoo clear; clc % Initialisation ClosingPrice = cell(1,3); j=1; %% Connexion à Yahoo c = yahoo; isconnection(c); get(c); % Importer les données à partir de Yahoo for i = {'MSFT', 'AAPL', 'IBM', '^GSPC'}; ClosingPrice{j} = fetch(c,i,'Close','Jan 01 12','Apr 01 13'); j=j+1; end %% Fermer la connexion close(c) Boucle: Chargement de données de Yahoo
Afficher plusieurs graphiques (subplot) % initialisation MSFT= ClosingPrice{1} ; APL= ClosingPrice{2} ; IBM= ClosingPrice{3}; GSPC= ClosingPrice{4}; %% afficher plusieurs graphiques subplot(2,2,1) % graphique 1 plot(MSFT(:,2)) title('MSFT') subplot(2,2,2) % graphique 2 plot(APL(:,2)) title('APL') subplot(2,2,3), % graphique 3 plot(IBM(:,2)) title('IBM') subplot(2,2,4) % graphique 4 plot(GSPC(:,2)) title('GSPC') Afficher plusieurs graphiques (subplot)
Graphiques - séries chronologiques % Tracer un graphique des séries chronologiques t=fints(MSFT(:,1),[MSFT(:,2), APL(:,2), IBM(:,2), GSPC(:,2)]); chartfts(t) Graphiques - séries chronologiques
Formats d’affichage des réels %Par défaut le format est le format court à 5 chiffres pi ans = 3.1416 format long %format long a 15 chiffres 3.14159265358979 format short e %format court à 5 chiffres avec notation en virgule flottante pi^3 3.1006e+01 format % retour au format d’affichage par défaut clear Formats d’affichage des réels
Conclusion Matlab est un langage de programmation très simple un monde de fonctions ne nécessite pas une formation spéciale pour le maîtriser Documentation complète doc help demo Conclusion
Support Salle des marchés
Support Abdennabi Khiari Coordonnateur Salle des Marchés Faculté d'administration Université de Sherbrooke Téléphone : (819) 821-8000 # 65262 abdennabi.khiari@usherbrooke.ca www.USherbrooke.ca/salledemarche Support
Conditions d'utilisation des ressources électroniques
Conditions d'utilisation des ressources électroniques L'accès à ces ressources électroniques est réservé aux utilisateurs autorisés. Ces personnes comprennent les étudiantes et étudiants inscrits ainsi que le personnel actuel de l'Université de Sherbrooke et les membres de son corps professoral. Les utilisateurs autorisés ne peuvent transmettre, diffuser ou rendre disponibles d'autre façon à des personnes ou à des entités non autorisées le contenu des ressources faisant l'objet d'une licence, quel que soit le moyen employé. Il est en outre interdit de recourir à des robots ou à des agents intelligents pour télécharger ou rassembler systématiquement des éléments de ces produits. L'utilisation des ressources électroniques de la Salle des marchés et de l'Université de Sherbrooke à des fins commerciales est interdite. Conditions d'utilisation des ressources électroniques