paint-brush
Usando Monte Carlo para explicar por qué no ganas los juegos diarios de béisbol de fantasíapor@courtneyperigo
1,579 lecturas
1,579 lecturas

Usando Monte Carlo para explicar por qué no ganas los juegos diarios de béisbol de fantasía

por Courtney Perigo 2022/06/15
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Este verano, quería poner a prueba mis habilidades de investigación de operaciones en un problema que me preocupaba. En los deportes de fantasía, eliges una lista de 8 jugadores de posición y 2 lanzadores; y su salario no puede superar el tope salarial de la liga. La simulación utilizará resultados de la vida real para jugadores de béisbol de las ligas mayores desde 2018 hasta el día anterior al juego que estamos simulando. Puede realizar una búsqueda exhaustiva, modificada por la propagación de restricciones novedosas, para encontrar la alineación con mejor rendimiento.

Company Mentioned

Mention Thumbnail
featured image - Usando Monte Carlo para explicar por qué no ganas los juegos diarios de béisbol de fantasía
Courtney Perigo  HackerNoon profile picture

No, probablemente no ganes ese juego de deportes de fantasía diario que quieres probar. Este es el por qué.


Este verano, quería poner a prueba mis habilidades de investigación de operaciones en un problema que me preocupaba. ¿Por qué soy tan malo en el béisbol de fantasía diario en línea?


Si estás leyendo esto, probablemente sepas de lo que estoy hablando. Supongo que eres del tipo que quería investigar un poco y tal vez tropezaste con esta publicación de blog de ciencia de datos en busca de consejos sobre cómo construir tu equipo.


Alerta de spoiler: tengo malas noticias para ti.


En este blog, aprenderá por qué los deportes de fantasía en línea son difíciles. Verá que la economía creada por estos proveedores de juegos en línea es eficiente, y necesitará dedicar mucho tiempo si quiere jugar con el sistema.

¿Qué es el béisbol de fantasía en línea?

Si no está familiarizado con nada de lo que estoy hablando, entonces este párrafo es para usted. De acuerdo con un sitio web de apuestas en línea que no tendrá nombre, las apuestas deportivas de fantasía en línea son una industria de $ 48 mil millones de dólares. En los deportes de fantasía, eliges a los jugadores que juegan ese día y ves si pueden hacerte ganar dinero con un buen desempeño. En la versión de béisbol, eliges una lista de 8 jugadores de posición y 2 lanzadores; y su salario no puede superar el tope salarial de la liga. Su desempeño ese día dicta los puntos que obtienes. No tienes que hacer nada más que elegir a los mejores jugadores ese día.


Sencillo, ¿verdad?


Imagen por autor: Fantasy baseball (reglas clásicas)

¿Por qué soy tan malo en el béisbol de fantasía en línea?

Imagen por Autor. Mi logotipo de béisbol de fantasía.


Entra en mi equipo de fantasía, los Chicago Red Line Hustlers. Sí, construí un logotipo para mi equipo de fantasía. ¿Qué es para ti?


No somos tan buenos. Llevo jugando un mes más o menos y mi equipo ha perdido dinero. No mucho, no estoy poniendo un montón en la línea. Sin embargo, no puedo renunciar a mi trabajo diario; y quiero saber porque

La simulación Monte Carlo nos ayuda a evaluar el riesgo en los deportes de fantasía

Para entender por qué soy tan malo en este juego, busqué en mi kit de herramientas de análisis de decisiones y desempolvé la vieja herramienta probada y verdadera de análisis de cartera: la simulación de Monte Carlo. La simulación me ayudará a comprender el riesgo en las decisiones de personal, específicamente qué diez jugadores deben elegirse dada nuestra restricción de estar por debajo del tope salarial de la liga.


La simulación utilizará resultados de la vida real para los jugadores de béisbol de las ligas mayores desde 2018 hasta el día anterior al juego que estamos simulando. Logro eso al obtener estadísticas diarias de la API pública de MLB.com para todos los jugadores activos de las Grandes Ligas. (Nota: la ingeniería de datos está más allá del alcance de este blog).


