Licence de Mathématiques Année 2014-2015
Université d’Angers
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 Kinvesti tous les matins dans un cours et vendu
tous les soirs. Distinguer deux cas :
•le cas simple où l’on investi Ktous 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 Kinitial 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 Mactions 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 Mactions 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 de gains à l’instant
t, notée ak,t,k= 1, . . . , M est révélée. On obtient une récompense g(t) = PM
k=1 wk,tak,t. Le but
est donc de construire une suite de poids wtqui maximise la quantité PT
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+1 =wk,t
2si ak,t <0
wk,t si ak,t ≥0
Enfin, on normalise le vecteur de poids en posant wt+1 ←wt+1/PM
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 xet y, renvoie :
1