Pablo Zavala · Évaluation de sécurité IA · Ingénierie de recherche

Titres Reddit et volatilité du Dow

Un notebook de travail de cours en big data à Carnegie Mellon qui se demande si les mots des titres d'actualité quotidiens de Reddit prédisent le Dow. Sur 3,183 mots filtrés, des régressions marginales avec contrôle FDR de Benjamini-Hochberg ne laissent subsister qu'un seul mot prédictif des rendements, damn, un survivant que le notebook interprète comme une prévisibilité minimale plutôt qu'une découverte ; la volatilité conserve 12 mots et montre une véritable persistance. L'ajout de la volatilité du jour précédent fait passer le lasso de zéro mot sélectionné à un R² dans l'échantillon de 0.262, une leçon compacte sur les tests multiples et la confusion.

Sur 3,183 mots de titres à un FDR de 10%, les rendements ne conservent qu'un seul survivant (damn, p = 1.0262e-05) contre 12 mots pour la volatilité ; l'ajout de la volatilité du jour précédent fait passer le lasso de zéro mot sélectionné à un R² dans l'échantillon de 0.262.

Dépôt public de notebook

Preuve dans l'échantillon tirée d'un seul notebook exécuté sur un jeu de données s'arrêtant au 1er juillet 2016 ; les CSV source restent hors du dépôt public pour des raisons de licence, si bien qu'une relance part du téléchargement Kaggle plus les fichiers de mots dérivés que documente le README.

Rôle: Travail de cours en solo : pipeline de texte creux, filtrage marginal par FDR, lasso et double lasso, bootstrap, et interprétation.

Carte d'évaluation

Résultat principal

Échantillon
Un notebook Jupyter exécuté : 3,183 mots filtrés sur 1,988 jours de bourse alignés
Correcteur
P-values OLS marginales, FDR de Benjamini-Hochberg à q = 0.1, LassoCV avec découpage en série temporelle, double lasso, bootstrap
Résultat
Les rendements ne conservent qu'un seul survivant FDR tandis que la volatilité en conserve 12 ; la volatilité du jour précédent porte l'essentiel du signal prévisible.
Limite
Ajustement dans l'échantillon sur un unique jeu de données s'arrêtant au 1er juillet 2016.

Niveau de preuve

Échantillon
Dépôt public avec le notebook exécuté et le README
Correcteur
Sorties de cellules enregistrées et code source de cellule, vérifiables sans exécution
Résultat
Chaque chiffre public se retrace jusqu'à une sortie imprimée ou un code source de cellule versionné dans le notebook.
Limite
Les CSV source restent externes pour des raisons de licence ; une relance nécessite le téléchargement Kaggle plus deux fichiers de mots fournis par le cours, sans téléchargement public.

Affiliation

Échantillon
Travail de cours à Carnegie Mellon
Correcteur
Ligne d'auteur du notebook et dates de fichier
Résultat
Travail de cours de niveau master, printemps 2025 ; les dates du système de fichiers situent le notebook au 26 février 2025 et les exports de figures au 29 mars 2025.
Limite
Les supports de cours, les consignes et le contexte de notation restent privés.

Mise à jour de la page

Échantillon
Juillet 2026
Correcteur
Registre de contenu du site
Résultat
Entrée rédigée le 9 juillet 2026 à partir du notebook exécuté original.
Limite
Les chiffres reflètent les sorties enregistrées du notebook plutôt qu'une relance récente.
Axes d'évaluation avec échantillon, correcteur, résultat et limite.
AxeÉchantillonCorrecteurRésultatLimite
Résultat principalUn notebook Jupyter exécuté : 3,183 mots filtrés sur 1,988 jours de bourse alignésP-values OLS marginales, FDR de Benjamini-Hochberg à q = 0.1, LassoCV avec découpage en série temporelle, double lasso, bootstrapLes rendements ne conservent qu'un seul survivant FDR tandis que la volatilité en conserve 12 ; la volatilité du jour précédent porte l'essentiel du signal prévisible.Ajustement dans l'échantillon sur un unique jeu de données s'arrêtant au 1er juillet 2016.
Niveau de preuveDépôt public avec le notebook exécuté et le READMESorties de cellules enregistrées et code source de cellule, vérifiables sans exécutionChaque chiffre public se retrace jusqu'à une sortie imprimée ou un code source de cellule versionné dans le notebook.Les CSV source restent externes pour des raisons de licence ; une relance nécessite le téléchargement Kaggle plus deux fichiers de mots fournis par le cours, sans téléchargement public.
AffiliationTravail de cours à Carnegie MellonLigne d'auteur du notebook et dates de fichierTravail de cours de niveau master, printemps 2025 ; les dates du système de fichiers situent le notebook au 26 février 2025 et les exports de figures au 29 mars 2025.Les supports de cours, les consignes et le contexte de notation restent privés.
Mise à jour de la pageJuillet 2026Registre de contenu du siteEntrée rédigée le 9 juillet 2026 à partir du notebook exécuté original.Les chiffres reflètent les sorties enregistrées du notebook plutôt qu'une relance récente.