Una vez que se recopilan las estadísticas, debemos recopilar los jugadores elegibles que participan en el juego de fantasía que nos interesa simular. Lo logro al interactuar con la API pública de un operador de apuestas deportivas en línea que se especializa en deportes de fantasía diarios. (Nota: la ingeniería de datos está más allá del alcance de este blog).


Una vez que se recopilan los datos y se identifican los jugadores elegibles, la simulación puede realizar una búsqueda exhaustiva, modificada por la propagación de restricciones novedosas, para encontrar la alineación con mejor desempeño; o un usuario puede definir una alineación y evaluar su desempeño.

Función objetiva

El objetivo de la simulación es simular los resultados potenciales de los juegos de béisbol jugados por una alineación de 2 lanzadores y 8 jugadores de posición. Esos resultados se califican utilizando las reglas clásicas del concurso diario de béisbol de fantasía del proveedor en línea.

Imagen del autor: Típica plantilla de puntuación clásica utilizada por los proveedores de béisbol de fantasía en línea.

La simulación de Montecarlo

Con los datos disponibles, podríamos experimentar y modelar los resultados esperados a partir de nuestros datos del mundo real. Nuestro objetivo es identificar la puntuación de fantasía para jugadores de 8 posiciones (que representan las 8 posiciones de fildeo en el béisbol) y 2 lanzadores. Nuestro modelo deberá abordar los jugadores de posición y los lanzadores, por separado.

Simulación de bateo: las apariencias en el plato importan

Para los jugadores de posición, la puntuación está muy sesgada hacia los resultados de bateo. Para los jugadores de posición, nuestro enfoque estará en simular las apariciones en el plato y los resultados potenciales correspondientes de esa aparición en el plato.


Logramos esto simulando los resultados de la ofensiva y solo nos preocupamos por las apariciones en el plato, ya que esta es la única posibilidad de que un jugador pueda impactar el juego de fantasía. El diagrama de flujo de nuestra simulación muestra cómo procederá nuestro modelo para identificar las apariencias de las placas y sus posibles resultados.


Imagen del autor: diagrama de flujo de simulación de bateo

Apariciones en placa

Los jugadores pueden tener una variedad de apariciones en el plato en cada juego, y principalmente está asociado con el orden en que aparecen en la alineación. Un jugador de posición en la parte trasera de la alineación tiende a tener menos apariciones en el plato que un jugador en la parte superior (principal) de la alineación. Nuestro modelo tiene acceso a la cantidad de apariciones en el plato que un jugador ha tenido históricamente, pero no tiene acceso al orden en la alineación en la que apareció para ese juego. Esa es la primera limitación a la precisión de nuestra simulación. Modelo las apariciones en el plato con base en los resultados históricos, no en las expectativas reales basadas en el orden de bateo para el próximo juego.


Para lograr nuestra simulación, muestreamos empíricamente las apariciones en el plato de juegos anteriores mediante el uso de un generador de números aleatorios para seleccionar las apariciones en el plato de una lista ordenada de apariciones históricas en el plato para cada jugador de posición.


Imagen del autor: código de Python para devolver las apariencias de las placas


Para cada juego simulado, se realiza esta selección aleatoria de apariciones en el plato. Esta metodología es muy precisa para igualar los resultados esperados de cada jugador.


Imagen del autor: rendimiento real de las apariencias de la placa frente al rendimiento simulado.

Resultados de la apariencia de la placa

Una vez que se simulan las apariciones en el plato, ahora debemos identificar el modelo para determinar qué resultados son posibles y aprovechar una probabilidad anidada para seleccionar un resultado que represente lo que se espera que logre el jugador. La primera parada en nuestra probabilidad anidada o encadenada es tomar muestras de la capacidad del jugador para convertir una aparición en el plato en un resultado ofensivo. Esta proporción se puede aplicar a las apariciones en el plato de la simulación para identificar cuántos resultados logró el jugador en ese juego.


Imagen del autor: código Python para devolver la proporción de resultados


Con el número de resultados determinado, podemos usar los resultados históricos logrados por el jugador para simular lo que ese jugador es capaz de hacer. Por ejemplo, si estamos simulando a un jugador conocido por batear muchos jonrones, veremos muchos jonrones en sus actuaciones históricas.


Imagen del autor: resultados de dos jugadores de posición diferentes de la MLB que muestran una distribución de resultados única.


La simulación tomará muestras empíricas de la distribución de resultados que el jugador ha logrado en el pasado. Luego, el resultado se puede calificar de acuerdo con la tarjeta de puntaje del proveedor de fantasía en línea y luego procesarse para simular resultados adicionales según el estado del juego cuando ocurrió ese resultado.


Imagen del autor: código de Python para devolver los resultados de los jugadores.

Simulación del estado base y el resultado final de la apariencia de la placa

El estado del juego cuando ocurre un resultado también afectará tres resultados finales que nuestra simulación debe modelar. Esos tres resultados dependen de los eventos que ocurrieron antes, durante y después de que el jugador logre el resultado. La capa final de nuestro diagrama de flujo muestra que las carreras, las bases robadas y las carreras impulsadas solo son posibles cuando ocurren ciertos resultados.


Además, la cantidad de esos tres eventos también se ve afectada por el resultado. Por ejemplo, si un jugador conecta un jonrón, se le otorga al menos una carrera impulsada y una carrera. Tampoco tienen posibilidad de lograr una base robada debido a ese resultado. Modelamos todas estas reglas en una capa adicional de probabilidad anidada y muestreamos empíricamente en función del desempeño anterior del jugador para simular los estados del juego en los que se estaba desempeñando el jugador. A continuación se muestra un ejemplo de uno de estos resultados, las ejecuciones de modelado.


Imagen del autor: código de Python para devolver las carreras anotadas por el jugador.

Simulación de resultados de bateo

Con todas nuestras funciones definidas, ahora puedo simular juegos ilimitados para cualquier jugador con suficientes actuaciones de muestra para aprovechar. El resultado funciona muy bien. Aquí hay un ejemplo de Trea Turner simulada de los LA Dodgers.


Imagen por autor: Trea Turner Simulation (2 juegos)


Imagen del autor: Diagrama de caja de Trea Turner Puntos de fantasía (simulados) vs. su desempeño real (50 juegos)

Simulación de lanzador: Materia lanzada de entradas

Teniendo en cuenta a los bateadores en la simulación, el modelo también debe poder simular los resultados de los lanzadores. La puntuación de fantasía para los lanzadores solo considera los resultados de las apariciones en el plato y los resultados de los bateadores a los que se enfrentan.


Imagen del autor: Diagrama de flujo de simulación de pitcheo.


Para los lanzadores, el modelo comienza con la simulación de entradas lanzadas. Esto es importante ya que mi propia investigación novedosa sugiere que los lanzadores que lanzan más entradas tienden a desempeñarse mejor (reduciendo carreras, hits y mejorando su porcentaje de victorias a medida que avanza el juego, etc.)


Imagen del autor: Probabilidad de victoria del lanzador por entradas lanzadas (redondeado)


Esta observación es intuitiva ya que es menos probable que un manager elija a un lanzador fuerte que tenga una buena salida del juego en lugar de otro lanzador.

entradas lanzadas

Para lograr nuestra simulación, tomamos muestras empíricas de entradas lanzadas de juegos anteriores mediante el uso de un generador de números aleatorios para seleccionar entradas lanzadas de una lista ordenada de entradas históricas lanzadas por cada lanzador. El código para lograr esto es como la función de aparición en el plato para los bateadores. Para cada juego simulado, se realiza esta selección aleatoria. Esta metodología es muy precisa para igualar las entradas esperadas lanzadas por cada lanzador.


Imagen del autor: Entradas lanzadas por un lanzador de la MLB simulación vs real.

Resultados de lanzamiento

Los resultados del lanzador se evalúan en función del número de entradas lanzadas. Como indiqué anteriormente, hago esto porque el rendimiento del jugador es diferente dependiendo de qué tan avanzado esté el lanzador en el juego.


Hay tres resultados que nos preocupan: son la cantidad de victorias, carreras, hits, bases por bolas y ponches lanzados. Simulo estos resultados muestreando empíricamente subconjuntos de datos del lanzador correspondientes a las entradas lanzadas. Este proceso asegura que respetemos el desempeño del lanzador en función de las entradas lanzadas.


Imagen del autor: código de Python para devolver carreras ganadas en función de las entradas lanzadas.


Los resultados finales son una verificación del estado de la simulación después de cada ejecución. El modelo anota juegos completos cada vez que el lanzador simulado lanza 9 entradas completas. Le da crédito al lanzador con una blanqueada completa del juego cada vez que el lanzador simulado lanza 9 entradas completas y no tiene carreras limpias. Finalmente, el modelo acredita al lanzador simulado con un juego sin hits si la simulación produce un lanzador que completó las 9 entradas y no logró hits.

Simulación de juegos de lanzador jugados

Con todas nuestras funciones de lanzamiento definidas, ahora puedo simular juegos ilimitados para cualquier lanzador con suficientes datos de muestra. Los datos simulados son muy similares a las actuaciones reales de la MLB para los lanzadores que hemos modelado.


Imagen del autor: Corbin Burnes simuló actuaciones de lanzamiento


Imagen del autor: Corbin Burnes Puntos de fantasía reales vs simulados

Experimento computacional y resultados:

El objetivo de este proyecto era evaluar el riesgo en la selección de alineaciones para un juego de deportes de fantasía diario. Para lograr esto, construí una función que llena aleatoriamente una alineación válida gastando hasta el tope salarial de $50,000 indicado en las reglas clásicas de un proveedor de béisbol de fantasía. Hice esto 500 veces para crear 500 alineaciones válidas y aleatorias para simular. Cada jugador en la alineación válida pasó por su propia simulación, simulando 50 juegos de desempeño cada uno. Los resultados no fueron sorprendentes.


Parece que los resultados del béisbol tienen mucha aleatoriedad en ellos.

Aquí hay un resumen del desempeño simulado de las 10 mejores alineaciones aleatorias elegidas por la proporción de puntos a la variabilidad, como una proporción de Sharpe en finanzas. Estas alineaciones representan las opciones menos arriesgadas, pero más efectivas.


Imagen del autor: principales índices de Sharpe adquiridos por alineaciones aleatorias y válidas (las 10 mejores actuaciones vistas)


Aquí está la misma imagen pero seleccionando las alineaciones válidas con mayor puntuación.


Imagen del autor: mejores alineaciones válidas y aleatorias de fantasía simulada (las 10 mejores actuaciones vistas)


Estas imágenes muestran alineaciones válidas con un rendimiento sólido, pero todas estas alineaciones tienen valores esperados muy cercanos entre sí. A través de esta amplia búsqueda, no pudimos encontrar una alineación que supere significativamente a todas las demás alineaciones. Nuestra simulación demostró con éxito que los juegos de béisbol de fantasía, sin un análisis y una evaluación significativos y detallados de los jugadores, son simplemente juegos de azar.

Discusiones y conclusiones

En conclusión, la simulación es una herramienta muy útil para comprender los riesgos asociados a la toma de decisiones. Se ha aplicado con éxito en una amplia gama de aplicaciones, incluido el diseño de productos, la formación de pilotos, la investigación de colas y, ahora, los deportes de fantasía.


Los resultados de esta simulación específica muestran que el béisbol a corto plazo es muy aleatorio. Cualquier jugador, en un día cualquiera, puede tener un buen o mal juego. Los emparejamientos pueden entrar en juego y las situaciones del juego pueden influir en la decisión de un jugador.


Logramos la capacidad de modelar un sistema muy complejo y obtener resultados muy reales. A largo plazo, espero que mi simulación genere jugadores que se desempeñen de manera similar a sus contrapartes de la vida real.


Las simulaciones se pueden mejorar. Por ejemplo, no tenemos datos sobre el estado del juego para ningún resultado de rendimiento. Simulamos en base a logros anteriores, pero un modelo mejorado también simularía el estado del juego. Este sería un próximo paso importante, ya que las decisiones de otros jugadores y el estado del juego afectarían la capacidad del jugador para generar resultados. Además, el modelo no puede simular enfrentamientos, un tema crucial en los deportes de fantasía. Los bateadores se desempeñan de manera diferente según el lanzador al que se enfrenten o el equipo con el que jueguen.


Al final, espero instalar nuevas mejoras que consideren los enfrentamientos y realizar mejoras incrementales en mi capacidad para evaluar el rendimiento de los jugadores a corto plazo.


También publicado aquí .