Skip to content

maxime2476/sentiment-powell-nlp

Repository files navigation

Analyse Textuelle des Conférences de Presse du FOMC (2020–2025)

Python NLTK scikit-learn pandas NumPy yfinance License

Devoir Maison — M2 Économie Appliquée
Maxime Gourguechon · Analyse quantitative textuelle


Présentation

Ce projet applique des méthodes d'analyse quantitative textuelle (NLP) au corpus des retranscriptions des conférences de presse du Federal Open Market Committee (FOMC) de la Réserve fédérale américaine sur la période 2020–2025.

L'objectif est de quantifier l'évolution du discours de la Fed, d'en extraire les thèmes et tonalités dominants, et de mesurer l'impact de la rhétorique monétaire sur les marchés financiers (S&P 500, NASDAQ, Bitcoin).


Corpus

Paramètre Valeur
Source Transcriptions officielles FOMC (format .txt)
Période Septembre 2020 – Juillet 2025
Nombre de documents 40 conférences de presse
Fréquence ~8 conférences par an (toutes les 6–8 semaines)
Langue Anglais

Structure du projet

dm-analyse-textuelle-fomc/
│
├── config.py                     # Configuration centralisée (chemins, paramètres, lexiques)
├── requirements.txt              # Dépendances Python
├── README.md
├── .gitignore
│
├── archive/                      # Corpus FOMC (.txt) — non versionné (voir .gitignore)
│   ├── FOMCpresconf20200916.txt
│   └── ...
│
├── scripts/                      # Modules Python autonomes
│   ├── __init__.py
│   ├── 01_preprocessing.py       # Chargement, tokenisation, lemmatisation, filtrage
│   ├── 02_frequences.py          # Fréquences lexicales, nuages de mots
│   ├── 03_ngrammes.py            # Bigrammes et trigrammes (collocations)
│   ├── 04_tfidf.py               # TF-IDF par période
│   ├── 05_sentiments.py          # Tonalités économiques (lexique)
│   ├── 06_afc_clustering.py      # SVD/AFC + K-Means
│   ├── 07_themes.py              # Évolution thématique macro
│   └── 08_marches.py             # Corrélations avec les marchés financiers
│
├── notebooks/
│   └── analyse_fomc.ipynb        # Notebook explicatif complet avec graphiques
│
└── outputs/
    ├── figures/                  # Figures générées (.png) — non versionnées
    └── tables/                   # Tableaux exportés (.csv) — non versionnés

Pipeline NLP

flowchart TD
    %% Définitions de style
    classDef source fill:#f8f9fa,stroke:#adb5bd,stroke-width:2px,color:#212529
    classDef prep fill:#e7f5ff,stroke:#339af0,stroke-width:2px,color:#0b7285
    classDef desc fill:#fff3bf,stroke:#fcc419,stroke-width:2px,color:#d9480f
    classDef model fill:#f3f0ff,stroke:#845ef7,stroke-width:2px,color:#5f3dc4
    classDef finance fill:#ebfbee,stroke:#51cf66,stroke-width:2px,color:#2b8a3e

    %% Nœuds
    DB[("📄 Corpus FOMC\n(Transcriptions .txt)")]:::source
    
    P1["<b>01. Prétraitement</b><br/>• Tokenisation (alpha, lowercase)<br/>• POS tagging (Penn Treebank)<br/>• Lemmatisation (noms + adjectifs)<br/>• Filtrage stopwords (NLTK + perso)"]:::prep

    subgraph Analyses Descriptives
        A1["<b>02. Fréquences</b><br/>Wordcloud"]:::desc
        A2["<b>03. N-grammes</b><br/>Bi / Tri"]:::desc
        A3["<b>04. TF-IDF</b><br/>Par année"]:::desc
    end

    subgraph Analyses Sémantiques & Thématiques
        M1["<b>05. Sentiments</b><br/>Optimisme, Pessimisme,<br/>Incertitude, Stabilité"]:::model
        M2["<b>06. AFC & Clustering</b><br/>SVD + K-Means (k=3)<br/>Hawkish / Dovish"]:::model
        M3["<b>07. Thèmes Macro</b><br/>Inflation, Labor, Growth, Rates"]:::model
    end

    F["<b>08. Marchés Financiers (yfinance)</b><br/>Corrélations thèmes/sentiments × variations<br/>S&P 500 / NASDAQ / BTC (J à J+30)"]:::finance

    %% Connexions
    DB --> P1
    
    P1 ==>|df_discours,<br/>lemmes_filtres| A1
    P1 ==>|df_discours,<br/>lemmes_filtres| A2
    P1 ==>|df_discours,<br/>lemmes_filtres| A3
    
    P1 ==>|df_discours,<br/>lemmes_filtres| M1
    P1 ==>|df_discours,<br/>lemmes_filtres| M2
    P1 ==>|df_discours,<br/>lemmes_filtres| M3

    M1 -.->|"Scores<br/>tonalités"| F
    M3 -.->|"Scores<br/>thématiques"| F
