PITIA

WC2026 · Motor de Predicciones

Dixon-Coles MLE + Monte Carlo · 93% mercado · Cloudflare Workers

📊 Rendimiento del modelo · Mundial 2026
🎯
Aciertos 1X2 · jugados
Aún no hay partidos jugados
🔢
Resultado exacto · jugados
Aún no hay partidos jugados
📈
Calibración vs azar · jugados
Aún no hay partidos jugados
🌅
vs línea de apertura · jugados
Aún sin partidos con apertura capturada
🏦
vs cierre de mercado · jugados
Aún sin partidos con cuota capturada
Ventaja contraria · objetivo bote
≈4×
botín del pick contrario vs marcar siempre el favorito · sim. de bote, hasta 4.25× con muchos jugadores (T017, IC 95% no cruza 0)
Proyección del torneo
🏆
Campeón proyectado
Simulando…
🥈
Segundo finalista
Sorpresa del torneo
Máximo goleador proyectado
📊 Rendimiento del modelo · La Quiniela
🚧
Seguimiento de aciertos
Próximamente
El histórico de aciertos de La Quiniela se activará al arrancar la temporada. El boleto optimizado ya funciona — pásate a la pestaña «Boleto óptimo».

Picks disponibles

Postura del marcador:

Simulador de torneo completo

Simula los partidos pendientes de grupos, calcula los 32 clasificados según el bracket FIFA y proyecta el torneo completo por Monte Carlo.

Simulaciones

Cuadro de cruces (camino del favorito)

Bracket determinista R32→Final: en cada cruce avanza el equipo con mayor probabilidad de ganar ese partido según el modelo. Se guarda hasta que entren resultados reales nuevos.

Los cruces muestran el favorito partido a partido (determinista). El campeón indicado es el pronóstico Monte Carlo N=10.000 — la misma fuente que las scorecards.

Calculando cuadro…

La Quiniela española — Boleto optimizado

Boleto de 14 partidos (1/X/2) + pleno al 15 (marcador exacto). La estrategia contraria aplica picks únicos en las posiciones donde el público se equivoca — así, cuando aciertas donde nadie más lo hace, compartes el premio con menos gente.

Partidos del boleto
Selecciona 15 partidos pendientes: los 14 primeros serán los signos 1X2 y el último el pleno al 15.

Mi ranking en la porra

Estima dónde acabarás y cuánto arriesgar. Tu marcador está fundado (track record real del modelo + bonus del motor); el resto del campo está modelado — no hay datos de los picks ni del marcador futuro de cada rival. Pega el ranking real abajo para fijar los puntos de partida exactos.

Cómo funciona PITIA

¿Prefieres leerlo todo de corrido, de cero a experto? 📖 Abrir la guía completa →  ·  🧮 Enlace directo a la auditoría técnica →

Guía completa de cero a 100. No se asume ningún conocimiento previo de estadística ni modelos matemáticos.

1 · El problema: predecir el resultado de un partido de fútbol

Predecir fútbol no significa "saber" quién va a ganar. Significa asignar probabilidades a cada resultado posible — por ejemplo, "España tiene un 55% de ganar, un 25% de empatar y un 20% de perder". Para hacer eso de forma sistemática necesitamos responder dos preguntas:

  1. ¿Quién es más fuerte? → necesitamos un número que resuma el nivel de cada equipo.
  2. ¿Cuánto se traduce esa diferencia de fuerza en resultados? → necesitamos convertir esos números en probabilidades concretas de cada marcador.

El fútbol tiene mucho azar. Incluso si el modelo es perfecto, el equipo "mejor" pierde en muchos partidos. El objetivo no es acertar cada partido, sino asignar probabilidades bien calibradas — es decir, que cuando el modelo dice "40%", eso ocurra aproximadamente el 40% de las veces a largo plazo.

2 · Paso 1 — Medir la fuerza de cada equipo: el sistema de rating

Un rating es simplemente un número que intenta resumir cuán bueno es un equipo. El problema es que en fútbol internacional los equipos no juegan entre sí muy a menudo, así que necesitamos un sistema que aprenda de forma acumulativa.

El motor usa un sistema inspirado en el Elo, originalmente inventado para clasificar jugadores de ajedrez y hoy usado en decenas de deportes. La idea es sencilla:

  • Todos los equipos empiezan con un rating base.
  • Cuando ganas, tu rating sube. Cuando pierdes, baja.
  • El cambio es mayor si ganas a un equipo con rating más alto que el tuyo (era una sorpresa) y menor si ganas a uno más débil (era esperado).
  • Lo que importa no es el número absoluto de ningún equipo, sino la diferencia entre dos equipos al enfrentarse.

Los ratings de PITIA están calibrados manualmente sobre resultados históricos de selecciones nacionales (últimos ciclos FIFA). A estos ratings se añaden dos ajustes contextuales:

Bonus anfitrión+55 puntos de rating al equipo local cuando juega en casa (EE.UU., México o Canadá en sus propias ciudades). Refleja la ventaja demostrada históricamente por el anfitrión de un Mundial. Penalización altitudLos equipos que no están acostumbrados a la altura rinden peor en Ciudad de México (2.240m) y Zapopan (1.566m). El ataque de esos equipos se reduce en un 7% (multiplicador ×0.93).

3 · Paso 2 — De rating a goles esperados: la función exponencial

Con los ratings de ambos equipos calculamos cuántos goles se espera que marque cada uno. A esta cantidad se la llama λ (lambda) — el número medio de goles esperados.

La fórmula tiene dos ingredientes:

  • BASE_GOALS = 1.45: el número medio de goles por equipo por partido en Mundiales similares, medido sobre WC2018 y WC2022. Es el punto de partida cuando ambos equipos son idénticos.
  • Diferencia de rating: si el equipo A es más fuerte, su λ sube por encima de 1.45 y el del equipo B baja. La relación es exponencial — una diferencia moderada de rating produce una diferencia notable en goles esperados, pero no desbocada.

λ_local = 1.45 × exp(0.0020 × (rating_local − rating_visitante))
λ_visitante = 1.45 × exp(0.0020 × (rating_visitante − rating_local))

El parámetro K=0.0020 controla cuánto pesa la diferencia de rating. Fue elegido mediante búsqueda sistemática (grid search) minimizando el error de predicción sobre partidos históricos.

Ejemplo concreto: España tiene rating 2020, Marruecos 1880. Diferencia = +140 para España.
λ_España = 1.45 × exp(0.0020 × 140) = 1.45 × 1.32 = 1.91 goles esperados
λ_Marruecos = 1.45 × exp(0.0020 × −140) = 1.45 × 0.76 = 1.10 goles esperados

4 · Paso 3 — De goles esperados a marcadores: la distribución de Poisson

Tenemos λ_local y λ_visitante. Ahora necesitamos la probabilidad de cada marcador concreto: P(0–0), P(1–0), P(2–1), etc.

Aquí entra la distribución de Poisson. Es una fórmula matemática que responde a esta pregunta: "si en promedio ocurren λ eventos por intervalo, ¿cuál es la probabilidad de que ocurran exactamente k?"

En fútbol: si España espera marcar λ=1.91 goles, ¿cuál es la probabilidad de que marque exactamente 0? ¿1? ¿2? ¿3? La distribución de Poisson da una respuesta directa:

P(k goles) = (e^−λ × λ^k) / k!

Aplicando esto a España (λ=1.91) obtenemos que marca 0 goles con ~14.8%, 1 gol con ~28.3%, 2 goles con ~27.0%, 3 goles con ~17.2%, etc.

Si aplicamos Poisson independientemente a ambos equipos y multiplicamos las probabilidades para cada combinación, obtenemos una matriz de 10×10 con la probabilidad de todos los marcadores posibles (de 0–0 a 9–9). Esa matriz es la base de todo lo que sigue.

P(victoria local)Suma de todas las celdas de la matriz donde goles_local > goles_visitante P(empate)Suma de la diagonal principal (0–0, 1–1, 2–2…) P(victoria visitante)Suma de las celdas donde goles_visitante > goles_local

5 · Paso 4 — Corrección para marcadores bajos: Dixon-Coles

El modelo Poisson asume que los goles del equipo local y los del visitante son completamente independientes entre sí. En la práctica, en los marcadores bajos (0–0, 1–0, 0–1, 1–1) hay una pequeña correlación que Poisson puro no captura: los datos reales muestran que estos cuatro marcadores aparecen con una frecuencia ligeramente distinta de la que predice la fórmula estándar.

La corrección de Dixon-Coles aplica un factor de ajuste τ (tau) únicamente a esos cuatro marcadores, dejando el resto intactos:

P(i,j) = Poisson(λ_h, i) × Poisson(λ_a, j) × τ(i,j)
τ(0,0) = 1 − λ_h·λ_a·ρ  ·  τ(1,0) = 1 + λ_a·ρ  ·  τ(0,1) = 1 + λ_h·ρ  ·  τ(1,1) = 1 − ρ

El parámetro ρ (rho) controla la intensidad de la corrección. Calibrado sobre WC2018+2022 da ρ = −0.02 — prácticamente neutro, lo que indica que en Mundiales la correlación entre goles de ambos equipos es mínima. La corrección existe pero es pequeña.

6 · Paso 5 — Elegir el pick óptimo: maximizar puntos esperados

