MatLab: Notions de Programmation Applications en Finance Chapitre VI MatLab: Notions de Programmation Applications en Finance
Introduction MatLab=Matrix Laboratory Permet la manipulation de matrices de maniere souple Developpement d’outils dans diverses disciplines: Econometrie, finance Analyse des signaux Ingenierie etc...
Fenetre d’execution Indiquee par >> Toutes les fonctions en Matlab sont des lignes de texte et sont executees en appelant le nom de la fonction avec ses parametres
Help Fonction d’aide en ligne help non_fonction
Fichiers Matlab Les fichiers sont en texte Extension .m Edit corrcoef %: Commentaire
Ponctuation Les instructions sont terminees par un point-virgule Sinon, les calculs sont affiches
Commandes Generales who: liste des variables en memoires whos: informations complementaires sur leur type clear: annule les variables specifiees (ou toutes) save: sauver une variables sous format specifie load: charger une variable a partir d’un fichier what: liste des fonctions dans le fichier de travail
Operations de Base +, -, *, /, ^, sin, cos, tan, asin, acos, atan, exp, log (naturel), log10 (en base 10), abs, sqrt, sign
Matrices Entre parentheses carrees Vecteur ligne x = [1, 2, 3]; Vecteur colonne: y = [1; 4; 7]; Matrice: A = [1 2 3; 4 5 6; 7 8 9]; ou: A = [1 2 3 4 5 6 7 8 9 ];
Exemple
Manipulation de Matrices Pour faire reference a des elements d’une matrice l’element amn est indique A(m,n); A(2,3) donne 6 La ligne m est indiquee par A(m,:), toutes les colonnes sont selectionnees par : A(2,:) donne [4 5 6] La colonne n est indiquee par A(:,n), toutes les lignes sont selectionnees A(:,3) donne [3; 6; 9] La matrice partielle amn, avec m1£m£m2 et n1£n£n2 A(m1:m2,n1:n2); A(1:2,2:3) dà [2, 3; 5, 6]
Les operateurs matriciels + - * ^ / \ ' Transposition Division a gauche:A\B=inv(A)*B Division a droite: B/A=B*inv(A) Attention: L’ordre des matrices n’est pas indifferent A*B ¹ B*A
X=3x2 Y=2x3 XY=3x3 YX=2x2
Autres fonctions utiles max, min, sort, sum, prod, median Manipulation element par element y = sin(x) .* cos(x); Valeurs manquantes NaN Isnan, nanmean, nanstd
Autres inv det Inverse de la matrice size Determinant rank Dimensions eig On ne peut inverser que des matrices carrees Inverse de la matrice Determinant Dimensions rang Valeurs propres » y=normrnd(0,1,100,1); » x=0.5*y+normrnd(0,1,100,1); » beta=inv(x'*x)*x'*y beta = 0.3541
Creation de matrices eye(n) : matrice identite zeros(m,n): matrice de zeros ones(m,n) : matrice de 1 rand(m,n) : matrice aleatoire [0,1] diag(X) : extraire la diagonale
Generation de Vecteurs Sans specifier d’increment t=1:5 => t=[1 2 3 4 5] Increment positif specifie t=0:0.2:1 => t=[0 0.2 0.4 0.6 0.8 1] Increment negatif t=2:-0.2:1 => t=[2 1.8 1.6 1.4 1.2 1]
IF-THEN-ELSE if condition1, operation1; elseif condition2, operation2; end;
Condition1,2 doivent donner comme resultats TRUE ou FALSE. Les Operateurs sont: < , > <= , >= == ~= & | egal different Et ou
Boucles Syntaxe de base for k = 1:step:n, operationi, end; Executer l’operation pour k=1,1+step,1+2step....jusqu’a n while condition operationi;
Exemple » y=[]; for x=0:pi/4:2*pi; si=sin(x); y=[y;si]; end y y = 0.7071 1.0000 0.0000 -0.7071 -1.0000 -0.0000
Graphiques plot cree des graphiques en deux dimensions plot(x,y); x=0:pi/20:2*pi; » y=sin(x)
plot(x,y,'g+'); Choix possibles r red . point g green o circle b blue x x-mark w white + plus m magenta * star c cyan - solid y yellow : dotted k black -- dashed -. dash-dot
Autres commandes grid : lignes title : titre xlabel : legende abscisses ylabel : legende ordonnees axis : changer echelle figure cree une nouvelle fenetre graphique
Pour visualiser differents graphiques subplot(211), plot(funz1); subplot(212), plot(funz2); subplot(2,1,1) » plot(normrnd(0,1,100,1)) » subplot(2,1,2) » plot(normrnd(0,1,100,1)*100)
Fonction graphique en 3D xx = -2:0.1:2; yy = xx; [x,y] = meshdom(xx,yy); z = x .* exp(-x.^2 - y.^2); mesh(z);
Nouvelles Fonctions Creer un nouveau fichier en mode editeur La premiere ligne donne function z = fun1(a,b) ou function [x,y] = fun2(a,b) a et b sont les inputs Z, ou x et y sont les resultats
Finance Frontiere Efficiente: Utiliser la Boite d’Outils MatLab Finance Creer routine de maximisation de la fonction d’utilite