AdminLTE Preloader Image
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.

Ensemble calibrado

06_ensemble_calibrado

Ensemble calibrado
Qué hace

Reutiliza las features del 05, pero cambia el objetivo: no solo acertar ganador, sino que las probabilidades sean fiables por tramos.

Resumen de datos que usa
  • Features completas del 05
  • Partición train/calibración/test
  • Calibración sigmoid/isotonic
  • Métricas Brier, LogLoss, ROC AUC y ECE
Idea central
  • Parte del 05, pero añade una capa explícita de calibración.
  • Busca que una probabilidad del 70% gane cerca del 70% de las veces, no solo acertar más partidos.
  • Es más útil para valor esperado y comparación con cuotas que para ranking bruto de acierto.
Particiones temporales
  • Divide el histórico en entrenamiento, calibración y test respetando el orden temporal.
  • En producción entrena con la parte antigua y calibra con la ventana más reciente.
  • El backtest OOF usa folds crecientes: entrena con pasado, calibra con una ventana y prueba con futuro.
Candidatos calibrados
  • HGB con calibración sigmoid.
  • HGB con calibración isotonic.
  • Regresión logística con calibración sigmoid.
  • ExtraTrees con calibración sigmoid.
Métricas que importa mirar
  • Accuracy al corte 0.5 para compararlo con el resto.
  • Brier y LogLoss para calidad de probabilidad.
  • Winner ECE para medir desajuste entre confianza y acierto real.
  • Tramos de calibración 50-55, 55-60, etc. con probabilidad media y acierto real.
Riesgos de lectura
  • Un modelo calibrado puede acertar algo menos, pero ser mejor para decidir apuestas con cuotas.
  • Compararlo solo por porcentaje de acierto puede penalizar justo lo que intenta mejorar.
  • Si la ventana de calibración es pequeña o cambia el mercado, las probabilidades pueden desplazarse.
Validación resumida

Backtest temporal walk-forward con folds y metricas OOF.

Salida resumida

Probabilidades mas aptas para comparar con cuotas y valor esperado.

Riesgo o lectura resumida

Puede sacrificar algo de acierto bruto para mejorar calibracion.

Tablas implicadas
  • Todas las del 05
  • porcentajes_victoria
Ficheros y responsabilidad
  • 01_python/03_modelos/06_ensemble_calibrado/modeling.py
    Candidatos, calibradores, particiones temporales y métricas.
  • 01_python/03_modelos/06_ensemble_calibrado/01_train.py
    Entrena y guarda el modelo calibrado.
  • 01_python/03_modelos/06_ensemble_calibrado/03_backtest.py
    Backtest walk-forward OOF.
  • 01_python/03_modelos/06_ensemble_calibrado/02_apply_future.py
    Aplica el modelo calibrado a futuros.