Ya tenemos la probabilidad de cada marcador. Ahora toca decidir qué marcador pronosticar. La respuesta ingenua es "el que tiene más probabilidad" — pero eso no es óptimo en una porra con sistema de puntuación 3 pts exacto / 1 pt 1X2.

El motor calcula para cada uno de los 81 marcadores posibles cuántos puntos esperados daría elegirlo como pick:

E[pts de elegir marcador M] = 3 × P(marcador exacto = M) + 1 × P(1X2 correcto, pero no exacto M)

Y elige el marcador que maximiza esa función. No el más probable — el que da más puntos en promedio. La diferencia es sutil pero importante:

Ejemplo real del motor — Japón vs rival:
Japón tiene 54% de ganar. El marcador más probable en solitario es 1–1 (máxima P individual). Pero eligiendo 1–1 capturamos solo los empates (28%). Eligiendo 1–2 (Japón gana) capturamos todas las victorias de Japón (54%) más el bonus de exacto si acaba exactamente 1–2 (12%).
Pick 1–1: E[pts] ≈ 0.58  ·  Pick 1–2: E[pts] ≈ 0.90 → diferencia +0.32 pts por partido.

El tier del pick resume cuánto concentración tiene la distribución:

3ptP(marcador exacto) ≥ 11.5%. El resultado está muy concentrado — vale la pena confiar en el marcador concreto. 1ptHay favorito claro, pero el gol difference y marcador exacto son difusos. El pick captura si el favorito gana, no el marcador preciso. Ningún resultado individual supera el 45% de probabilidad. El partido es una moneda al aire — cualquier marcador vale igual.

7 · Paso 6 — Simular el torneo: Monte Carlo

Monte Carlo es un nombre genérico para una técnica matemática: cuando un problema es demasiado complejo para resolverse con fórmulas exactas, se simula miles de veces con números aleatorios y se promedian los resultados. El nombre viene del famoso casino de Mónaco — la referencia al azar.

Para calcular "¿con qué probabilidad llega Francia a la final?", el motor hace lo siguiente 10.000 veces:

  1. Simula todos los partidos de grupos pendientes sorteando goles de cada equipo aleatoriamente según sus distribuciones Poisson (con λ_h y λ_a calculados como arriba).
  2. Clasifica los 48 grupos con las reglas reales (puntos, diferencia de goles, goles marcados, Elo para desempate).
  3. Determina los 32 clasificados según el bracket oficial FIFA WC2026, incluyendo los 8 mejores terceros.
  4. Simula las rondas eliminatorias: cada partido a 90 minutos con Poisson; si hay empate, sortea penaltis con una fórmula logística basada en la diferencia de rating.
  5. Anota el campeón de esa iteración.

Después de 10.000 iteraciones, si Francia ganó en 2.800 de ellas, su P(campeón) = 28%. Con semilla fija los resultados son deterministas y reproducibles.

Nota sobre KO y goles: el motor usa el mismo λ en grupos y eliminatorias. Esto fue validado empíricamente sobre WC2018+2022: los partidos KO promedian más goles (3.09 vs 2.51 en grupos), no menos, probablemente por el tiempo extra. La diferencia no es estadísticamente significativa (IC 95% bootstrap cruza cero con n=32 partidos KO). No se añade ningún ajuste.

8 · La información del mercado: cuándo entra y cuándo no

Las casas de apuestas ofrecen cuotas para cada partido. Esas cuotas implican probabilidades — y esas probabilidades incorporan información que nuestros ratings no capturan completamente (estado de forma reciente, lesiones de última hora, etc.).

PITIA usa la información del mercado de forma diferente según el contexto:

Picks de partidoBlend 60/40 por partido. Cuando hay cuotas 1X2 capturadas para ese encuentro, las probabilidades 1X2 mezclan 60% modelo DC + 40% mercado (cuotas devigadas, es decir, con el margen de la casa ya retirado). La forma condicional del marcador (qué resultado exacto dentro de cada clase 1/X/2) sigue siendo 100% DC — el mercado 1X2 no aporta información de marcador exacto. Si no hay cuota capturada de ese partido, cae automáticamente a DC puro (cero regresión). Simulador de torneoHereda esas mismas probabilidades por partido. El cuadro de cruces usa las probs que devuelve el motor (ya con blend donde lo hay). No aplica un blend aparte de cuotas "quién gana el Mundial". Scorecard «vs mercado»DC puro, sin blend. El benchmark que compara PITIA contra el mercado se mide siempre a pelo: mezclar el mercado dentro y luego compararse con él sería circular.
Honestidad sobre el 40%: ese peso no está validado con el backtest de PITIA — hay demasiados pocos partidos de Mundial con cuotas capturadas (n≈128, por debajo del mínimo de 500 para que una diferencia de RPS deje de ser anecdótica). Es un prior razonado apoyado en evidencia externa (los ratings implícitos en las cuotas baten a los ratings de resultados fuera de muestra; Wunderlich & Memmert 2018), no una victoria demostrada sobre nuestros propios datos.

9 · Calibración, validación y honestidad estadística

Los dos parámetros principales del modelo (BASE_GOALS = 1.45 y K = 0.0020) se eligieron mediante grid search walk-forward: probando sistemáticamente combinaciones de valores, entrenando el modelo sobre WC2018 y midiendo el error de predicción sobre WC2022 (nunca al revés — eso sería hacer trampa).

La métrica de error que usamos es el RPS (Ranked Probability Score) — mide cuánto "se aleja" la distribución de probabilidades predicha de lo que realmente ocurrió. Un RPS menor es mejor. El modelo DC puro obtiene RPS ≈ 0.204, prácticamente igual al nivel de las cuotas de mercado.

Cuando comparamos dos variantes del modelo, siempre calculamos el intervalo de confianza al 95% de la diferencia (bootstrap con 10.000 resamples). Si el intervalo cruza cero, no podemos afirmar que una versión sea mejor — el tamaño de muestra no lo soporta.

El problema n: un Mundial tiene ~50-60 partidos. Con ese número, la diferencia de RPS entre dos modelos razonables suele ser estadísticamente indistinguible del ruido. Para hacer afirmaciones robustas sobre cuál modelo es mejor necesitaríamos cientos de partidos, no decenas. Por eso en PITIA no declaramos victorias sin IC explícito.

Stack técnico

MotorPython 3 stdlib only — sin numpy, scipy ni ML frameworks Worker edgeCloudflare Workers (TypeScript) — reimplementación del motor en JS; paridad verificada con tests Resultados en vivoCron horario en CF Worker → football-data.org → KV store → página (automático, sin intervención manual) HostingCloudflare Pages + Workers (edge global, sin servidor propio)

Sin fórmulas ni tecnicismos. Si acabas de llegar y no sabes nada de modelos matemáticos, empieza aquí.

¿Para qué sirve PITIA?

PITIA es un programa que hace dos cosas:

  • Pronostica partidos: para cada encuentro calcula cuánto espera marcar cada selección y, a partir de ahí, asigna una probabilidad a cada resultado posible — quién gana, si hay empate, y cuál es el marcador más probable.
  • Simula el torneo completo: hace que el ordenador "juegue" el Mundial miles de veces seguidas para estimar cuántas posibilidades tiene cada equipo de llegar a cuartos, semifinales, la final o ganar el título.

El objetivo concreto es ayudarte a elegir los pronósticos de tu porra de forma más inteligente que a ojo.

Paso 1 — ¿Quién es más fuerte?

El primer problema de predecir fútbol es saber cuánto mejor es un equipo que otro. No podemos usar el ranking FIFA directamente porque no está pensado para predecir resultados.

En su lugar, el motor da a cada selección un número de fuerza — lo que en estadística deportiva se llama un "rating". La idea es simple:

  • Si ganas a un equipo muy fuerte, tu número sube mucho.
  • Si ganas a uno débil, sube poco.
  • Si pierdes, baja en proporción.
  • Con el tiempo, los equipos que consistentemente ganan a rivales difíciles tienen un número alto y los que pierden tienen uno bajo.

Este tipo de sistema es el mismo que se usa para clasificar jugadores de ajedrez, tenis, o en el fútbol de clubes para los rankings de ligas. Lo importante no es el número de un equipo en sí — lo que importa es la diferencia entre los números de los dos equipos que se enfrentan.

Además de eso, el modelo ajusta dos factores contextuales que influyen mucho en el resultado:

  • Ventaja de campo: jugar en casa marca diferencia. Los equipos anfitriones del Mundial (EE.UU., México, Canadá) reciben un bono extra cuando juegan en su propio país.
  • Altitud: Ciudad de México está a 2.240 metros de altura. Los equipos que no entrenan en altura rinden peor allí — el motor los penaliza un 7% en el ataque.

Paso 2 — ¿Cuántos goles esperamos de cada equipo?

Sabiendo cuánto mejor es un equipo que el otro, el modelo calcula cuántos goles espera que marque cada uno. A esto lo llamamos "goles esperados".

El punto de partida es la media histórica: en Mundiales recientes, cada equipo marca de media 1.45 goles por partido. Si los dos equipos fueran idénticos en fuerza, ambos esperarían marcar 1.45.

