Devoir Maison — M2 Économie Appliquée
Maxime Gourguechon · Analyse quantitative textuelle
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).
| 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 |
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
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
git clone <url-du-depot>
cd dm-analyse-textuelle-fomcpython -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activatepip install -r requirements.txtCopier 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.
jupyter lab notebooks/analyse_fomc.ipynbLe 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.
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.pyChaque script sauvegarde ses figures dans outputs/figures/ et ses tableaux dans outputs/tables/.
| 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 |
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 |
- 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
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).
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- 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
growthetstability