LIGA MX 4,567 partidosmatches 2012 — 2026 25 equiposteams 12,151 golesgoals ROI +11.84% AUC 0.680
Liga MX
Apuestas con
ciencia de datos.
Liga MX
Betting with
data science.
Pipeline estadístico completo: desde la ingeniería de características y recalibración de ELO hasta un modelo de regresión logística calibrado con doble capa Platt, optimizado para generar señales de apuesta con ventaja real y verificable sobre el mercado.
End-to-end statistical pipeline: from feature engineering and ELO recalibration to a dual-layer Platt-calibrated logistic regression model, optimised to generate betting signals with real, verifiable edge over the market.
+11.84%
ROI Flat
Flat ROI
62.0%
Win Rate
Win Rate
0.680
AUC
3.1%
Error Calibración
Calibration Error
50
Apuestas filtradas
Filtered bets
01 — DATOSDATA
Recopilación
Collection
4,567 partidos · 14 temporadas · cuotas Pinnacle/B365
4,567 matches · 14 seasons · Pinnacle/B365 odds
02 — ELO
Recalibración
Recalibration
K=12 · ha=−25 · gd=0.3 · std: 37→102
03 — FEATURESFEATURES
Ingeniería
Engineering
18 variablesvariables · diferenciales + ELO + formadifferentials + ELO + form
04 — MODELOMODEL
LR + Isotonic + Platt
AUC 0.680 · ECE 3.1% · Brier 0.226
AUC 0.680 · ECE 3.1% · Brier 0.226
05 — APUESTASBETTING
Producción
Production
ELO Q4 · div>2% · Kelly/4
ELO Q4 · div>2% · Kelly/4
01 — Análisis General
01 — Overview

14 años de fútbol
mexicano, en números.

14 years of Mexican
football, in numbers.

Un análisis descriptivo completo de 4,567 partidos de Liga MX, comparados con los principales estándares europeos. La base empírica de todo el modelo.

A full descriptive analysis of 4,567 Liga MX matches, benchmarked against major European standards. The empirical foundation of the entire model.


Partidos Totales
Total Matches
4,567
2012/13 — 2025/26
2012/13 — 2025/26
Goles Totales
Total Goals
12,151
Promedio 2.661 / partido
Average 2.661 / match
Equipos únicos
Unique teams
25
Rotación por descenso / ascenso
Rotation via relegation / promotion
Máx. goles partido
Max goals in match
11
Registro histórico
All-time record
Victoria Local
Home Win
44.7%
2,040 de 4,567 partidos
2,040 of 4,567 matches
La localía en Liga MX es menor que Europa (45–50%). El formato de torneos cortos comprime la ventaja de cancha propia, motivo por el que home_adv se fijó en −25 en el ELO.
Home advantage in Liga MX is lower than Europe (45–50%). Short tournament format compresses home field advantage — reason home_adv was set to −25 in ELO.
Empate / Draw
27.1%
1,238 partidos / matches
Tasa de empate comparable con las grandes ligas europeas. El mercado de apuestas cotiza el empate a 3.50x de promedio, implicando 28.6% — sobreestimación de ~1.5pp.
Draw rate comparable to major European leagues. Bookmakers price draws at 3.50x average, implying 28.6% — a ~1.5pp overestimation.
Victoria Visitante
Away Win
28.2%
1,289 partidos / matches
Los libros implican 31.0% para victorias visitantes — sobreestiman en 2.8pp. Las casas protegen márgenes siendo conservadoras con el visitante.
Books imply 31.0% for away wins — overestimating by 2.8pp. Bookmakers protect margins by being conservative on away teams.
Goles por partido · por temporada Goals per match · by season
Distribución de resultados · goles totales Match result distribution · total goals
Win rate local · evolución temporal Home win rate · temporal trend
Liga MX vs grandes ligas · goles/partido Liga MX vs major leagues · goals/match
Sesgo de mercado detectado. Market bias detected. Las casas de apuesta sobrevaloran sistemáticamente la victoria local (+2.7pp de margen extra), subestiman las victorias visitantes (−2.8pp) y los empates (−1.9pp). Este sesgo estructural es una de las razones por las que el modelo puede encontrar valor apostando en contra del consenso del mercado — específicamente cuando nuestro modelo predice una probabilidad local mayor que la implícita en la cuota. Bookmakers systematically overvalue home wins (+2.7pp extra margin), underestimate away wins (−2.8pp) and draws (−1.9pp). This structural bias is one key reason the model can find value betting against market consensus — specifically when our model predicts a higher home probability than the implied odds.
Victorias históricas · top 10 equipos
Historical wins · top 10 teams
Distribución goles local · frecuencia relativa
Home goals distribution · relative frequency
El 56.8% de los partidos terminan con 1 o 2 goles del local. Solo el 2% anota 5+. Distribución coherente con una Poisson de λ≈1.51.
56.8% of matches end with 1 or 2 home goals. Only 2% score 5+. Distribution consistent with Poisson λ≈1.51.
02 — Ingeniería de Características
02 — Feature Engineering