Pero si uno es claramente mejor, su número sube y el del rival baja. Cuanto mayor es la diferencia de fuerza, mayor es la diferencia de goles esperados — pero de forma proporcional, no desbocada.

Ejemplo: España (muy fuerte) vs Marruecos (bastante fuerte). El modelo podría estimar 1.9 goles esperados para España y 1.1 para Marruecos en ese partido.

Paso 3 — ¿Qué marcadores son posibles y con qué probabilidad?

Con los goles esperados de cada equipo, el modelo calcula la probabilidad de cada marcador concreto: 0–0, 1–0, 1–1, 2–1, etc.

Usa una fórmula matemática llamada distribución de Poisson. Para entenderla sin tecnicismos: si en promedio España marca 1.9 goles por partido, esa distribución nos dice cuántas veces de cada 100 partidos similares acabarán con España marcando 0, 1, 2, 3 o más goles. Lo mismo para el rival.

Combinando los dos, el modelo construye una tabla completa con la probabilidad de todos los marcadores posibles — como un cuadro del tipo "¿cuántas posibilidades hay de que acabe 2–1?" para cada combinación imaginable.

El resultado es una lista de marcadores con sus probabilidades. Esa lista es la base de todo lo demás.

Por qué el marcador "más probable" NO es siempre el mejor pick

Aquí está la clave que diferencia a PITIA de simplemente "elegir lo más probable".

En una porra con 3 puntos por acertar el marcador exacto y 1 punto por acertar solo quién gana o empata, elegir el marcador óptimo no es lo mismo que elegir el más probable. Importa cuántos puntos te va a dar de media.

Ejemplo real del motor — Japón tiene un 54% de ganar:
El marcador más probable tomado solo es el 1–1 (empate típico). Pero si apuestas 1–1 solo ganas puntos cuando hay empate (28% de las veces), y 3 puntos solo si aciertas exactamente 1–1 (10%).
Si en cambio apuestas 1–2 (Japón gana), ganas 1 punto siempre que Japón gane por cualquier marcador (54%) y 3 puntos si aciertas el 1–2 exacto (12%). En total, este pick da 0.32 puntos más de media que el 1–1.

El motor calcula esta media de puntos para los 81 marcadores posibles y elige el que da más. En muchos partidos el resultado coincide con el más probable — pero cuando hay un favorito claro, la diferencia puede ser significativa.

Los niveles de confianza del pick

No todos los picks son igual de fiables. El motor indica el nivel de confianza con tres etiquetas:

3ptEl resultado está bastante concentrado. El marcador concreto sugerido tiene más de un 11.5% de probabilidad — nada fácil en fútbol. Aquí sí merece la pena apostar por ese marcador exacto. 1ptHay un equipo claramente favorito, pero los marcadores posibles de su victoria están repartidos entre muchas opciones (1–0, 2–0, 2–1…). El pick da puntos si el favorito gana, pero el marcador exacto es un bonus, no una expectativa. El partido es una moneda al aire: ningún resultado supera el 45% de probabilidad. Cualquier marcador que elijas tiene el mismo valor objetivo — pon el que te parezca.

El simulador: jugar el Mundial miles de veces

Para saber con qué probabilidad llega cada selección a la final o gana el título, el modelo hace algo sencillo pero potente: simula el torneo completo 10.000 veces.

En cada simulación, el ordenador "juega" todos los partidos pendientes usando los goles esperados que ya calculó, pero añadiendo azar (como si lanzara unos dados cargados — más probable que salga lo que espera el modelo, pero cualquier resultado puede ocurrir). Al final de cada simulación hay un campeón.

Después de 10.000 simulaciones, si Francia gana en 2.800 de ellas, su probabilidad de ser campeón es un 28%. Así para cada equipo y cada ronda.

¿Para qué sirve esto en la porra? Para entender el contexto de cada pick de fase avanzada. Si un equipo tiene solo un 3% de llegar a semifinales, elegirlo para que llegue allí es una apuesta de riesgo muy alto. Si otro tiene un 28% de ganar el torneo, su presencia en la final es algo que el modelo ve como bastante plausible.

¿Usa las cuotas de las casas de apuestas?

Sí, y de una forma sencilla de explicar:

  • Para los picks de partido (lo que ves en "Picks disponibles"): cuando hay cuota disponible de ese partido, el modelo mezcla 60% de sus propios cálculos + 40% de lo que dicen las casas. Las casas recogen información muy reciente — lesiones de última hora, estado de forma — que los ratings históricos no capturan del todo. Si no hay cuota de ese partido, el modelo tira solo de sus cálculos.
  • Para el simulador del torneo (quién llega a la final, quién gana): usa esas mismas probabilidades por partido, así que hereda la mezcla donde la haya. No añade nada aparte.
  • Para la nota "vs mercado" (la comparación que mide si PITIA acierta tanto como las casas): ahí no se mezcla nada — se compara el modelo a pelo contra las casas, porque mezclarlas y luego compararse con ellas haría trampa.

Un apunte honesto: ese 40% es una decisión razonada, no algo demostrado con los datos de PITIA — hay demasiados pocos partidos de Mundial con cuotas guardadas para probar que mejore de verdad. Se apoya en que, en general, las cuotas contienen información muy buena.

¿Qué precisión tiene? Siendo honestos

En términos técnicos, la precisión del modelo es parecida a la de las propias casas de apuestas. Eso suena humilde — y lo es. Batir sistemáticamente las predicciones de las casas de apuestas (que emplean equipos de analistas con décadas de datos) es extremadamente difícil y con solo 50-60 partidos por Mundial no podemos siquiera medirlo bien estadísticamente.

Pero eso no es lo que importa para tu porra. Lo que importa es que en una porra de 361 personas, la mayoría de los participantes eligen sin ningún modelo: van a intuición, al equipo que les gusta, al favorito obvio. Usar un sistema que calcula el pick que maximiza los puntos esperados en cada partido, aunque no sea perfecto, ya te pone en una posición estructuralmente mejor que la mayoría.

¿Por qué se equivoca? (y eso es completamente normal)

Cuando el modelo dice "España tiene un 70% de ganar", no significa que España vaya a ganar 7 de cada 10 partidos exactamente contra ese rival. Significa que en partidos con ese nivel de diferencia de calidad, el favorito gana aproximadamente esa proporción de veces a largo plazo.

En un partido concreto, puede pasar cualquier cosa — y pasa. El fútbol tiene mucho azar. Un gol en el primer minuto, un penalti polémico, el portero que para lo imparable: cualquier evento puede dar la vuelta a lo que el modelo esperaba.

Lo que intenta el modelo es que, sumando todos los pronósticos de la porra, las decisiones tomadas con estas probabilidades sean mejores que las tomadas al azar o por intuición. No en cada partido — en el total.

⚠️ PITIA es un proyecto de análisis deportivo. Las predicciones llevan incertidumbre inherente y no constituyen asesoramiento para apuestas con dinero real.

Guía independiente de estadística, mercados de apuestas y teoría de juegos. Sin jerga innecesaria, de cero a avanzado.

1 · Probabilidad: el cimiento de todo

Una probabilidad es un número entre 0 y 1 que mide cuánto de probable es un evento. 0 = imposible, 1 = seguro, 0.5 = moneda justa. En apuestas se expresa en porcentaje.

Dos conceptos clave antes de seguir:

  • Frecuencia vs creencia: la probabilidad de un partido no se puede medir repitiendo el mismo partido miles de veces (como con una moneda). Es una creencia calibrada — una estimación del analista o del mercado sobre cuánto de probable es cada resultado, dados todos los datos disponibles.
  • Calibración: un modelo (o una persona) está calibrado si, cuando dice "70%", eso ocurre realmente en 7 de cada 10 casos similares. Estar calibrado no significa acertar siempre — significa que tus probabilidades reflejan fielmente la realidad a largo plazo.

La diferencia entre un buen pronosticador y uno malo rara vez se ve en un resultado individual. Se ve en miles de predicciones: ¿cuando dijiste 70%, cuántas veces ocurrió? Si ocurrió el 50% de las veces, tu "70%" estaba sobreestimado — eso es mal calibrado.

2 · Cuotas: probabilidades con traje

Una cuota es la forma en que una casa de apuestas expresa una probabilidad — y también cuánto paga si aciertas. Hay tres formatos:

Europea (decimal)2.50 → multiplicas tu apuesta por 2.50. Más claro, el más usado hoy. Americana (moneyline)+150 ganas 150 por cada 100 apostados. −200 tienes que apostar 200 para ganar 100. Usada en EE.UU. Fraccionaria3/2 ganas 3 por cada 2 apostados. Usada en UK.

La conversión a probabilidad es la clave:

Cuota decimal 2.50 → probabilidad implícita = 1 / 2.50 = 40%
Cuota decimal 1.40 → probabilidad implícita = 1 / 1.40 = 71.4%
Cuota decimal 6.00 → probabilidad implícita = 1 / 6.00 = 16.7%

Cuota baja = favorito (alta probabilidad, paga poco). Cuota alta = outsider (baja probabilidad, paga mucho si entra). La cuota y la probabilidad son siempre inversamente proporcionales.

3 · El margen: así gana siempre la casa

Si lanzas una moneda justa, la cuota "correcta" a cada lado es 2.00 (50% de prob). Pero ninguna casa te da 2.00 — te dan 1.91 o 1.90. ¿Por qué? Suma las probabilidades implícitas:

