🏇 Turf Predictor

Modelo de predicción de carreras argentinas basado en Bradley-Terry con aprendizaje incremental.

📰

Para obtener el mejor rendimiento del predictor, recomendamos utilizar los datos de la Revista Palermo — especialmente el índice VR (Velocidad Relativa), que normaliza el tiempo de cada caballo según las condiciones del día.

20
Carreras analizadas
17
Resultados registrados
2.875
Log-loss promedio

🔮 Predictor

Ingresá los datos de una carrera y el modelo te devuelve el orden de mérito con probabilidades y valor esperado por apuesta.

Iniciar sesión para predecir

💬 Foro

Discutí carreras, compartí análisis y charlá con otros aficionados del turf argentino.

Ver foro

📈 Curva de aprendizaje del modelo

A medida que se cargan más carreras con resultados reales, el log-loss tiende a bajar — señal de que el modelo mejora su capacidad predictiva.

⚙️ ¿Cómo funciona el modelo?

1. Construcción de features por caballo

Por cada caballo se calculan tres variables principales a partir de su historial de actuaciones. El VR ajustado por distancia toma el índice de Velocidad Relativa de cada carrera y lo corrige según la diferencia entre la distancia histórica y la actual — no es lo mismo un VR de 95 en 1000m que en 1600m. Luego se normaliza usando z-score dentro del campo completo, de modo que lo que cuenta es el VR relativo a los rivales de ese día, no el número absoluto. El índice de competitividad combina la posición y los cuerpos de diferencia de cada actuación: ganar por 5 cuerpos vale más que ganar por medio, y llegar 2° a un cuerpo es muy distinto a llegar 2° a 8 cuerpos. El perfil de ritmo (front, delantero, mid, closer) se codifica en variables binarias y se combina con la dinámica del campo — si hay muchos fronts compitiendo por la punta, se penaliza a todos ellos y se beneficia a los closers.

2. Modelo Bradley-Terry

El núcleo del sistema es el modelo de Bradley-Terry, diseñado específicamente para competencias entre múltiples participantes. A cada caballo se le asigna una fuerza latente calculada como:

Fuerza = exp( w_vr × VR_norm + w_comp × Competitividad ) × Ajuste_campo

El uso de exp() garantiza que la fuerza siempre sea un número positivo, requisito matemático del modelo. La probabilidad de ganar de cada caballo es su fuerza relativa al total del campo:

P(caballo_i gana) = Fuerza_i / Σ(Fuerza_1 + Fuerza_2 + ... + Fuerza_n)

3. Aprendizaje incremental

Después de cada carrera real, el modelo compara su predicción con el resultado. El error se cuantifica con la función log-loss:

Loss = −log( probabilidad asignada al ganador real )

Si el modelo le dio 90% al ganador real, el error es casi cero. Si le dio 5%, el error es grande y el modelo se penaliza fuerte — el logaritmo captura esta asimetría de forma natural. Los pesos w_vr, w_comp y w_ritmo_campo se actualizan carrera a carrera usando descenso por gradiente, moviéndose en la dirección que reduce el error. Con el tiempo el modelo aprende qué variables predicen mejor en el contexto del turf argentino.

4. Valor esperado de apuestas

Una vez generadas las probabilidades, el sistema las compara con los dividendos del hipódromo para calcular el valor esperado de cada apuesta:

VE = probabilidad_propia × dividendo

Si VE > 1.0, la apuesta tiene valor positivo a largo plazo — el mercado está subestimando al caballo según el modelo. Para exactas, trifectas y cuatrifectas se usa la aproximación de Harville, que estima la probabilidad de combinaciones de posiciones a partir de las probabilidades individuales.