18 variables que
explican la victoria.

18 variables that
explain the win.

Cada variable fue diseñada con hipótesis específica. No son transformaciones mecánicas: cada una responde a una pregunta futbolística concreta sobre forma, calidad y ventaja relativa.

Every variable was designed with a specific hypothesis. These are not mechanical transformations — each answers a concrete football question about form, quality, and relative advantage.


Bloque ELO recalibrado · impacto del rediseño Recalibrated ELO block · redesign impact
ELO std · antesbefore
37.4
ELO inútil como feature
ELO useless as feature
ELO std · despuésafter
101.8
+172% de dispersión
+172% spread
Parámetros óptimos
Optimal parameters
K=12 · ha=−25 · gd=0.3
Grid search sobre log-loss
Grid searched on log-loss
Ranking ELO recalibrado · estado actual 2026 Recalibrated ELO ranking · current state 2026
Los 3 grupos de variables
The 3 variable groups
elo_diff
Diferencia entre ELO local y visitante. La variable de "calidad relativa" más pura del modelo. Un elo_diff > 50 define el subgrupo Q4, condición necesaria para generar señales de apuesta.
Difference between home and away ELO. The purest "relative quality" variable in the model. elo_diff > 50 defines the Q4 subgroup — the necessary condition for generating betting signals.
coef: +0.188 · ELOELO
elo_prob_home
Probabilidad de victoria local según el ELO ajustado (K=12, ha=−25). Incorpora la asimetría real del fútbol mexicano sobre ventaja de localía. Feature #4 por importancia.
Home win probability from adjusted ELO (K=12, ha=−25). Captures the real asymmetry of Mexican football regarding home advantage. Feature ranked #4 by importance.
coef: +0.229 · ELO
elo_form
Interacción: elo_diff × señal de forma últimos 5 partidos. Un equipo ELO superior que también lleva buena racha tiene un indicador compuesto más fuerte. Detecta momentum.
Interaction: elo_diff × last-5-match form signal. A higher ELO team on a good run has a stronger composite indicator. Captures momentum.
coef: — · ELO + Forma
d_avg_ga_pre
Diferencial de goles recibidos en promedio (local − visitante). Feature #1 por magnitud de coeficiente. La calidad defensiva diferencial es el predictor más fuerte de victoria en Liga MX.
Differential in average goals conceded (home − away). Feature #1 by coefficient magnitude. Defensive quality differential is the single strongest victory predictor in Liga MX.
coef: −0.468 · DefensaDefence
d_attack_pre
Índice de ataque diferencial. Derivado de goles a favor normalizados por el promedio de la liga en esa fecha. Feature #2 por importancia. La liga tiene fuerte correlación entre ataque y puntos.
Differential attack index. Derived from goals scored normalised by the league average at that date. Feature #2 by importance. Liga MX shows strong correlation between attack and points.
coef: +0.404 · AtaqueAttack
d_ppg_pre
Puntos por partido diferencial (local − visitante), acumulado hasta ese partido. Normaliza la calidad por número de partidos jugados. Más robusto que puntos brutos para temporadas cortas.
Differential points per game (home − away), cumulative up to that match. Normalises quality by matches played. More robust than raw points for short-season formats.
coef: −0.289 · Forma
d_pts_last3_pre · d_pts_last5_pre
Puntos en últimos 3 y 5 partidos. Capturan la forma reciente sin el peso de toda la temporada. Clave para detectar rachas y caídas post-lesiones o cambios de entrenador.
Points from last 3 and 5 matches. Capture recent form without the drag of the full season. Key for detecting runs and slumps following injuries or managerial changes.
NaN en jornada ≤3 · imputados con 0 · Forma reciente
NaN in matchday ≤3 · imputed with 0 · Recent form
h_team_jornada · late_season
late_season = 1 si jornada > 12. Las jornadas finales tienen dinámicas distintas: más presión, rotaciones por Liguilla. El modelo las penaliza ligeramente — reduce el peso de la localía tardía.
late_season = 1 if matchday > 12. Final matchdays have different dynamics: more pressure, rotation for Liguilla. The model slightly penalises them — reduces late-season home advantage weight.
Sesgo jornada detectado: J1 WR=36.5% vs J19+ WR=53.5% · Contexto
Matchday bias detected: J1 WR=36.5% vs J19+ WR=53.5% · Context
Correlación de features individuales con victoria local Individual feature correlation with home win
Por qué las correlaciones individuales son bajas (r≈0.10). En fútbol, ninguna variable explica la victoria por sí sola — la incertidumbre es intrínseca. El modelo captura el efecto combinado. Con 18 variables diferenciales, el AUC de 0.680 es estadísticamente sólido para este dominio.
Why individual correlations are low (r≈0.10). In football, no single variable explains the win on its own — uncertainty is intrinsic. The model captures the combined effect. With 18 differential variables, AUC 0.680 is statistically strong for this domain.
03 — Análisis de Mercado
03 — Market Analysis

