Le problème
Le sentiment des investisseurs particuliers sur Reddit (r/wallstreetbets, r/stocks, r/investing) peut précéder des mouvements de prix importants, mais lire manuellement des centaines de publications chaque jour est irréaliste. Le temps qu'un humain identifie un changement de sentiment, le marché a déjà bougé. Les outils de sentiment existants soit ne couvrent pas spécifiquement Reddit, soit facturent des prix d'entreprise pour ce qui n'est qu'une surveillance de mots-clés avec du NLP basique.
La solution Scavio
Construisez un scanner automatisé qui interroge Reddit via Scavio pour les discussions liées aux actions, extrait les mentions de tickers des titres et du texte des publications, classifie le sentiment par ticker, et suit les tendances du volume de mentions. Le pipeline s'exécute toutes les 6 heures, coûte moins de 15 $/mois, et produit des rapports quotidiens classant les tickers par volume de mentions, direction du sentiment et signaux d'activité inhabituelle.
Avant
Avant le scanner, surveiller le sentiment boursier sur Reddit signifiait parcourir manuellement r/wallstreetbets pendant 30 à 60 minutes par jour, ne capturant que les publications les plus visibles et manquant les changements de sentiment dans les subreddits plus petits.
Après
Après la construction du scanner, chaque mention des tickers suivis dans 5 subreddits d'investissement est capturée automatiquement. Les rapports quotidiens mettent en évidence les tickers avec des pics de volume inhabituels ou des inversions de sentiment, révélant des signaux des heures avant qu'ils ne soient remarqués manuellement.
À qui cela s'adresse
Traders quantitatifs et investisseurs particuliers souhaitant des signaux automatisés de sentiment sur Reddit. Équipes de recherche marketing suivant le comportement des investisseurs particuliers pour des clients institutionnels.
Avantages clés
- Analyse automatisée toutes les 6 heures sur plusieurs subreddits d'investissement
- Extraction des tickers et classification du sentiment par mention
- Détection des pics de volume : alerte lorsque les mentions dépassent 3 fois la moyenne sur 30 jours
- Détection des inversions de sentiment : signaler lorsque le ratio haussier/baissier s'inverse
- Moins de 15 $/mois de coût total de surveillance via la recherche Reddit de Scavio
Exemple Python
import requests
import re
from collections import Counter
from datetime import datetime
API_KEY = "your_scavio_api_key"
TICKERS = {"AAPL", "TSLA", "NVDA", "AMD", "MSFT", "GOOG", "AMZN", "META"}
def scan_reddit(query: str) -> list[dict]:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "reddit", "query": query},
timeout=15,
)
res.raise_for_status()
return res.json().get("organic", [])
def extract_tickers(text: str) -> list[str]:
pattern = r"\$([A-Z]{2,5})\b"
found = re.findall(pattern, text)
words = text.upper().split()
for word in words:
if word in TICKERS:
found.append(word)
return list(set(found))
def daily_scan() -> dict:
queries = [
"what are you buying this week stocks",
"stock picks daily discussion",
"DD due diligence analysis",
"earnings play options",
]
all_mentions = Counter()
all_posts = []
for q in queries:
posts = scan_reddit(q)
for post in posts:
title = post.get("title", "")
snippet = post.get("snippet", "")
tickers = extract_tickers(f"{title} {snippet}")
for t in tickers:
all_mentions[t] += 1
if tickers:
all_posts.append({"title": title[:100], "tickers": tickers, "score": post.get("score", 0)})
return {
"date": datetime.utcnow().strftime("%Y-%m-%d %H:%M"),
"top_tickers": all_mentions.most_common(10),
"total_posts_with_tickers": len(all_posts),
"queries_run": len(queries),
}
report = daily_scan()
print(f"Scan at {report['date']}: {report['total_posts_with_tickers']} posts with tickers")
for ticker, count in report["top_tickers"]:
print(f" ${ticker}: {count} mentions")Exemple JavaScript
const API_KEY = "your_scavio_api_key";
const TICKERS = new Set(["AAPL", "TSLA", "NVDA", "AMD", "MSFT", "GOOG", "AMZN", "META"]);
async function scanReddit(query) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "reddit", query }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
return (await res.json()).organic ?? [];
}
function extractTickers(text) {
const matches = [...text.matchAll(/\$([A-Z]{2,5})\b/g)].map((m) => m[1]);
for (const word of text.toUpperCase().split(/\s+/)) {
if (TICKERS.has(word)) matches.push(word);
}
return [...new Set(matches)];
}
const queries = ["what are you buying this week stocks", "DD due diligence analysis"];
const mentions = {};
for (const q of queries) {
const posts = await scanReddit(q);
for (const p of posts) {
const tickers = extractTickers(`${p.title ?? ""} ${p.snippet ?? ""}`);
for (const t of tickers) mentions[t] = (mentions[t] ?? 0) + 1;
}
}
const sorted = Object.entries(mentions).sort((a, b) => b[1] - a[1]);
for (const [ticker, count] of sorted.slice(0, 10)) console.log(`$${ticker}: ${count} mentions`);Plateformes utilisées
Communauté, publications et commentaires imbriqués de n'importe quel subreddit