TP 2 LOGICIELS STATISTIQUES Programmation avec R

Licence de Mathématiques
Université d’Angers
Année 2014-2015
TP 2 LOGICIELS STATISTIQUES
Programmation avec R
Dans ce TP, en utilisant quelques notions de programmation, on s’intéresse à construire des
algorithmes de mélanges pour "jouer" en bourse. Cela dit, je ne vous encourage pas à miser votre
argent en bourse avec la simple connaissance de ce TP !
Exercices préliminaires sur les cotations
1. Télécharger des cotations annuelles de plusieurs cours d’actions (par exemple sur le site
abcbourse.com) sous la forme de fichiers texte.
2. Tracer l’évolution du cours d’une action sur une année et calculer le rendement journalier
(en fonction du cours à l’ouverture et à la fermeture).
3. Comparer les rendements journaliers de plusieurs actions (graphiques).
4. Calculer le rendement d’un capital initial K investi tous les matins dans un cours et vendu
tous les soirs. Distinguer deux cas :
• le cas simple où l’on investi K tous les jours (indépendamment des résultats)
• le cas où la somme de la veille est réinvesti le lendemain dans sa totalité.
5. Comparer le rendement de plusieurs cotations.
6. On veut combiner deux actions aucours du temps. Calculer le rendement idéal (impossible
en pratique) d’un capital K initial où chaque matin, on choisit la meilleure action.
7. Même question avec 10 actions.
La question à laquelle nous allons essayer de répondre est la suivante : peut-on construire un
algorithme permettant de s’approcher de la stratégie idéale proposée ci-dessus ?
Algorithmes d’agrégation
On considère le jeu séquentiel suivant. A chaque instant t, on dispose de M actions que l’on
peut combiner. A chaque action correspond un gain (ou une perte), noté ak,t , où k = 1, . . . , M .
On veut combiner les M actions de manière à maximiser le gain cumulé au cours du temps.
Pour cela, à chaque instant t, on propose un vecteur de poids, noté wt = (w1,t , . . . , wM,t ),
construit à partir des performances du passé de chaque action. Puis, la suite
PMde gains à l’instant
t, notée ak,t , k = 1, . . . , M est révélée. On obtient une récompense g(t) = k=1 wk,t ak,t . Le but
PT
est donc de construire une suite de poids wt qui maximise la quantité t=1 g(t).
I. Algorithme de vote majoritaire
Cet algorithme reprend le principe général décrit ci-dessus. On initialise le vecteur des poids
w1 := (1/M, . . . , 1/M ). Puis, à chaque étape t, on met à jour le vecteur de poids de la manière
suivante :
wk,t
si ak,t < 0
2
wk,t+1 =
wk,t si ak,t ≥ 0
PM
Enfin, on normalise le vecteur de poids en posant wt+1 ← wt+1 / k=1 wk,t+1 .
1. Expliquer le principe général de l’algorithme. Calculer le vecteur wT .
2. Écrire une fonction wmvote(x,y) qui, à partir de deux séries de cotations x et y, renvoie :
1
• le gain cumulée de l’algorithme.
• la suite des poids alloués à chaque action au cours du temps.
• le rendement de chaque action ainsi que celui de la stratégie optimale de la première
partie du TP.
3. Tracer l’évolution des poids sur un graphique.
4. Généraliser la fonction précédente à un nombre M d’actions.
II. Algorithme à poids exponentiel
Cet algorithme reprend le principe du vote majoritaire. L’initialisation est identique mais cette
fois-ci, à chaque étape t, on met à jour le vecteur de poids de la manière suivante :
wk,t+1 = eλak,t wk,t ,
où λ > 0 est un paramètre
PM de température à calibrer. Enfin, on normalise le vecteur de poids en
posant wt+1 ← wt+1 / k=1 wk,t+1 .
1. Comparer la mise à jour du vecteur des poids par rapport à l’algorithme précédent. Comment
s’écrit le vecteur des poids wt ?
2. Ecrire une fonction expWAF(x,y,λ) qui, à partir de deux séries de cotations x et y, renvoie :
• le gain cumulée de l’algorithme.
• la suite des poids alloués à chaque action aucours du temps.
• le gain de chaque action ainsi que celui de la stratégie optimale calculée précedamment.
3. Tracer l’évolution des poids sur un graphique. Que se passe-t’il lorsque λ varie ?
4. Généraliser la fonction précédente au cas de M actions.
2