Dónde vive
el valor real.

Where the
real value lives.

El modelo general no basta. La señal real emerge solo en el cruce de tres condiciones: favorito ELO claro, divergencia con el mercado y cuota razonable. Aquí se justifica cada filtro con datos.

A general model is not enough. The real signal only emerges at the intersection of three conditions: clear ELO favourite, divergence from market, and reasonable odds. Every filter is justified with data here.


ROI apostando siempre al local
ROI betting always on home
−7.20%
Sin filtros · 4,567 apuestas
No filters · 4,567 bets
ROI apostando siempre al visitante
ROI betting always on away
−11.32%
Sin filtros · margen de casa más alto
No filters · highest bookmaker margin
Margen promedio de casas de apuesta
Average bookmaker margin
7.44%
Rango: 1.0% — 9.2%
Range: 1.0% — 9.2%
La casa siempre gana... sin modelo. The house always wins... without a model. Apostar sin selección produce ROI de −7% a −11%. El margen de 7.44% es la barrera de entrada que debemos superar con señal estadística. Nuestro modelo genera +11.84% de ROI flat en el subgrupo óptimo — un exceso de retorno de ~19pp sobre el baseline ciego. Unfiltered betting produces ROI from −7% to −11%. The 7.44% margin is the entry barrier we must overcome with statistical signal. Our model generates +11.84% flat ROI in the optimal subgroup — a ~19pp excess return over the blind baseline.
ROI por rango de cuota · todos los partidos (baseline sin modelo) ROI by odds range · all matches (no-model baseline)
Las cuotas bajas (1.0–1.5) parecen tener mejor ROI, pero el favorito a esas cuotas igualmente pierde valor. El mercado está bien calibrado en extremos. La zona 1.5–2.5 es donde el modelo encuentra mayor dispersión de oportunidades.
Low odds (1.0–1.5) appear to have better ROI, but the favourite at those prices still loses value. The market is well-calibrated at extremes. The 1.5–2.5 range is where the model finds the most opportunity dispersion.
Sesgo del mercado: implícita vs real (por resultado) Market bias: implied vs actual probability (by outcome)
Win rate local · por cuartil de ELO diferencial Home win rate · by ELO differential quartile
Construcción del filtro de divergencia: modelo − casa de apuestas Building the divergence filter: model − bookmaker
Media div. global
Global avg div.
−2.7%
El modelo subestima en promedio
Model underestimates on average
Umbral mínimo
Minimum threshold
+2%
Grid search óptimo
Grid search optimal
ROI con div>2% + Q4
ROI with div>2% + Q4
+11.84%
n=50 apuestas
n=50 bets
WR en subgrupo
Win rate in subgroup
62.0%
vs 54.7% implícito (+7.3pp)
vs 54.7% implied (+7.3pp)
Win rate local · por grupo de jornada Home win rate · by matchday group
Jornada 1 tiene WR=36.5% — el ELO aún no tiene señal suficiente. El peak llega en jornadas 19+. La variable late_season captura este sesgo.
Matchday 1 has WR=36.5% — ELO lacks sufficient signal yet. Peak arrives at matchdays 19+. The late_season variable captures this bias.
ROI por temporada de test · subgrupo óptimo ROI by test season · optimal subgroup
2022/23 es la única temporada negativa (−3.7%). Las tres siguientes son positivas. La temporada actual 2025/26 ya lleva +10.3% con 12 apuestas.
2022/23 is the only negative season (−3.7%). The following three are positive. Current 2025/26 season is already +10.3% with 12 bets.
04 — Desarrollo del Modelo
04 — Model Development