1/1.91 + 1/1.91 = 52.4% + 52.4% = 104.8%
El exceso sobre 100% = 4.8% → ese es el margen (también: "vig", "vigorish", "overround", "juice")

El margen es la comisión de la casa. Significa que sea cual sea el resultado, la casa cobra por intermediar. No necesita acertar qué equipo gana — necesita tener dinero apostado en todos los lados y cobrar su porcentaje.

Los márgenes típicos por tipo de casa:

Pinnacle (sharp)~2% — el mínimo del sector. Por eso es la referencia. Casas de volumen4–6% en ligas top (fútbol, basket). 8–12% en menores. Apuestas especiales10–20% o más. Marcadores exactos, primera cartulina, etc. Lotería / Euromillones~50% — el "margen" más grande que existe. El 50% del dinero apostado se queda el estado.

Devigging: para comparar probabilidades entre casas o extraer la probabilidad "limpia" sin margen, hay que eliminar el overround. El método más sencillo (normalización) divide cada prob implícita entre la suma total. Métodos más sofisticados (Shin, power) asignan el margen de forma asimétrica según la prob del evento.

4 · Tipos de operadores: no todas las casas son iguales

El ecosistema de apuestas tiene actores muy distintos con incentivos distintos:

  • Books tradicionales (square books): orientados al gran público. Márgenes altos, límites bajos en cuanto detectan a alguien que gana de forma consistente. Si eres rentable, te limitan o expulsan. Ejemplos: Bet365, William Hill, Bwin.
  • Casas sharp (libro duro): como Pinnacle. Margen mínimo, no expulsan a los que ganan — al contrario, los buscan porque su dinero mejora la línea. El apostante ganador aporta información, no es un problema. Son la referencia de eficiencia.
  • Exchanges (intercambios): como Betfair. No es una casa — es una bolsa donde apuestas contra otros usuarios, no contra la casa. La "casa" solo cobra comisión sobre ganancias (~5%). Las cuotas las pone el mercado. Puedes apostar a que algo NO ocurra (lay). Generalmente las cuotas son mejores que en books convencionales para eventos populares.
  • Asian handicap books: operan en mercados de hándicap asiático, con márgenes muy bajos y límites altos. Referencia en fútbol asiático.

Para un apostante que quiere ventaja real, la jerarquía es: exchange → sharp book → rest. Para un apostante recreacional, cualquiera sirve — pero nunca apuestes contra bonificaciones de casas square sin entender sus restricciones.

5 · La línea: apertura, movimiento y cierre

"La línea" son las cuotas de un evento en un momento dado. No es fija — evoluciona desde que la casa la publica hasta el inicio del evento.

  • Línea de apertura: las primeras cuotas publicadas, días o semanas antes. Basadas en el modelo interno de la casa. En este momento hay menos información disponible y más error potencial.
  • Movimiento de línea: cuando entra dinero a un lado, la casa mueve la cuota para reequilibrar o para reflejar nueva información. Una cuota que baja = más dinero entrando a ese lado.
  • Steam move: movimiento brusco y sincronizado en múltiples casas al mismo tiempo. Señal de que apostantes profesionales (o redes coordinadas) han detectado valor y están actuando.
  • Reverse line movement (RLM): la cuota se mueve en dirección contraria a donde va el dinero del público. Indica que el dinero "inteligente" está apostando en el lado contrario al favorito del público.
  • Línea de cierre: las cuotas justo antes del evento, cuando ya no se pueden hacer más apuestas. Ha absorbido toda la información disponible: alineaciones, lesiones, modelos de la casa, dinero de profesionales. Es el consenso del mercado.

La línea de cierre de Pinnacle es el patrón oro de la industria: el mejor estimador colectivo de probabilidades reales disponible públicamente para fútbol.

6 · Por qué la línea de cierre es casi imbatible

Piensa en la línea de cierre como el precio de una acción justo antes de que cierre el mercado. En esa acción han operado durante horas miles de personas con información, modelos y dinero: analistas profesionales, fondos de inversión, inversores minoristas, algoritmos. El precio final refleja todo eso.

Lo mismo pasa con las cuotas de cierre en apuestas. En el momento justo antes del partido, en esa cuota han apostado:

  • El equipo de analistas internos de la casa, con décadas de datos históricos y modelos estadísticos.
  • Apostantes profesionales con modelos propios, acceso a informes de lesiones y datos de entrenamiento.
  • Sindicatos de apuestas con millones de euros en juego y equipos dedicados exclusivamente a esto.
  • El mercado asiático, el mayor mercado de apuestas deportivas del mundo, donde se mueven las cantidades más grandes.

Cada uno de ellos ha empujado la cuota hacia donde cree que es correcta. Si hubiera un error claro (un equipo infravalorado), habrían apostado a ese lado y la cuota se habría movido hasta corregirlo. El resultado es una inteligencia colectiva que es extremadamente difícil de superar de forma sistemática.

Batirla consistentemente significaría saber, partido tras partido, más que todos ellos juntos. Casi nadie lo consigue a largo plazo. No significa que la línea sea perfecta — significa que los errores que quedan son pequeños y difíciles de explotar sistemáticamente. En eventos muy apostados (Mundiales, Champions League), la eficiencia es máxima. En partidos de ligas poco conocidas con bajo volumen de apuestas, hay más margen de error y, por tanto, más oportunidad.

7 · Valor esperado (EV): la métrica fundamental

El valor esperado (EV, expected value) es el promedio de lo que ganarías o perderías por unidad apostada si repitieras esa apuesta infinitas veces.

EV = P(ganar) × ganancia_neta − P(perder) × apuesta
Ejemplo: apuestas 10€ a cuota 3.00 (prob real 40%)
EV = 0.40 × 20 − 0.60 × 10 = 8 − 6 = +2€ por apuesta

EV positivo = apuesta con ventaja a largo plazo. EV negativo = apuesta perdedora a largo plazo, por mucho que "entre" alguna vez. La diferencia entre el apostante amateur y el profesional: el amateur mira si ganó o perdió; el profesional mira si el EV era positivo.

La forma de encontrar EV positivo es tener una estimación de la probabilidad real mejor que la que refleja la cuota. Si crees que Brasil tiene un 60% de ganar y la cuota implica un 50%, hay valor — aunque Brasil pueda perder.

El error más común: "aposté 100 y gané 250, por tanto fue una buena apuesta". No. Fue una apuesta que entró. Podía haber sido una apuesta con EV negativo que simplemente tuvo suerte. Y también al revés: una apuesta con EV muy positivo puede perder. A largo plazo, solo el EV decide quién gana.

8 · CLV — Closing Line Value: la única prueba de ventaja real

Si la línea de cierre es el mejor estimador de la probabilidad real, entonces conseguir una cuota mejor que el cierre es la evidencia más sólida de que tienes ventaja.

CLV = cuota que tomaste / cuota de cierre − 1

Tomaste Brasil a 2.10 el lunes. Cierre: 1.85.
CLV = 2.10 / 1.85 − 1 = +13.5% → tomaste un 13.5% más de valor que el mercado maduro.

El CLV importa porque:

  • Los resultados a corto plazo tienen mucho ruido. 50 partidos no dicen nada estadísticamente.
  • El CLV acumulado sobre cientos de apuestas sí dice algo: si consistentemente coges cuotas mejores que el cierre, tienes ventaja real — independientemente de los resultados.
  • Es la métrica que usan los apostantes profesionales para medir la calidad de sus apuestas, no su P&L a corto plazo.

Un historial de CLV positivo pero con pérdidas es una señal de mala suerte temporal. Un historial de CLV negativo pero con ganancias es una señal de buena suerte temporal.

9 · Cuánto apostar: el problema de la gestión del riesgo

Supongamos que has encontrado una apuesta con EV positivo — tienes ventaja. ¿Cuánto dinero pones?

La respuesta ingenua es "todo lo que pueda" — si tengo ventaja, ¿no es mejor apostar más? No. Si apuestas demasiado y tienes una racha mala (que inevitablemente ocurrirá, incluso con ventaja), puedes perder tanto capital que ya no puedes seguir apostando. La ruina no es una posibilidad teórica — es matemáticamente inevitable si apuestas fracciones demasiado grandes del bankroll.

El criterio de Kelly es la solución matemática a este problema. Fue desarrollado en los años 50 por un científico de Bell Labs (John Kelly) estudiando transmisión de señales, y resulta que aplica perfectamente a apuestas y finanzas. La fórmula da la fracción exacta del bankroll que maximiza el crecimiento a largo plazo sin arriesgarse a la ruina:

Fracción óptima = (prob_ganar × pago_neto − prob_perder) / pago_neto
donde pago_neto = cuota − 1 (lo que ganas por cada 1€ apostado)

Ejemplo concreto: crees que hay un 55% de probabilidad real de que gane un equipo. La cuota es 2.00 (o sea, ganas 1€ neto por cada 1€ apostado):

Fracción = (0.55 × 1 − 0.45) / 1 = 0.10 → apuesta el 10% de tu bankroll