Comment inspecter ce travail

Plat contre pointu

Deux histogrammes portent le constat central. Les p-values au niveau des mots pour les rendements se répartissent uniformément, la signature du bruit, tandis que le panneau de la volatilité s'accumule près de zéro ; Benjamini-Hochberg transforme ce contraste visuel en décompte, un survivant contre douze.

Les chiffres vivent dans les sorties enregistrées

Chaque chiffre cité sur cette page apparaît dans une sortie de cellule enregistrée ou dans le code source de cellule versionné du notebook, si bien qu'un lecteur peut vérifier chaque affirmation en ouvrant le fichier avant d'exécuter quoi que ce soit.

Vérification pour le lecteur

Ouvrir le notebook versionné et vérifier chaque chiffre cité par rapport à ses sorties enregistrées et à son code source de cellule ; cette vérification fonctionne sur le seul fichier. Une relance complète nécessite les quatre CSV d'entrée : RedditNews.csv et DJIA.csv s'obtiennent via le pointeur Kaggle du README, tandis que WordsFinal.csv et WordFreqFinal.csv sont des fichiers dérivés fournis par le cours que décrit le README, disponibles par le cours plutôt que par un téléchargement public. La passe archivée a exécuté certaines cellules dans le désordre, si bien qu'une relance propre constitue le test équitable.

Étude de cas

Problème

Filtrer des milliers de mots de titres contre des résultats de marché garantit l'apparition de gagnants apparents par le seul effet du hasard, si bien que l'analyse doit séparer le signal qui survit à la discipline statistique du bruit qui se faufile à travers le seuil.

Contexte

Le notebook associe 1,989 jours de bourse de prix du DJIA, le plus récent daté du 1er juillet 2016, aux titres d'actualité mondiale quotidiens de Reddit, construit une matrice creuse de comptage jour par mot, et filtre 5,271 mots candidats pour n'en garder que 3,183.

Méthode

Des régressions OLS marginales notent chaque mot à deux reprises, contre les rendements quotidiens et contre la volatilité logarithmique haut-bas ; Benjamini-Hochberg à q = 0.1 fixe le seuil de découverte ; LassoCV avec découpage en série temporelle gère la sélection conjointe ; un double lasso réestime la persistance de la volatilité contre 1,429 mots de contrôle sélectionnés ; un bootstrap à 30 rééchantillonnages sonde la stabilité de la pénalité.

Résultat

Les rendements se sont comportés comme du bruit : 121 des 3,183 mots se situaient sous p = 0.05, l'histogramme des p-values est resté plat, et le seuil FDR n'a conservé qu'un seul mot, damn, à p = 1.0262e-05. La volatilité a conservé 12 mots, menés par tunisia, georgia et terror, mais la volatilité du jour précédent les a tous surpassés : le lasso mots seuls a mis à zéro chaque coefficient, tandis que l'ajout du seul terme autorégressif a produit six coefficients sélectionnés, un R² dans l'échantillon de 0.262, et un coefficient de persistance de 0.442 que le double lasso a ramené à 0.313.

Limite

Tout reste dans l'échantillon sur un seul jeu de données, la passe archivée a exécuté certaines cellules dans le désordre d'après les compteurs d'exécution enregistrés, et le notebook traite l'exercice comme un travail de cours en sélection de caractéristiques plutôt que comme un résultat exploitable pour le trading.

Preuve

Le dépôt public livre le notebook exécuté dont les sorties enregistrées et le code source de cellule contiennent chaque chiffre cité, plus un README pointant vers les données source Kaggle, qui restent externes pour des raisons de licence.

Résultats clés

  • Exactement 1 des 3,183 mots a survécu à un FDR de 10% pour les rendements : damn, à p = 1.0262e-05, interprété comme une capacité prédictive minimale plutôt qu'une découverte
  • 12 mots ont survécu au même seuil pour la volatilité, à un seuil de p = 0.00035710, menés par tunisia, georgia et terror
  • Le lasso mots seuls a mis à zéro chaque coefficient pour les deux cibles ; la volatilité du jour précédent a porté le R² dans l'échantillon de 0.0 à 0.262 avec six coefficients sélectionnés
  • Le double lasso a ramené la persistance de la volatilité d'une estimation naïve de 0.647 à 0.313 (erreur type 0.0355) face à 1,429 mots de contrôle
  • Un bootstrap à 30 rééchantillonnages a fixé la pénalité du lasso au plancher de grille de 0.0001 avec une dispersion nulle, un résultat méthodologique qui incite à la prudence

Méthodes

  • Vectorisation de texte creux
  • Filtrage marginal
  • FDR de Benjamini-Hochberg
  • Lasso avec validation croisée en série temporelle
  • Double lasso
  • Rééchantillonnage bootstrap