IFT6266 A06 - Expérimentation Informatique

  • Vous pouvez utiliser le ou les langages de programmation ou environnements informatiques que vous voulez pour faire vos expérimentations informatiques. Voici des suggestions avec les avantages et inconvénients:
    • C++: le langage de choix des développeurs de code efficace et portable, mais à éviter si vous n'êtes pas déjà un programmeur bien expérimenté avec ce langage, car le temps de programmation peut être bien plus grand qu'avec MATLAB. De plus il vous faudra utiliser d'autres outils pour l'affichage de graphiques et la visualisation (une solution simple est gnuplot, sous linux, mais vous pouvez aussi utiliser matlab, SPlus, R, mathematica, octave, pylab/matplotlib si vous utilisez python, etc...).
    • Java: presque tous les inconvénients de C++ sans les avantages.
    • MATLAB: c'est un langage et un environnement de développement basé sur un interprète spécialisé dans le calcul numérique matriciel. Très utilisé par les chercheurs en machine learning. Moins efficace que le C++ mais développement peut être beaucoup plus rapide et donne accès à des outils de visualisation très faciles à utiliser. C'est un programme commercial dont la license est plutôt couteuse. Des licenses ont été mises en place sur les ordinateurs de la DGTIC. Voir ci-bas.
    • Octave: un clone gratuit de MATLAB. Facile à installer chez vous. L'environnement de développement n'est pas aussi avancé que celui de MATLAB. La compatibilité n'est pas non plus 100%.
    • S-Plus: excellent choix pour le cours, mais je ne crois pas qu'on ait de license au DIRO (il est par contre disponible au DMS, si vous y avez un compte).
    • Mathematica: excellent choix pour le cours, et il y a des licenses disponibles au DIRO. Plus orienté sur le calculs symbolique que MATLAB, et donc moins efficace dans les calculs numériques. Si vous êtes déjà habitués à ce langage c'est un bon choix, sinon je vous conseille MATLAB.
    • python: bon langage (interprété) pour le prototypage (temps de développement plus court que C++, mais temps de calculs plus longs), avec des outils graphiques similaires à matlab (voir matplotlib /pylab).
    • Autres langages de programmation: pourquoi pas?
  • Accès à MATLAB: sur les ordinateurs de la DGTIC (et non pas ceux du DIRO).
    • On peut obtenir un compte usager en allant sur le site web de la DGTIC (www.dgtic.umontreal.ca). Ce faisant on peut se logger sur le serveur central et lancer Matlab.
      Exemple:
      ssh esirch.esi.umontreal.ca
      ou
      ssh esirch.esi.umontreal.ca -l VOTRE_LOGIN_DGTIC
    • Pour obtenir un code d'accès, l'étudiant devra utiliser son UNIP en allant sur http://www.dgtic.umontreal.ca/html/pages/248.htm S'il n'a pas son UNIP (il est habituellement transmis par courrier postal par le registrariat), il peut toujours consulter son AGDE au secrétariat du DIRO.
    • Selon qu'il est étudiant au Bac l'étudiant devra se créer un compte sur ESIBAC, s'il est au niveau gradué, il devra le créer sur ESIRCH. Il devra par la suite consulter le site web pour la FAQ http://www-bac.esi.umontreal.ca/
    • tutoriel MATLAB.
    Données supplémentaires pour le projet
    • Une bonne source pour beaucoup de pointeurs à des données économiques et financières
    • Les prix (ajustés) quotidiens de 25 contrats à terme de la bourse de Chicago pour janvier 1961 à décembre 2002. Le fichier contient des "nan" là où le prix n'est pas connu (et en particulier les premières années seulement quelques titres sont transigés donc on trouve beaucoup de "nan"). [fichier texte avec une ligne par jour, une colonne par titre]
    • Ces données proviennent d'une base plus large avec d'autres champs: [fichier texte avec une ligne par jour, une colonne par champs].
      Les 233 champs sont les suivants: [fichier texte avec une ligne par champs].
      Je vous conseille d'utiliser les colonnes "close" pour avoir le prix quotidien. Notez que ce n'est pas le vrai prix mais le prix ajusté pour tenir compte du "roll-over" (changement de contrat). L'indicateur "is_last_day_of_month" (colonne 207, indices commencant a 0) indique si ce jour est le dernier du mois. La premiere colonne est la date Julienne (voir ci-bas pour les conversions). Les colonnes "is_tradable" indiquent que le volume était suffisant pour faire une transaction. Les colonnes "rollover" indiquent qu'on est passé d'un contrat au suivant (avec ajustement de la séquence des prix pour éviter les sauts au moment du roll-over). La 177eme colonne, "risk_free_rate", est importante car elle indique le taux d'interêt annuel courant (basé sur les bons du trésor américain). Si vous voulez calculer le vrai rendement d'un contrat à terme, il faut tenir compte du changement de prix de ce contrat (les "close") et du taux d'intérêt: rendement = (prix_final/prix_debut -1) + taux_interet_periode. Le taux d'intérêt sur X jours s'obtient à partir du taux annuel, ainsi: exp(log(1+taux_annuel)*X/252)-1. Ou bien vous pouvez convertir le taux d'interet annuel en taux d'interet quotidien: exp(log(1+taux_annuel)/252)-1. N.B. Pour composer des rendements on multiplie (rendement+1), ce qui revient au meme qu'additionner les log(rendement+1).
    Comment convertir de et vers les dates Juliennes.

    [ Site du cours | Informations sur le cours | Notes de cours et horaire | Livre et lectures | Devoirs et examens | Expérimentation informatique | ]

    IFT6266 A06 - Algorithmes d'Apprentissage || www.iro.umontreal.ca/~pift6266/A06