Loading

Installation

1. Cloner le dépôt

git clone <url-du-depot>
cd dm-analyse-textuelle-fomc

2. Créer un environnement virtuel

python -m venv .venv

# Windows
.venv\Scripts\activate

# macOS / Linux
source .venv/bin/activate

3. Installer les dépendances

pip install -r requirements.txt

4. Placer le corpus

Copier les fichiers .txt du corpus FOMC dans le dossier archive/ :

archive/
├── FOMCpresconf20200916.txt
├── FOMCpresconf20201105.txt
└── ...

Les fichiers doivent respecter la convention de nommage FOMCpresconfYYYYMMDD.txt.


Utilisation

Option A — Notebook interactif (recommandé)

jupyter lab notebooks/analyse_fomc.ipynb

Le notebook couvre l'intégralité de l'analyse avec des cellules de texte explicatives, les graphiques intégrés et les résultats commentés.

Option B — Scripts Python autonomes

Chaque script peut être exécuté indépendamment :

# Pré-traitement seul
python scripts/01_preprocessing.py

# Fréquences + nuages de mots
python scripts/02_frequences.py

# N-grammes
python scripts/03_ngrammes.py

# TF-IDF par période
python scripts/04_tfidf.py

# Tonalités économiques
python scripts/05_sentiments.py

# AFC + Clustering
python scripts/06_afc_clustering.py

# Thèmes macro
python scripts/07_themes.py

# Marchés financiers
python scripts/08_marches.py

Chaque script sauvegarde ses figures dans outputs/figures/ et ses tableaux dans outputs/tables/.


Méthodologie détaillée

Pré-traitement (script 01)

Paramètre Valeur Justification
Catégories POS retenues Noms (N*), Adjectifs (J*) Catégories les plus riches sémantiquement pour l'économie
Lemmatiseur WordNetLemmatizer (NLTK) Standard, performant sur l'anglais
Longueur minimale 3 caractères Filtrer les abréviations parasites
Stopwords NLTK english + 90 termes personnalisés Noms propres (journalistes, présidents), acronymes médias

Analyse de tonalités (script 05)

Approche lexicale (Loughran–McDonald-like) adaptée au discours de banque centrale. Quatre catégories :

Catégorie Exemples
Optimisme recovery, resilient, strength, momentum
Pessimisme recession, decline, fragile, collapse
Incertitude risk, volatility, disruption, ambiguity
Stabilité stable, anchored, balanced, orderly

Réduction de dimension (script 06)

  • TF-IDF : TfidfVectorizer(max_features=10 000)
  • SVD tronquée : TruncatedSVD(n_components=2) → projection 2D (AFC)
  • K-Means : k=3, données normalisées (StandardScaler), n_init=10

Corrélations marché (script 08)

Score thématique par discours × variation de prix à horizon T, T+1, T+3, T+7, T+30 (corrélation de Pearson). Sources : yfinance (SPY, ^IXIC, BTC-USD).


Lexiques et paramètres

Tous les lexiques (sentiments, thèmes, stopwords) et paramètres d'analyse sont centralisés dans config.py pour faciliter la reproductibilité et la modification.

# Exemple — modifier la fenêtre de cooccurrence :
WINDOW_SIZE = 5   # → changer ici uniquement

Résultats principaux

  • 2020 : vocabulaire dominé par supply, pandemic, support — pic d'incertitude
  • 2021–2022 : basculement vers inflation, price, rate — cycle de resserrement le plus agressif depuis 40 ans
  • 2022–2023 : discours hawkish maximal — corrélation négative identifiée avec SPY à J+7/J+30
  • 2024–2025 : normalisation progressive, retour de growth et stability

About

Projet de NLP appliqué aux conférences de presse du FOMC (2020–2025) visant à analyser l’évolution du discours monétaire de la Réserve fédérale américaine. À travers des méthodes de text mining, TF-IDF, clustering et analyse de sentiments, le projet étudie les thèmes macroéconomiques dominants et leurs corrélations avec les marchés financiers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors