ScoreMatrix es una aplicacion desktop para Windows que estima probabilidades de resultados exactos de futbol y sus cuotas justas equivalentes a partir de un modelo matematico.
La app puede partir de cuotas 1X2 de mercado o de goles esperados ingresados manualmente. Luego construye una matriz de marcadores como 0-0, 1-0, 2-1, etc. Cada celda puede verse como probabilidad o como cuota decimal justa.
Version actual: 0.05
- UI desktop WinForms para Windows.
- Entrada desde cuotas decimales 1X2: victoria local, empate, victoria visitante.
- Importacion opcional de cuotas del Mundial 2026 desde The Odds API: 1X2, Over/Under y BTTS cuando esten disponibles (consenso sin margen entre bookmakers).
- Calibracion opcional con cuotas Over/Under en linea configurable (default 2.5).
- Calibracion opcional con cuotas Both Teams To Score: Si/No.
- Entrada desde goles esperados manuales: lambda local y lambda visitante.
- Cuatro metodos de de-vig: Proporcional (default), Power (corrige sesgo favorito-longshot), Shin (modelo de insiders, mas preciso), Aditivo (resta igual margen).
- Inferencia de lambdas con optimizador Nelder-Mead y objetivo KL divergence (mas preciso que minimos cuadrados).
- Cuatro modelos de score:
- Poisson: modelo base con distribuciones independientes.
- Dixon-Coles: ajusta marcadores bajos con parametro rho.
- Bivariado Poisson: captura correlacion positiva entre goles de ambos equipos.
- Binomial Negativa: marginales sobredispersas con colas mas gruesas.
- Auto-calibracion del parametro de dependencia (rho/lambda3): cuando hay O/U o BTTS, el optimizador estima el parametro de dependencia en lugar de usar el valor manual.
- Ajuste Dixon-Coles opcional para marcadores bajos.
- Rango visible configurable entre 3 y 15 goles.
- Vista de matriz en probabilidades o cuotas justas.
- Vista de cuotas con margen comercial configurable.
- Ranking Penca por valor esperado de puntaje con reglas editables (default: exacto 7, resultado 2, goles 1).
- Resumen agregado:
- Victoria local, empate, victoria visitante.
- Over/Under 0.5, 1.5, 2.5 y 3.5.
- Both Teams To Score: Si/No.
- 0-0 y 1-1.
- Marcador mas probable.
- Probabilidad cubierta por la grilla.
- Probabilidad fuera de la grilla.
- Exportacion a CSV.
- Modulo de Backtest: evalua el modelo sobre un CSV de partidos historicos y calcula RPS (Ranked Probability Score), Brier Score, Log-Loss y curva de calibracion. Permite comparar configuraciones para tunear el modelo.
- Ventana de ayuda integrada con explicacion del modelo y los conceptos.
- Windows.
- .NET 10 SDK.
El proyecto WinForms usa:
net10.0-windows
Desde la raiz del repositorio:
dotnet build
dotnet run --project ScoreMatrix.WinForms\ScoreMatrix.WinForms.csprojTambien se puede ejecutar el binario generado despues de compilar:
ScoreMatrix.WinForms\bin\Debug\net10.0-windows\ScoreMatrix.WinForms.exeCuando se usan cuotas 1X2, ScoreMatrix convierte primero cada cuota decimal en probabilidad implicita:
pLocalBruta = 1 / cuotaLocal
pEmpateBruta = 1 / cuotaEmpate
pVisitanteBruta = 1 / cuotaVisitante
Luego quita el margen del bookmaker con normalizacion proporcional:
suma = pLocalBruta + pEmpateBruta + pVisitanteBruta
pLocal = pLocalBruta / suma
pEmpate = pEmpateBruta / suma
pVisitante = pVisitanteBruta / suma
Si las probabilidades implicitas brutas suman menos que 1, la app bloquea el calculo porque eso implicaria margen negativo para el bookmaker.
La app infiere:
lambdaLocal
lambdaVisitante
Estos valores representan los goles esperados del equipo local y visitante.
El optimizador usa un algoritmo Nelder-Mead (simplex) sembrado desde una busqueda en grilla. Su objetivo es minimizar la KL divergence entre las probabilidades del mercado y las del modelo Poisson:
error = KL(mercado || modelo) = sum_i p_mercado_i * log(p_mercado_i / p_modelo_i)
A diferencia del error cuadratico, el KL divergence es la medida teoricamente correcta para comparar distribuciones de probabilidad y penaliza mejor los desvios lejanos al mercado.
Si se activa Usar O/U, la app tambien incluye la KL divergence del mercado Over/Under al objetivo. Si se activa Usar BTTS, tambien incluye el mercado BTTS.
Cuando el modelo no es Poisson y se activa Auto-calibrar, el optimizador tambien estima el parametro de dependencia (rho para Dixon-Coles, lambda3 para Bivariado) como un tercer parametro libre.
El modelo base asume distribuciones Poisson independientes:
Goles local ~ Poisson(lambdaLocal)
Goles visitante ~ Poisson(lambdaVisitante)
La probabilidad de un marcador exacto se calcula asi:
P(i-j) = Poisson(i, lambdaLocal) * Poisson(j, lambdaVisitante)
La cuota justa se calcula como:
cuotaJusta = 1 / probabilidad
Tambien se puede aplicar un margen comercial configurable a la cuota justa:
cuotaConMargen = cuotaJusta / (1 + margen / 100)
Este margen solo cambia la visualizacion y la exportacion; no altera las probabilidades ni los lambdas del modelo.
Dixon-Coles parte de la matriz Poisson y ajusta marcadores bajos:
0-0
1-0
0-1
1-1
El parametro manual rho controla la direccion y fuerza del ajuste.
rho = 0: igual que Poisson simple.rho < 0: segun el factor aplicado, sube0-0y1-1, y baja1-0y0-1.rho > 0: segun el factor aplicado, baja0-0y1-1, y sube1-0y0-1.
Luego ScoreMatrix renormaliza la matriz para conservar la masa de probabilidad base, asi que el efecto visible puede variar levemente en la grilla completa.
ScoreMatrix es una herramienta de modelado, no un sistema para garantizar apuestas ganadoras.
Las cuotas 1X2 por si solas no definen completamente el total esperado de goles. Dos partidos pueden tener probabilidades 1X2 parecidas pero perfiles de Over/Under o BTTS distintos. La app permite usar Over/Under (linea configurable) y BTTS para mejorar esa calibracion. Futuras versiones podrian sumar mercados adicionales como:
- Totales asiaticos.
- Precios de mercado de resultado exacto.
Las cuotas justas mostradas por ScoreMatrix no incluyen margen de bookmaker, liquidez, sesgos de mercado ni ajustes comerciales.
ScoreMatrix.Domain
Modelos y enums compartidos.
ScoreMatrix.Application
Conversion de odds, optimizacion de lambdas, modelos de score, calculadora y exportacion CSV.
ScoreMatrix.WinForms
UI desktop, ventana de ayuda e iconos.
- La version
0.05agrega cuatro metodos de de-vig (Proporcional, Power, Shin, Aditivo), optimizador Nelder-Mead con objetivo KL divergence, dos nuevos modelos (Bivariado Poisson, Binomial Negativa), auto-calibracion del parametro de dependencia desde mercados O/U y BTTS, y el modulo de Backtest con metricas RPS/Brier/LogLoss y curva de calibracion. - La version
0.04agrega importacion opcional de O/U y BTTS desde The Odds API y linea Over/Under configurable en la calibracion. - La version
0.03agrega importacion opcional de cuotas 1X2 del Mundial 2026 desde The Odds API y ranking Penca por valor esperado de puntaje con reglas editables. - La version
0.02agrega calibracion opcional con Over/Under 2.5 y BTTS, margen comercial para odds y mejoras visuales.