Présentation

publicité
S&P500
Market Analysis
Jean‐Philippe Rochette
et
Geneviève Dostie
G
Plan de match
•
•
•
•
•
Outils et logiciels choisi
Présentation du projet
Structure du projet
Problèmes survenus
Ce qui pourrait être amélioré
2
G
Outils et logiciels
•
MySql 5.7
•
Pycharm
•
•
•
Qt Creator
•
•
PyQt4
Python 3.4
IDE multiplate‐forme pour construire interface graphique
GitHub
3
G
Le projet
•
Développer une application pour tester une stratégie d’investissement à la bourse
4
G
Objectifs
•
Concevoir un interface pour faire des simulations boursières
•
•
reproduire l’achat et la vente d’actions durant une période donnée en fournissant des critères d’achat et de vente
Concevoir un interface Stock Screener de la journée courante
•
Trier et filtrer l’information selon des critères sélectionnés
5
G
Hypothèse avancée
•
Investir dans des grosses compagnies:
•
•
•
•
dont la capitalisation boursière n’est pas surévaluée
dont les actions ont grandement baissées dans les derniers mois
qui font des profits et donnent des dividendes
Respecter la règle du « buy low/sell high », il est avancé que cette stratégie a de bonne chance de battre la bourse
6
Exigences à la réussite du projet
•
Hypothèse: il est possible d’aller chercher les informations financières pour les compagnies du S&P500
•
•
•
•
MorningStar
•
Données historiques
Google Finance
•
Journée courante en temps réel
Yahoo Finance
•
•
Journée courante avec délai
Données historiques
Objectif: Aller chercher les données les plus à jour lors de l’ouverture de l’application
7
G
Structure du projet
•
Acquisition des données
•
Interface Qt
•
Simulation
8
JP
Acquisition des données
JP
Problèmes : Acquisition des données historiques
•
Avec MorningStar
•
Les requêtes ne retournaient pas toujours un CSV
•
•
Comportement aléatoire
Entre Septembre et Octobre
•
•
une trentaine de compagnies ne retournaient pas le CSV que l’on voulait
Maintenant, il semble de nouveau fonctionnelle
10
JP
Solution: Acquisitions des csv •
Solution #1
•
Utiliser API Yahoo Finance avec Python
•
•
Temps d’acquisition des données trop lent
Solution final:
•
Colliger les données dispo dans la BD pour le fournir directement au client
11
JP
Problème: CSV non standard
•
Avec MorningStar seulement
•
Conversion des types de données pour l’insertion dans la base de données
•
Exemple de problèmes
•
•
•
NaN
format des milliers (ex: « 1,234 »)
Typage (ex: float, int)
12
JP
Problème: Biais du survivant •
Difficulté à obtenir une liste du S&P500 dans le temps
•
Package finsymbols de python
•
•
Liste de Wikipédia à jour
Ensemble de données trop optimiste
13
JP
Problème: Prix de ajusté
•
Définition: Adjusted Close
•
•
•
Solution:
•
•
Division des actions (Stock Splits)
Distribution de dividendes
Faire comme les données historiques et de pré‐charger à une date fixe
Solution optimal:
•
Détecter la mise à jour de « Adjusted Close » pour une compagnie
14
G
Interface Qt
L’interface graphique
•
Qt
•
•
•
•
API orienté objet
Langage de programmation: C++
Bibliothèque pour création d’interface Qt
Qt Designer
•
•
Utilitaire graphique de création d'interfaces Qt
Plateforme de programmation
16
Problème avec Qt
•
Apprendre le langage
•
Connexion des widgets
•
•
Signal et Slots
Communication de l’interface avec les fonctions Python
•
Communication C++ avec fonction Python
17
G
Solution: PyQt4 et pyuic4
•
PyQt4
•
Bibliothèque graphique Python
•
Lien entre bibliothèque Qt (en C++) et Python
•
Utiliser Qt Creator
•
Pyuic4
•
Transformer interface graphique de Qt Creator en fichier Python
18
Stock Screnner
19
Portfolio Manager
20
Simulator
21
JP
Simulation
JP
Market
•
Fournir des informations pour le jour courant
•
Quotidienne et historique
•
Permet d’itérer une journée ouvrable à la fois
•
Problème d’optimisation rencontré
•
Objectif: Obtenir une réponse rapide à notre requête
23
JP
Portfolio
•
Conserve nos avoirs au moment présent de la simulation
•
•
Monnaie et les actions détenues
Fait la vente et l’achat d’action sur le marché
24
JP
Broker
•
•
•
Conserve des données dans le temps
Fait le pont entre Market et Portfolio
Conserve une commission sur chaque transaction
25
G
Filters
•
Objet permettant de réduire une liste de compagnie
•
Pour la vente
•
•
Retire les compagnies du Portfolio que l’on ne veut pas vendre
Pour l’achat
•
Retient les compagnies qui s’échange sur le Market que l’on désire acheter
26
G
Difficulté du projet
•
Connaissance en finance
•
Apprentissage de nouveaux outils
•
Ex: Qt, pandas
27
G
Améliorations futures
•
•
Mise à jour automatique des données
Serveur pour BD
•
le client ait les données les plus à jour
•
•
Avoir une liste des S&P500 dans le temps
•
•
Simulation qui utilise le Portfolio Manager
Avoir un graphique de simulation qui se met à jour durant la simulation
Afficher un rapport de la simulation
28
Téléchargement