En la práctica, casi todos los profesionales usan una fracción reducida de Kelly (un cuarto o la mitad) por dos razones: primero, tus estimaciones de probabilidad no son perfectas y pueden tener error; segundo, Kelly completo genera una varianza muy alta — habrá períodos de pérdidas intensas incluso con ventaja real, y psicológicamente es difícil aguantar.

La lección clave: apostar más de lo que Kelly recomienda destruye el bankroll a largo plazo, aunque tengas ventaja real. La gestión del riesgo no es un complemento al modelo — es parte esencial del modelo.

10 · Teoría de juegos: ¿contra quién estás compitiendo?

La teoría de juegos es la rama de las matemáticas que estudia cómo toman decisiones los participantes en situaciones donde el resultado de cada uno depende de lo que hagan los demás. En apuestas, es clave entender contra quién juegas exactamente, porque define completamente qué estrategia es óptima.

  • Juego de suma cero: lo que un jugador gana es exactamente lo que otro pierde. Apostar contra la casa es un juego de suma ligeramente negativa — el margen de la casa hace que el total apostado siempre supere al total pagado. En un exchange entre dos apostantes sería suma cero, pero la comisión de la plataforma lo convierte en ligeramente negativo también.
  • Juego de suma no cero: el total del sistema puede variar. En una porra de oficina donde todos aportan una cuota y hay premios por posición, el dinero total existe independientemente de los resultados deportivos — los participantes compiten por redistribuirlo.

La teoría de juegos estudia también los equilibrios: situaciones en las que ningún jugador puede mejorar su resultado cambiando su estrategia, dado lo que hacen los demás. El economista John Nash demostró que estos equilibrios existen en casi cualquier juego — y son importantes en apuestas.

En un mercado de apuestas muy líquido (muchos apostantes con mucho capital), la línea de cierre es el equivalente de ese equilibrio: si hubiera una cuota "errónea", alguien ya habría apostado contra ella hasta corregirla. Cuando llegas tú, ya no hay cuotas erróneas que explotar — están corregidas. La implicación práctica es que la pregunta correcta no es "¿tengo razón sobre el resultado?" sino "¿sé algo que el mercado no sabe todavía, antes de que lo corrija?"

11 · Porras, pools y torneos: un juego diferente

Una porra de oficina o un fantasy sport NO es apostar contra la casa. Es competir contra otros participantes. Eso cambia la estrategia óptima radicalmente según las reglas de pago:

  • Puntuación absoluta (premiada por rango): gana quien más puntos acumula en total. Aquí la estrategia óptima es pura predicción: elegir siempre el resultado con mayor valor esperado de puntos, independientemente de lo que haga el resto. No tienes incentivo a diferenciarte, tienes incentivo a acertar más.
  • Bote compartido (se reparte entre los que aciertan): si 50 personas aciertan el mismo resultado, te llevas 1/50 del bote. Si solo 3 lo aciertan, te llevas 1/3. Aquí la estrategia óptima tiene un componente de diferenciación: en eventos donde la mayoría va al favorito obvio, el valor esperado de apostar al outsider puede ser mayor aunque el outsider tenga menos probabilidad de ganar, porque el cobro es mayor si entras solo.
  • Torneos de eliminación: necesitas sobrevivir ronda a ronda. La estrategia óptima puede requerir asumir riesgo cuando vas por detrás (necesitas recuperar) y ser conservador cuando vas por delante. La teoría de la "postura" óptima depende de tu posición en el torneo.

El error más común en porras: aplicar estrategia de bote compartido en una porra de puntuación absoluta (o viceversa). El marco matemático es completamente distinto.

12 · Sesgos cognitivos: los errores del apostante

El cerebro humano tiene varios atajos mentales que funcionan bien en la vida cotidiana pero son veneno en contextos probabilísticos:

  • Falacia del jugador (gambler's fallacy): creer que si ha salido cara 5 veces seguidas, es más probable que salga cruz. Las tiradas son independientes. Una racha no cambia la probabilidad del próximo evento.
  • Sesgo de recencia (recency bias): sobrevalorar los últimos resultados. Un equipo que lleva 3 victorias parece imbatible; uno con 3 derrotas parece en crisis. Los modelos estadísticos ponderan correctamente todo el historial — el cerebro no.
  • Sesgo favorito-outsider (favorite-longshot bias): el público consistentemente sobreestima la probabilidad de los outsiders (por el atractivo del pago alto) y subestima la de los favoritos. Las cuotas de outsiders reflejan esta demanda — estadísticamente, las cuotas de favorito ofrecen mejor valor por esta razón.
  • Falacia de la mano caliente (hot hand fallacy): creer que un apostador o equipo "en racha" seguirá ganando. La mayor parte de las rachas son ruido estadístico. Solo las rachas con una causa estructural identificable (ventaja de forma física real, cambio de entrenador, etc.) merecen ajuste.
  • Sesgo de confirmación: buscar información que confirme lo que ya crees. Un apostante que cree que España va a ganar buscará noticias positivas de España y descartará las negativas. Un modelo no hace esto — pondera todo igual.
  • Pérdida de anclaje (loss aversion): las pérdidas duelen el doble que las ganancias del mismo tamaño producen satisfacción. Eso lleva a apostar más para recuperar lo perdido ("tilting"), que es exactamente lo que no hay que hacer.

13 · Cómo funcionan los modelos estadísticos de fútbol

Un modelo predictivo de fútbol convierte información histórica (partidos pasados, goles, contexto) en probabilidades de resultado para un partido futuro. Estos son sus componentes desde cero:

1. Sistema de rating — medir la fuerza de cada equipo

Antes de predecir nada necesitas una forma de medir cuán bueno es cada equipo. Los sistemas más comunes:

  • Elo: cada equipo empieza con un número base. Cuando ganas, sube; cuando pierdes, baja. El cambio es proporcional a cuánto te sorprende el resultado — ganar a un rival mucho más fuerte sube más tu rating que ganar a uno más débil. Sencillo y robusto; fue inventado para ajedrez pero funciona bien en deportes de equipo.
  • Ratings implícitos del mercado: las cuotas de "quién gana el torneo" ya incorporan las probabilidades que le asigna el mercado a cada equipo. Se puede invertir esa relación para extraer un rating implícito sin necesidad de datos históricos propios.
  • xG (Expected Goals — Goles esperados): en lugar de contar los goles marcados, cuenta la calidad de las ocasiones. Un remate solo ante el portero desde dentro del área pequeña tiene un xG de 0.80 (se convierte el 80% de las veces en estadística). Sumar xG de un partido da una medida más estable del rendimiento que los goles reales, que tienen mucho azar. Los modelos basados en xG necesitan datos de ocasiones, no solo resultados.

2. Traducir el rating en goles esperados y marcadores

Una vez tienes el rating de ambos equipos, necesitas convertir la diferencia en probabilidades de marcador. La herramienta más común es la distribución de Poisson: una fórmula matemática que, dado un número medio de goles esperados (λ), calcula la probabilidad de que ocurran exactamente 0, 1, 2, 3… goles. Aplicarla a ambos equipos de forma independiente y multiplicar da la probabilidad de cada marcador posible.

El problema: Poisson asume que los goles de cada equipo son completamente independientes entre sí. En los marcadores muy bajos (0–0, 1–0, 0–1, 1–1) los datos reales muestran una pequeña desviación. La corrección de Dixon-Coles ajusta exactamente esos cuatro marcadores con un pequeño factor para corregir ese sesgo, dejando el resto intactos.

3. Mezclar con el mercado

Ningún modelo propio bate sistemáticamente la línea de cierre. La práctica habitual entre los analistas serios es mezclar la predicción propia con las cuotas del mercado en alguna proporción — por ejemplo, 60% modelo propio y 40% mercado. El peso óptimo se determina midiendo cuál combinación predijo mejor en datos históricos. Cuanto más eficiente es el mercado en ese deporte, más peso suele merecer el mercado en la mezcla.

4. Validar sin trampa: entrenamiento y test temporal

El error clásico al construir modelos es ajustar los parámetros sobre los mismos datos en los que luego mides el rendimiento. Siempre dará resultados artificialmente buenos — el modelo simplemente "memorizó" los datos. La validación correcta es temporal: usar datos pasados para ajustar el modelo y datos futuros para medir si realmente predice bien. Esto se llama walk-forward validation.

5. Medir la calidad de las predicciones: el RPS

Para un resultado 1X2 (victoria local, empate, victoria visitante), el error de predicción se mide con el RPS (Ranked Probability Score). Mide cuánto "se aleja" la distribución predicha de lo que realmente ocurrió. Un RPS de 0 es perfección; cuanto más bajo, mejor. La línea de cierre de Pinnacle alcanza RPS ≈ 0.19–0.21 en fútbol de selecciones — esa es la frontera práctica que los modelos públicos pueden aspirar a alcanzar.

Glosario rápido

CuotaMultiplicador de pago. Prob implícita = 1/cuota. Vig / overroundMargen de la casa: suma de probs implícitas − 100%. DeviggingEliminar el margen para obtener probs "limpias". Sharp / SquareApostante profesional (sharp) vs casual/público (square). Línea de aperturaPrimeras cuotas publicadas. Más errores, más oportunidades. Línea de cierreCuotas finales antes del evento. Consenso del mercado. Steam moveMovimiento brusco y sincronizado en varias casas = dinero profesional. CLVClosing Line Value: cuota tomada / cierre − 1. Medida de ventaja real. EVExpected Value: ganancia media esperada por apuesta. KellyFracción óptima del bankroll a apostar dado el EV y la varianza. RPSRanked Probability Score: métrica de calibración para resultados 1X2. ExchangeBolsa de apuestas entre usuarios (Betfair). No hay casa enfrente. LayApostar a que algo NO ocurre (solo posible en exchanges). PoissonDistribución estadística que modela eventos raros en un intervalo. EloSistema de rating relativo: sube cuando ganas a rivales más fuertes. xGExpected Goals: calidad acumulada de ocasiones, más estable que goles.
⚠️ Guía educativa sobre estadística, mercados y teoría de juegos. No constituye asesoramiento para apuestas con dinero real.

Especificación completa del pipeline, notación exacta y honestidad estadística explícita — pensada para un auditor con formación en física computacional / métodos Monte Carlo, no para un lector general. Todas las constantes citadas están tomadas literalmente de engine.py, devig.py, worker/src/engine.ts y backtest_*.py; ninguna es aproximada.

0 · Alcance y estructura del documento

PITIA es dos sistemas acoplados por el mismo modelo de partido: (a) un modelo generativo por partido (Elo → λ → Poisson+Dixon-Coles, opcionalmente fusionado con mercado devigado) que produce una distribución de probabilidad cerrada sobre el marcador; y (b) un simulador Monte Carlo del torneo que compone ese modelo partido-a-partido sobre la estructura real del bracket para estimar distribuciones outright (campeón, finalista, etc.) que no tienen forma cerrada por la complejidad combinatoria del cuadro. Todo lo mostrado en producción (picks, marcador exacto, 1X2) sale del modelo (a) de forma analítica — la matriz de marcador se normaliza exactamente, no se estima por muestreo. El Monte Carlo (b) solo se usa para las probabilidades de fases del torneo, donde no hay alternativa cerrada.

Secciones: 1) rating de fuerza y su fusión opcional con mercado outright · 2) mapeo determinista rating→λ · 3) modelo de marcador Poisson+Dixon-Coles · 4) devigging Shin de cuotas 1X2 · 5) fusión con mercado por partido (mecanismo exacto, distinto del de la sección 1) · 6) motor Monte Carlo del torneo: PRNG, muestreo, rejection sampling, ausencia de reducción de varianza · 7) estructura determinista del bracket y resolución de penaltis · 8) modelo de goleador · 9) selección de pick vía maximización de valor esperado · 10) metodología de validación (RPS, DM, bootstrap, isotónica) y el resultado real del gate · 11) objeciones que un auditor de Monte Carlo debería plantear, con respuesta honesta a cada una.

