Projet de gestion de portefeuille
Le but de ce projet est de se familiariser avec l'application des
algorithmes d'apprentissage dans le domaine financier, pour la gestion
d'actifs risqués. Le principe général est le suivant: on va prévoir quelque
chose concernant les rendements futurs de divers actifs, et on va utiliser
cela pour décider comment placer notre capital.
Quelle que soit la méthode choisie, il vous faudra implanter la méthode
de validation séquentielle double, permettant de faire simultanément
la selection de modèle (e.g. le choix d'hyper-paramètres) et l'évaluation
de la performance hors-échantillon.
La mesure de performance que vous ferez est le Ratio de Sharpe. C'est le
ratio du rendement moyen du portefeuille mesuré sur l'ensemble des blocs
de test et de l'écart-type échantillonal de ce portefeuille.
Références
Feuillet intitulé des notes de cours sur le sujet
(ps)
(pdf)).
Mémoire de maîtrise de
Nicolas Chapados.
articles du LISA en finance
Données
- Série du SP500 de 1928 à 1987.
(readme)
(données)
- 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.