Saltar al contenido
Todos los trabajos

Análisis exploratorio · Simulación

Ganar a la casa de apuestas

11.794 partidos ATP de cinco temporadas, cruzados con las fichas de los jugadores y con las cuotas de las casas. La pregunta era si hay algún factor —altura, mano, edad— que el mercado esté subestimando. La respuesta corta: uno de los tres patrones existe, y aun así apostar con él pierde dinero.

PapelAutor · trabajo individual
AsignaturaProgramación para el análisis de datos
Año2026 · MUBA, ICADE
HerramientasPython · pandas · NumPy · Plotly
11.794partidos analizados
56,96%gana el más alto en hierba
−4,54%de ROI apostando al favorito

La pregunta

¿Se le escapa algo al mercado ?

Una cuota no es una predicción: es un precio, y lleva dentro todo lo que el mercado ya sabe. La única forma de ganarle es encontrar algo que el precio todavía no recoja. Eso es lo que fui a buscar: un factor físico —la altura, la mano, la edad— con el que el mercado no estuviera contando.

El planteamiento importa porque decide el listón. No basta con encontrar un patrón: hay que encontrar uno que además sobreviva a pagar la cuota. Son dos preguntas distintas y casi todo el mundo se queda en la primera.

Por eso el trabajo no termina en el análisis exploratorio. Termina simulando las apuestas, que es donde se ve si el patrón vale algo o solo es bonito.

PeriodoATP, 2020 – 2024
Pregunta¿Hay un factor infravalorado?
Prueba de fuegoEl ROI, no el porcentaje
Encontrar el patrón es la mitad fácil del problema.

Diagrama: un patrón se enfrenta a la cuota que lo paga, y solo entonces se ve si queda beneficio. Casi nunca queda.

Los datos

Dos fuentes y un identificador de verdad.

Tennis-Data pone los partidos y las cuotas; el fichero de jugadores de Jeff Sackmann pone la altura, la mano y la fecha de nacimiento. Unirlas es el punto delicado del trabajo, porque Tennis-Data nombra a la gente como «Ruud C.» y en el otro fichero hay 65.019 jugadores de todas las épocas.

«Ruud C.» son dos personas: Casper Ruud, nacido en 1998 y de 183 cm, y su padre Christian, nacido en 1972 y de 188. Un cruce por apellido e inicial elige a uno de los dos, y elegir mal significa analizar 292 partidos con la altura y la edad equivocadas. Lo mismo pasa con Ben Shelton y su padre Bryan.

El cruce actual va por identificador único de jugador y aplica controles en cascada: apellido normalizado, iniciales alternativas, apellidos compuestos y —el que decide— la edad plausible en las fechas en que ese nombre jugó. Si después de todo eso queda más de un candidato, el jugador se queda sin atributos. Se resuelven 510 de 517 nombres.

Y hay comprobaciones automáticas encima: edades imposibles, alturas fuera de rango, jugadores con dos alturas distintas, duplicados. Cazaron un caso que se me había escapado, un jugador emparejado con alguien de 50 años.

PeriodoATP, 2020 – 2024
Partidos11.794
Jugadores identificados510 de 517
Sin emparejar7, todos documentados
Del cruce de las dos fuentes a los jugadores identificados.

Escalones: dos fuentes cruzadas, 11.794 partidos, 510 de 517 jugadores identificados por identificador único.

Tres corazonadas

Una aguanta. Dos se caen.

Tres creencias del tenis, contrastadas una a una. Los altos ganan más en superficies rápidas: se cumple, y además se ordena por superficie igual que predice la teoría del saque. Los zurdos y los veteranos: no se cumplen.

El de la altura es el único que aguanta, y aguanta bien: 56,96 % en hierba, 55,33 % en pista dura y 53,24 % en tierra. Que salga en ese orden y no al azar es lo que lo hace creíble, porque es exactamente el orden en que la superficie premia el saque.

Los zurdos ganan el 47,62 % de sus 2.671 duelos contra diestros: menos de la mitad. La leyenda descansa sobre Nadal, no sobre el conjunto.

Los veteranos ganan el 45,68 % de los partidos a cinco sets con más de cinco años de diferencia. Y no es que el partido largo les penalice: a tres sets ganan el 45,27 %, prácticamente lo mismo. La duración no cambia nada.

Altos en hierba56,96 %
Altos en pista dura55,33 %
Altos en tierra53,24 %
Zurdos contra diestros47,62 %
Veteranos a cinco sets45,68 %
Una pista por superficie. El suelo se llena cuanto más gana el jugador más alto, y el orden es el que predice la teoría del saque.

Tres pistas de tenis vistas desde arriba, una por superficie, con el porcentaje de partidos que gana el jugador más alto: hierba 56,96% sobre 955 partidos; pista dura 55,33% sobre 5.404; tierra 53,24% sobre 2.825. El 50% sería no tener ninguna ventaja.

La simulación

El favorito gana el 68%. Y aun así se pierde.

Apostar 1 € por partido siguiendo una regla fija y medir el ROI. El favorito gana el 68,18 % de las veces, que es mucho, y aun así la estrategia pierde el 4,54 %. La explicación no está en el acierto: está en el precio.

Las tres estrategias pierden. Apostar al favorito: −4,54 %. Al más alto en hierba, que es el patrón que sí existía: −3,31 %. Y al revés, al no favorito: −8,90 %. Da igual el lado al que te pongas.

El motivo está medido: si las cuotas fueran justas, sus probabilidades implícitas sumarían 1. Suman de más, y ese exceso —un 5,46 % de media— es el margen del que vive la casa. Hay que superarlo antes de empezar a ganar, y un patrón del 57 % no llega.

Los 77 partidos que terminaron en walkover o adjudicación quedan fuera de la simulación: nadie saltó a la pista y una casa habría devuelto el dinero. Contarlos como apuesta ganada o perdida sería contar euros que no se mueven.

Gana el favorito68,18 %
ROI apostando al favorito−4,54 %
ROI al más alto en hierba−3,31 %
ROI al no favorito−8,90 %
Margen medio de la casa5,46 %
El favorito gana casi siete de cada diez partidos. Y aun así pierde dinero.

El favorito gana el 68,18 % de los partidos; el resto los gana el otro jugador. Apostar siempre al favorito da un ROI del −4,54 %.

Los límites

Lo que este análisis no demuestra.

Lo que este trabajo no puede decir. Las tres primeras eran defectos reales de la primera versión y están arregladas; las dos últimas siguen ahí y conviene no disimularlas.

El cruce de fuentes ya usa un identificador único de jugador con controles automáticos, y el filtro de edades atípicas ha desaparecido: lo que borraba no eran outliers, eran 432 filas mal cruzadas, y de paso se llevaba por delante a veteranos reales como Feliciano López o Karlović.

Lo que sigue sin poder afirmarse es que la diferencia en hierba sea estadísticamente significativa: 955 partidos dan una estimación, no una prueba. Y el ROI no incluye comisiones ni límites de apuesta, así que el número real de cualquiera de estas estrategias sería algo peor, no mejor.

Tampoco hay partición temporal: las estrategias se evalúan sobre los mismos datos en los que se observaron los patrones. Aquí no invalida la conclusión —el sesgo empujaría a parecer más rentable, y aun así todo pierde—, pero impediría defender una estrategia que hubiera salido ganadora.

Cruce por clave realSí, por player_id
Filtro de edades atípicasEliminado
Significatividad en hierbaNo contrastada
Comisiones y límitesFuera del ROI
Cuatro cosas que este análisis no sostiene.

Cuatro comprobaciones con su veredicto, dos cumplidas y dos no. Cumplidas: el cruce de fuentes usa una clave de verdad, y las edades salen de la fecha de nacimiento. No cumplidas: la diferencia en hierba es significativa, y el ROI incluye comisiones y límites de apuesta.

El código

El código está en GitHub.

Todo lo de esta página sale del cuaderno de Python del trabajo: la carga y el cruce de las dos fuentes, la limpieza, el análisis exploratorio con sus gráficos, y la simulación de las estrategias de apuesta partido a partido.

El repositorio lleva el cuaderno entero, con su código y sus salidas, incluido el apartado de limitaciones tal y como lo escribí. Es la parte que más dice sobre cómo trabajo.

Ganar a la casa de apuestas · Presentación PDF · 11 páginas · 859 KB
Ponte en contacto Escríbeme cuando quieras