1 · Rating de fuerza: Elo estático + fusión opcional con mercado (z-score)

El rating base es un Elo clásico (D.TEAMS), pre-calculado y congelado durante el torneo — no hay actualización bayesiana ni recursiva tras cada resultado jugado. Esto fue una decisión medida, no una omisión: actualizar Elo intra-torneo (K=60, probado explícitamente) empeoró el RPS walk-forward (0.2037 → 0.2090) con un IC 95% bootstrap que cruza cero — sin evidencia de mejora, se descartó (ver §10 y §11 sobre disciplina de no-comparación-sin-IC).

Existe un mecanismo opcional de fusión con la fuerza implícita en cuotas outright (campeón) pre-torneo, en espacio estandarizado para no romper la escala Elo:

z_elo(t) = (Elo(t) − μ_Elo) / σ_Elo
z_mkt(t) = (−ln cuota_outright(t) − μ_m) / σ_m   (μ_m, σ_m sobre los equipos con cuota)
z_blend(t) = (1 − W_MARKET) · z_elo(t) + W_MARKET · z_mkt(t)
Elo_eff(t) = μ_Elo + σ_Elo · z_blend(t)

Con W_MARKET = 0.40. σ se calcula como desviación estándar poblacional (divisor N, no N−1) sobre el subconjunto de equipos con cuota capturada; solo esos equipos se remapean, el resto conserva su Elo base intacto.

Actualmente desactivado: USE_MARKET = False. Motivo documentado (ADR, DECISIONS.md): las cuotas outright son una captura estática pre-torneo sin mecanismo de refresco. Con el torneo en marcha, equipos ya eliminados siguen contribuyendo a μ_m/σ_m, sesgando el z-score de los equipos vivos. Sin infraestructura para refrescar cuotas outright in-tournament, apagar el blend es el default seguro — no es una limitación del método en sí, sino de la frescura del dato de entrada.

2 · Mapeo rating → intensidad de gol (λ): forma funcional exacta

El rating efectivo entra en un modelo log-lineal exponencial sobre la diferencia de Elo — no una relación lineal directa gol-Elo, sino un cociente multiplicativo entre λ_local y λ_visitante que crece/decae exponencialmente con Δrating:

e_h = Elo_eff(local) + host_bonus(local, sede)
e_a = Elo_eff(visitante) + host_bonus(visitante, sede)
λ_h = BASE_GOALS · exp( K · (e_h − e_a) )
λ_a = BASE_GOALS · exp( K · (e_a − e_h) )

con BASE_GOALS = 1.45, K = 0.0020 (ambos calibrados IN-SAMPLE, ver §10). Nótese que el bono de anfitrión (HOST_ELO_BONUS = 55 puntos Elo, solo para México/Canadá/EE.UU. jugando en sedes propias) entra dentro del exponente, no como multiplicador directo sobre λ: su efecto neto es un factor multiplicativo de exp(K·55) ≈ exp(0.11) ≈ 1.116× sobre el λ del anfitrión relativo al que tendría sin bono — el 55 no es "1.55×" ni ningún número redondo intuitivo, es el resultado de pasar por la exponencial.

Ajustes multiplicativos post-exponencial, aplicados en este orden:

Disponibilidadλ *= D.AVAILABILITY[equipo] (default 1.0; penaliza bajas/lesiones conocidas) Altitudλ *= 0.93 si la sede está en D.ALTITUDE_CITIES y el equipo no está en D.ALTITUDE_ACCLIMATIZED (aplicado por separado a cada lado, no simétrico) Cap duroλ = min(λ, 6.0) — trunca la cola alta. Garantiza terminación del rejection sampler (§6) pero recorta la masa de probabilidad de partidos con desequilibrio extremo (p. ej. un λ "verdadero" de 7.2 se trata como 6.0); no hay evidencia de que esto ocurra en la práctica con los equipos de este Mundial, pero es una asunción no verificada empíricamente sobre λ > 6.

3 · Modelo de marcador: Poisson bivariado con corrección Dixon-Coles

El marcador (i,j) se modela como el producto de dos Poisson univariados independientes en el soporte no ajustado, corregido por un factor τ que reasigna masa únicamente en las 4 celdas de marcador bajo — la formulación original de Dixon & Coles (1997) para capturar la subestimación empírica de empates y victorias por 1 gol bajo independencia pura:

P(i,j) = [e^−λ_h λ_h^i / i!] · [e^−λ_a λ_a^j / j!] · τ(i,j)  /  Z
τ(0,0) = 1 − λ_h·λ_a·ρ  ·  τ(1,0) = 1 + λ_a·ρ  ·  τ(0,1) = 1 + λ_h·ρ  ·  τ(1,1) = 1 − ρ  ·  τ(i,j)=1 en el resto
Z = Σ_{i,j=0}^{9} P_Poisson(i,j)·τ(i,j)   (normalización exacta tras truncar en MAX_GOALS=9)

Con ρ = −0.02 (grid search IN-SAMPLE, ver §10) — muy cerca de cero, indicando que la dependencia adicional entre goles de ambos equipos más allá de lo que ya captura el nivel de λ es mínima en Mundiales. El truncamiento a 9 goles por lado (matriz 10×10, 100 celdas) descarta una cola de probabilidad astronómicamente pequeña con λ≤6 (P(X>9) para Poisson(6) ≈ 8.4×10⁻⁴ antes de normalizar), sin impacto práctico.

Importante para un lector con formación en MC: esta matriz es la distribución de marcador de producción — se usa analíticamente para 1X2, marcador exacto y E[pts] (§9). El simulador Monte Carlo (§6) no re-deriva esta distribución de forma independiente; la reproduce por muestreo (rejection sampling ponderado por τ), como verificación de consistencia interna, no como fuente alternativa de verdad.

4 · Devigging de cuotas: método de Shin (1993)

Las cuotas de mercado (1X2) incluyen un margen (overround) que hay que retirar antes de tratarlas como probabilidades. PITIA implementa dos métodos; el usado por defecto en producción y en el backtest es Shin (1993), no el power/multiplicativo más simple.

Shin modela una fracción z de apostantes con información privilegiada frente al resto (uninformed) y resuelve la probabilidad "limpia" p_i de cada resultado i a partir de la cuota implícita q_i = 1/cuota_i:

p_i(z) = [ √(z² + 4(1−z)q_i²) − z ] / [ 2(1−z) ]