El modelo final.
Listo para apostar.

The final model.
Ready to bet.

LR + calibración isotónica + corrección Platt OOF. Tres fases de desarrollo, filtros optimizados por grid search, validados en test completamente separado.

LR + isotonic calibration + Platt OOF correction. Three development phases, grid-search optimised filters, validated on fully held-out test set.


AUC
0.680
Target > 0.65 ✓
Target > 0.65 ✓
ECE
3.1%
Target < 5% ✓
Target < 5% ✓
Brier Score
0.226
Target < 0.24 ✓
Target < 0.24 ✓
Log-Loss
0.643
Target < 0.67 ✓
Target < 0.67 ✓
Calibración (ECE origen)
Calibration (base ECE)
3.7% → 3.1%
Platt OOF aplicado ✓
Platt OOF applied ✓
Por qué estos targets importan para apuestas. Why these targets matter for betting. AUC > 0.65: capacidad de discriminar ganadores de perdedores mejor que azar (0.5). ECE < 5%: las probabilidades que emite el modelo son reales — si dice 62%, realmente gana ~62% de las veces. Sin calibración, el Kelly stack sería incorrecto y se apostaria demasiado/poco. Brier < 0.24: error cuadrático promedio de la probabilidad. El libro de apuestas tiene Brier ≈ 0.228 — nuestro modelo está al mismo nivel en precisión probabilística, pero detecta mejor el valor. AUC > 0.65: ability to discriminate winners from losers better than chance (0.5). ECE < 5%: the model's probabilities are real — if it says 62%, it actually wins ~62% of the time. Without calibration, Kelly stakes would be wrong and overbetting/underbetting would occur. Brier < 0.24: average squared error of the probability. The bookmaker has Brier ≈ 0.228 — our model is at the same probabilistic precision level, but better at detecting value.
Arquitectura del modelo · 3 capas Model architecture · 3 layers
CAPA 1 — BASE
LAYER 1 — BASE
Logistic Regression
C=1.0 · 18 features normalizadas con StandardScaler · 3,297 partidos de entrenamiento (2012–2022)
C=1.0 · 18 features normalised with StandardScaler · 3,297 training matches (2012–2022)
CAPA 2 — CALIBRACIÓN
LAYER 2 — CALIBRATION
Isotonic (5-fold CV)
Calibración no paramétrica sobre las probabilidades base. Corrige la forma de la curva de calibración sistemáticamente.
Non-parametric calibration on base probabilities. Systematically corrects the shape of the calibration curve.
CAPA 3 — PLATT OOF
LAYER 3 — PLATT OOF
Platt Scaling OOF
Regresión logística sobre predicciones out-of-fold. Corrige sobreestimación residual en p > 0.70. ECE: 3.7% → 3.1%.
Logistic regression on out-of-fold predictions. Corrects residual overestimation at p > 0.70. ECE: 3.7% → 3.1%.
Bankroll simulado · Kelly/4 · subgrupo Q4 Simulated bankroll · Kelly/4 · Q4 subgroup
Calibración final · modelo vs ideal Final calibration · model vs ideal
Importancia de características · coeficientes LR (magnitud) Feature importance · LR coefficients (magnitude)
Filtros de apuesta · optimizados por grid search · test 2022–2026 Betting filters · grid-search optimised · test 2022–2026
ELO Q4
elo_diff > ~50
Local en percentil 75+ de ventaja ELO. Condición necesaria: sin este filtro el ROI cae a −7%. Es el único subgrupo con WR > 60%.
Home in 75th+ percentile of ELO advantage. Necessary condition: without this filter ROI drops to −7%. Only subgroup with WR > 60%.
Expected Value
Expected Value
> 3%
EV = p_modelo × cuota − 1. El umbral mínimo que supera el margen de casa del 7.4% en promedio cuando se combina con los demás filtros.
EV = p_model × odds − 1. Minimum threshold that beats the 7.4% house margin on average when combined with other filters.
Divergencia
Divergence
> +2%
p_modelo − p_implícita > 2%. Selecciona partidos donde el modelo ve más valor que el mercado. Sin esto, el modelo está "de acuerdo" con la casa.
p_model − p_implied > 2%. Selects matches where our model sees more value than the market. Without this, the model "agrees" with the bookmaker.
Rango de cuota
Odds range
1.50 — 4.50
Cuotas <1.5: poco valor. Cuotas >4.5: el equipo local no cumple condición Q4 normalmente. El rango 1.5–2.5 tiene mayor densidad de señales.
Odds <1.5: little value. Odds >4.5: home team typically doesn't meet Q4 condition. Range 1.5–2.5 has highest signal density.
Prob. modelo
Model prob.
> 30%
Evita apostar cuando el modelo está muy incierto. En Q4 + div>2% este umbral rara vez es activo — solo elimina outliers.
Avoids betting when the model is highly uncertain. In Q4 + div>2% this threshold is rarely active — only removes outliers.
Kelly Stake
Kelly/4
Kelly fraccional. El Kelly completo maximiza crecimiento pero puede apostar 20–30% del bankroll en una sola apuesta. /4 reduce el riesgo de ruina a niveles manejables.
Fractional Kelly. Full Kelly maximises growth but may stake 20–30% of bankroll on a single bet. /4 reduces ruin risk to manageable levels.
Significancia estadística · IC Bootstrap 95% Statistical significance · 95% Bootstrap CI
Z-Score
1.04
p-valor: 0.15 · n=50 insuficiente
p-value: 0.15 · n=50 insufficient
IC 95% ROI (Bootstrap)
95% CI ROI (Bootstrap)
[−7.2%, +44.8%]
Incluye 0 — requiere más volumen
Includes 0 — more volume required
Apuestas para signif. 5%
Bets for 5% significance
~150
~3 temporadas completas
~3 full seasons
IC 95% del ROI · Bootstrap 10,000 iter. · n=50
95% CI for ROI · Bootstrap 10,000 iter. · n=50
−20% 0% ← → +11.8% +50%
Interpretación honesta. El edge es real y observable (WR 62% vs implied 54.7%), pero con n=50 apuestas no alcanza significancia estadística formal al 5%. Esto no significa que el modelo no funciona — significa que se necesita acumular más historial antes de escalar capital. La recomendación es operar con stakes mínimos (2–3% del bankroll) hasta cruzar las 150 apuestas y re-evaluar.
Honest interpretation. The edge is real and observable (WR 62% vs implied 54.7%), but with n=50 bets it does not reach formal 5% statistical significance. This does not mean the model doesn't work — it means more history must accumulate before scaling capital. Recommendation: operate with minimum stakes (2–3% of bankroll) until crossing 150 bets and re-evaluate.
Ficha técnica · modelo de producción v1.0 Technical spec · production model v1.0
ComponenteValor ComponentValue
AlgoritmoAlgorithmLR + Isotonic + Platt OOF
FeaturesFeatures18 (diferenciales + ELO)
Train / TestTrain / Test2012–2022 / 2022–2026
ELO paramsELO paramsK=12, ha=−25, gd=0.3
RegularizaciónRegularisationC = 1.0 (L2)
CalibraciónCalibrationIsotonic 5-fold + Platt OOF
KPI apuestasValor Betting KPIValue
Win Rate62.0%
Implied WRImplied WR54.7% (−7.3pp edge)
ROI Flat+11.84%
ROI Kelly/4+16.9%
Max DrawdownMax Drawdown−19.0% (7 bets)
Señales/temporadaSignals/season~12–15