Ce projet permet de récupérer des données historiques des actions du CAC 40 à l'aide de l'API yfinance
, de les sauvegarder dans des fichiers CSV, puis d'insérer ces données dans une base de données PostgreSQL en continu afin de pouvoir entrainer des modèles de machine learning.
- Python 3.11 (ou version compatible) : Assurez-vous que Python est installé. Télécharger Python
- PostgreSQL : Assurez-vous que PostgreSQL est installé et en cours d'exécution. Télécharger PostgreSQL
-
Téléchargement du Projet
Téléchargez et extrayez le projet dans le répertoire de votre choix.
-
Configuration de la Base de Données PostgreSQL
Lire setup.md
-
Configuration de l'Environnement de Développement
Un script batch est fourni pour automatiser le processus de configuration de l'environnement de développement. Voici les étapes pour l'utiliser :
@echo off rem S'assurer que la version standard de Python est installée set "PYTHON_ENV=C:\Users\EXEIO\AppData\Local\Programs\Python\Python311" set "PROJECT_WORKSPACE=C:\path\to\project" set "VENV_PATH=%PROJECT_WORKSPACE%\my_env" rem Créer l'environnement virtuel si ce n'est pas déjà fait if not exist "%VENV_PATH%\Scripts\python.exe" ( "%PYTHON_ENV%\python.exe" -m venv "%VENV_PATH%" ) rem Installer les packages nécessaires "%VENV_PATH%\Scripts\python.exe" -m pip install -r "%PROJECT_WORKSPACE%\requirements.txt" rem Exécuter le script Python "%VENV_PATH%\Scripts\python.exe" "%PROJECT_WORKSPACE%\main.py"
Pour exécuter le script batch, suivez ces étapes :
-
Ouvrez une fenêtre de commande (cmd).
-
Naviguez jusqu'au répertoire où le script batch est situé.
-
Exécutez la commande suivante :
deploy_and_run.bat
Le fichier batch fourni (
deploy_and_run.bat
) est conçu pour automatiser le processus de configuration de l'environnement de développement. Voici un résumé de sa logique :-
Définition des variables d'environnement (qu'il faudra renseigner avec les vrais chemins) :
PYTHON_ENV
: Chemin de l'installation standard de Python.PROJECT_WORKSPACE
: Chemin du répertoire du projet.VENV_PATH
: Chemin où l'environnement virtuel sera créé.
-
Création de l'environnement virtuel :
- Si l'environnement virtuel n'existe pas déjà, il est créé avec la commande
python -m venv
.
- Si l'environnement virtuel n'existe pas déjà, il est créé avec la commande
-
Installation des dépendances :
- Les packages nécessaires sont installés à partir du fichier
requirements.txt
à l'aide depip install
.
- Les packages nécessaires sont installés à partir du fichier
-
Exécution du script principal :
- Le script principal (
main.py
) est exécuté en utilisant l'interpréteur Python de l'environnement virtuel.
- Le script principal (
-
Pour s'assurer que les différentes parties du projet fonctionnent correctement, des tests unitaires ont été définis. Les tests sont organisés dans un répertoire séparé à la racine du projet.
L'arborescence des fichiers de tests est la suivante :
├── financial_package/
│ ├── init.py
│ ├── get_historical_data.py
│ ├── postgres_utils.py
│ ├── etl.py
├── tests/
│ ├── init.py
│ ├── test_cac40_historical_data.py
│ ├── test_insert_into_postgres.py
├── config.py
├── main.py
├── alerting.py
├── daily_update.py
├── requirements.txt
└── deploy_and_run.bat
└── setup_postgresql.bat
└── setup_postgresql.bat
Pour exécuter les tests, utilisez la commande suivante depuis la racine du projet :
"C:\chemin\vers\env_virtuel\Scripts\python.exe" -m unittest discover -s tests
Cet partie fournit des instructions pour configurer et planifier l'exécution des scripts Python daily_update.py
et alerting.py
à l'aide de fichiers batch sous Windows. Ces scripts doivent être exécutés dans un environnement virtuel Python.
- Python installé et accessible dans le chemin système
- Un environnement virtuel Python (préalablement crée)
-
run_daily_update.bat
: Configure les tâches planifiées pour exécuterdaily_update.py
toutes les 3 minutes entre 9h00 et 17h00 les jours ouvrables. -
run_alerting.bat
: Configure une tâche planifiée pour exécuteralerting.py
à 17h00 chaque jour ouvrable. -
Il faudra renseigner le chemin de l'environnement virtuel avant de planifier ces tâches, exemple :
"C:\path\to\project\my_env"
dans la variablePROJECT_VENV_PATH
- Créez un environnement virtuel si ce n'est pas déjà fait :
python -m venv chemin\vers\votre\venv
Ce fichier fournit des descriptions détaillées des paramètres de configuration disponibles dans le fichier config.py
. Ce fichier contient des paramètres relatifs à la connexion à la base de données, la récupération des données des tickers boursiers, les chemins des répertoires pour sauvegarder les fichiers, ainsi que la configuration des e-mails pour les notifications.
Le dictionnaire DB_CONFIG
contient les paramètres nécessaires pour se connecter à une base de données PostgreSQL. Chaque clé du dictionnaire est décrite ci-dessous :
dbname
: Nom de la base de données à laquelle se connecter.user
: Nom d'utilisateur de l'utilisateur de la base de données.password
: Mot de passe pour l'utilisateur de la base de données.host
: Nom d'hôte du serveur de base de données.port
: Numéro de port sur lequel le serveur de base de données fonctionne.
Exemple:
DB_CONFIG = {
"dbname": "datawarehouse",
"user": "postgres",
"password": "root",
"host": "localhost",
"port": "5432"
}
Le dictionnaire TICKERS
contient toutes les actions du CAC40 à récupèrer.
SAVE_DIRECTORY
et SAVE_EXCEL
sont les dossiers où seront stockés les données brutes des actions du CAC40 (datalake) et le dossier où l'on créera le fichier excel par la suite respectivement.
EMAIL_CONFIG
contient les paramètres nécessaires pour l'envoi d'e-mails via un serveur SMTP. Ces paramètres sont particulièrement utiles pour l'envoi de notifications ou d'alertes automatisées.
IMPORTANT : créer un compte outlook si jamais vous voulez effectuer l'alerting avec un compte personnel, et définissez le ensuite dans config.py
.
Lors de la reception du mail, regarder dans les spams au cas où.
Si vous rencontrez une erreur lors de l'envoi, vérifiez les paramètres de votre compte et lisez la documentation.
- sender_email: L'adresse e-mail qui apparaîtra comme expéditeur.
- receiver_email: L'adresse e-mail du destinataire.
- smtp_server: Adresse du serveur SMTP.
- smtp_port: Numéro de port utilisé par le serveur SMTP.
- smtp_user: Nom d'utilisateur pour l'authentification au serveur SMTP.
- smtp_password: Mot de passe pour l'authentification au serveur SMTP.
-
Planifier
daily_update.py
- Ouvrez le Planificateur de Tâches Windows.
- Cliquez sur "Créer une tâche" dans le volet de droite.
- Nommez la tâche (par exemple, Daily Update).
- Cochez "Exécuter avec les privilèges les plus élevés".
- Sous l'onglet "Déclencheurs", ajoutez un nouveau déclencheur :
- Commencez la tâche "Quotidiennement".
- Réglez l'heure de début à 09:00.
- Cochez "Répéter la tâche toutes les" et choisissez "3 minutes", pour une durée de "1 jour".
- Sous l'onglet "Actions", ajoutez une nouvelle action :
- Action: "Démarrer un programme".
- Programme/script: Naviguez et sélectionnez run_daily_update.bat.
- Configurez les options supplémentaires si nécessaire. -Enregistrez la tâche.
-
Planifier
alerting.py
Répétez les étapes ci-dessus pour alerting.py, en ajustant le déclencheur pour exécuter la tâche une fois par jour à 17:00.
- Utilisez des chemins absolus lors de la configuration des actions dans le Planificateur de tâches pour éviter tout problème lié au chemin.
- Testez chaque script après sa configuration pour s'assurer qu'il fonctionne comme prévu.
- Vérifiez les logs du Planificateur de tâches en cas d'échec des tâches planifiées pour diagnostiquer les problèmes.
-
Ne pas stocker en dur les données de configurations pour des raisons de sécurité.
-
Utilisation de variables d'environnements.
-
Dockerisation du projet pour éviter de tout setup en local et pour la portabilité.
-
Streamlit pour l'UI
-
Dockerisation du projet
-
incorporation du retrieve en temps réel des données (à réfléchir comment)