z* es el único valor en [0, 1) tal que Σ p_i(z*) = 1 — en z=0, Σp_i(0) = Σq_i = Q > 1 (el overround); Σp_i(z) decrece monótonamente con z, lo que permite resolver z* por bisección (64 iteraciones, cota de error final ≈ 2⁻⁶⁴ en el intervalo [0, 1−10⁻¹⁰) — precisión numérica muy por encima de lo que exige el problema, coste O(64) por partido). El método power alternativo (fallback) hace el mismo tipo de bisección pero sobre un exponente k∈[1,30] tal que Σ q_i^k = 1, un modelo más simple con sesgo conocido hacia sobre-corregir cuotas altas (favoritos largos).

Uso en backtestDevig Shin de las cuotas de cierre como benchmark del gate T036 (§10) — se descartó usar cuotas de apertura por falta de fuente gratuita histórica (decisión T021). Uso en producciónDevig Shin de los snapshots de cuotas 1X2 capturados vía the-odds-api (worker), alimentando la fusión por partido de §5.

5 · Fusión con mercado por partido — mecanismo exacto (distinto de §1)

No confundir con el z-score blend de §1 (a nivel de rating outright, apagado). Este es un segundo mecanismo, independiente, que opera en el worker de producción (worker/src/engine.ts::outcomeProbsBlended) sobre las probabilidades 1X2 de ese partido concreto, cuando hay cuota capturada:

b_H = (1−w)·p_H + w·m_H  (idem b_D, b_A)   — luego renormalizado a Σ=1
s_H = b_H / p_H  (idem s_D, s_A)   — factor de reescala por clase de resultado
M'(i,j) = M(i,j) · s_H  si i>j,  · s_D  si i=j,  · s_A  si i<j

con w = MARKET_BLEND_W = 0.40, p_H/p_D/p_A las marginales DC puras (suma de la matriz por clase de resultado) y m_H/m_D/m_A las probabilidades devigadas Shin. El punto matemáticamente no trivial: reescalar toda la matriz por un factor constante dentro de cada clase preserva exactamente la distribución condicional de marcador exacto dado el signo — P(i,j | resultado) no cambia, solo cambia la masa total asignada a cada clase de resultado. Es decir, el mercado corrige "¿quién gana?" pero el "¿por cuánto?" condicional al ganador sigue siendo 100% Dixon-Coles. Sin snapshot de cuotas para ese partido (o fallo de lectura del KV), degrada automáticamente a DC puro (w efectivo = 0), sin caso especial visible para el consumidor de la API.

Tensión honesta: el gate T036 (§10) estimó, por grid search de 101 puntos minimizando log-loss OOS sobre el mismo dataset walk-forward, un peso óptimo w* = 0.91 — muy por encima del 0.40 en producción. No se adoptó w* porque el propio gate fue rechazado (n=128 < 500; el modelo DC en ese gate perdía significativamente contra el mercado, IC 95% de ΔRPS = [+0.0116, +0.0624], estrictamente positivo). Es decir: ni 0.40 ni 0.91 tienen respaldo estadístico interno suficiente — 0.40 es un prior externo razonado (evidencia de que las cuotas incorporan información fuera de muestra; Wunderlich & Memmert 2018), no un valor ajustado y validado sobre los propios datos de PITIA.

6 · Motor Monte Carlo del torneo: PRNG, muestreo, ausencia de reducción de varianza

El simulador (run.py::run(), engine.py::simulate_once) es Monte Carlo crudo — no hay variates antitéticos, muestreo estratificado, quasi-Monte Carlo (Sobol/Halton) ni importance sampling. El error estándar de cualquier probabilidad estimada p̂ escala como la cota clásica √(p(1−p)/N). Con N=20.000 (producción) y p≈0.05 (probabilidad típica de llegar a semifinales de un equipo mediano), SE ≈ √(0.05·0.95/20000) ≈ 0.0015 — quince centésimas de punto porcentual, razonable para las probabilidades reportadas en pantalla, pero notablemente más ruidoso en la cola (p<0.01, p. ej. probabilidad de título de un equipo débil) donde el error relativo crece.

Generador: random.Random(seed=42) — Mersenne Twister, un único stream secuencial consumido por toda la simulación (partidos de grupo, penaltis, muestreo de marcador y modelo de goleador comparten el mismo generador, sin substreams independientes por partido/ronda). Esto da reproducibilidad determinista total run-a-run, pero significa que no hay reporte de sensibilidad al seed — no hay evidencia documentada de que las probabilidades outright sean estables frente a seeds distintos (7, 123, …), solo de que son deterministas dado uno fijo.

Muestreo Poisson: algoritmo de Knuth (producto de uniformes hasta cruzar exp(−λ), coste esperado O(λ) por muestra) — adecuado dado el cap λ≤6, sin necesidad de los métodos O(1) amortizado (p. ej. PTRS) que se usarían para λ grande.

Muestreo del marcador ajustado por Dixon-Coles: rejection sampling explícito (no inversión de la CDF acumulada de la matriz 10×10, que sería más directa pero requeriría reconstruir la matriz completa en cada llamada):

τ_max = max(1, τ(0,0), τ(1,0), τ(0,1), τ(1,1))
repetir: (i,j) ~ Poisson(λ_h) ⊗ Poisson(λ_a) independientes
   aceptar (i,j) con prob. τ(i,j)/τ_max  (u~U(0,1), aceptar si u·τ_max ≤ τ(i,j))

Con ρ=−0.02 (pequeño), τ_max ronda 1.0–1.05 en el rango típico de λ, dando una tasa de aceptación media ≈95-99% — el sampler converge en pocas iteraciones esperadas, sin riesgo práctico de degradación de rendimiento. Terminación garantizada: el cap λ≤6.0 asegura τ_max finito y la probabilidad de aceptación estrictamente positiva para todo (i,j), luego el bucle termina con probabilidad 1 (número esperado de iteraciones = τ_max, finito). Verificación empírica registrada: 200.000 muestras del sampler comparadas contra la matriz analítica (§3) difieren <0.002 por celda en las 4 celdas corregidas — el rejection sampler reproduce fielmente la distribución que pretende, no es solo "plausible".

Nota de linaje del bug corregido: hasta el deep-audit de 2026-07-02, este sampler muestreaba Poisson puro ignorando τ por completo — sesgaba únicamente las probabilidades outright (Monte Carlo), nunca los picks de partido mostrados en producción (que siempre leyeron la matriz analítica §3, correcta desde el origen). Corregido y verificado (200k muestras, arriba); documentado aquí por transparencia, no como problema abierto.

7 · Estructura del torneo: determinismo estructural y resolución de penaltis

Dentro de cada iteración Monte Carlo, la estructura del torneo no tiene componente aleatoria propia — solo los resultados de los partidos la tienen. El bracket de octavos (R32) es el real de la FIFA WC2026 (D.R32_BRACKET), fijo, no re-sembrado por Elo tras la fase de grupos (a diferencia de un torneo hipotético con seeding dinámico). El desempate de grupo usa la regla real por (puntos, diferencia de goles, goles a favor, Elo) — determinista dado el resultado simulado de cada partido, sin ruido adicional en el criterio de desempate en sí.

Los penaltis en eliminatorias no se simulan tanda-a-tanda (no hay modelo de lanzamiento individual con su propia varianza). Se resuelven analíticamente por una probabilidad logística sobre la diferencia de Elo:

P(gana A en penaltis) = 1 / (1 + 10^((Elo(B) − Elo(A)) / 400))

Es la fórmula Elo estándar (escala 400, la misma convención que ajedrez/FIDE), aplicada como aproximación de "quién gana el desempate" en función de la fuerza relativa. Objeción legítima de un auditor: la literatura empírica sobre penaltis (p. ej. Palacios-Huerta) sugiere que el resultado de una tanda es casi independiente de la calidad global del equipo — dominado por preparación específica y factores psicológicos puntuales, no por el mismo rating que predice el juego a 90'. Usar el mismo Elo aquí es una simplificación deliberada (no hay dato de penaltis por selección para calibrar algo mejor), no una réplica fiel del proceso real.

Supuesto de independencia condicional: dado el conjunto completo de λ (determinado antes de simular, por Elo estático), los resultados de partidos distintos —incluso de un mismo equipo en rondas consecutivas— se muestrean como condicionalmente independientes. No hay modelo de correlación inter-partidos (momentum, fatiga acumulada, efecto de resultado previo) más allá de lo que ya está fijado por construcción (el Elo no cambia entre rondas dentro de una misma simulación).

8 · Modelo de goleador (Golden Boot)

A nivel jugador, dado el log de λ de equipo por partido acumulado durante simulate_once, cada jugador con datos (D.PLAYERS) recibe goles adicionales muestreados Poisson con tasa partido-a-partido:

tasa(jugador, partido) = g90(jugador) · sp(jugador) · ( λ_equipo(partido) / BASE_GOALS )

g90 = goles por 90' histórico del jugador; sp = participación esperada (proxy de minutos/probabilidad de titularidad); el cociente λ_equipo/BASE_GOALS escala la tasa base del jugador según cuán ofensivo se espera que sea ese partido concreto para su equipo relativo al nivel neutro (1.45). Los goles se acumulan sobre los goles ya marcados en el torneo real (p["cur"]) más los muestreados en la simulación. Desempate entre jugadores con igual total: mayor g90 histórico gana. No hay modelo de correlación entre el goleador de un equipo y el resultado del partido más allá de compartir el mismo λ — es decir, un partido con λ alto simulado no ajusta retroactivamente qué jugador concreto marcó salvo por este acoplamiento vía tasa.

