LM 206 - INITIATION À SCILAB PROJETS - FINANCE STATISTIQUE SAMUEL Delphine RAMTOHUL Kevin Année 2006-2007
Description du projet et outils utilisés I - Choix du sujet Notre choix du sujet s est porté sur la Finance statistique car nous nous intéressons tous les deux à ce domaine et nous voulons faire un métier se rapportant au monde des finances et des mathématiques appliqués à la finance. Pour rentrer dans les détails, nous avons choisis d étudier les taux de change actuels (année 2004) et plus précisément, les taux de change dollar/euro et euro/dollar. Grâce à Scilab, nous avons décider d exploiter ces taux de change en appliquant les fonctions prédéfinies et par la suite faire une représentation graphique de nos données. Pour ce faire, nous avons donc chercher à créer une fonction polynomiale qui se rapprocherait le plus possible de notre courbe. II - Recherches effectuées Grâce aux divers sites Internet donnés sur le polycopié, nous avons pu cibler nos recherches plus facilement et dans le but de nous familiariser avec Linux, nous avons choisis de prendre les taux de change de l année 2004 dollar/euro et euro/dollar sur http://www.oanda.com/convert/fxhistory. III - Transcription des données Plusieurs formats de données étaient proposés et pour faciliter leur insertion dans un éditeur de texte nous avons choisis le format ASCII. Difficultés: En effet, le format HTML donnant un tableau, il était plus difficile de le transcrire dans un éditeur de texte pour l insérer dans Scilab. Nous avons par la suite fait un simple copier/coller des données dans l éditeur de texte KATE; dans lequel nous avons trouvé une commande qui permettait de supprimer certaines données non nécessaires pour notre étude, par exemple, les dates. On a donc tapé: [0-9]*.[0-9]*.[0-9]* [ ]* pour supprimer les dates au format jj.mm.aa. Pour travailler chez nous, nous avons utilisé Works comme éditeur de texte. La suite du projet reste similaire sous Linux. Nous avons enregistré les données dans le fichier Scilab Dossier sous: «change-dollar-euro-2004-2005» et «change-euro-dollar-2004-2005» IV - Sous Scilab 1. Retrouver les fichiers enregistrés Difficultés: Sous Scilab il faut exécuter plusieurs commandes pour accéder aux fichier
et traiter les données enregistrées. Nous avons donc tapé: -pwd pour afficher le dossier courant dans lequel on se situe, cette commande nous a donc affiché les dossiers de : «/Mes documents». -cd Scilab Dossier pour rentrer dans le dossier Scilab. On se situe donc dans le répertoire où se trouvent nos données, on peut maintenant les traiter. 2. Affectation des données On a entré les commandes: data = read ( change-dollar-euro-2004-2005.txt,-1,1) data1 = read ( change-euro-dollar-2004-2005.txt,-1,1) 3. Fonctions prédéfinies Nous avons appliqué à nos données, les fonctions prédéfinies sous Scilab: -mean (moyenne) -st_deviation (écart-type) -max/min 4. Représentation graphique On a voulu représenter graphiquement l évolution des taux de change. On a donc utilisé la fonction «plot2d» pour data et data1. On observe bien une symétrie des deux courbes. Difficultés: La tendance et la périodicité n étant pas des fonctions prédéfinies sous Scilab, nous avons donc pendant plusieurs séances, chercher leur définition mathématique sur Internet. Pour nous, il était difficile de parler de tendance et de périodicité pour un phénomène aléatoire qui dépend de l évolution des marchés et varie par conséquent, constamment. Pour résumer nos recherches, nous avons établis deux définitions: Tendance: notion statistique et mathématique correspondant à l orientation constatée pour une série de données pour une certaine période Périodicité: période durant laquelle un phénomène se reproduit. 5. Ajustement des paramètres d une fonction Nous avons voulu chercher une fonction polynomiale qui se rapprochait de notre courbe. Grâce au site:
http://mathworld.wolfram.com/leastsquaresfittingpolynomial.html nous avons trouvé la marche à suivre. a0 Si on note y = + a1*x + + ak*xk une telle fonction. Difficultés: Scilab ne prend que des matrices en argument. On peut la transcrire sous une notation matricielle: Ce qui représente sous Scilab : Y = X * A On cherche alors à trouver A : les coefficients polynomiaux pour construire notre fonction, où -Y représente la matrice colonne de nos taux journaliers. -X représente la matrice carrée (365*365) correspondant aux abscisses, donc aux jours. Difficultés: en construisant la matrice X, nous nous sommes aperçus qu elle ne correspondait pas exactement à celle décrite plus haut. Nous l avons donc modifiée en construisant X en concaténant une matrice colonne de 1 avec une matrice (365*364). Ayant construit Y et X, pour trouver A on utilise la fonction: A = X \ Y (ou A= linsolve(x,-y)) On obtient alors la matrice colonne: a0 a1 a2 ak A = Pour tracer la courbe, on devrait faire: plot2d( [1:365], + * [1:365] + * ([1:365]**2) + + * ([1:365]**k)) Difficultés: Ici, la difficulté réside dans le fait qu il faudrait une machine très puissante pour calculer les différentes valeurs de notre fonction polynomiale à très grand degré. Nous avons donc choisis de construire une fonction de degré deux. Il nous fallait donc travailler uniquement sur trois valeurs. Nous avons pris la première valeur, celle du milieu ($/2) et la dernière ($) dans notre matrice X préalablement
a0 a1 a0 a2 a0 a1 a1 a2 a2 définie et les ordonnées correspondantes. On obtient donc par le même procédé, A1 = les trois cœfficients polynomiaux: = A1(1), = A1(2), = A1(3). On obtient alors la fonction : y = + * x + * x² que l on représente par: plot2d([1:365], + * [1:365] + * ([1:365]**2)). En traçant ensuite plot(data), on remarque bien que notre fonction s ajuste bien à la courbe des données de nos taux de change. Parties intéressantes du code Scilab Le code intégral est transmis en fichier joint en format texte. Pour l exécuter, copier/coller le code dans Scilab. X= zeros(length (data),length(data)-1); for i= 1:length(data) for j= 1:(length(data)-1) X(i,j)=i**j; end end; X0=ones(length(data),1); X1=[X0,X]; Y1=data([1,$/2,$]); X2=X1([1,$/2,$],1:3); A1=X2\Y1 Conclusion Nous avons travaillé sous deux environnement différents: Linux (Jussieu) et Windows (maison). Pour travailler à la maison, nous avons été obligé de refaire les mêmes opérations faites sous Linux (transcription des données) et de changer d éditeur de texte. Ces opérations restaient quand même similaires. Nous avons apprécié travailler sous Scilab de part sa simplicité d utilisation, d affectation des données, pour les fonctions prédéfinies mais aussi et surtout pour les représentations graphiques. Cependant, la difficulté principale était de faire attention aux arguments qu accepte Scilab, à savoir les matrices. En effet, dans un soucis de traitement des données, il fallait que les matrices aient la même dimension.
Grâce à ce travail et à la découverte de Scilab, nous pensons que ce logiciel nous sera d une grande utilité dans la suite de nos études en mathématiques.