Estadística avanzada de la Primera FEB, con las cuentas a la vista.
La Primera FEB juega 34 jornadas por temporada y casi todo lo que pasa dentro de los partidos se queda sin contar. Molokai Lab nace para darle a la categoría el rigor y la cobertura visual que suelen reservarse a ligas con más foco. Aquí se explica de dónde sale cada número, cómo se calcula y qué todavía no se sabe hacer bien.
Cada cifra sale del acta oficial y del minuto a minuto de cada partido. Lo que se decide en el laboratorio (cómo agrupar jugadores, qué filtros aplicar) está escrito en esta página y se ha medido.
Un número sin referencia no dice nada: 14 puntos pueden ser mucho o poco. Por eso cada cifra se pone frente a la liga (percentiles), se mide por 40 minutos o como tasa del equipo, y las barras de la web te dicen dónde cae cada jugador respecto a los demás.
Todo se recalcula desde los datos crudos y las fórmulas están en el glosario de abajo. Cualquier cifra que no cuadre con el acta debe notificarse.
Al terminar los partidos, un flujo busca en el calendario oficial de la FEB los que han acabado y guarda tal cual lo que publica: el minuto a minuto, las plantillas y las fichas de los jugadores. Está programado cada noche y se lanza a mano cuando hace falta, justo después de cada jornada. En esta capa no se toca nada; lo crudo se conserva para poder rehacerlo todo cuando se mejore algo.
Lo crudo se convierte en tablas con tipos (partidos, plantillas, eventos del juego y el acta oficial certificada por la FEB). Se resuelve quién es quién —la FEB puede cambiar el identificador de un jugador durante la temporada, así que se identifica por nombre y fecha de nacimiento— y se recuentan 16 estadísticas desde el minuto a minuto para compararlas con el acta oficial.
Cómo se aterriza lo que publica la FEB sin tocarlo, cómo se convierte en doce tablas tipadas, por qué el identificador de un jugador no es de fiar, qué errores reales obligaron a verificar y cómo se reconstruyen los minutos que el acta no trae.
Leer el artículo →Con esa base se obtienen las cifras: por 40 minutos, tasas de equipo (uso, % de asistencias, % de rebote), ratings por 100 posesiones y percentiles frente a la liga. Donde el acta no trae los minutos (toda 2021-22 y 2022-23, y buena parte de 2023-24) se derivan de las sustituciones y se contrastan con las actas que sí los traen: error mediano de 0 segundos.
Cada jugador y temporada queda descrito por 45 cifras. Con ellas se buscan jugadores parecidos y se agrupan en seis familias de juego (más abajo).
Todo termina en ficheros estáticos (JSON), imágenes de las jornadas y vídeos verticales. Cada pieza sale de una orden de terminal y nadie la edita a mano. La web los lee tal cual: no tiene base de datos ni servidor propio.
La familia de herramientas de terminal, el motor gráfico (Matplotlib y Pillow), cómo se dibuja y se codifica un vídeo vertical, cómo se detectan jugadas clave en el minuto a minuto, cómo se usa un asistente de IA y cómo se publica una jornada.
Leer el artículo →Cada pieza vive en su repositorio y no escribe en el de otro. Cada flujo declara en un contrato qué lee y qué produce, y lo único que cruza de un dominio a otro es una capa Gold con nombre. Una prueba comprueba las reglas en cada ejecución.
Qué se toma de un data mesh a escala de laboratorio: tres repositorios, un contrato por flujo, una única puerta entre dominios, cómo se trasladó la curación al productor sin cambiar lo publicado y qué límites se reconocen.
Leer el artículo →TC: tiros de campo anotados · TCI: intentados · T3: triples anotados · TLI: tiros libres intentados.
Un triple vale 1,5 veces un tiro de dos, así que el porcentaje de tiro normal castiga a quien tira de lejos. El eFG% lo corrige.
Añade los tiros libres. Mide cuántos puntos saca un jugador por cada tiro que gasta.
Las pérdidas «por partido» castigan a quien tiene el balón más tiempo. Esto cuenta cuántas de sus jugadas acaban en pérdida.
Qué parte de las jugadas de su equipo termina un jugador (tiro, tiros libres o pérdida) estando en pista.
Qué parte de las canastas de sus compañeros asiste un jugador mientras está en pista (nadie se asiste a sí mismo).
Qué parte de los rebotes disponibles captura, en ataque y en defensa. Más justo que los rebotes totales: tiene en cuenta cuántos hay que coger.
Un partido de la FEB dura 40 minutos. Pasar las cifras a esa duración permite comparar a un titular con un suplente. Con pocos minutos son poco fiables, y por eso se avisa.
Cuánto mejoró o empeoró el marcador del equipo con ese jugador en pista. Depende mucho del resto del equipo, así que se trata como contexto, no como un veredicto.
El índice de valoración de la FEB. Donde el acta no lo trae (temporadas antiguas) se usa una aproximación con la misma fórmula, sin las faltas ni los tapones recibidos, y se indica.
Un percentil 75 significa que el jugador supera al 75 % de los jugadores de su misma posición con al menos 5 partidos (menos al empezar una temporada, cuando aún no hay tantos). Donde no consta la posición, se compara con toda la liga.
Puntos anotados y recibidos por cada 100 posesiones (ataque y defensa), y posesiones por 40 minutos (ritmo). Las posesiones son una estimación a partir del acta.
Faltan en 2021-22 y 2022-23, y en parte de 2023-24 y 2024-25. Donde faltan, las ruedas de percentiles se comparan con toda la liga en vez de con su posición. Se están completando.
Las actas de 2021-22 a 2023-24 no traen minutos fiables: se derivan de las sustituciones (validados, pero derivados).
Las zonas de dos puntos existen solo desde 2024-25. Antes solo se distingue el triple.
De unos pocos partidos solo consta el marcador. Aparecen en la clasificación pero no en las cifras de jugador.
Un jugador con 10 partidos de 5 minutos tiene un perfil frágil. Se marca con «poca muestra» y sus cifras se acercan a la media de su posición.
Las familias son una forma útil de leer el juego, no una verdad: los estilos forman un continuo y muchos jugadores son híbridos.
Cualquier incoherencia detectada en la web puede notificarse: así es como se corrigen estas cosas.