Application 1- VBA : Test de comportements d'investissements



Documents pareils
Cours Informatique Master STEP

Programmation Objet - Cours II

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Formation VBA 3 Interagir

Corrigé des TD 1 à 5

Algorithmique et programmation : les bases (VBA) Corrigé

Pourquoi l apprentissage?

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Examen Médian - 1 heure 30

I. Introduction aux fonctions : les fonctions standards

Gérer ses comptes bancaires

TUTORIAL REUTERS. Utilisation de l'utilitaire de recherche Reuters

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

1. Structure d'un programme FORTRAN 95

1.6- Génération de nombres aléatoires

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

TD3 - Facturation avec archivage automatisé

UTILISATION DE L'APPLICATION «PARTAGE DE FICHIERS EN LIGNE»

Algorithmique & programmation

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Créer des étiquettes avec les adresses d'un tableau Calc

Recherche dans un tableau

Excel. Identification. Informations sur vos besoins et objectifs. Notions fondamentales. Fiche de validation des besoins en formation Bureautique

TRIGONOMETRIE Algorithme : mesure principale

Taux d évolution moyen.

Formation Excel, Niveau initiation, module 1 DUREE DE LA FORMATION OBJECTIFS DE LA FORMATION

Module Prestashop Moyen de paiement - Financement de commandes à crédit avec Sofinco

Programmation C++ (débutant)/instructions for, while et do...while

Arbres binaires de recherche

Contrats sur différence (CFD)

Utilitaires méconnus de StrataFrame

GLOSSAIRE VALEURS MOBILIERES

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Présentation Générale

Le modèle de données

Correction TD algorithmique

Systemes d'exploitation des ordinateurs

Préparation à l examen EFA en Macro

Compte-rendu de projet de Système de gestion de base de données

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Chapitre 10. Les interfaces Comparable et Comparator 1

Cet ouvrage ne peut être utilisé que pour un usage privé uniquement. Vous n'avez pas le droit de l'offrir ni de le revendre sans accord des auteurs.

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

TD 2 Chapitre 4 : Support des Services et Serveurs. Objectifs : Maîtriser l'exploitation des tables de routage dynamique.

Utiliser une base de données

Réaliser un PUBLIPOSTAGE

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Propagation sur réseau statique et dynamique

Comment développer et intégrer un module à PhpMyLab?

Création d'un identifiant Apple sans carte bancaire (à partir d'un ORDINATEUR) - 1

Cours de Génie Logiciel

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Projet BI powered de la société «BI experts»

Gestion des licences et activation des logiciels : déploiement d'un logiciel à l'aide de Symantec Ghost

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

PROGRAMMATION EVENEMENTIELLE sur EXCEL

POKER ET PROBABILITÉ

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

PROJET DE GESTION PORTEFEUILLE. Evaluation d une Stratégie de Trading

Algorithmique avec Algobox

Administration du site (Back Office)

Qualité du logiciel: Méthodes de test

Correction du baccalauréat ES/L Métropole 20 juin 2014

Les tests logiques avec Excel

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

1 Recherche en table par balayage

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Manuel sur les risques liés aux portefeuilles d'investissement DEGIRO

Notice Générale - MODULE CLIENTS. I. Description générale du module. II. La liste des clients a. Accès

Stockez et organisez vos données sous Excel. Une approche systématique, structurée et simplifiée

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

FinImportExport Documentation Utilisateur Gestion d'environnement dans Fininfo Market

1 ) L élaboration des factures, des bordereaux de livraison et des factures proforma.

Calculateur quantique: factorisation des entiers

UE 8 Systèmes d information de gestion Le programme

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

CATALOGUE DES FORMATIONS

Le stockage local de données en HTML5

Correction du baccalauréat STMG Polynésie 17 juin 2014

RÉSOLUTION DE SYSTÈMES À DEUX INCONNUES

.NET - Classe de Log

Les suites numériques

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

LEÇON N 7 : Schéma de Bernoulli et loi binomiale. Exemples.

SIMULATEUR DE MARCHE FINANCIER

Méthodes de développement. Analyse des exigences (spécification)

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Tout ce qu il faut savoir pour débuter en bourse. Tutorial crée par le webmaster du site

L emprunt indivis - généralités

Création d'un identifiant Apple sans carte bancaire

COMMUNICATION PC/MINITEL

Transcription:

Application 1- VBA : Test de comportements d'investissements Notions mobilisées Chapitres 1 à 5 du cours - Exemple de récupération de cours en ligne 1ère approche des objets (feuilles et classeurs). Corps du TD Le but du TD est d'implémenter une étude de comportements d'investissement, d'abord simples, plus complexes. Une fois l'implémentation testée pour le cas de quelques stratégies d'investissement sur 1 seul titre et sans coûts de transaction (ETAPE 1), on passe au cas de plusieurs titres, en testant des stratégies plus complexes et en ajoutant des coûts de transaction (ETAPE 2). Par la suite, on généralise l'algorithme en automatisant la récupération de cours en ligne (ETAPE 3). Au final, on crée une interface permettant à un utilisateur non averti d'utiliser l'application développée (ETAPE 4) et on lance une étude un peu plus large (ETAPE 5). ETAPE 1 : Étude d'un premier cours et définition des premières stratégies Récupérer le classeur du TD en ligne à l'adresse suivante : http://rdorat.free.fr/enseignement/vba/td/td1_e1.xls Dans ce classeur, on donne le cours journalier de l'action ADP sur la période du 19/06/2006 au 12/08/2008. On commence par calculer une série d'éléments caractéristiques qui pourront intervenir dans la définition de plusieurs stratégies financières (moyenne mobile, rentabilité moyenne,...). Dans la suite, on testera notamment une stratégie qui investit en comparant le cours actuel du titre avec sa moyenne mobile et une stratégie qui investit au hasard. 0- Créer un nouveau module et mettre Option Explicit en haut de la feuille de code qui correspond à ce module. Rappeler a quoi cela correspond. 1- Le premier élément caractéristique que l'on veut calculer c'est la rentabilité, on crée une procédure : Sub calculcaracteristiques() On veut construire, en variable globale, un tableau contenant la série des rentabilités du titre. On crée donc un tableau de nombres réels indicié de 2 à 531 et nommé rentabilites. Ce tableau donne pour chaque période la rentabilité associée. Pourquoi ne fait-on pas commencer le tableau à l'indice 1? Proposer un code qui remplit le tableau en utilisant le cours de l'action ADP stocké dans le classeur. Application VBA 1 - Rémi Dorat 1/5

2- On crée un deuxième tableau en variable globale. Celui-ci vise à enregistrer, pour chaque période, la moyenne mobile calculée sur les 5 derniers jours de bourse. Comment doit être indicié ce tableau? On donne le code pour remplir ce tableau : 'Remplissage de moyennemobile5 For i = 2 To 531 moyennemobile5(i) = 0 If i <= 5 Then For j = 1 To i - 1 moyennemobile5(i) = moyennemobile5(i) + Cells(j, 2) moyennemobile5(i) = moyennemobile5(i) / (i - 1) Else For j = 1 To 5 moyennemobile5(i) = moyennemobile5(i) + Cells(i - j, 2) moyennemobile5(i) = moyennemobile5(i) / 5 End If Cells(i, 5) = moyennemobile5(i) Expliquer ce code. 4- On crée une nouvelle procédure : la procédure main : celle-ci va être le cœur de notre algorithme. Elle est celle qui appelle les autres procédures et fonctions. On choisit le nom main parce que dans la plupart des langages, la fonction principale doit s'appeler de cette manière. On donne le code de la procédure principale (le saisir tel quel) : 'La procédure principale Sub main() 'Initialisation du générateur aléatoire. Randomize 'Calcul des éléments caractéristiques Call calculcaracteristique 'Initialisation des stratégies 'jeu des stratégies 'Affichage des résultats 5- On veut tester des stratégies, en commençant par une seule stratégie. On crée, en variable globale, un entier qui est le nombre de titres détenus, initialisé à 0, et le numéraire possédé, initialisé à 1000 au début de la procédure main(). Application VBA 1 - Rémi Dorat 2/5