Features técnicas del JSON de entrenamiento
Numéricas (106)
  • diff_elo
  • abs_diff_elo
  • rest_local
  • rest_visitante
  • diff_rest
  • b2b_local
  • b2b_visitante
  • players_player_known_count_local
  • players_player_known_count_visitante
  • diff_players_player_known_count
  • players_player_roster_count_local
  • players_player_roster_count_visitante
  • diff_players_player_roster_count
  • players_player_top8_minutes_local
  • players_player_top8_minutes_visitante
  • diff_players_player_top8_minutes
  • players_player_top8_value_local
  • players_player_top8_value_visitante
  • diff_players_player_top8_value
  • players_player_top8_points_local
  • players_player_top8_points_visitante
  • diff_players_player_top8_points
  • players_player_top8_reb_local
  • players_player_top8_reb_visitante
  • diff_players_player_top8_reb
  • players_player_top8_ast_local
  • players_player_top8_ast_visitante
  • diff_players_player_top8_ast
  • players_player_top8_stocks_local
  • players_player_top8_stocks_visitante
  • diff_players_player_top8_stocks
  • players_player_top8_tov_local
  • players_player_top8_tov_visitante
  • diff_players_player_top8_tov
  • players_player_top8_ts_local
  • players_player_top8_ts_visitante
  • diff_players_player_top8_ts
  • players_player_top8_efg_local
  • players_player_top8_efg_visitante
  • diff_players_player_top8_efg
  • players_player_top8_usage_local
  • players_player_top8_usage_visitante
  • diff_players_player_top8_usage
  • players_player_top8_net_local
  • players_player_top8_net_visitante
  • diff_players_player_top8_net
  • players_player_top8_pm_local
  • players_player_top8_pm_visitante
  • diff_players_player_top8_pm
  • players_player_top8_pie_local
  • players_player_top8_pie_visitante
  • diff_players_player_top8_pie
  • players_player_depth_value_local
  • players_player_depth_value_visitante
  • diff_players_player_depth_value
  • players_player_depth_minutes_local
  • players_player_depth_minutes_visitante
  • diff_players_player_depth_minutes
  • team_win_rate_10_local
  • team_win_rate_10_visitante
  • diff_team_win_rate_10
  • team_margin_10_local
  • team_margin_10_visitante
  • diff_team_margin_10
  • team_points_for_10_local
  • team_points_for_10_visitante
  • diff_team_points_for_10
  • team_points_against_10_local
  • team_points_against_10_visitante
  • diff_team_points_against_10
  • team_team_fg_pct_10_local
  • team_team_fg_pct_10_visitante
  • diff_team_team_fg_pct_10
  • team_team_tp_pct_10_local
  • team_team_tp_pct_10_visitante
  • diff_team_team_tp_pct_10
  • team_team_ft_pct_10_local
  • team_team_ft_pct_10_visitante
  • diff_team_team_ft_pct_10
  • team_team_reb_10_local
  • team_team_reb_10_visitante
  • diff_team_team_reb_10
  • team_team_ast_10_local
  • team_team_ast_10_visitante
  • diff_team_team_ast_10
  • team_team_tov_10_local
  • team_team_tov_10_visitante
  • diff_team_team_tov_10
  • team_team_net_rating_10_local
  • team_team_net_rating_10_visitante
  • diff_team_team_net_rating_10
  • team_team_efg_10_local
  • team_team_efg_10_visitante
  • diff_team_team_efg_10
  • team_team_ts_10_local
  • team_team_ts_10_visitante
  • diff_team_team_ts_10
  • team_team_pace_10_local
  • team_team_pace_10_visitante
  • diff_team_team_pace_10
  • team_team_possessions_10_local
  • team_team_possessions_10_visitante
  • diff_team_team_possessions_10
  • team_team_pie_10_local
  • team_team_pie_10_visitante
  • diff_team_team_pie_10
Categóricas (4)
  • tipo_partido
  • liga_id
  • equipo_local_id
  • equipo_visitante_id
Acierto
63,83%
Evaluables
11.976
Aciertos
7.644
Fallos
4.332
Cobertura histórica
74,96%
Cobertura útil
100,00%
Neutras 50/50
0
Sin pred. histórica
4.000
Omitidos OOF
4.000
Temporadas
21
Ligas
3
Periodo
03/12/2019 00:00
14/06/2026 00:30
Última predicción
24/08/2026 08:33
Métricas de entrenamiento
Modelo JSON
06_ensemble_calibrado
Candidato seleccionado
hgb_sigmoid
Total dataset
15.976
Train
10.864
Calibración
1.917
Test
3.195
Nombre candidato
hgb_sigmoid
Accuracy test @0.5
66,17%
Mejor umbral test
0.53
Accuracy mejor umbral
66,32%
LogLoss test
0,6176
Brier test
0,2143
Winner ECE
0,0071
ROC AUC test
0,7061
Train producción
14.059
Calibración producción
1.917
Calibración desde
2025-06-11 04:00:00
Calibración hasta
2026-06-14 00:30:00
01_python/03_modelos/06_ensemble_calibrado/metrics/ensemble_calibrado_metrics.json
Walk-forward / OOF
Modelo OOF
06_ensemble_calibrado
Candidato OOF
hgb_sigmoid
Dataset total
15.976
Partidos backtest
11.976
Sin predicción OOF
4.000
Folds
10
Min train
3.000
Tamaño calibración
1.000
Tamaño fold
1.200
OOF accuracy @0.5
63,83%
OOF mejor umbral
0.5
OOF accuracy mejor umbral
63,83%
OOF Brier
0,2231
OOF LogLoss
0,6369
OOF Winner ECE
0,0104
OOF ROC AUC
0,6730
01_python/03_modelos/06_ensemble_calibrado/metrics/ensemble_calibrado_oof_metrics.json