9 · Selección de pick: maximización de valor esperado bajo la regla de puntuación

Dada la matriz de marcador M(i,j) (§3, ya con blend si aplica), y la regla de puntuación de la porra (3 pts marcador exacto, 1 pt solo signo 1X2 correcto), el valor esperado de fijar el pick en (i,j) se deriva algebraicamente:

E[pts | pick=(i,j)] = 3·P(marcador=i,j) + 1·(P(signo=signo(i,j)) − P(marcador=i,j))
    = P(signo=signo(i,j)) + 2·P(marcador=i,j)

(implementación en run.py::epts_pick, algebraicamente idéntica a la primera forma). Se evalúa sobre las 100 celdas de la matriz y se toma el argmax — un procedimiento de optimización combinatoria trivial en tamaño (100 evaluaciones), no una búsqueda aproximada. El resultado no siempre coincide con el marcador modal (argmax de P(i,j) sola): cuando el favorito reparte su probabilidad de victoria entre muchos marcadores distintos, el pick de máximo E[pts] tiende a desplazarse hacia el signo del favorito aunque ese marcador concreto no sea el más probable individualmente (ver ejemplo numérico en la pestaña "Sin tecnicismos").

10 · Metodología de validación: métricas, tests y el gate real (n=128)

Métricas de scoring probabilístico usadas de forma consistente en todo el backtest:

RPS = 0.5 · [ (F₁−O₁)² + (F₁+F₂−O₁−O₂)² ]   (F₁=p_local, F₂=p_local+p_empate; O ordinal según resultado real 1>X>2)
Brier = Σ_k (p_k − y_k)²   (multiclase, sin orden — a diferencia de RPS)
log-loss = −ln(p_resultado_real)

CLV (Closing Line Value) compara la probabilidad del modelo en el pick elegido con la cuota de cierre devigada Shin del mismo resultado: CLV = p_modelo(pick) / p_cierre_devig(pick) − 1. El diagrama de calibración agrupa por deciles de probabilidad predicha y compara frecuencia real, con tolerancia visual de ±7pp.

Test de Diebold-Mariano (igualdad de precisión predictiva entre dos series de pérdida pareadas d_t = loss_a(t) − loss_b(t)):

DM = mean(d) / √(var(d)/n)   ~ N(0,1) asintóticamente bajo H₀   (var(d) con divisor n−1)

Advertencia explícita: la normalidad asintótica de DM es una aproximación cuya calidad con n=128 no está verificada aquí (no hay corrección HAC ni ajuste por autocorrelación serial dentro de un mismo torneo); se reporta el estadístico con esa salvedad, no como un p-valor exacto.

Bootstrap percentil para el IC 95% de cualquier diferencia de RPS: 10.000 remuestreos con reemplazo a nivel de partido, IC = [valor ordenado en el índice 249, valor ordenado en el índice 9749] de los 10.000 remuestreos (percentiles 2.5%/97.5% exactos, sin interpolación, con seed=42 fijo para reproducibilidad del propio bootstrap).

Recalibración isotónica leave-one-tournament-out: 2 rondas (fit en WC2018 → evaluar en WC2022, y viceversa) — regresión isotónica porque solo se necesita corregir sesgo de calibración preservando el orden de las probabilidades (monotonía), sin imponer una forma paramétrica (a diferencia de, p. ej., escalado de Platt).

Resultado del gate T036 (validación walk-forward global, la más rigurosa del proyecto): DC con MLE + decaimiento temporal ξ=0.0035 (no el ρ fijo de producción — ver nota de linaje abajo), entrenado sobre ~33k partidos internacionales (dataset martj42 desde 1980) y evaluado en WC2018+WC2022 (n=128) contra cuotas de cierre devigadas Shin: ΔRPS(DC−mercado) = +0.0376, IC 95% = [+0.0116, +0.0624] (estrictamente positivo → DC significativamente peor que mercado), DM=+2.36, p=0.018, w* óptimo por log-loss OOS = 0.91. Gate RECHAZADO: n=128 < 500 (regla dura de CLAUDE.md) Y el IC no cruza cero en la dirección desfavorable al modelo. No se actualizó ningún parámetro de producción a partir de este resultado.

Nota de linaje — dos calibraciones DC distintas, no confundir: el ρ=−0.02/BASE_GOALS=1.45/K=0.0020 de producción vienen de un grid search simple (backtest_hist.grid_search) que optimiza y mide RPS sobre el mismo conjunto WC2018+WC2022 combinado — el propio código marca esto explícitamente como IN-SAMPLE y advierte que su IC bootstrap sobreestima la evidencia (no es leave-one-tournament-out). El DC-MLE del gate T036 es un modelo separado, con ajuste de máxima verosimilitud y decaimiento temporal sobre un dataset mucho mayor, evaluado correctamente out-of-sample — y ese es el que perdió formalmente contra el mercado con IC documentado. Los parámetros de producción nunca pasaron por ese mismo gate walk-forward global; su única validación es el grid search in-sample, tratado explícitamente como diagnóstico, no como prueba.

11 · Objeciones esperables de un auditor Monte Carlo, y respuesta honesta

Sin reducción de varianzaCorrecto, es MC crudo (§6). N=20.000 da SE≈0.15pp para p≈0.05; sería más ajustado en la cola. No implementado porque el producto no requiere esa precisión adicional para el caso de uso (porra/quiniela), no por desconocimiento de la técnica. Parámetros IN-SAMPLEBASE_GOALS/K/DC_RHO se calibraron y midieron sobre el mismo WC2018+WC2022 (§10). El propio código lo etiqueta como diagnóstico sobreajustado, no como mejora validada. La validación OOS real (gate T036, dataset y modelo distintos) rechazó el enfoque DC frente al mercado. n=128 es estructuralmente pequeñoNo es un problema de presupuesto de cómputo — es un techo de datos: solo 2 Mundiales tienen cuotas de cierre capturadas en este proyecto. No ampliable sin adquirir cuotas históricas de más torneos. Cualquier afirmación de "mejora" con n<500 se trata explícitamente como anecdótica (regla dura de CLAUDE.md). Independencia entre partidosAsumida condicionalmente a los λ fijados por Elo estático (§7) — no hay modelo de correlación de forma/momentum intra-torneo. Es una simplificación estándar en la literatura de simulación de torneos, no verificada específicamente contra datos de Mundiales por este proyecto. Un solo seed, sin replicaciónseed=42 fijo por reproducibilidad determinista del producto (mismo input → mismo output para el usuario). No hay reporte de estabilidad de las probabilidades outright frente a seeds alternativos — ausencia de evidencia, no evidencia de inestabilidad. DC pierde contra el mercadoSí, formalmente (gate T036, §10). Por eso la producción se apoya en un blend con mercado por partido (§5) en vez de en DC puro para los picks — el "modelo" que ve el usuario no es DC aislado. Cap λ≤6.0 no verificado >6Garantiza terminación del rejection sampler (§6) pero es una asunción de conveniencia numérica, no una cota derivada de datos — no se ha comprobado empíricamente si algún emparejamiento real de este Mundial genera un λ "verdadero" por encima de 6.

Mapa de código para trazabilidad

engine.pyElo→λ, Poisson+DC, rejection sampler, simulador de torneo, modelo de goleador — la referencia Python de todo lo anterior. devig.pyShin y power devigging (bisección 64 iteraciones). worker/src/engine.tsReimplementación TS del modelo de partido + fusión de mercado por partido (§5); paridad verificada con scripts/check-parity-static.py. backtest_core.pyRPS/Brier/log-loss/CLV/calibración — métricas compartidas por todos los harnesses. backtest_hist.pyGrid search IN-SAMPLE de BASE_GOALS/K/DC_RHO (con su propio IC bootstrap, marcado como diagnóstico). backtest_global.pyGate T036: walk-forward completo, DC-MLE con ξ, DM, bootstrap 10k, recalibración isotónica, grid de w*. DECISIONS.mdADRs — incluye el veredicto textual completo del gate T036 y la decisión USE_MARKET=False.
⚠️ Documento de auditoría técnica interna. Refleja el estado del código en el momento de escribirse — ante cualquier discrepancia con el comportamiento observado, el código fuente (rutas arriba) es la fuente de verdad, no este texto.

La Quiniela — cómo funciona

La Quiniela española son 14 partidos a 1·X·2 más un pleno al 15 (el marcador exacto de un partido extra, cada equipo con 0·1·2·M goles). Aciertas categorías de premio según cuántos signos clavas (10, 11, 12, 13, 14) y el bote gordo exige el pleno.

Estrategia contraria. El premio se reparte entre todos los que aciertan, así que ganar dinero no es solo acertar: es acertar donde poca gente acierta. PITIA estima la probabilidad real de cada signo con el mismo motor Dixon-Coles/Poisson de la porra y la compara con lo que marca el público; cuando hay valor, propone el signo contrario para maximizar el EV del bote, no solo la probabilidad de acierto.

Ventana temporal. Las quinielas cierran ~1 semana antes, por lo que el modelo usa la línea de apertura y excluye a propósito la información de última hora (lesiones del día). El detalle del boleto, dobles/triples y el pleno al 15 los calculas en la pestaña «Boleto óptimo».