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.
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.
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.
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.
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.
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.
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.
