Analista incansable
Vigila cada día una lista de acciones, puntúa cada empresa por sus fundamentales y avisa cuando algo merece una segunda mirada. Analiza y vigila; nunca predice ni opera.Every day it watches a list of stocks, scores each company on its fundamentals and flags anything worth a second look. It analyses and watches; it never predicts or trades.
- PeriodoPeriod
- 2026
- EquipoTeam
- Proyecto personalPersonal project
- ContextoContext
- Corre en mi servidor Ubuntu, en una red privadaRuns on my Ubuntu server, inside a private network
- Mi papelMy role
- Todo el proyectoThe whole project
- TecnologíasTech stack
- Python
- pandas
- yfinance
- SQLite
- FastAPI
- Jinja2
- n8n
- Telegram


Qué haceWhat it does
- Descarga precios diarios y cuentas anuales y los guarda en SQLite. Un dato que falta se muestra como «s/d»: nunca se inventa.Downloads daily prices and annual statements into SQLite. Missing data is shown as “n/a”: it is never invented.
- Puntúa cada empresa de 0 a 100 con ocho criterios y lista aparte las banderas rojas.Scores each company from 0 to 100 on eight criteria and lists red flags separately.
- Avisa al entrar en la zona de interés o quedarse a menos del 3 %, al cruzar la media de 200 sesiones o al aparecer una bandera roja nueva.Alerts when a stock enters its zone or gets within 3%, crosses the 200-day average or gets a new red flag.
- Cada aviso de zona incluye los últimos titulares y la nota manual del valor.Every zone alert includes the latest headlines and the manual note for the stock.
Cómo está hechoHow it is built
- Pesos y umbrales en un YAML, para ajustar el método sin tocar código.Weights and thresholds in YAML, to tune the method without touching code.
- Una tabla antispam evita repetir el mismo aviso durante 5 días.An anti-spam table stops the same alert repeating for 5 days.
- Salida en JSON para un flujo de n8n o envío directo por la API de Telegram.JSON output for an n8n workflow, or straight to the Telegram API.
- Panel FastAPI sin endpoints de escritura y un modo demo con datos sintéticos.A FastAPI panel with no write endpoints and a demo mode with synthetic data.
La puntuaciónThe score
| CriterioCriterion | VerdeGreen | ÁmbarAmber | PesoWeight |
|---|---|---|---|
| Crecimiento de ingresosRevenue growth | > 20 % | 10 a 20 %10 to 20% | 20 |
| Margen brutoGross margin | > 50 % | 35 a 50 %35 to 50% | 10 |
| Flujo de caja libreFree cash flow | positivo y crecientepositive and growing | positivopositive | 20 |
| Margen de flujo de cajaFCF margin | > 10 % | 5 a 10 %5 to 10% | 10 |
| Deuda neta / EBITDANet debt / EBITDA | < 1x o caja neta< 1x or net cash | 1 a 3x1 to 3x | 10 |
| ROE | > 15 % | 8 a 15 %8 to 15% | 10 |
| Dilución anualAnnual dilution | < 2 % | 2 a 5 %2 to 5% | 10 |
| El beneficio acompañaEarnings keep up | crece como los ingresosgrow with revenue | positivo pero más lentopositive but slower | 10 |
Verde suma el peso completo, ámbar la mitad, y rojo o dato ausente, cero. Las banderas rojas se listan aparte y no se promedian.Green earns the full weight, amber half, and red or missing data zero. Red flags are listed separately and never averaged away.
GaleríaGallery



¿Hablamos?Let’s talk
Soy de Sevilla y ahora vivo en Madrid. Me gusta que las cosas funcionen de principio a fin: diseñar el sistema, escribir el código, desplegarlo y medir si de verdad responde bien.I’m from Seville and now live in Madrid. I like things to work end to end: designing the system, writing the code, deploying it and measuring whether it really holds up.
Si buscas a alguien para backend, datos o IA aplicada, escríbeme y te respondo.If you’re looking for someone for backend, data or applied AI work, write to me and I’ll get back to you.