1. Modelo de partido Pi-Ratings
Cada equipo carga cuatro calificaciones: ataque local, defensa local, ataque visitante, defensa visitante. Tras cada partido las actualizamos iterativamente desde la diferencia de goles y la brecha de rating actual. El modelo converge en aproximadamente 8 semanas de liga; arrancamos en frío las primeras 2 semanas de cada temporada con arrastre de la temporada anterior. La lambda (goles esperados) de un partido se deriva de los pares ataque local vs defensa visitante y ataque visitante vs defensa local, luego se convierte en probabilidades de resultado, más/menos y ambos marcan vía distribución de Poisson. Modelo único coherente = sin contradicciones entre el pick 1X2 y el pick más/menos.
2. Umbrales de categoría
Cada predicción se clasifica en una de tres categorías por confianza: Élite ≥ 60%, Seguro ≥ 45%, Normal < 45%. Las categorías no se ponderan distinto en el modelo — existen para que los usuarios midan la precisión esperada. Nuestra página de forward-tracking reporta tasa de acierto por categoría, así la relación entre confianza y realidad es auditable públicamente.
3. Métrica estricta de gol en cancha (v3)
Las columnas tradicionales de Ganado/Empate/Perdido cuentan a cualquier jugador que apareció (incluso por 1 minuto) como parte del resultado. Nuestra métrica en cancha aísla los minutos que el jugador estuvo físicamente en el campo y cuenta solo los goles marcados/recibidos durante esos minutos exactos. Un jugador que jugó 30 minutos en un 3-0 donde todos los goles llegaron en la segunda mitad registra 0 goals_for_on_pitch — porque los goles ocurrieron después de que salió. El pipeline v3 opera con granularidad de minuto usando arrays de estado por minuto (ganando / empatando / perdiendo por minuto en cancha), produciendo la tasa de minutos ganadores que alimenta las tablas de Impacto de Jugador.
4. Clave compuesta (player_id, team_id)
Cuando un jugador se transfiere a mitad de temporada aparece como dos filas separadas en nuestro dataset de Impacto de Jugador — una fila por par (player_id, team_id). Sus minutos pre-transferencia quedan atribuidos al club viejo, sus minutos post-transferencia cuentan para el nuevo club. Esta es la única forma de comparar honestamente el impacto de un jugador en dos clubes sin doble conteo ni atribución arbitraria. MIN_MATCHES = 5 por fila, así las filas transitorias de corta estadía quedan filtradas.
5. Cobertura
26 competiciones de liga: 5 primeras divisiones europeas (Premier League, La Liga, Serie A, Bundesliga, Ligue 1), 5 segundas divisiones (Championship, La Liga 2, Serie B, 2. Bundesliga, Ligue 2), Eredivisie, Primeira Liga, Süper Lig, Premiership, Pro League, Saudi Pro League, MLS, Brasileirão Serie A, Argentina Liga Profesional, más copas continentales (UEFA Champions League, Europa League, Conference League) y ventanas de torneo (Mundial 2026, historia Euro 2024, Copa América, AFCON, Copa Asiática, amistosos). Los partidos de selecciones nacionales filtran equipos U17/U18/U19/U20/U21/U23/femeninos/olímpicos; solo cuentan los partidos de selección absoluta.
6. Frescura de datos
El build diario corre a las 06:00 UTC vía GitHub Actions: trae nuevos partidos de API-Football, corre Pi-Ratings sobre los resultados completados, calcula predicciones para ventanas próximas (30 días para liga, 60 días para eliminatorias mundialistas + Nations League, 90 días para hubs de torneo como Mundial 2026 / Euro 2024 / Copa América), regenera las páginas estáticas y despliega a Cloudflare Pages. El ledger forward-tracking añade resultados — nunca sobrescribimos silenciosamente una predicción a posteriori.
7. Lo que no hacemos
No hacemos claims de backtest (solo forward-tracking). No aceptamos colocación pagada en ninguna categoría de predicción. No corremos enlaces de referido a operadores comerciales de terceros. No comercializamos nuestro contenido a la industria de predicciones-como-producto — el material es solo de interés analítico. No generamos comentarios de partido con LLMs al momento del request; las oraciones editoriales en cada página de partido son template basadas en salida real del modelo. No escondemos semanas perdedoras — cada predicción publicada queda en su página de partido después de conocido el resultado.
8. Estándares abiertos y citación
Los datos del sitio están en JSON/JSON-LD con marcado schema.org completo (SportsEvent, NewsArticle, BreadcrumbList, FAQPage, Dataset). Los alternates hreflang enlazan cada página en 5 idiomas (en/tr/ar/es/zh). Nuestro /llms.txt declara el índice de contenido canónico para agentes de IA. La métrica estricta de gol en cancha está descrita en inglés llano para que el algoritmo sea reproducible por cualquiera con acceso a un feed minuto-a-minuto de sustituciones y goles.