Cosas que he construido
X-Ray
Motor de salud financiera que puntúa 1.286 empresas a partir de su rastro bancario. HackSpain 2026, reto de Embat.
- Año
- 2026
- Rol
- Responsable de ML en un equipo de hackathon
- Estado
- Demo en vivo
Ver la demo
El problema
El reto de Embat preguntaba si el dinero por sí solo puede decir cómo está una empresa. Las empresas no quiebran por balance, quiebran por caja: los ratios anuales llegan tarde, mientras que el rastro diario de cobros, pagos y deuda llega a tiempo. La dificultad: los datos no traían ninguna etiqueta de impago de la que aprender.
Mi parte
Me encargué de la parte de machine learning: el laboratorio de forecasting (regresiones Huber y Ridge validadas con GroupKFold, MAE a 1, 3 y 6 meses) y la previsión estructural, que proyecta cada cuenta hacia delante y la vuelve a puntuar con la misma función. También trabajé en el propio score y participé en las decisiones de producto y de UI.
Qué construí
Un score determinista y point-in-time sobre 24 meses de datos bancarios de 1.286 empresas en 250 grupos. Encima: una máquina de seis estados de trayectoria, un waterfall aditivo que explica cada punto de cambio, un simulador what-if, consolidación de grupo y un monitor de alertas, todo movido por la misma función de scoring.
Cómo está hecho
- Sin etiqueta de impago, no hay GBDT en el núcleo: una función de scoring causal basada en reglas, con tests que demuestran que los datos futuros nunca cambian scores pasados.
- Una sola función mueve el score, el simulador, el outlook y la previsión estructural, así que una simulación nunca contradice al score. El ML vive al lado, no en su lugar.
- Motor en Python y DuckDB detrás de un backend FastAPI, y un front en Next.js con vista de cartera para Embat y una vista 360° de cada empresa.
- Validado en bancos sintéticos con regímenes controlados: el 95,5% de los deterioros detectados en seis meses, sin falsas alarmas estructurales en empresas estables.
Resultados
- Responde a las seis preguntas del reto: quién está sano, quién mejora, quién se tuerce, bache o caída, por qué ha cambiado y con cuánta antelación se veía venir.
- Demo desplegada y vídeo de presentación, contando abiertamente los límites del modelo en vez de esconderlos.
Stack
- Python
- FastAPI
- DuckDB
- scikit-learn
- Next.js
- TypeScript
Siguiente proyecto
Wealth Tracker