Las noticias financieras se mueven rápidamente y están dispersas en docenas de fuentes. Este evaluador consulta Google News a través de la API de búsqueda en busca de sorpresas en las ganancias, decisiones de la FDA, eventos macroeconómicos y rotaciones sectoriales, y luego califica la relevancia y la urgencia. Cada búsqueda de noticias cuesta $0,005 y una pantalla diaria completa de 20 temas cuesta $0,10.
Requisitos previos
- Python 3.8+
- solicita biblioteca
- Una clave API de Scavio de scavio.dev
- Lista de tickers o sectores a monitorear
Guia paso a paso
Paso 1: Definir categorías de detección
Configure consultas de búsqueda para diferentes tipos de eventos financieros.
import os, requests, json
from datetime import datetime
API_KEY = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
SCREENS = {
'earnings': ['earnings surprise Q2 2026', 'earnings beat expectations today'],
'fda': ['FDA approval 2026', 'FDA decision drug approval today'],
'macro': ['fed rate decision 2026', 'CPI inflation report today'],
'sector': ['AI stocks momentum 2026', 'semiconductor supply chain update'],
}
def search_news(query):
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': query, 'country_code': 'us'}).json()
return [{'title': r.get('title', ''), 'snippet': r.get('snippet', ''),
'link': r.get('link', ''), 'source': r.get('displayed_link', '')}
for r in data.get('organic_results', [])[:5]]
for category, queries in SCREENS.items():
print(f'\n[{category.upper()}]')
for q in queries:
results = search_news(q)
print(f' "{q}": {len(results)} articles')Paso 2: Califique la urgencia y relevancia del artículo
Clasifique los artículos por urgencia según las señales de actualidad en los títulos.
URGENT_WORDS = ['breaking', 'just', 'today', 'now', 'surges', 'plunges', 'halted',
'approved', 'rejected', 'surprise', 'warning', 'emergency']
HIGH_WORDS = ['report', 'announces', 'update', 'decision', 'results', 'guidance']
def score_urgency(title, snippet):
text = f'{title} {snippet}'.lower()
urgent = sum(1 for w in URGENT_WORDS if w in text)
high = sum(1 for w in HIGH_WORDS if w in text)
if urgent >= 2: return 'URGENT'
if urgent >= 1 or high >= 2: return 'HIGH'
return 'NORMAL'
def full_screen():
all_articles = []
for category, queries in SCREENS.items():
for q in queries:
results = search_news(q)
for r in results:
r['category'] = category
r['urgency'] = score_urgency(r['title'], r['snippet'])
all_articles.append(r)
# Sort by urgency
priority = {'URGENT': 0, 'HIGH': 1, 'NORMAL': 2}
all_articles.sort(key=lambda a: priority.get(a['urgency'], 3))
return all_articles
articles = full_screen()
for a in articles[:10]:
print(f'[{a["urgency"]:6}] [{a["category"]:8}] {a["title"][:60]}')
print(f'\nTotal articles: {len(articles)}')Paso 3: Generar resumen financiero diario
Compile artículos seleccionados en un informe diario estructurado.
def daily_digest(articles):
print(f'\n=== Financial News Digest - {datetime.now().strftime("%Y-%m-%d")} ===')
by_urgency = {'URGENT': [], 'HIGH': [], 'NORMAL': []}
for a in articles:
by_urgency.get(a['urgency'], []).append(a)
for level in ['URGENT', 'HIGH', 'NORMAL']:
items = by_urgency[level]
if items:
print(f'\n [{level}] ({len(items)} articles)')
for a in items[:5]:
print(f' [{a["category"]}] {a["title"][:55]}')
print(f' {a["snippet"][:80]}')
total_queries = sum(len(qs) for qs in SCREENS.values())
print(f'\nScreening cost: ${total_queries * 0.005:.3f}')
print(f'Articles found: {len(articles)}')
print(f'Urgent items: {len(by_urgency["URGENT"])}')
daily_digest(articles)Ejemplo en Python
import os, requests
SH = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}
def screen(query):
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': query, 'country_code': 'us'}).json()
for r in data.get('organic_results', [])[:3]:
print(f' {r.get("title", "")[:60]}')
for q in ['earnings surprise today', 'FDA approval 2026']:
print(f'\n[{q}]')
screen(q)
print('Cost: $0.010')Ejemplo en JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function screen(query) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: SH,
body: JSON.stringify({ query, country_code: 'us' })
}).then(r => r.json());
return (data.organic_results || []).slice(0, 5);
}
const results = await screen('earnings surprise today');
results.forEach(r => console.log(r.title));Salida esperada
=== Financial News Digest - 2026-05-20 ===
[URGENT] (3 articles)
[earnings] NVDA Surges After Q2 Earnings Beat Expectation
NVIDIA reported earnings per share of $1.42 vs $1.28 exp...
[fda] FDA Approves New Alzheimer Drug From Eli Lilly Tod
The FDA today approved donanemab for early Alzheimer...
[HIGH] (8 articles)
[macro] Fed Holds Rate Steady, Signals September Cut Lik
Federal Reserve maintained rates at 4.25-4.50%...
Screening cost: $0.040
Articles found: 35
Urgent items: 3