El problema
El sentimiento de los inversores minoristas en Reddit (r/wallstreetbets, r/stocks, r/investing) puede preceder a movimientos de precios significativos, pero leer manualmente cientos de publicaciones diariamente no es práctico. Cuando un ser humano identifica un cambio de sentimiento, el mercado ya se ha movido. Las herramientas de sentimiento existentes no cubren Reddit específicamente o cobran precios empresariales por lo que equivale a monitoreo de palabras clave más PNL básico.
La solucion de Scavio
Cree un escáner automatizado que consulte a Reddit a través de Scavio en busca de debates relacionados con acciones, extraiga menciones de teletipo de los títulos y textos de las publicaciones, clasifique el sentimiento por teletipo y realice un seguimiento de las tendencias del volumen de menciones. El proceso se ejecuta cada 6 horas, cuesta menos de $15 al mes y produce informes diarios que clasifican los tickers por volumen de menciones, dirección del sentimiento y señales de actividad inusual.
Antes
Antes del escáner, monitorear el sentimiento de las acciones de Reddit significaba navegar manualmente por r/wallstreetbets durante 30 a 60 minutos diarios, detectando solo las publicaciones más visibles y omitiendo cambios de sentimiento en subreddits más pequeños.
Después
Después de crear el escáner, cada mención de tickers rastreados en 5 subreddits de inversión se captura automáticamente. Los informes diarios destacan tickers con picos de volumen inusuales o cambios de sentimiento, mostrando señales horas antes de que se notaran manualmente.
Para quien es
Comerciantes cuantitativos e inversores minoristas que desean señales de sentimiento automatizadas de Reddit. Equipos de investigación de mercado que rastrean el comportamiento de los inversores minoristas para clientes institucionales.
Beneficios clave
- Escaneo automatizado cada 6 horas en múltiples subreddits de inversión
- Extracción de ticker y clasificación de sentimiento por mención
- Detección de picos de volumen: alerta cuando las menciones superan el triple del promedio de 30 días
- Detección de inversión de sentimiento: señal cuando la relación alcista-bajista cambia
- Costo total de monitoreo de menos de $15/mes a través de la búsqueda de Scavio Reddit
Ejemplo en 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")Ejemplo en 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`);Plataformas utilizadas
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit