41
Predicción de resultados de partidos de fútbol Sergio Sabroso Lasa Trabajo de fin de grado en Matemáticas Universidad de Zaragoza Director del trabajo: Javier López Lorente 28 de junio de 2018

Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultadosde partidos de fútbol

Sergio Sabroso LasaTrabajo de fin de grado en Matemáticas

Universidad de Zaragoza

Director del trabajo: Javier López Lorente28 de junio de 2018

Page 2: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos
Page 3: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Abstract

This project consists of three chapters and we are going to summarize here the most important ideas.

There are many models for predicting the outcome of fooball matches, but we are going to buildtwo logistic models, one of them to predict the probability of the event “local team wins” and anotherto predict the probability of the event “away team wins”. For that, we use simple predictor variablessuch as the point difference between local team and away team or how the teams performed in the lastmatches. In our first model, the probability α of the event “local team wins” in a football match followsthe equation:

α =e−0,3+0,173x2+0,083x5

1+ e−0,3+0,173x2+0,083x5

where X2 is the predictor variable which represents the point difference divided by the logarithm of thematch day and X5 is the predictor variable “local run” which summarizes the last results of the localteam. On the other hand, the probability γ of the event “away team wins” follows the equation:

γ =e−1,04−0,187x2

1+ e−1,04−0,187x2

where X2 is the same as before. Then we study the results using ROC curves and we confirm that thesemethods predicts well the result of a football match.

Once we have two models to predict football results we want to use them for betting. In that aim,we introduce a new betting strategy. First we review the classic Kelly´s criterion and we see that it´sinappropiate because we lose all our money in a few bets. Then we design a dynamic programmingproblem which decides, for each match day, how much money to bet in each match in order to maximizethe probability of reaching a money target. We program this problem in Java and apply it to a real lifesituation, namely, the Santander Liga 2017−2018 where we obtain a benefit of 600%.

III

Page 4: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos
Page 5: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Índice general

Abstract III

1. Introducción 1

2. Modelo de regresión logística 32.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2. Modelo logit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2.1. Obtención de los estimadores . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3. Presentación de los modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.3.1. Creación y resultados del modelo victoria local . . . . . . . . . . . . . . . . . 62.3.2. Creación y resultados del modelo victoria visitante . . . . . . . . . . . . . . . 7

2.4. Validación de los modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3. Determinación de una estrategia óptima de apuesta 133.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2. Criterio de Kelly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.3. Programación dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.4. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.4.1. Aspectos importantes sobre la programación en Java . . . . . . . . . . . . . . 193.5. Aplicación del programa y resultados obtenidos . . . . . . . . . . . . . . . . . . . . . 20

3.5.1. Alternativas y mejoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.6. Conclusiones finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

A. Código R 25

B. Código Java 27

Bibliografía 35

V

Page 6: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos
Page 7: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Capítulo 1

Introducción

No cabe ninguna duda de que el fútbol es el deporte más popular y seguido del mundo, basta com-probar cómo la gente está pegada al televisor en sus casas, bares y restaurantes cuando se disputa unpartido importante. Para hacernos una idea de la popularidad de este deporte es suficiente ver, comose explica en [12], que la final del mundial de 2014 tuvo alrededor de 1000 millones de espectadores,comparado con la inauguración de los Juegos Olímpicos en Londres 2012 con 900 millones o la finalde los playoffs de la NBA del 2017 con unos 20 millones. La idea de este deporte es muy sencilla, yhoy en día es casi imposible encontrar a alguien que no tenga una noción básica de cómo se practica. Elganador de un partido es el equipo que más goles marca en un periodo de 90 minutos dividido en dospartes.

El fútbol comenzó en Inglaterra con partidos casi sin normas que se practicaban en cualquier sitio,como plazas, calles... Pero ya en aquel entonces los ingleses mezclaron el deporte con la economía, enel sentido de que la gente pagaba una cantidad de dinero por ver un partido de los equipos más popu-lares. Este deporte fue evolucionando hasta que entre 1850 y 1890 se introdujeron las reglas definitivasque hoy en día conocemos. Actualmente, el fútbol mueve tanta cantidad de dinero que hay mucha gen-te que lo considera un negocio, y otra que realmente hace un negocio de él mediante apuestas deportivas.

Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000años en los Juegos Olímpicos que se disputaban en Grecia. Se hicieron mucho más populares con lascarreras de caballos durante el siglo XIX, pero su gran expansión no fue hasta 1940 cuando aparecieronlas primeras casas de apuestas en Nevada (EEUU), permitiendo apostar a diferentes modalidades de-portivas. El auge de las apuestas deportivas tuvo lugar en 1996 con Internet, ya que se lanzó Intertops,la primera página que permitía apostar online. Gracias a este sistema, los usuarios pueden apostar desdecasa mientras están viendo los eventos, tomando decisiones al momento y apostando de forma directa yrápida en segundos.

Desde su comienzo, la popularidad de las apuestas ha ido creciendo hasta tal punto que en el año2017, de acuerdo con [13], se movieron más de 5000 millones de euros sólo en España. Por esta razón,poder predecir el resultado de un partido de fútbol mediante variables intuitivas y sencillas, es una ideaambiciosa cuya finalidad busca obtener beneficio económico mediante su aplicación a apuestas depor-tivas.

Existen gran cantidad de portales web en los que los resultados de temporadas anteriores estánaccesibles, incluso se puede comprobar casi cualquier dato sobre los partidos ya disputados; desde elresultado final, hasta la cantidad de jugadores lesionados que tenía un equipo antes de comenzar el par-tido. Por tanto se puede aprovechar toda esta información almacenada para crear modelos que prediganel resultado de un cierto partido, aunque ya existen varios modelos capaces de dar unas probabilidadesmuy cercanas a la realidad si se dispone de los datos suficientes. Un modelo popular y que ha sido

1

Page 8: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

2 Capítulo 1. Introducción

revisado varias veces es el de Maher (1982), en el que se intenta predecir el número de goles que cadaequipo anota mediante variables Poisson multivariantes.

Nuestro trabajo consta de dos partes diferenciadas. En primer lugar estudiaremos partidos de fútbole intentaremos predecir sus resultados. En estos pueden darse tres resultados distintos: victoria local,victoria visitante y empate, pero sólo modelaremos dos de los casos, el de victoria local y el de vic-toria visitante. El estudio lo haremos mediante regresión logística múltiple con variables predictorassencillas. Además, queremos obtener modelos aplicables a cualquier competición y que sean capacesde predecir solamente por cómo están jugando en la competición actual, sin tener en cuenta el “nombre”de los equipos que disputan el partido.

Una vez que tengamos las probabilidades de nuestros modelos, la segunda parte consistirá en buscaruna estrategia óptima para obtener el mayor beneficio posible en un caso real de apuestas. Para estaparte del trabajo es necesario repasar el concepto básico de cuota. La cuota es la cantidad ofrecida poruna casa de apuestas que multiplicará nuestra inversión en caso de acertar la apuesta. Como es lógico,la cuota nunca es más pequeña que 1, y en el caso de que una casa de apuestas de una cuota muy altapara un suceso es debido a que considera que tiene una probabilidad muy baja de ocurrir.

El objetivo es obtener beneficio apostando jornada a jornada de la temporada, por tanto tenemosque diseñar una estrategia óptima que nos indique a qué apostar y qué cantidad. Para ello en primerlugar repasaremos el criterio clásico de Kelly y veremos si lo podemos aplicar a nuestro problema, y ensegundo lugar diseñaremos un problema de programación dinámica que nos maximice la probabilidadde llegar a una cierta cantidad de dinero en un número determinado de jornadas. Dado que en nuestroproblema de programación dinámica estocástica hacen falta una gran cantidad de variables y cálculos,diseñaremos en Java un programa que sea capaz de resolverlo computacionalmente.

La parte final del trabajo consistirá en aplicar todos los resultados obtenidos a la temporada 2017-2018 de la Liga Santander, comprobar si obtenemos beneficios y confirmar así que nuestro modelo depredicción y la estrategia de apuestas seguida, son buenos y aplicables a la vida real.

Page 9: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Capítulo 2

Modelo de regresión logística

2.1. Introducción

Estamos interesados en encontrar un procedimiento para estimar la probabilidad α de que un equipo(por ejemplo el local) obtenga la victoria. Desarrollaremos dos modelos, uno para obtener la probabili-dad de victoria del equipo local y otro para la probabilidad de victoria del equipo visitante.

Vamos a considerar Y como la variable aleatoria victoria equipo local, que toma los valores:

1 si el equipo local gana.

0 en cualquier otro caso (empata o pierde).

En contraposición a los modelos de regresión vistos en la asignatura del grado, donde la variablerespuesta Y ha sido considerada como una variable continua y cuantitativa, en nuestra situación la varia-ble respuesta es cualitativa. Para resolver estas situaciones hay varios métodos distintos del de mínimoscuadrados. Primero repasemos el concepto de variable dicotómica.

Definición 1. Una variable aleatoria X se dice dicotómica si solo puede tomar dos valores, normalmenterepresentados con 1 como éxito y 0 como fracaso.

Por tanto, es claro que la variable Y mencionada anteriormente es dicotómica.Estas situaciones donde la variable respuesta es dicotómica son bastante comunes y ocurren con fre-

cuencia en aplicaciones estadísticas. Por ejemplo, si una persona tiene o no una determinada enferme-dad, o si una empresa después de una determinada inversión permanece solvente o entra en bancarrota,son casos en los que la variable respuesta puede ser codificada con los valores 0 y 1. Para predecir lavariable respuesta en situaciones de este estilo, se intentan modelar las probabilidades que toma Y parauno de esos dos valores cuando conocemos las variables predcitoras. En nuestro caso nos centraremosen obtener P(Y = 1).

El modelo de regresión lineal por mínimos cuadrados presenta varias inconsistencias cuando lavariable respuesta es dicotómica. Vamos a ilustrar ésto considerando un problema de regresión linealsimple en el que sólo tenemos una variable predictora (los resultados obtenidos son válidos tambiénpara el caso de regresión múltiple).

Vamos a denotar α como la probabilidad de que Y = 1 cuando X = x. Si usamos el modelo estándarde regresión lineal para precedir α , obtenemos lo siguiente:

α = P(Y = 1|X = x) = β0 +β1x+ ε (2.1)

Como α es una probabilidad debe tomar valores entre 0 y 1, pero es claro que la función lineal dada en(2.1) puede tomar valores fuera del intervalo [0,1], y por lo tanto este modelo no puede ser utilizado parapredecir probabilidades. Otra razón por la que el método ordinario de mínimos cuadrados es inapropiadoes debido a que la variable respuesta Y es una variable aleatoria Bernoulli, y como consecuencia, su

3

Page 10: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

4 Capítulo 2. Modelo de regresión logística

varianza depende de α , por lo que no se cumple la hipótesis de varianza constante (homocedasticidad)que es necesaria para realizar un ajuste de regresión lineal por mínimos cuadrados.

Por esta razón, el análisis de modelos de regresión con variable respuesta dicotómica es muy distintoal de mínimos cuadrados ordinarios.

2.2. Modelo logit

En la mayoría de las situaciones donde la variable respuesta es dicotómica, la relación entre laprobabilidad α y la variable predictora X parece una curva con forma de S, como se puede apreciar enla Figura 2.1, conocida como S-Shaped curve.

1

Figura 2.1: S-Shaped curve

Vemos que inicialmente la probabilidad α aumenta lentamente a medida que se incrementa X , pos-teriormente este incremento es mayor, y finalmente se estabiliza; pero no va más allá de 1, lo queintuitivamente tiene sentido ya que estamos hablando de probabilidades.

La forma de la S-Curve puede ser reproducida si modelizamos las probabilidades de la siguienteforma:

α = P(Y = 1|X = x) =eβ0+β1x

1+ eβ0+β1x (2.2)

Esto es lo que conocemos como modelo de regresión logística, aunque cabe destacar que hay otrasformas de modelizar las probabilidades que también reproducen la S-Curve.

El modelo logistico puede ser genaralizado directamente a la situación en la que tenemos variasvariables predictoras, en cuyo caso la probabilidad α viene dada por:

α = P(Y = 1|X1 = x1, . . . ,Xp = xp) =eβ0+β1x1+β2x2+...+βpxp

1+ eβ0+β1x1+β2x2+...+βpxp(2.3)

La ecuación (2.3) es llamada función de regresión logística. Como se puede apreciar, estamos ante unafunción no lineal de parámetros βi ∀i = 0, . . . , p, sin embargo, puede ser linealizada por medio de loque se conoce como transformación logistica. En este caso, en lugar de trabajar directamente con α , setrabaja con un valor transformado de α .

En primer lugar, si α es la probabilidad de que un evento ocurra, la proporción α

1−αse conoce como

la proporción de probabilidades, odds ratio (cociente de probabilidades), para dicho evento. Como

1−α = P(Y = 0|X1 = x1, . . . ,Xp = xp) =1

1+ eβ0+β1x1+β2x2+...+βpxp

Se tiene queα

1−α= eβ0+β1x1+β2x2+...+βpxp

Tomando logaritmos en ambos lados, obtenemos

g(x1, . . . ,xp) = log(

α

1−α

)= β0 +β1x1 +β2x2 + . . .+βpxp (2.4)

Page 11: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 5

El logaritmo del odds ratio se conoce como logit. Por la ecuación (2.4) puede verse que la transfor-mación logit produce una función lineal de parámetros βi ∀i = 0, . . . , p. Notar también que el rango de

valores de α en (2.3) está entre 0 y 1, lo que implica que el rango de valores de log(

α

1−α

)está entre

−∞ y ∞, por lo que es más apropiado para el ajuste de regresión lineal.

2.2.1. Obtención de los estimadores

En cuanto a la obtención de los estimadores el método usado es el de máxima verosimilitud, dondelas estimaciones son calculadas numéricamente usando métodos iterativos. Por lo tanto, al contrario queen el método de mínimos cuadrados, no existe una expresión analítica sencilla para los estimadores delos parámetros así que no nos centraremos en los aspectos computacionales de como se obtienen.

2.3. Presentación de los modelos

Una vez explicado el modelo de regresión logística vamos a aplicarlo a nuestro problema, en el quequeremos predecir la variable dicotómica Y victoria equipo local a partir de varias variables predictoras(regresoras). Cabe destacar que queremos diseñar un modelo que nos pueda predecir si gana un equipoo no sin importarnos la competición en la que juegue, ni el “nombre” de los equipos que disputen elpartido, simplemente por cómo están jugando en el campeonato. Además, parece lógico que al tratarsede partidos de fútbol entre equipos de una misma clasificación, se tenga en cuenta variables como laposición en la tabla del equipo local, la posición en la tabla del equipo visitante, en que jornada delcampeonato nos encontramos y alguna variable que nos informe de la forma física de cada equipo enel momento del partido. Por estos motivos, hemos decidido ensayar un modelo de regresión logísticamúltiple con las variables que se indican a continuación:

X1 representa la diferencia de puntos entre el equipo local y el visitante dividido por el número dela jornada en la que se disputa el partido (DPJornada).

X2 representa la diferencia de puntos entre el equipo local y el visitante dividido por el logar-timo del número de la jornada en la que se disputa el partido (DPLogJornada) (más adelanteexplicaremos el porqué de la elección de esta variable).

X3 representa lo que interpretaremos como racha del equipo que juega como local (RL1).

X4 representa la que interpretaremos como racha del equipo que juega como visitante (RV1).

X5 representa una definición alternativa de racha del equipo que juega como local (RL2).

X6 representa una definición alternativa de racha del equipo que juega como visitante (RV2).

Vamos a explicar brevemente lo que hemos entendido por racha. La racha de un equipo es el estadode forma en el que se encuentra en el momento de disputar un partido, coloquialmente hablando se dicelo “fuerte” que está un equipo, y como es lógico, un equipo está en mejor estado de forma (está másfuerte) conforme va ganando partidos consecutivos.

Por poner un ejemplo sencillo, imaginémonos que el equipo A lleva 3 partidos seguidos ganando yse encuentra décimo en la tabla y que por otro lado tenemos el equipo B que lleva 2 partidos seguidosperdiendo aunque se encuentra cuarto en la tabla. En este caso si sólo se tuviera en cuenta la posición decada equipo en la tabla, parece lógico dar una probabilidad mayor de vencer al equipo B, pero la realidadno es así, ya que el equipo A está mucho más “fuerte” y puede llevarse perfectamente el partido.

Dicho esto, hemos creado la variable “racha” (variables RL1 y RV1) para cada equipo de la siguienteforma:

Es una variable cuyo rango está en [1,5].

Page 12: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

6 Capítulo 2. Modelo de regresión logística

Todos los equipos empiezan la temporada con una racha de 1.

Si un equipo gana, entonces su racha aumentará en 1 en la jornada siguiente hasta alcanzar laracha máxima (5), la cual no puede aumentar más aunque el equipo gane.

Si un equipo empata, entonces su racha de la jornada siguiente permanecerá igual.

Si un equipo pierde, entonces se “rompe” su racha, y por lo tanto en la jornada siguiente tendrávalor de 1.

Alternativamente hemos definido las variables RL2 y RV2 de forma análoga con la única diferenciade que cuando un equipo pierde, su racha disminuye en 1 en lugar de volver a 1. Destacar que estas defi-niciones del concepto de racha son de nuestra invención y podría ser definido de muchas otras manerasdiferentes.

A continuación veamos cómo hemos llegado a la elección de la variable DPLogJornada; en primerlugar, es obvio que para predecir Y va a influir tanto la diferencia de puntos entre ambos equipos, co-mo la jornada en la que se dispute el partido ya que, dependiendo de la jornada en la que estemos, ladiferencia de puntos puede ser más o menos significativa. Pongamos también un sencillo ejemplo; unadiferencia de 8 puntos entre el equipo local y el visitante en la jornada 4 es mucho más significativa queuna diferencia de 8 puntos en la jornada 34 (lo que querrá decir que son dos equipos muy cerca en la cla-sificación y que apenas hay diferencia entre ellos). Por lo tanto, queremos que en las primeras jornadasuna diferencia de puntos pequeña sea bastante significativa, y conforme vaya aumentando el número dela jornada, una diferencia de puntos pequeña sea menos importante. Si hacemos solamente el cocientecomo en la variable DPJornada nos encontraremos con el problema de que la jornada tendrá muchomas peso que la diferencia de puntos debido a que crece más rápido y eso tampoco es conveniente, perosi le introducimos el logaritmo (variable DPLogJornada), ya crece más despacio y se ajusta mejor a loque queremos.

2.3.1. Creación y resultados del modelo victoria local

Para realizar el modelo, hemos creado e introducido en R una base de datos con todos los par-tidos de la primera división de Liga Española desde la temporada 2013− 2014 hasta la temporada2016−2017, lo que hacen un total de 1520 partidos. De estos partidos, hemos quitado aquellos en losque Jornada < 5, debido a que al principio todos los equipos empiezan con los mismos puntos y con lamisma racha, y también aquellos en los que Jornada > 35, ya que al final de temporada muchos equiposbajan su nivel debido a que aunque ganen o pierdan tienen asegurada una cierta posición en la tabla. Asípues, parece aconsejable eliminarlos de la base de datos ya que en ambos casos son muy difíciles depredecir y obtendríamos datos anómalos. Para cada uno de los partidos restantes, hemos comprobado lospuntos que llevaba cada equipo en la clasificación antes de comenzar éste, y hemos calculado la racha decada uno en función del resultado de la jornada anterior. Posteriormente validaremos tanto este mode-lo como el de victoria visitante con esta base de datos y con los resultados de la temporada 2017−2018.

Dado que tenemos un número elevado de variables predictoras y algunas muy parecidas, hemosrealizado el modelo de regresión logística paso a paso con criterio AIC. El criterio AIC es una medidaestadística que proporciona un modelo con las variables más significativas, en el que se pierda la menorcantidad de información posible (para ver las ordenes ejecutadas para llegar al modelo, consultar elscript en el anexo). Los resultados obtenidos son los siguientes:

Page 13: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 7

Por tanto el modelo de victoria local cuenta con variables predictoras DPLogJornada y RL2. Esbastante destacable el hecho de que ninguna de las variables que definen la racha visitante sean signi-ficativas a la hora de predecir si un equipo local gana o no, ya que el modelo sólo señala interesante elestado de racha del equipo local y la diferencia de puntos según en la jornada en la que se esté a la horade predecir. La estimación de los parámetros es:

β0 =−0,301

β2 = 0,173

β5 = 0,083

Estos coeficientes determinan que si aumentamos en una unidad la variable DPLogJornada o lavariable RL2, el odds ratio se incrementa en e0,173 ó e0,083 respectivamente.

Así pues, la probabilidad α de que en un determinado partido, gane el equipo local, viene dada por:

α = P(Y = 1|X2 = x2,X5 = x5) =e−0,301+0,173x2+0,083x5

1+ e−0,301+0,173x2+0,083x5

Luego haciendo la transformación logística mencionada anteriormente tenemos que:

log(

α

1−α

)=−0,301+0,173x2 +0,083x5

Viendo la salida por pantalla de R, se aprecia claramente que la variable más significativa y por tantomas importante a la hora de predecir es DPLogJornada (es la que tiene un ρ-valor más pequeño). Larelación entre esta variable y la probabilidad α viene dada por la Figura 2.2.

Como se aprecia, la Figura 2.2 también tiene una forma de S-Curve, luego parece haber sido apro-piada la elección de un modelo de regresión logística para predecir la victoria del equipo local en undeterminado partido de fútbol. Posteriormente validaremos más el modelo.

2.3.2. Creación y resultados del modelo victoria visitante

Para la creación de este modelo hemos seguido el mismo procedimiento que en el anterior, unmodelo de regresión logística paso a paso con criterio AIC sobre la misma base de datos. Al realizar elmodelo paso a paso, R nos intuía como mejor modelo uno con DPLogJornada, DPJornada y RV1 comovariables predictoras, pero no podemos aceptarlo como bueno dado que las variables DPLogJornaday DPJornada están muy correladas (coeficiente de correlación de Pearson de 0,95). Esta situaciónllamada multicolinealidad aproximada, implica que las varianzas de los estimadores, y por lo tanto laspredicciones, sean grandes e imprecisas. Para solventar este problema hemos planteado las siguientesalternativas:

Page 14: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

8 Capítulo 2. Modelo de regresión logística

Figura 2.2: Relación α y DPLogJornada

1. Desarrollar un modelo de regresión logística paso a paso pero sin la variable DPJornada en labase de datos. R nos ofrece un modelo sólo con DPLogJornada como variable predictora.

2. Desarrollar otro modelo de regresión logistica paso a paso, pero esta vez quitando la variableDPLogJornada de la base de datos. En este caso R nos ofrece un modelo con RV1 y DPJornadacomo variables predictoras.

Analizando los dos modelos nos hemos decantado por el primero, ya que en el segundo la variablepredcitora RV1 tiene un ρ−valor de 0,11, muy elevado como para considerarla variable significativa.Un resumen del modelo final es el siguiente(ordenes en el anexo):

Es interesante ver que para predecir la victoria del equipo visitante sólo es necesario saber los puntosque tienen cada equipo en la jornada correspondiente y no importa ningún tipo de racha. Los estimadoresde los parámetros son:

β0 =−1,036

β2 =−0,187

Por lo tanto, cada vez que aumentamos en una unidad la variable DPLogJornada, el odds ratio seincrementa en e−0,187. Es muy interesante ver que el coeficiente β2 es prácticamente igual que en el mo-delo victoria local pero cambiado de signo. Esto es debido a que una diferencia de puntos positiva entreel local y el visitante influye positivamente a la hora de predecir la victoria local pero negativamentecuando se predice la victoria visitante.

Page 15: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 9

Luego la probabilidad γ de que en un determinado partido, gane el equipo visitante, viene dada por:

γ = P(Y = 1|X2 = x2) =e−1,036−0,187x2

1+ e−1,036−0,187x2

Realizando la trasnformación logistica para linealizar, obtenemos lo siguiente:

log(

γ

1− γ

)=−1,036−0,187x2

De esta manera ya tenemos los dos modelos para predecir la probabilidad de que en un ciertopartido de fútbol, gane el equipo local o gane el equipo visitante a partir de unas variables predictorasmuy intuitivas y sencillas de obtener.

2.4. Validación de los modelos

Para comprobar si los resultados que dan nuestros modelos son aceptables vamos a realizar variaspruebas sobre los datos con los que los hemos creado (de la jornada 4 a la jornada 35 por las razonesmencionadas anteriormente). En primer lugar, vamos a contabilizar las veces que da como suceso másprobable la victoria local contrastándolo con los datos de dichas temporadas. Los resultados para elmodelo victoria local, considerando que el modelo predice éxito cuando α > 0,5 son los siguientes:

Predicción | Resultado Victoria local No victoria localVictoria local 370(66,1%) 190(33,1%)

No victoria local 244(33,9%) 476(66,1%)

Cuadro 2.1: Tabla que representa la predicción del modelo victoria local con el resultado que se dio encada partido con sus respectivos porcentajes por filas.

Los resultados son favorables al modelo ya que de 1280 resultados se aciertan 846, lo que suponeun 66,1%. Veamos también el mismo contraste pero con el modelo victoria visitante considerando queel modelo predice éxito cuando γ > 0,5.

Predicción | Resultado Victoria visitante No victoria visitanteVictoria visitante 93(59,6%) 63(40,4%)

No victoria visitante 283(25,2%) 841(74,8%)

Cuadro 2.2: Tabla que representa la predicción del modelo victoria visitante con el resultado que se dioen cada partido con sus respectivos porcentajes por filas.

En este caso los resultados también son favorables al modelo ya que acierta 934 de 320 resultados,lo que supone un 72,96%. Mirando a una posible aplicación del modelo al mundo de las apuestas, caberesaltar que no nos interesa tanto si el equipo va a ganar o no, si no que queremos estimar las proba-bilidades de forma que sean lo más cercanas a la realidad posible, para compararlas con las cuotas ydecidir si merece la pena apostar. Por ejemplo, en algunas situaciones merece más la pena apostar a unequipo con probabilidad de victoria de 0,4 pero con cuota de 21e , que a un equipo con probabilidadde victoria de 0,8 pero con cuota de 1,08e.

A simple vista los resultados parecen aceptables, para comprobar si finalmente lo son vamos arealizar lo que se conoce como curva ROC. La curva ROC es una herramienta estadística utilizadaen el análisis de la bondad de modelos con variable respuesta de carácter dicotómico. La curva ROC

Page 16: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

10 Capítulo 2. Modelo de regresión logística

representa las medidas de sensibilidad y especificidad, por tanto veamos previamente qué son estos dosconceptos en el ámbito de partidos de fútbol (centrándonos sólo en la victoria local ya que es análogopara la victoria visitante).

Llamamos sensibilidad a la probabilidad de, dado un partido en el que gana el local, el modeloprediga que gana el local. También esto se conoce como razón de verdaderos positivos.

Llamamos especificidad a la probabilidad de, dado un partido en el que no gana el equipo local,el modelo prediga que no gana el equipo local. También esto se conoce como razón de verdaderosnegativos.

Notar que tanto la sensibilidad como la especificidad depende de un parámetro α que es el punto decorte a partir del cuál se predice que el equipo local gana. Para calcularlas, es necesario tener en cuentalos siguientes conceptos:

Denotamos V α+ a los verdaderos positivos, es decir, a los partidos en los que gana el local y el

modelo predice que gana el local (es decir, si p > α).

Denotamos V α− a los verdaderos negativo, es decir, a los partidos en los que pierde el local y el

modelo predice que pierde el local (es decir, si p < α ).

Llamamos falsos positivos Fα+ a los partidos en los que pierde el local y el modelo predice que

gana (p > α).

Llamamos falsos negativos Fα− a los partidos en los que gana el local y el modelo predice que no

gana (p < α).

Con esta notación, la sensibilidad Sα es

Sα =V α+

V α+ +Fα

y la especificidad Eα es

Eα =V α−

V α− +Fα

+

La curva ROC representa 1− especi f icidad frente a la sensibilidad para cada posible valor α .Para comprobar la bondad de un modelo a partir de la curva ROC generada se utiliza habitualmente elárea bajo la curva (AUC), y si se da que AUC > 0,7, entonces el modelo tiene un valor de diagnósticoaceptable. Las curvas ROC obtenidas de los modelos victoria local y victoria visitante son las siguientes:

Page 17: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 11

(a) Victoria local (b) Victoria visitante

Figura 2.3: Curvas ROC de ambos modelos

Como vemos los valores del AUC están en torno a 0,7 y por lo tanto los modelos se consideranadecuados. Veamos ahora las mismas comprobaciones pero sobre la temporada 2017− 2018. Análo-gamente, podemos validar los modelos aplicándolos a la temporada 2017− 2018; la comparativa delo que predicen los modelos victoria local y victoria visitante con lo que sucede en realidad se puedecomprobar en los Cuadros 2.3 y 2.4 respectivamente.

Predicción | Resultado Victoria local No victoria localVictoria local 89(63,1%) 52(36,9%)

No victoria local 64(35,8%) 115(64,2%)

Cuadro 2.3: Tabla que representa la predicción del modelo victoria local con el resultado que se dio encada partido con sus respectivos porcentajes por filas en la temporada 2017−2018.

Predicción | Resultado Victoria visitante No victoria visitanteVictoria visitante 20(52,6%) 18(47,4%)

No victoria visitante 74(26,2%) 208(73,8%)

Cuadro 2.4: Tabla que representa la predicción del modelo victoria visitante con el resultado que se dioen cada partido con sus respectivos porcentajes por filas en la temporada 2017−2018.

En esta temporada, los resultados también son favorables a los modelos, ya que el modelo victorialocal acierta 204 de 320 lo que supone un 63,75% y el modelo victoria visitante acierta 228 de 320 re-sultados lo que supone un 71,25%. Comprobamos también la bondad de los modelos en esta temporadamediante las curvas ROC:

Page 18: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

12 Capítulo 2. Modelo de regresión logística

(a) Victoria local (b) Victoria visitante

Figura 2.4: Curvas ROC de ambos modelos en la temporada 2017−2018

Los valores del AUC están ligeramente por debajo de los de la Figura 2.3, lo que es lógico ya quelos datos de la temporada 2017−2018 no se han usado para el ajuste. En cualquier caso se encuentranmuy cercanos a 0,7 lo que puede interpretarse como aceptable.

Page 19: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Capítulo 3

Determinación de una estrategia óptimade apuesta

3.1. Introducción

Una vez obtenidos los modelos que predicen resultados de fútbol, el objetivo final es usarlos paraobtener beneficio económico en las casas de apuestas. A diferencia de muchos otros modelos en losque se apuesta siempre una cantidad fija, permitiremos apostar una cantidad de dinero variable en cadapartido para maximizar la ganancia. Para ello, hemos pensado en varias alternativas; en primer lugarrepasaremos el clásico Criterio de Kelly y veremos si es adecuado para nuestros modelos, y posterior-mente desarrollaremos un problema de programación dinámica que nos maximice la probabilidad deconseguir una cantidad de dinero en un cierto número de jornadas. Esta segunda opción parece a prioribastante adecuada dado que el desarrollo de un problema de programación dinámica se basa en unatoma de decisiones secuencial, luego se ajusta bastante a la idea de ir apostando a varios partidos encada una de las jornadas de la temporada.

3.2. Criterio de Kelly

El criterio de Kelly, como se indica en [7], es un procedimiento probabilístico cuyo objetivo esmaximizar la esperanza del beneficio cuando se apuesta en un juego favorable. Por “juego favorable”entendemos aquel en el que existe una estrategia de apuesta tal que P( lım

n→∞Xn = +∞) > 0, donde Xn

es el capital después de n repeticiones del juego. Veamos la idea del criterio de Kelly con un sencilloejemplo:

Imaginemos un juego contra alguien infinitamente rico en el que se intenta adivinar cómo caerá unamoneda después de un lanzamiento. Suponemos que la moneda tiene probabilidad de cara p > 1/2 yvamos a apostar siempre cara. En el caso de que ganemos, el beneficio obtenido será el apostado y enel caso de que perdamos, la pérdida es igual a la cantidad apostada. Al comienzo del juego, nuestrocapital inicial es de X0 y el principal problema se basa en elegir qué cantidad Bi apostamos en la i-ésimarepetición. Un criterio clásico es el de elegir Bi para cada i de manera que el valor esperado E(Xn) seamáximo después de n repeticiones. Tomando Tk = 1 si el k-ésimo resultado es cara y Tk =−1 si es cruz,entonces Xk = Xk−1 +TkBk para k = 1,2,3, . . . y por lo tanto se sigue que Xn = X0 +∑

nk=1 TkBk. Se tiene

E(Xn) = X0 +n

∑k=1

E(TkBk) = X0 +n

∑k=1

(p−q)E(Bk), con q = 1− p (3.1)

Como p− q > 0, el juego tiene una esperanza positiva, luego en lugar de maximizar E(Xn) vamos amaximizar E(Bk) en cada repetición. Así pues, para maximizar la esperanza de la ganancia debemosapostar todo nuestro capital en cada repetición: inicialmente B1 = X0, si ganamos, B2 = 2X0 y así su-cesivamente. Sin embargo, la probabilidad de arruinarnos apostando de esta manera viene dada por

13

Page 20: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

14 Capítulo 3. Determinación de una estrategia óptima de apuesta

1− pn, y con 1/2 < p < 1 se da que lımn→∞

(1− pn) = 1, por lo que la ruina es segura, así que apostar paramaximizar la ganancia no es una buena estrategia.

Por otro lado, si apostamos con el objetivo de minimizar la probabilidad de ruina (entendemos ruinacuando Xk = 0 para algún k), llegamos a la conclusión de que tenemos que apostar lo mínimo posibleen cada repetición. Sin embargo, ésta tampoco es una buena estrategia ya que estamos minimizandosimultáneamente la esperanza de la ganancia media.

Una estrategia intermedia que esté entre maximizar E(Xn) (asegurando la ruina) y minimizar laprobabilidad de ruina (minimizando también E(Xn)) fue propuesta por J.L. Kelly.

En el juego de la moneda antes mencionado, donde la probabilidad de ganar y el beneficio sonsiempre iguales, parece intuitivo que la estrategia “óptima” es apostar siempre la misma fracción f denuestra fortuna. Por consiguiente, si apostamos de forma que Bi = f Xi−1, donde 0 6 f 6 1, estaremossiempre apostando el mismo porcentaje de nuestro capital (lo que se conoce como fracción fija). Es fácilver que de esta manera, si denotamos por S al número de veces que ganamos el juego y por F al númerode veces que perdemos, se sigue que Xn = X0(1+ f )S(1− f )F , donde S+F = n, y si además tomamos0 < f < 1, se tiene que P(Xn = 0) = 0, luego nunca se alcanzará el estado de ruina.

Dado que

en log[Xn/X0]1/n

= Xn/X0

la cantidad

log[

Xn

X0

]1/n

=Sn

log(1+ f )+Fn

log(1− f )

mide el coeficiente exponencial del incremento de la fortuna por cada jugada. Kelly propone maximizarla función G( f ), donde

G( f ) = E

{log[

Xn

X0

]1/n}

= E{

Sn

log(1+ f )+Fn

log(1− f )}= p log(1+ f )+q log(1− f )

Por tanto

G′( f ) =p

1+ f− q

1− f=

p−q− f(1+ f )(1− f )

= 0

con f = p−q. Además como se tiene que

G′′( f ) =− f 2 +2 f (p−q)−1

(1− f 2)2 < 0

se sigue que G′( f ) es monótona y estrictamente decreciente en [0,1). Además, dado que G′(0)= p−q>0, lım

f→1−G′( f ) = −∞ y por continuidad de G′( f ), G( f ) tiene un único máximo en f ∗ = p−q, como se

puede apreciar en la Figura 3.1. Es decir, el criterio de Kelly propone apostar la fracción p−q = 2p−1en cada jugada. La explicación de por qué Kelly eligió maximizar la función G( f ) puede encontrarsedetalladamente con demostraciones en [9].

El criterio de Kelly puede ser extendido con facilidad a juegos dónde no siempre tenemos la mismacuota. Sea b = cuota− 1 y suponiendo que en cada repetición la probabilidad de ganar es p > 0 ybp− q > 0, entonces el juego sigue siendo favorable y el procedimiento descrito anteriormente puedeser también usado para maximizar

G( f ) = E{

log[

Xn

X0

]}= p log(1+b f )+q log(1− f )

Page 21: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 15

f1

G( f )

0 f ∗

Figura 3.1: Gráfica de la función G( f ) en el intervalo [0,1] con p = 0,8.

y con los mismos argumentos se llega a que el único máximo se alcanza en f ∗ = (bp−q)/b. Esto es, elcriterio de Kelly sigue apostar la fracción (bp−q)/b cuando el juego es favorable.

El gran problema que tiene el criterio de Kelly es que parte del supuesto de que el depósito inicialsea infinitamente divisible y esto en la práctica no se cumple.

Veamos que pasa si aplicamos el criterio de Kelly a nuestros modelos en la temporada 2017−2018.Para ello hemos calculado la cantidad E(bene f icio) y, en el partido donde esta cantidad sea más alta(y positiva), hemos apostado la parte entera de la fracción (bp− q)/b = (cp− 1)/(c− 1) de nuestrocapital, siendo p y c la probabilidad de victoria y su cuota respectivamente. Empezando con 10e en lajornada 4 la estrategia según el criterio de Kelly es (denotando por B a nuestro capital):

En el partido S.D. Eibar - C.D. Leganés (1-0), la E(bene f icio) del S.D. Eibar es de 0,7 y la delC.D. Leganés es de 1,38, luego apostamos al C.D. Leganés (p = 0,34 y c = 3,8) la fracciónf = 0,134 de nuestro capital, es decir, b10 ·0,134c= b1,34c= 1e y lo perdemos. Luego B = 9.

En el partido Getafe C.F. - F.C. Barcelona (1-2) de la jornada 4, razonando de la misma manera,nos dice apostar al Getafe C.F. (p = 0,32 y c = 11,6) la fracción f = 0,25 de nuestro capital,luego le apostamos b9 ·0,25c= b2,25c= 2e y los perdemos, es decir, B = 7e.

En el partido Levante U.D. - Valencia C.F. (1-1), nos dice apostar al Levante U.D. (p = 0,46 yc = 3,15) la fracción f = 0,22 de nuestro capital, es decir, 1e y lo perdemos, por tanto B = 6.

En el partido Real Sociedad - Real Madrid C.F. (1-3), apostamos a la Real Sociedad (p = 0,610 yc = 4,75 la fracción f = 0,5 de nuestro dinero, es decir, 3e que los perdemos y por consiguienteB = 3

En el partido Girona - Sevilla F.C. (0-1), nos dice apostar al Girona (p = 0,36 y c = 3,25) lafracción f = 0,06 de nuestro capital, es decir, 0,2e pero cómo la apuesta mínima de la casa deapuestas es de 1e lo apostamos y lo perdemos, por tanto B = 2.

En el partido C.D. Alavés - Villarreal C.F. (0-3), apostamos al C.D. Alavés (p = 0,36 y c = 3,01)la fracción 0,05 de nuestro capital, y por el mismo razonamiento apostamos 1e y lo perdemos,por lo tanto B = 1.

Pasamos a la jornada 5 y nos aconseja apostar la fracción f = 0,11 al S.D. Eibar (p = 0,15 yc = 21 partido F.C. Barcelona - S.D. Eibar (6-1), es decir, apostamos 1e y lo perdemos, por tantoB = 0.

En consecuencia, como hemos comprobado en la jornada 5 ya hemos alcanzado la ruina, luegocriterio de Kelly no es conveniente para nuestro problema. De hecho, este criterio ha sido criticado por

Page 22: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

16 Capítulo 3. Determinación de una estrategia óptima de apuesta

varios autores, [11], y se recomienda como regla general, apostar menos de lo que dice el criterio paraevitar una ruina temprana.

3.3. Programación dinámica

La programación dinámica proporciona un procedimiento para determinar la combinación de deci-siones que maximiza el beneficio total o minimiza el costo total en problemas en los que ha de tomarseun conjunto de decisiones secuencialmente. La programación dinámica trata el problema, que puedecontener un gran número de variables interrelacionadas, como si estuviera formado por una sucesiónde problemas, cada uno de los cuales tuviera sólo unas pocas variables. Puede aplicarse a problemascuya representación matemática inicial es bastante diferente y no existe un planteamiento matemático.Pueden ser deterministas o estocásticos (nuestro problema será de carácter estocástico).

Las características generales de un problema de programación dinámica son las siguientes:

El problema puede ser dividido en etapas, de manera que se ha de tomar una decisión en cadaetapa.

Cada etapa tiene asociada un cierto número de estados. Llamamos estado a toda la informaciónque se precisa en cualquier etapa para poder tomar una decisión óptima.

La decisión elegida en cualquier etapa describe cómo se transforma el estado en la etapa actual enel estado en la etapa siguiente. En el caso de programación dinámica estocástica, el estado actualy la decisión tomada determinan la distribución de probabilidad del estado en la etapa siguiente.

Principio de optimalidad. Dado el estado actual, la decisión óptima para cada una de las res-tantes etapas no depende de los estados en los que se ha estado previamente o de las decisionespreviamente tomadas.

Resumiendo, el planteamiento de un problema de programación dinámica se basa en un sistemaque evoluciona a lo largo de un cierto número de etapas, en cada una de las cuales, el sistema estádescrito por un conjunto de parámetros denominados estados. En cada etapa, independientemente delestado en el que se encuentre el sistema, debe de tomarse una decisión, y para tomar esta decisión, noes relevante la historia pasada del sistema (lo que hemos mencionado como principio de optimalidad).Cuando se toma una decisión, se obtiene un pago (beneficio o costo) que depende del estado en el queestaba el sistema y de la decisión tomada. El propósito del problema es optimizar alguna función delestado inicial y de las decisiones subsiguientes. La notación empleada es la siguiente:

N denota el número de etapas.

xk, k = 0, . . . ,N−1 denota el estado en la etapa k, que recoge toda la información que se precisaen cada etapa para tomar la decisión óptima. El estado al comienzo del problema es x0.

dk, k = 0, . . . ,N−1 denota la variable decisión. Se ha de seleccionar en la etapa k sabiendo queel estado del sistema es xk. El conjunto de decisiones posibles del sistema dependerá, en general,del estado del sistema. Se denota por Dk(xk).

wk, k = 0, . . . ,N − 1 denota la distribución de probabilidad. Representa el parámetro aleatorioque afecta la transición entre estados y los pagos generados. Las variables wk son independientesaunque su distribución puede depender de xk y dk.

Ecuación de transferencia, xk+1 = fk(xk,dk,wk), k = 0, . . . ,N− 1. Indica como se transforma elestado actual xk por efecto de la decisión dk y de la componente aleatoria wk, en el estado en laetapa siguiente xk+1.

Page 23: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 17

gk(xk,dk,wk), k = 0, . . . ,N − 1 denota el pago en una etapa. Indica el beneficio o costo que elsistema genera en una etapa por estar en el estado actual xk , tomar la decisión dk y por el efectode wk.

gN(xN) denota el pago terminal. Indica el pago al terminar el proceso.

Jk, k = 0, . . . ,N denota la función objetivo que queremos maximizar o minimizar.

J?(x0) denota el valor óptimo de la función objetivo, que como es obvio, depende del estadoinicial del sistema.

d?k (xk) denota la decisión óptima que ha de tomarse en cada etapa, k = 0, . . . ,N−1, para cada uno

de los estados xk en los que puede estar el sistema en dicha etapa.

El objetivo final de un problema de programación dinámica estocástico es maximizar (o minimizar)el valor esperado de la suma de los pagos generados en cada etapa y por finalizar el proceso. Es decir,maximizar o minimizar la cantidad:

max{d0,...,dN−1}

Ew0,...,wN−1

{gN(xN)+

N−1

∑k=0

gk(xk,dk,wk)

}La manera utilizada para resolver este problema, es el siguiente algoritmo:

Paso 1: Hacer k = N y JN(xN) = gN(xN).

Paso 2: Hacer k = k−1, y para cada estado, determinar

Jk(xk) = maxdk∈D(xk)

Ewk {gk(xk,dk,wk)+ Jk+1[ fk(xk,dk,wk)]}

Paso 3: si k = 0 detener el algoritmo, en otro caso ir al Paso 2.

Teorema 3.1. En todo problema de programación dinámica se tiene que J?(x0) = J0(x0), es decir, elvalor óptimo de la función objetivo se obtiene en el último paso del algoritmo.

Una demostración extendida de esta teorema puede encontrarse en [4]. Por lo tanto, resolviendo elalgoritmo anterior obtenemos la solución a un problema de programación dinámica.

3.4. Planteamiento del problema

Una vez explicados los conceptos básicos, la notación y el algoritmo empleado en la programacióndinámica, vamos a utilizarlos en nuestro problema. Queremos resaltar que parece muy adecuada la ele-cción de la programación dinámica para nuestro caso ya que queremos diseñar una estrategia óptimaque nos diga a qué equipos apostar y qué cantidad en cada jornada, es decir, tenemos que tomar una seriede decisiones secuencialmente y es precisamente en lo que se basa este tipo de problemas. Como nues-tros modelos sólo predicen resultados de la jornada 4 a la jornada 35, sólo apostaremos en estas jornadas.

El planteamiento principal del problema es el siguiente: Dada una cantidad inicial Bi queremosmaximizar la probabilidad de acabar con una cierta cantidad final B f al cabo de N jornadas apostandoa un número determinado de partidos. En nuestro caso, vamos a tomar Bi = 10 e y B f = 13 e peroen lugar de realizar un sólo problema para obtener B f , que empiece en la jornada 4 y termine en la 35,vamos a dividirlo en subproblemas de 4 en 4 jornadas, con el objetivo de conseguir B f en cada unode ellos. Para lograrlo, tenemos la opción de apostar a la victoria local y a la visitante de 4 partidosdiferentes en cada una de las jornadas. Cabe destacar que:

Si conseguimos nuestro objetivo antes de finalizar las 4 jornadas correspondientes, empezamosun nuevo problema.

Page 24: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

18 Capítulo 3. Determinación de una estrategia óptima de apuesta

Como tenemos dos modelos diferentes para predecir la victoria local y la victoria visitante, con-sideramos cada partido como si fueran dos independientes por si la estrategia óptima es apostartanto al local como al visitante. Además, a la hora de pensar en los distintos casos posibles y cal-cular sus respectivas probabilidades, cuando no gana el local no tiene por que ganar el visitante yviceversa, por consiguiente es más cómodo interpretarlos cómo partidos diferentes (pensando enla posterior programación en Java)

Utilizamos cantidades pequeñas de dinero para no incrementar el coste computacional, pero elprograma que diseñaremos es perfectamente aplicable a cantidades más elevadas. Por el mismorazonamiento hemos elegido apostar en cada jornada a cuatro partidos elegidos al azar en lugarde todos los de la jornada.

Además:

N = 4. Cada una de las etapas identifica a una jornada diferente.

xk denota el dinero disponible al comienzo de la etapa k. Es obvio que si en algún momento xk = 0terminamos el problema sin cumplir nuestro objetivo y si xk > 13 dejamos de apostar por que yase consigue lo que queremos.

x0 = Bi = 10

dik denota al dinero apostado en el partido i correspondiente a la etapa k, con i = 1,2, . . . ,8 y

k = 1, . . . ,4.

wik denota el factor aleatorio que determina el resultado del partido i, con i = 1,2, . . . ,8 y k =

1, . . . ,4.

cik denota la cuota de victoria del partido i correspondiente a la etapa k, con i = 1,2, . . . ,8 y

k = 1, . . . ,4. Las cuotas las hemos obtenido mediante una media aritmética de las principalescasas de apuestas del mundo, tanto físicas cómo de carácter online.

Con esta notación, la ecuación de transporte viene dada por:

xk+1 =8

∑i=1

fk(xk,dik,w

ik) = xk +

8

∑i=1

{di

kcik si wi

kes ganar−di

k si wikes perder

Para poder resolver este tipo de problemas estocásticos en los que se quiere maximizar una proba-bilidad, es necesario definir los pagos generados en cada etapa cómo gk(xk,di

k,wik) = 0 con k = 1,2,3 y

∀i, y el pago terminal cómo

g4(x4) =

{1 si x4 > 130 si x4 < 13

(3.2)

Por otro lado, como el objetivo de un problema genérico de estas características es

max{P(XN >C f )}= maxE[ξ ]

considerando ξ una variable aleatoria tal que

ξ =

{1 si XN >C f

0 si XN <C f

se tiene que

P(x4 > 13) = 1 P[x4 > 13]+0 P[x4 < 13] = E[ξ ] = E[3

∑k=1

gk(xk,dik,w

ik)+g4(x4)] = E[g4(x4)] (3.3)

Page 25: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 19

y de aquí, por el teorema mencionado se sigue que para resolver cada uno de los problemas hay quecalcular

J?(x0) = maxdk∈D

E {g4(x4)}

para lo que es necesario ir recorriendo el algoritmo mencionado en la Sección 3.2. Notar que aunquenormalmente en programación dinámica basta con una resolución del problema para que nos dé las so-luciones de todas las etapas, en nuestro caso no es así, ya que tenemos que resolver tantos problemas deprogramación dinámica como etapas (N = 4); es decir, el primer problema lo resolvemos para N = 4,luego resolvemos un segundo problema con N = 3, luego N = 2 y finalmente N = 1. La razón de estoes que son necesarias las cuotas y las probabilidades de todas las jornadas, pero como es natural, sólotenemos las probabilidades y las cuotas de la jornada en la que se está. Para solventar este problema,hemos programado la primera jornada con las probabilidades y las cuotas reales, pero para las demás he-mos utilizado probabilidades y cuotas ficticias. Estos datos ficticios pueden ponerse a nuestra invención,pero para hacer el problema más real hemos utilizado cinco cuantiles de las probabilidades predichaspor nuestro modelo victoria local de la temporada 2017-2018, ya que es de la única temporada de laque teníamos las cuotas. Para no tener problemas, evitamos el máximo y el mínimo, y de esta maneralos cuantiles elegidos son:

p1 = q0,05 = 0,183 correspondiente al partido Málaga C.F. - Real Sociedad de la jornada 34 cuyacuota local es de 4,48.

p2 = q0,275 = 0,358 correspondiente al partido S.D. Eibar - At. de Madrid de la jornada 19 cuyacuota local es de 3,9.

p3 = q0,50 = 0,472 correspondiente al partido C.D. Alavés - U.D Las Palmas de la jornada 15cuya cuota local es de 2,2.

p4 = q0,725 = 0,611 correspondiente al partido At. de Madrid - Valencia C.F. de la jornada 22cuya cuota local es de 1,49

p5 = q0,95 = 0,818 correspondiente al partido Valencia C.F - R.C.D Espanyol de la jornada 31cuya cuota local es de 1,456.

Notar que son 5 partidos en lugar de 4 que tenemos en la primera etapa y que sólo introducimoslas cuotas y las probabilidades de ganar el local en lugar de poner también las de visitante, pero por elhecho de ser partidos ficticios el programa no considera si son probabilidades y cuotas de ganar el localo el visitante, ni tampoco el hecho de que sean 5 partidos (podían ser más o menos).

Debido a que tenemos cada partido como si fueran dos independientes, la cantidad de combinacionesde resultados que pueden darse es en torno a 28, además también tenemos que calcular todas las posiblesdecisiones, por ejemplo, si xk = 10, las maneras distintas de apostar a 8 partidos (en realidad 9, por quehay un noveno partido que es “no apostar”), son las combinaciones con repetición de 10e a repartirtomados de 9 en 9, es decir, el número combinatorio 18 sobre 9 que es igual 48620. Por esta razón,hemos diseñado un programa en Java que haga esto por nosotros y cuyo código se puede encontrarexplicado con detalle en el anexo.

3.4.1. Aspectos importantes sobre la programación en Java

Hemos realizado un programa en Java en el que a partir de unos datos que nos pide por teclado;nuestro capital inicial, el capital que se quiere conseguir, el número de etapas para conseguir dicho ob-jetivo, el número de partidos (no es necesario duplicar cada uno de ellos ya que lo hace el programaautomáticamente), las probabilidades de ganar el local y el visitante de cada uno de esos partidos (intro-duciremos las que dan nuestros modelos) y las cuotas gana local y gana visitante de cada uno de estos

Page 26: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

20 Capítulo 3. Determinación de una estrategia óptima de apuesta

partidos, el programa nos escribe por pantalla la estrategia óptima que habría que seguir para alcanzar elobjetivo en cada una de las etapas y la probabilidad que tenemos de alcanzarlo. Destacar que el códigodel programa no está sacado de ninguna fuente y es de creación propia.

En relación a cuáles son las cantidades a apostar, el programa nos permitirá apostar de 1 en 1 en elintervalo [0,xk] siendo k la jornada actual y de 5 en 5 en el intervalo [25,xk] siempre y cuando xk < xN

en cuyo caso el programa nos dirá que la solución óptima es no apostar (como es obvio). Recordar queen nuestro caso xN = 13 y por tanto nunca se da la segunda opción aunque esté programada.

El funcionamiento central del programa se basa en calcular la función J en cada una de las etapasde la siguiente manera:

Para la etapa N hemos definido una función que hace exactamente lo explicado en (3.2).

Para las etapas comprendidas en [2,N − 1] calcula la función J para cada uno de los estadosposibles utilizando las probabilidades y cuotas ficticias de la siguiente manera: Fijado un estado,calcula todas las combinaciones de apuestas y para cada una de esas combinaciones, analizatodos los posibles resultados (mediante código binario) que pueden darse, obteniendo la ecuaciónde transporte correspondiente. Mediante la función J de la etapa anterior y la probabilidad de queocurran justamente esos resultados, el programa se queda con la decisión que maximiza el valoresperado, que por lo visto en (3.3) coincide la posibilidad de alcanzar el objetivo.

Para la primera etapa hace exactamente lo mismo pero con las cuotas y las probabilidades intro-ducidas por teclado.

El tiempo de ejecución del programa en un ASUS F540S con CPU Intel Dual-Core es de 6 minutosy 33 segundos.

3.5. Aplicación del programa y resultados obtenidos

Cómo ya tenemos unos modelos que nos predicen probabilidades y un programa que nos asegurauna estrategia óptima para conseguir beneficios, lo lógico es aplicarlo a la vida real. Para ello vamos a irejecutando el programa diseñado en Java jornada a jornada de la temporada 2017-2018 y observar cuá-les son los beneficios obtenidos. Es importante notar que en la aplicación del programa no se ha usadoconocimiento previo de los resultados de la temporada 2017−2018, y por tanto puede considerarse unasimulación real, en el sentido de que se podrían haber hecho estas apuestas a lo largo de la temporada(es cierto que hemos usado los partidos de la temporada para obtener los cuantiles de las cuotas ya queson las únicas que teníamos, sin embargo para la temporada 2018− 2019 pueden usarse los mismoscuantiles y aplicar este procedimiento sin ningún conocimiento adicional de la temporada). Denotamosnuestro capital desde el comienzo de la simulación con B, y vamos a llamar fases a cada uno de lossubproblemas de 4 jornadas.

Fase 1:

Comenzamos en la jornada 4 con x0 = 10, y el objetivo xN = 13 en las próximas 4 jornadas(incluyendo ésta). Elegimos cuatro partidos al azar de la jornada, calculamos las probabilidadesgana local y gana visitante con nuestros modelos y los introducimos en el programa con susrespectivas cuotas. Una vez ejecutado, el programa nos dice que la decisión óptima es apostar 1ea la victoria del Getafe C.F. (p= 0,319, c= 11,6) en el partido Getafe C.F. - F.C. Barcelona (1-2),luego perdemos lo apostado y así B = 9. En esta jornada, la probabilidad de alcanzar el objetivoes de 0,88.

Pasamos a la jornada 5, pero como en la anterior hemos perdido dinero ahora empezamos conx0 = 9 con el objetivo de conseguir xN = 13 en las próximas 2 jornadas. El programa nos dacomo decisión óptima no apostar a nada, de manera que pasamos a la jornada siguiente. Ahora,la probabilidad de alcanzar el objetivo es de 0,82.

Page 27: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 21

En la jornada 6 con x0 = 9 y xN = 13, nos da como solución óptima con probabilidad de alcanzarel objetivo de 0,65, apostar 6e a la victoria del R.C. Celta de Vigo (p1 = 0,224, c1 = 3,25) enel partido S.D Eibar - R.C. Celta de Vigo (0-2) y 3e a la victoria del Sevilla C.F. (p2 = 0,304,c2 = 5,875) en el partido At. de Madrid - Sevilla C.F (2-0). Así pues, aunque pierde el SevillaC.F. gana el Celta, luego se tiene que B = 6 · 3,25 = 19,5 y cómo ya hemos llegado al objetivo,terminamos la fase.

Veamos ahora la Fase 2:

Comenzamos la nueva fase empezando en la jornada 7 con x0 = 10 y buscando el mismo objetivoque antes en 4 jornadas. Procediendo de la misma manera, el programa nos da cómo decisiónóptima apostar 1e a la victoria del C.D. Leganés (p = 0,38, c = 6,5) en el partido C.D Leganés- At. de Madrid (0-0), luego perdemos y B = 9.

Pasamos a la jornada 8 con x0 = 9 con el mismo objetivo pero con una jornada menos paraapostar. La decisión óptima es no apostar a nada.

En la jornada 9 da como solución óptima apostar 9e a la victoria del Betis (p = 0,676, c = 1,57)en el partido Betis - Alavés (2− 0), luego B = 9 · 1,57 = 14,3 y cómo se cumple el objetivoterminamos la fase.

Hasta ahora parece que el programa se comporta igual en todas las fases; apuesta 1e en la primerajornada a un equipo con poca probabilidad de ganar pero con una cuota alta y lo pierde, la segundajornada no apuesta y en la tercera lo hace de manera que consigue el objetivo. No vamos a detallar aquíjornada a jornada qué nos ofrece como estrategia óptima, pero hay un gran número de fases en los quela estrategia es diferente. Por ejemplo repasemos la fase 7. Empezamos en la jornada 22 con el capitalinicial y objetivo de siempre. La decisión óptima dada es que apostemos 2e a la victoria del Girona(p = 0,522, c = 2,5) en el partido Girona - Athletic Club (2-0), luego B = 13 y por lo tanto finalizamosla fase. También hay fases en las que la decisión óptima es distribuir bastante más nuestro dinero, algomuy interesante ya que no es una idea que se le puede ocurrir a cualquiera con facilidad. Sucede algoasí en la fase 13:

Empezamos en la jornada 32, en la que nos dice apostar 4e al At. de Madrid (p1 = 0,871,c1 = 1,25) en el partido At. de Madrid - Levante U.D. (3-0) y 2e a la victoria del Athletic Club(p2 = 0,679, c2 = 1,6) en el partido Athletic Club - R.C. Deportivo (2-3), luego ganamos laprimera apuesta y perdemos la segunda, B = 4+4 ·1,25 = 9.

En la jornada 33 nos dice no apostar a nada.

En la jornada 34 da como estrategia óptima apostar 5e al C.D. Alavés (p1 = 0,466, c1 = 2,29)en el partido U.D. Las Palmas - C.D. Alavés (0-4). Por consiguiente B = 2+ 5 · 2,29 = 13,45 yfinalizamos la fase.

En la Figura 3.2 se puede apreciar cómo va evolucionando nuestro capital jornada a jornada de latemporada. Al finalizar la temporada, nuestro capital es de 58,96e de tal manera que el beneficio es de48,96e por tanto los resultados son excelentes ya que sixtiplicamos nuestro capital inicial.

Como vemos, no en todas las jornadas se gana, y hay un momento de la temporada, en torno a lajornada 20 en la que se encadena una mala racha. Esto sucede en la fase 6, en la que:

En la jornada 19 nos dice apostar 2e al Valencia C.F (p = 0,573, c = 2,28) en el partido R.C.Deportivo - Valencia C.F. (1-2) así que ganamos y B = 8+2 ·2,28 = 12,56.

En la jornada 20 perdemos dinero por que nos aconseja apostar 3e al At. de Madrid (p = 0,738,c = 1,32) en el partido At. de Madrid - Girona (1-1) y así B = 9,56.

Page 28: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

22 Capítulo 3. Determinación de una estrategia óptima de apuesta

Figura 3.2: Beneficio obtenido durante la temporada 2017-2018 empezando con 10e

En la jornada 21 volvemos a perder dinero ya que nos aconseja apostar 3e al Levante (p1 = 0,286,c1 = 4) en el partido R.C Deportivo - Levante U.D. (2-2), 4e al Girona (p2 = 0,471, c2 = 3,05)en el partido Málaga C.F - Girona (0-0) y 1e a la U.D. Las Palmas (p3 = 0,056, c3 = 17,08) enel partido At. de Madrid - U.D. Las Palmas (3-0). Por tanto perdemos en las tres apuestas y asíB = 1,56.

En total, obtenemos una pérdida de casi 9e .Este es el principal problema de optar por la programación dinámica, ya que aunque nos ponemos

en cada fase un objetivo bastante alcanzable, arriesga todo lo que tiene para conseguirlo y así la etapaque pierde, pierde casi todo. Aunque los resultados son muy buenos, todavía se puede conseguir másbeneficio; por ejemplo, si fijamos como objetivo xN = 14 en cada fase con x0 = 10, obtenemos unbeneficio de 59,69e , por lo tanto incrementamos nuestra fortuna en un 600%. Una comparativa entreel beneficio obtenido con xN = 13 y xN = 14 puede verse en la Figura 3.3. Cabe destacar que no poraumentar el objetivo en todas las fases se consigue más beneficio, ya que para conseguirlo la estrategiaa seguir es más arriesgada y se puede perder varias veces todo el dinero.

3.5.1. Alternativas y mejoras

Podríamos haber planteado algunos conceptos del problema de programación dinámica de maneraalternativa. Algunos son las siguientes:

Para las cuotas y probabilidades ficticias, en lugar de tomar los cuantiles de las probabilidadespredichas por nuestros modelos, podemos usar las mismas que introducimos por teclado paratodas las jornadas de la fase.

Dado que la programación dinámica nos da en cada etapa la probabilidad de conseguir el objetivo,una manera de mejorar y obtener posiblemente mejor beneficio es poner un objetivo variable encada una de las fases según las probabilidades que obtenemos por pantalla cuando ejecutamos elprograma. Es decir, buscar el máximo xN tal que la probabilidad de obtenerlo sea mayor que unafijada.

Page 29: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 23

Figura 3.3: Beneficio obtenido durante la temporada 2017-2018 empezando con 10e con diferentesobjetivos por cada fase. En azul xN = 13 y en rosa xN = 14.

3.6. Conclusiones finales

Podemos utilizar modelos estadísticos para predecir los resultados de fútbol de cualquier compe-tición sólo viendo cómo están jugando en los últimos partidos y mirando su posición en la tabla.Aunque nuestros modelos no son mejores respecto a las predicciones de las casas de apuestas,son suficientemente buenos para obtener beneficio económico, como hemos comprobado.

La programación dinámica se adapta a la perfección a un problema real de apuestas de partidosde fútbol, dando altos beneficios.

El problema de intentar predecir un resultado de fútbol y el problema de programación dinámi-ca para diseñar la estrategia óptima de apuesta son totalmente independientes. Hay modelos depredicción ya estudiados en la literatura que dan resultados más cercanos a la realidad que losnuestros y que se pueden usar con el programa de programación dinámica que hemos diseñado.

Page 30: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos
Page 31: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Apéndice A

Código R

BDLigaEsp <-

readXL("C:/Users/sabro/Desktop/Carrera/TFG/Base de datos 2013-2018.xlsx",

rownames=FALSE, header=TRUE, na="", sheet="Hoja3", stringsAsFactors=TRUE)

% MODELO PARA PREDECIR VICTORIA LOCAL

BDLigaEsp <- subset(BDLigaEsp, subset=Jornada>3)

BDLigaEsp <- subset(BDLigaEsp, subset=Jornada<36)

BDLigaEsp$DPJornada <- with(BDLigaEsp, DP/ Jornada)

BDLigaEsp$DPLogJornada <- with(BDLigaEsp, DP/ log(Jornada))

modelo1 <- glm(VL ~ RL1 + RV1 + RL2 + RV2 + DPJornada + DPLogJornada,

data = BDLigaEsp, family = "binomial")

modeloAIC <- stepwise(modelo1, direction = ’backward/forward’ , criterion = ’AIC’)

%Para la curva ROC

BDLigaEsp<- within(BDLigaEsp, {

fitted.modeloAIC <- fitted(modeloAIC)

})

names(BDLigaEsp)[c(19)] <- c("PrediccionVL")

library(pROC)

rocVL<- roc(BDLigaEsp$VL, BDLigaEsp$PrediccionVL)

auc(rocVL)

plot(rocVL, col="red", print.auc=TRUE)

%Area under the curve: 0.722

25

Page 32: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

26 Capítulo A. Código R

%MODELO PARA PREDECIR VICTORIA VISITANTE

modelo2 <- glm(VV ~ RL1 + RV1 + RL2 + RV2 + DPJornada + DPLogJornada,

data = BDLigaEsp, family = "binomial")

modeloAIC2 <- stepwise(modelo2, direction = ’backward/forward’ , criterion = ’AIC’)

modelo3 <- glm(VV ~ RL1 + RV1 + RL2 + RV2 + DPLogJornada,

data = BDLigaEsp, family = "binomial")

modeloAIC3 <- stepwise(modelo3, direction = ’backward/forward’ , criterion = ’AIC’)

%Para la curva ROC

BDLigaEsp<- within(BDLigaEsp, {

fitted.modeloAIC3 <- fitted(modeloAIC3)

})

names(BDLigaEsp)[c(20)] <- c("PrediccionVV")

rocVV<- roc(BDLigaEsp$VV, BDLigaEsp$PrediccionVV)

auc(rocVV)

plot(rocVV, col="red", print.auc=TRUE)

%Area bajo la curva: 0.7194

Page 33: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Apéndice B

Código Java

package tfg;

import java.util.Arrays;

import java.util.Scanner;

public class TFG {

//probgen es un vector de reales que representa la probabilidad de ganar el

//equipo local en el partido i pero obtenidos de forma generica

//Obtenidos por los cuaniles de mis predicciones.

static double[] probgen = {0.1830564, 0.3576748, 0.4719785,

0.6114536, 0.8183193};

//cuotgen es un vector de reales que representa la cuota que ofrece la casa

//de apuestas por que gane el local en el partido i de forma generica

//Tambien son obtenidos a partir de la funcion de distribucion.

static double[] cuotgen = {4.48, 3.9, 2.2, 1.49, 1.456};

//Probprim es un vector de reales que representa la probabilidad de victoria

// de cada equipo en el partido i en la jornada en la que estamos.

static double[] probprim;

//cuotprim es un vector de reales que representa la cuota por ganar

// de cada equipo en el partido i en la jornada en la que estamos.

static double[] cuotprim;

// ci es un entero que representa la cantidad de dinero inicial.

static int ci;

//dec es un real que representa la cantidad decimal

//del dinero inicial.

static double dec;

//cf es un entero que representa la cantidad de dinero al

//que se quiere llegar.

static int cf;

// m es un entero que representa el numero de partidos.

27

Page 34: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

28 Capítulo B. Código Java

static int m;

// n es un entero que representa el numero de etapas.

//(En este caso, de jornadas)

static int n;

// matriz es una matriz que contiene en cada fila las probabilidades

// de ganar y de perder de un equipo equipo de la jornada en la que estamos.

static double[][] matriz;

//matrizgen es como la anterior pero para los partidos ficticios.

static double[][] matrizgen;

public static void main(String[] args) {

//INTRODUCCION DE DATOS POR TECLADO

Scanner sc = new Scanner(System.in);

System.out.println("Introduce el deposito

inicial (parte entera): ");

ci = sc.nextInt();

System.out.println("La parte decimal de la cantidad inicial: ");

dec = sc.nextDouble();

System.out.println("Introduce el deposito que se quiere obtener: ");

cf = sc.nextInt();

System.out.println("Introduce el numero de partidos: ");

m = sc.nextInt();

System.out.println("Introudce el numero de etapas: ");

n = sc.nextInt();

//GENERACION DE MATRICES DE PROBABILIDADES (Utiles para calculos)

matriz = new double[2 * m][2];

//Para poder apostar al local y al visitante

for (int j = 0; j < m; j++) {

System.out.println("Introduce la probabilidad de ganar el "

+ "local del partido " + (j + 1)

+ " de esta jornada: (con coma)");

matriz[j][0] = sc.nextDouble();

matriz[j][1] = 1.00000 - matriz[j][0];

}

for (int j = 0; j < m; j++) {

System.out.println("Introduce la probabilidad de "

+ "ganar el visitante del partido " + (j + 1)

+ " de esta jornada: (con coma)");

matriz[j + m][0] = sc.nextDouble();

matriz[j + m][1] = 1.0 - matriz[j + m][0];

}

matrizgen = new double[5][2];

Page 35: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 29

for (int j = 0; j < matrizgen.length; j++) {

matrizgen[j][0] = probgen[j];

matrizgen[j][1] = 1.0 - matrizgen[j][0];

}

cuotprim = new double[2 * m];

for (int j = 0; j < m; j++) {

System.out.println("Introduce la cuota gana "

+ "local del partido " + (j + 1)

+ " de esta jornada: (con coma)");

cuotprim[j] = sc.nextDouble();

}

for (int j = 0; j < m; j++) {

System.out.println("Introduce la cuota "

+ "gana visitante del partido " + (j + 1)

+ " de esta jornada: (con coma)");

cuotprim[j + m] = sc.nextDouble();

}

System.out.println();

//LLAMADA AL PROGRAMA

dinamica(n);

}

//FUNCIONES AUXILIARES

//La funcion dinamica a partir del numero de etapas, se encarga de llamar

//a cada una de las funciones que me resuelven cada una de las etapas,

// devolviendo la probabilidad que hay de alcanzar el objetivo en cada una

// de ellas.

public static double dinamica(int n) {

System.out.println("------------Etapa " + n + " ------------");

double[] j = ultimaEtapa(cf);

System.out.println(Arrays.toString(j));

for (int i = n - 1; i > 1; i--) {

System.out.println("------------Etapa " + i + " ------------");

j = etapa(j, cuotgen, matrizgen, 0.0);

System.out.println(Arrays.toString(etapa(j, cuotgen, matrizgen, 0.0)));

}

System.out.println("------------Etapa " + 1 + " ------------");

double res = primeraEtapa(j);

System.out.println("La maxima probabilidad de acabar con "

+ "" + cf + " es " + res);

return res;

}

//La funcion etapa, a partir de un vector de double J que representa

// los valores que puede tomar dicha funcion, otro vector de

Page 36: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

30 Capítulo B. Código Java

// double c que representa a las cuotas, y una matriz mp

// que representa las probabilidades, me devuelve

// el vector J al hacer una etapa en un problema de programacion dinamica.

public static double[] etapa(double[] j, double[] c, double[][] mp, double decimal) {

double[] jnext = new double[j.length];

for (int h = 0; h < jnext.length; h++) {

jnext[h] = j[h];

}

int[] x = estados(cf);

int ind = 0;

int[] vaux2 = new int[mp.length];

for (int i = 0; i < x.length; i++) {

double res = 0;

int[] decisiones = auxiliar(x[i]);

int max = maximo(decisiones);

CombRep cr = new CombRep(decisiones.length, mp.length);

int[] vaux = new int[mp.length];

do {

for (int h = 0; h < vaux.length; h++) {

vaux[h] = decisiones[cr.getPos(h)];

}

if (suma(vaux) <= max) {

double aux2 = 0;

int tam = (int) Math.pow(2, mp.length);

for (int k = 0; k < tam; k++) {

int b[] = binarioN(k, mp.length);

int z = transporte(x[i], vaux, b, c, mp.length, decimal);

aux2 = aux2 + jj(j, z) * probs(b, mp);

}

if (aux2 > res) {

res = aux2;

for (int q = 0; q < vaux2.length; q++) {

vaux2[q] = vaux[q];

}

}

}

} while (cr.next());

System.out.println("La decision tomada para " + ind + " es: ");

System.out.println(Arrays.toString(vaux2));

jnext[ind] = res;

ind++;

}

return jnext;

}

// La funcion auxiliar me genera un vector de enteros que seran las posibles

Page 37: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 31

// cantidades a apostar dado un capital n.

public static int[] auxiliar(int n) {

if (n <= 25) {

int[] aux = new int[n + 1];

for (int i = 0; i < aux.length; i++) {

aux[i] = i;

}

return aux;

} else {

int[] aux = new int[26 + ((n - 25) / 5)];

for (int i = 0; i < 26; i++) {

aux[i] = i;

}

for (int i = 26; i < aux.length; i++) {

aux[i] = aux[i - 1] + 5;

}

System.out.println((int) ((n - 25) / 5));

return aux;

}

}

// La funcion primeraEtapa hace lo mismo que la funcion etapa pero con las

// probabilidades y cuotas introducidas por teclado.

public static double primeraEtapa(double[] j) {

double jnext[] = etapa(j, cuotprim, matriz, dec);

System.out.println(Arrays.toString(jnext));

return jnext[ci];

}

// La funcion ultimaEtapa me realiza la ultima etapa de un problema de

// programacion dinamica en los que se maximiza probabilidades. Si el estado

// x_{N} es mayor o igual que el objetivo devuelve 1 y 0 en otro caso.

public static double[] ultimaEtapa(int cf) {

double[] j = new double[cf + 1];

for (int i = 0; i < j.length; i++) {

if (i < cf) {

j[i] = 0;

} else {

j[i] = 1;

}

}

return j;

}

// La funcion transporte representa la ecuacion de transporte tal y como la

// hemos definido en el planteamiento del problema

public static int transporte(int x, int[] d, int[] p,

double[] c, int numpart, double decimal) {

double aux = x + decimal;

Page 38: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

32 Capítulo B. Código Java

for (int i = 0; i < numpart; i++) {

if (p[i] == 0) {

aux = (aux - d[i]) + d[i] * c[i];

}

if (p[i] == 1) {

aux = aux - d[i];

}

}

return (int) aux;

}

// La funcion jj me representa la funcion de la funcion J de un problema de

// programacion dinamica incluyendo el hecho de que deje de apostar cuando se

// alcanza el objetivo.

public static double jj(double[] j, int i) {

if (i >= j.length) {

return 1.0;

}

if (i <= 0) {

return 0;

}

return j[i];

}

// La funcion binarioN me devuelve un array que es la representacion en binario

// en n bits de un numero que le pasamos como argumento.

public static int[] binarioN(int numero, int n) {

StringBuilder ala = new StringBuilder();

String numerobinario = "";

numerobinario = numerobinario + (numero % 2) + " ";

numero = numero / 2;

while (numero >= 2) {

numerobinario = numerobinario + (numero % 2) + " ";

numero = numero / 2;

}

numerobinario = numerobinario + numero;

StringBuilder cadena = ala.append(numerobinario);

cadena = ala.reverse();

String[] aux = cadena.toString().split(" ");

int[] res = new int[n];

int vax1 = res.length - aux.length;

for (int i = 0; i < vax1; i++) {

res[i] = 0;

}

for (int i = vax1; i < res.length; i++) {

Page 39: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Predicción de resultados de partidos de fútbol - Sergio Sabroso Lasa 33

res[i] = Integer.parseInt(aux[i - vax1]);

}

return res;

}

// La funcion maximo me devuelve el maximo de un vector de enteros.

public static int maximo(int[] v) {

int max = 0;

for (int i = 0; i < v.length; i++) {

if (max < v[i]) {

max = v[i];

}

}

return max;

}

// La funcion suma me devuelve la suma de todas las componentes de un vector.

public static int suma(int[] v) {

int res = 0;

for (int i = 0; i < v.length; i++) {

res = res + v[i];

}

return res;

}

// La funcion estados dado un entero cf, genera el array [0, 1, ..., cf]

public static int[] estados(int cf) {

int[] x = new int[cf + 1];

for (int i = 0; i < x.length; i++) {

x[i] = i;

}

return x;

}

// La funcion probs me devuelve la probabilidad de que se de un suceso, dada

// una combinacion de resultados y una matriz con las probabilidades de cada

// uno de esos resultados.

public static double probs(int[] bin, double[][] mp) {

double res = 1;

for (int i = 0; i < mp.length; i++) {

if (bin[i] == 0) {

res = res * mp[i][0];

}

if (bin[i] == 1) {

res = res * mp[i][1];

}

}

return res;

}

Page 40: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

34 Capítulo B. Código Java

}

//La clase CombRep genera a partir de un vector de posibles cantidades apostar,

//todas las posibles maneras de repartir nuestro dinero a cada partido.

//Para ello es necesario hacerlo con un vector de indices que posteriormente

// se redirigira

public class CombRep {

private int[] comb;

private int limite;

public CombRep(int n, int m) {

comb = new int[m];

this.limite = n - 1;

}

public boolean next() {

int i = comb.length - 1;

while (i >= 0 && comb[i] == limite) {

i--;

}

if (i < 0) {

return false;

}

comb[i]++;

for (int j = i + 1; j < comb.length; j++) {

comb[j] = 0;

}

return true;

}

public int getPos(int i) {

return comb[i];

}

}

Page 41: Predicción de resultados de partidos de fútbol · 2020. 4. 25. · Las apuestas deportivas no son tan recientes como se cree, sino que surgieron hace más de 2000 años en los Juegos

Bibliografía

[1] S.CHATTERJEE Y A.S. HADI, Regression Analysis by Example, John Wiley & Sons, Inc, 2006.

[2] S.J. SHEATHER, A Modern Approach to Regression with R, Springer Science+Business MediaLLC, 2009.

[3] D.P. BERTSEKAS, Dynamic Programming. Deterministic and Stochastic Models, Prentice-HallInc., Englewood Cliffs, NJ, 1987.

[4] S.E. DREYFUS Y A.M. LAW, The Art and Theory of Dynamic Programming, Academic Press,San Diego, CA, 1977.

[5] B.D SIVAZLIAN Y L.E. STANFEL, Optimization Techniques in Operations Research, Prentice-Hall Inc., Englewood Cliffs, NJ, 1975.

[6] W.L WINSTON, Operations Research, Thomsom Brooks/Cole, Belmont, CA, 4th edición, 2004.

[7] W. FELLER, An introduction to Probability Theory and Its Applications, Vol. I, Revised(1966).New York, John Wiley.

[8] L.M. ROTANDO Y E.O. THORP, The Kelly Criterion and the Stock Market, http://www.jstor.org/stable/2324484.

[9] E.O. THORP, Optimal gambling systems for favorable games, Review of the International Statis-tical Institute, Vol. 37:3, 1969.

[10] L. BREIMAN, Optimal gambling systems for favorable games, Fourth Berkeley Symposium onProbability and Statistics, 1961.

[11] L.C. MACLEAN, E.O. THORP Y W.T. ZIEMBA, Good and bad properties of the Kelly criterion,Dalhousie University, Halifax, NS, 2010.

[12] DIARIO SPORT, La final del mundial de 2014 sigue siendo lamás vista, https://www.sport.es/es/noticias/mundial-futbol/

final-del-mundial-sigue-siendo-mas-vista-4885285.

[13] ACTUALIDAD VALDEPEÑAS, El boom de las apuestas deportivas en Espa-ña en 2017, https://www.actualidadvaldepenas.com/articulo/ocio/

boom-apuestas-deportivas-espana-2017/20180201075322124236.html.

35