Método

Cómo funciona Molokai Lab

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.

6temporadas
1.607partidos (1.514 de liga regular y 93 de eliminatorias)
971jugadores
32.094actuaciones individuales
75.704tiros con coordenadas
45cifras por jugador
Proyecto independiente. Sin afiliación a la FEB. Se trabaja con los datos que la federación publica de sus competiciones.
Tres ideas que guían todo lo demás
Acta, no opinión

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.

Contexto

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.

Verificable

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.

Para quien construye

Del acta a la pantalla

1Recoger

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.

PythonPrefectBeautifulSoup
2Ordenar y verificar

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.

Delta LakePython
Deep diveLos datos: de la FEB a Delta Lake

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 →
3Calcular

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.

NumPySciPy
4Modelar

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).

NumPySciPy
5Publicar

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.

MatplotlibPillowFFmpegNext.jsVercel
Deep diveEl contenido: de las tablas a la tarjeta y al vídeo

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 →
6Organizar los repositorios

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.

Data contractsGoldDelta Lake
Deep diveContratos de datos y dominios independientes

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 →
Desacoplado y de solo lectura.El laboratorio y la web no se tocan: el laboratorio calcula y publica ficheros; la web solo los lee. Sin base de datos, sin servidor propio que mantener. Si el laboratorio se para, la web sigue funcionando con lo último publicado, y cada cambio se despliega con un commit.
Para quien juega o entrena

Seis familias de jugadores

Cargando datos…
Para quien juega o entrena

Glosario: las cifras empleadas

TC: tiros de campo anotados · TCI: intentados · T3: triples anotados · TLI: tiros libres intentados.

eFG% · acierto efectivo
(TC + 0,5 × T3) / TCI

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.

Cómo leerlo: Por encima del 50 % suele ser buen tirador.

% de tiro de campo de siempre46,7 %
eFG% · acierto efectivo56,7 %
Puntos por tiro1,13

Juega con los controles: con los mismos tiros anotados, cuantos más sean triples, más separa el eFG% del porcentaje de siempre.

TS% · acierto real
Puntos / (2 × (TCI + 0,44 × TLI))

Añade los tiros libres. Mide cuántos puntos saca un jugador por cada tiro que gasta.

Cómo leerlo: Es una de las medidas más completas de eficiencia anotadora con una sola cifra.

TOV% · pérdidas por jugada
Pérdidas / (TCI + 0,44 × TLI + Pérdidas)

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.

Cómo leerlo: Menos es mejor.

USG% · uso
(TCI + 0,44 × TLI + Pérdidas) del jugador / las del equipo mientras está en pista

Qué parte de las jugadas de su equipo termina un jugador (tiro, tiros libres o pérdida) estando en pista.

Cómo leerlo: 20 % es lo normal; más de 25 %, un jugador del que depende el ataque.

AST% · asistencias

Qué parte de las canastas de sus compañeros asiste un jugador mientras está en pista (nadie se asiste a sí mismo).

REB% · rebote

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.

Por 40 minutos

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.

+/- · impacto

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.

Valoración (PIR)

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.

Percentiles · P75, P90…

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.

Cómo leerlo: Un asterisco indica una cifra rara (por ejemplo tapones, donde la mayoría tiene cero): un P95 con 0,7 por partido es verdad aritmética pero no dice tanto como parece.

Rating y ritmo

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.

Para quien juega o entrena

Lo que todavía no se sabe hacer bien

Límite · Posiciones

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.

Límite · Minutos antiguos

Las actas de 2021-22 a 2023-24 no traen minutos fiables: se derivan de las sustituciones (validados, pero derivados).

Límite · Zonas de tiro

Las zonas de dos puntos existen solo desde 2024-25. Antes solo se distingue el triple.

Límite · Partidos sin acta

De unos pocos partidos solo consta el marcador. Aparecen en la clasificación pero no en las cifras de jugador.

Límite · Muestras pequeñas

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.

Límite · Estilos continuos

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.

Para quien construye

Decisiones de ingeniería

El identificador de jugador de la FEB no es estable→ Identidad canónica por nombre y fecha de nacimiento, e identificadores estables en todos los ficheros, para seguir al mismo jugador entre temporadas.
Lo derivado no se da por bueno→ Se recuentan 16 estadísticas desde el minuto a minuto y se comparan con el acta oficial, partido a partido.
El acta no siempre trae minutos→ Se derivan de las sustituciones y se validan contra las actas que sí los traen: mediana de error 0 s, percentil 90 en unos 20 s, peor caso 49 s.
La clasificación tiene un desempate real→ Entre empatados cuenta el average particular, solo cuando se han jugado todos sus duelos; si no, la diferencia general. Cambió 12 de 19 empates reales respecto a usar solo la diferencia total.
Un partido a medias no debe romper nada→ Si el calendario da un partido por jugado pero la fuente aún lo marca en juego, se reintenta, y las piezas de jornada se marcan como provisionales hasta que termine.
Una web sin servidor→ Ficheros estáticos más una aplicación Next.js; cada cambio se despliega por commit y se verifica en producción.
Pruebas contra datos reales→ La mayoría de las pruebas automáticas corren sobre partidos de verdad, no sobre datos de juguete.
PythonPrefectDelta LakeBeautifulSoupNumPySciPyMatplotlibPillowFFmpegNext.jsReactTypeScriptVercel
Fuentes. Actas oficiales y minuto a minuto de la FEB. Datos actualizados por última vez el 4 de octubre de 2026 (último partido incluido).
Contacto. ¿Algo no cuadra, falta algo o hay una idea? Los avisos son bienvenidos por cualquiera de estos canales.
Molokai Lab es un proyecto independiente y no está afiliado a la Federación Española de Baloncesto.