Documentación de modelos
Ficha de modelos predictivos
Qué hace cada modelo, qué datos usa y cómo interpretar sus métricas.
Modelos registrados
9
9 con datos en la tabla
Predicciones evaluables
107.017
115.784 registros historicos ·
15.976 partidos base
Mejor acierto
Ensemble selectivo
76,77%
Última predicción
24/08/2026 08:51
Según `porcentajes_victoria.calculado_en`
Tabla general
9 modelos registrados. Pulsa un modelo para abrir su ficha técnica y sus datos actuales.
Todos
Vista general
01
Elo básico
02
Reg. logística + Elo
03
Naive Bayes + Elo
04
Naive Bayes + stats
05
Ensemble jugadores
06
Ensemble calibrado
07
Ensemble selectivo
08
Comité especialistas
09
Modelo margen
| Modelo | Tipo | Objetivo | Evaluables | Cobertura | Acierto | Última | |
|---|---|---|---|---|---|---|---|
| Elo básico 01_elo_basico | Elo | Crear una probabilidad base usando fuerza historica de equipos. | 15.927 49 neutras | 100,00% útil 99,69% | 62,55% | 24/08/2026 08:26 | Ver |
| Reg. logística + Elo 02_regresion_logistica_elo | Regresión logística | Mejorar Elo aprendiendo pesos estadisticos sobre variables dinamicas. | 12.976 3.000 sin pred. histórica | 81,22% útil 100,00% | 63,98% | 24/08/2026 08:26 | Ver |
| Naive Bayes + Elo 03_naive_bayes_elo | Naive Bayes | Probar un clasificador probabilistico simple con señales Elo. | 12.976 3.000 sin pred. histórica | 81,22% útil 100,00% | 62,48% | 24/08/2026 08:26 | Ver |
| Naive Bayes + stats 04_naive_bayes_stats | Naive Bayes + stats | Añadir estadisticas recientes de equipo al enfoque Naive Bayes. | 12.976 3.000 sin pred. histórica | 81,22% útil 100,00% | 62,57% | 24/08/2026 08:26 | Ver |
| Ensemble jugadores 05_ensemble_jugadores | Ensemble | Combinar Elo, forma de equipo y perfiles rolling de jugadores. | 12.975 1 neutras 3.000 sin pred. histórica | 81,22% útil 99,99% | 63,53% | 24/08/2026 08:29 | Ver |
| Ensemble calibrado 06_ensemble_calibrado | Ensemble calibrado | Mejorar la calibracion de probabilidades del ensemble. | 11.976 4.000 sin pred. histórica | 74,96% útil 100,00% | 63,83% | 24/08/2026 08:33 | Ver |
| Ensemble selectivo 07_ensemble_selectivo | Ensemble selectivo | Subir el porcentaje de acierto seleccionando solo predicciones de alta confianza. | 3.259 8.717 neutras 4.000 sin pred. histórica | 74,96% útil 27,21% | 76,77% | 24/08/2026 08:39 | Ver |
| Comité especialistas 08_comite_especialistas | Comité de especialistas | Mejorar el acierto usando un experto distinto según el tipo de partido. | 11.976 4.000 sin pred. histórica | 74,96% útil 100,00% | 63,37% | 24/08/2026 08:48 | Ver |
| Modelo margen 09_modelo_margen_puntos | Modelo de margen | Predecir diferencia de puntos y convertirla en probabilidad de victoria. | 11.976 4.000 sin pred. histórica | 74,96% útil 100,00% | 65,03% | 24/08/2026 08:51 | Ver |
Ensemble jugadores
05_ensemble_jugadores
Qué hace
Modelo rico de contexto deportivo. Construye un dataset cronológico con Elo, descanso, back-to-back, forma de equipo y perfiles rolling de jugadores antes de cada partido.
Resumen de datos que usa
- Elo previo
- Descanso
- Back-to-back
- Forma últimos 10 partidos
- Top 8 por minutos
- Profundidad de plantilla
- Estadísticas rolling de equipo
Idea central
- Es el primer modelo que intenta capturar plantilla real, no solo fuerza de equipo.
- Para cada partido crea primero las features con el estado acumulado hasta antes del encuentro.
- Después de generar la fila, incorpora el partido al historial para que afecte solo a partidos futuros.
Features de calendario
rest_local,rest_visitanteydiff_rest: días desde el último partido de cada equipo, limitado a 10.b2b_localyb2b_visitante: marca back-to-back cuando el descanso es inferior a 1.5 días.liga_id,tipo_partido,equipo_local_id,equipo_visitante_idcomo categóricas.
Features de jugadores
- Historial rolling por jugador con ventana de 12 partidos.
- Perfil de jugador ponderado por minutos: puntos, rebotes, asistencias, robos+tapones, pérdidas, TS, eFG, uso, rating neto, más/menos y PIE.
- Top 8 de jugadores por minutos para aproximar núcleo de rotación.
- Profundidad de plantilla con jugadores 9 a 13.
- Cuenta de jugadores conocidos y tamaño de roster disponible.
Features de equipo
- Historial rolling de 10 partidos por equipo.
- Win rate, margen, puntos a favor y puntos en contra.
- Porcentajes de tiro, triples, libres, rebotes, asistencias, pérdidas, net rating, eFG, TS, ritmo, posesiones y PIE.
- Para cada señal guarda local, visitante y diferencial local-visitante.
Candidatos entrenados
- Regresión logística L2.
- HistGradientBoostingClassifier.
- RandomForestClassifier.
- ExtraTreesClassifier.
- Selecciona el candidato con mayor accuracy en el test temporal al corte 0.5.
Futuros y lesiones
- Para partidos futuros reconstruye el estado histórico y usa plantillas actuales.
- Consulta
lesionesy excluye jugadores con estados como baja, dudoso, muy dudoso, out o doubtful. - Si no hay plantilla suficiente, retrocede al roster global del equipo.
Riesgos de lectura
- La cifra histórica guardada puede ser optimista si procede del pipeline entrenado con todo el histórico.
- La comparación limpia debe hacerse con split temporal o walk-forward.
- Las features de jugadores son fuertes, pero dependen de la calidad de
estadisticas_jugadores_partidoy plantillas.
Validación resumida
Entrena varios candidatos y selecciona el mejor en split temporal. El backtest histórico actual escribe predicciones del modelo ya entrenado.
Salida resumida
Predice todos los partidos donde puede construir features.
Riesgo o lectura resumida
El script de features evita usar jugadores/estadisticas del propio partido en la fila actual, pero el backtest historico no es tan estricto como un walk-forward completo.
Tablas implicadas
- partidos
- temporadas
- equipo_elo
- estadisticas_equipos_partido
- estadisticas_jugadores_partido
- nba_plantillas_equipos
- lesiones
- porcentajes_victoria
Ficheros y responsabilidad
-
01_python/03_modelos/05_ensemble_jugadores/features.py
Constructor común de datasets históricos/futuros y upsert de predicciones. -
01_python/03_modelos/05_ensemble_jugadores/01_train.py
Entrena candidatos y guarda el mejor modelo. -
01_python/03_modelos/05_ensemble_jugadores/03_backtest.py
Genera predicciones históricas del 05. -
01_python/03_modelos/05_ensemble_jugadores/02_apply_future.py
Aplica el 05 a partidos futuros con lesiones.
Features técnicas del JSON de entrenamiento
Numéricas (106)
diff_eloabs_diff_elorest_localrest_visitantediff_restb2b_localb2b_visitanteplayers_player_known_count_localplayers_player_known_count_visitantediff_players_player_known_countplayers_player_roster_count_localplayers_player_roster_count_visitantediff_players_player_roster_countplayers_player_top8_minutes_localplayers_player_top8_minutes_visitantediff_players_player_top8_minutesplayers_player_top8_value_localplayers_player_top8_value_visitantediff_players_player_top8_valueplayers_player_top8_points_localplayers_player_top8_points_visitantediff_players_player_top8_pointsplayers_player_top8_reb_localplayers_player_top8_reb_visitantediff_players_player_top8_rebplayers_player_top8_ast_localplayers_player_top8_ast_visitantediff_players_player_top8_astplayers_player_top8_stocks_localplayers_player_top8_stocks_visitantediff_players_player_top8_stocksplayers_player_top8_tov_localplayers_player_top8_tov_visitantediff_players_player_top8_tovplayers_player_top8_ts_localplayers_player_top8_ts_visitantediff_players_player_top8_tsplayers_player_top8_efg_localplayers_player_top8_efg_visitantediff_players_player_top8_efgplayers_player_top8_usage_localplayers_player_top8_usage_visitantediff_players_player_top8_usageplayers_player_top8_net_localplayers_player_top8_net_visitantediff_players_player_top8_netplayers_player_top8_pm_localplayers_player_top8_pm_visitantediff_players_player_top8_pmplayers_player_top8_pie_localplayers_player_top8_pie_visitantediff_players_player_top8_pieplayers_player_depth_value_localplayers_player_depth_value_visitantediff_players_player_depth_valueplayers_player_depth_minutes_localplayers_player_depth_minutes_visitantediff_players_player_depth_minutesteam_win_rate_10_localteam_win_rate_10_visitantediff_team_win_rate_10team_margin_10_localteam_margin_10_visitantediff_team_margin_10team_points_for_10_localteam_points_for_10_visitantediff_team_points_for_10team_points_against_10_localteam_points_against_10_visitantediff_team_points_against_10team_team_fg_pct_10_localteam_team_fg_pct_10_visitantediff_team_team_fg_pct_10team_team_tp_pct_10_localteam_team_tp_pct_10_visitantediff_team_team_tp_pct_10team_team_ft_pct_10_localteam_team_ft_pct_10_visitantediff_team_team_ft_pct_10team_team_reb_10_localteam_team_reb_10_visitantediff_team_team_reb_10team_team_ast_10_localteam_team_ast_10_visitantediff_team_team_ast_10team_team_tov_10_localteam_team_tov_10_visitantediff_team_team_tov_10team_team_net_rating_10_localteam_team_net_rating_10_visitantediff_team_team_net_rating_10team_team_efg_10_localteam_team_efg_10_visitantediff_team_team_efg_10team_team_ts_10_localteam_team_ts_10_visitantediff_team_team_ts_10team_team_pace_10_localteam_team_pace_10_visitantediff_team_team_pace_10team_team_possessions_10_localteam_team_possessions_10_visitantediff_team_team_possessions_10team_team_pie_10_localteam_team_pie_10_visitantediff_team_team_pie_10
Categóricas (4)
tipo_partidoliga_idequipo_local_idequipo_visitante_id
Acierto
63,53%
Evaluables
12.975
Aciertos
8.243
Fallos
4.732
Cobertura histórica
81,22%
Cobertura útil
99,99%
Neutras 50/50
1
Sin pred. histórica
3.000
Temporadas
24
Ligas
3
Periodo
24/02/2019 20:30
14/06/2026 00:30
14/06/2026 00:30
Última predicción
24/08/2026 08:29
Métricas de entrenamiento
Modelo JSON
05_ensemble_jugadores
Candidato seleccionado
hist_gradient_boosting
Total dataset
15.976
Train
12.780
Test
3.196