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.
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.
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/
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).