6- On conçoit une première stratégie. Celle-ci investit dans un titre si le cours de ce titre est inférieur à sa moyenne mobile à 5 jours. Elle vend ses actions si le titre est coté au dessus de sa moyenne mobile à 5 jours. Pour cette stratégie, on l'implémente comme une procédure ayant cette forme : Sub stratmm(periode as Integer) periode est un paramètre qui indique à quelle période la stratégie doit adapter son comportement. Proposer un code pour cette procédure. 7- L'appel de la procédure stratmm( i ) a lieu au sein de la fonction main. Expliquer quel forme doit prendre cet appel, sachant qu'il faut appeler la procédure de mise à jour du portefeuille pour la période 1, puis pour la période 2, puis pour la période 3 etc... 8- On fait évoluer la procédure stratmm. Pour chaque période i, on indique en colonne 7 la quantité du titre détenu, en colonne 8 le niveau du numéraire et en colonne 9 la valeur du portefeuille. 9- On se rend compte que la stratégie MM est trop réactive : on veut rajouter un seuil de réaction. On veut que la stratégie investisse dans le titre si la moyenne mobile à 5 jours est supérieure au cours du titre augmenté d'un coefficient >0. De même, on ne vend le titre que si la moyenne mobile à 5 jours est inférieure au cours du titre diminué d'un coefficient>0. Ce coefficient sera implémenté comme une variable globale. On prend ce coefficient égal à 5% initialement. 10- De la même manière qu'on a défini la stratégie MM, on définit une stratégie Hasard qui vend et achète au hasard à chaque période. Tester une telle stratégie (plusieurs solutions sont possibles pour cette stratégie). 11- (a) (b) Tester la stratégie basée sur la moyenne mobile pour différentes valeurs du coefficient de sensibilité. Quelles modifications faudrait il faire dans le code pour tester l'effet d'une stratégie similaire basée sur une moyenne mobile à 15 jours. Application VBA 1 - Rémi Dorat 3/5

(c) Est ce que la stratégie d'investissement au Hasard est plus efficace? 12- Quelques questions complémentaires sur le code : (a) Quel avantage de faire un tableau rentabilites plutôt que de stocker les valeur de rentabilité dans la feuille? (b) Pour la stratégie d'investissement au hasard, on voudrait qu'elle n'actualise le portefeuille qu'au bout de 10 périodes. Quelle modification du code cela impliquerait? ETAPE 2 : Récupération de nouveaux cours, tests de plusieurs stratégies et rajout des coûts de transaction On veut passer à une implémentation plus massive. Ceci consiste d'abord dans le fait d'utiliser plusieurs cours. On introduira également les coûts de transaction qui n'ont pas été pris en compte dans la partie précédente. On veut enfin définir des stratégies qui ne prennent plus des décisions seulement sur un cours, mais sur les différents cours en constituant des portefeuilles qu'elles font évoluer au cours du temps. La démarche d'implémentation reste globalement la même. 13- On récupère le classeur http://rdorat.free.fr/enseignement/vba/td/td1_e2.xls qui contient différents cours sur la feuille cours. On va construire un code VBA similaire à celui de l'étape 1 en plus complexe. On commence par introduire une constante qui correspond au nombre de cours disponibles. On rappelle que cela se fait par une instruction de la forme : Const nbtitres as Integer = 5 A l'instar de ce qui a été fait dans l'étape 1, on calcule différents éléments caractéristiques. 14- Créer une procédure qui calcule pour chaque cours, chaque période les valeurs d'un tableau de rentabilités sur 5 périodes. 15- On veut également calculer pour chaque période la moyenne des cours précédents, l'écart type sur les cours précédents. Là aussi le stockage se fera dans une variable globale. On veut introduire des coûts d'investissement. Application VBA 1 - Rémi Dorat 4/5

16- Ces cours seront donnés par une fonction : Function couttransaction(montant as double) as double Ce coût se définit de la manière suivante : un coût fixe de 8,5 si on a un montant de transaction inférieur à 2000, un coût de transaction de 0,5% de la transaction sinon. 17- Implémenter une fonction qui sera utilisée par différentes stratégies : une fonction qui renvoie le nombre de titres max que l'on peut acheter en fonction du numéraire disponible et du cours de l'action. 18- Définir une première stratégie d'investissement qui correspond à l'ancienne moyennemoblie5, mais qui généralise cette stratégie au cas de plusieurs titres. On peut bien sûr introduire une composante aléatoire dans la stratégie. 18- Définir une stratégie d'investissement au hasard. 19- Tester les stratégies d'investissement en présence de coût de transaction. 20- Introduire d'autres stratégies et les tester 21- Refaire le test en augmentant les coûts de transaction. 22- Que faudrait-il changer dans le code pour pouvoir tester des stratégies sur un plus grand nombre de cours? 23- Actuellement, l'évaluation des stratégies se fait sur une seule simulation. Or les comportements intégrant des composantes aléatoires ne feront pas la même chose d'une simulation sur l'autre. Comment pourrait-on maîtriser cette limite? Application VBA 1 - Rémi Dorat 5/5