Cómo Crear Tu Propio Modelo de Predicción con Excel o Python

Pantalla mostrando una hoja de cálculo con datos deportivos y fórmulas

Construir tu propio modelo de predicción es uno de esos proyectos que parece intimidante hasta que empiezas y descubres que la lógica básica es sorprendentemente accesible. No necesitas ser un científico de datos ni un programador experto para crear algo funcional. Lo que necesitas es entender los principios fundamentales, tener paciencia para trabajar con datos, y la humildad de reconocer que tu primer modelo —y probablemente tu segundo y tercero— no va a ser perfecto. El objetivo no es crear el siguiente algoritmo que destruya a las casas de apuestas; es desarrollar una herramienta que te ayude a tomar decisiones más informadas y, en el proceso, entender profundamente qué factores realmente influyen en los resultados deportivos. Herramientas en el sitio frontal.

La elección entre Excel y Python depende de tu punto de partida y tus objetivos. Excel es perfectamente viable para modelos simples y tiene la ventaja de ser familiar para la mayoría de usuarios. Puedes crear un modelo de Poisson funcional en una hoja de cálculo sin escribir una línea de código, usando solo fórmulas nativas. Python ofrece más potencia y flexibilidad para modelos complejos, automatización de datos, y análisis estadístico avanzado, pero tiene una curva de aprendizaje que puede ser frustrante si nunca has programado. Mi recomendación: empieza con Excel para entender los conceptos, y migra a Python cuando —y si— las limitaciones de la hoja de cálculo se vuelvan restrictivas para lo que quieres hacer.

El modelo de Poisson: tu punto de partida

El modelo de Poisson es el caballo de batalla de la predicción de fútbol porque captura elegantemente una realidad fundamental: los goles son eventos relativamente raros y discretos que siguen una distribución estadística predecible. Aplica aquí el modelo de Poisson para predecir resultados de fútbol. La distribución de Poisson te dice la probabilidad de que ocurran exactamente k eventos (goles) dado un promedio esperado (lambda). Si sabes que un equipo marca en promedio 1.5 goles por partido, puedes calcular la probabilidad de que marque 0, 1, 2, 3, o más goles en un partido específico.

Para implementar esto en Excel, necesitas calcular el lambda esperado para cada equipo en un partido. La fórmula básica considera la fuerza atacante del equipo local, la debilidad defensiva del visitante, y un factor de ventaja de campo. La fuerza atacante se calcula como los goles marcados por el equipo dividido por el promedio de goles de la liga; la debilidad defensiva es los goles recibidos dividido por el promedio de la liga. Multiplicar estos factores te da un lambda ajustado que refleja la interacción específica entre los dos equipos de ese partido.

En Excel, la función POISSON.DIST hace el trabajo pesado. Si tu lambda para el equipo local es 1.6, puedes calcular la probabilidad de cada marcador posible. La probabilidad de 0 goles es POISSON.DIST(0, 1.6, FALSE), la de 1 gol es POISSON.DIST(1, 1.6, FALSE), y así sucesivamente. Haciendo esto para ambos equipos y combinando las probabilidades (asumiendo independencia), obtienes la probabilidad de cada resultado exacto. Suma las probabilidades de todos los resultados donde gana el local, y tienes tu estimación de probabilidad para ese outcome. Es matemáticas de secundaria con esteroides.

Recolección y preparación de datos

Un modelo es tan bueno como los datos que lo alimentan, y aquí es donde muchos proyectos fallan antes de empezar. Necesitas datos históricos de resultados, preferiblemente de varias temporadas para tener suficiente muestra. Football-data.co.uk es el recurso gratuito estándar: ofrece CSVs descargables de las principales ligas europeas con resultados, estadísticas básicas, y cuotas históricas. Para análisis más sofisticado, FBref proporciona estadísticas avanzadas como xG, y plataformas como WhoScored ofrecen datos de eventos a nivel de partido.

La limpieza de datos es la parte menos glamurosa pero más importante del proceso. Los datos reales vienen con valores faltantes, inconsistencias en nombres de equipos (¿"Man United", "Manchester United", o "Man Utd"?), y errores ocasionales. Antes de construir cualquier modelo, necesitas estandarizar nombres, manejar los valores nulos, y verificar que las cifras tengan sentido. Un gol de más en un partido histórico puede distorsionar tus promedios; una fecha mal formateada puede hacer que tu modelo use datos del futuro para predecir el pasado, invalidando completamente tu validación.

El feature engineering —crear variables derivadas a partir de datos crudos— es donde la creatividad entra en juego. El promedio de goles de toda la temporada es un punto de partida, pero probablemente el promedio de los últimos 5-10 partidos captura mejor la forma actual. El rendimiento como local versus visitante difiere significativamente para muchos equipos. Los días de descanso entre partidos afectan el rendimiento físico. Las rachas de victorias o derrotas pueden indicar momentum psicológico. Cada una de estas variables es una hipótesis sobre qué factores influyen en los resultados, y el modelo te dirá si esa hipótesis tiene fundamento estadístico.

Hoja de cálculo Excel mostrando fórmulas y cálculos del modelo de Poisson

Implementación paso a paso en Excel

Vamos a construir un modelo concreto. Primero, descarga los datos de la temporada actual de tu liga preferida desde football-data.co.uk. Importa el CSV a Excel y crea una nueva hoja para los cálculos. Necesitas calcular para cada equipo: goles marcados como local, goles marcados como visitante, goles recibidos como local, goles recibidos como visitante, y partidos jugados en cada condición.

Con estos datos, calcula los promedios de la liga: promedio de goles por partido para equipos locales y visitantes. En la mayoría de las ligas europeas, los locales marcan alrededor de 1.4-1.5 goles por partido y los visitantes 1.1-1.2. Estos promedios son tu línea base. Ahora, para cada equipo, calcula su fuerza atacante (goles marcados / promedio de la liga) y debilidad defensiva (goles recibidos / promedio de la liga), separando las cifras de local y visitante.

Para predecir un partido específico, digamos Real Madrid (local) vs Athletic (visitante), calculas el lambda esperado para cada equipo. Para el Madrid como local: (fuerza atacante local del Madrid) × (debilidad defensiva visitante del Athletic) × (promedio de goles de locales en la liga). Para el Athletic como visitante: la fórmula espejo. Con estos lambdas, construyes una matriz de probabilidades para cada marcador posible usando POISSON.DIST, sumas las probabilidades para victoria local, empate, y victoria visitante, y comparas con las cuotas del mercado para identificar valor.

Migración a Python para modelos avanzados

Cuando Excel se queda corto —y lo hará si te tomas esto en serio— Python abre puertas a análisis más sofisticado. La biblioteca pandas maneja datos tabulares con una eficiencia que Excel no puede igualar. Scipy proporciona funciones estadísticas avanzadas, incluyendo distribuciones de probabilidad. Scikit-learn ofrece algoritmos de machine learning listos para usar. La curva de aprendizaje es real, pero los recursos gratuitos abundan: tutoriales de Python para principiantes, cursos específicos de análisis deportivo, y comunidades online donde puedes hacer preguntas.

Un modelo de Poisson en Python no es más de 50 líneas de código una vez que tienes los datos preparados. Pero la ventaja real está en poder automatizar el proceso completo: descargar datos actualizados, recalcular parámetros, generar predicciones para todos los partidos de la jornada, y exportar los resultados a un formato fácil de consultar. Lo que en Excel requiere trabajo manual repetitivo cada semana, en Python se convierte en ejecutar un script y revisar los outputs.

Los modelos de regresión logística y random forests son el siguiente nivel de sofisticación. En lugar de asumir una distribución específica (Poisson), estos modelos aprenden directamente de los datos históricos qué combinación de factores mejor predice los resultados. Puedes incluir docenas de variables —xG, posesión, corners, días de descanso, historial de enfrentamientos directos— y dejar que el algoritmo determine cuáles son realmente predictivas. El riesgo de sobreajuste es mayor, así que la validación rigurosa es imprescindible.

Validación: el paso que nadie quiere hacer

Crear un modelo que predice perfectamente los resultados históricos es trivial. Crear uno que prediga razonablemente los resultados futuros es el desafío real. La validación temporal es el estándar de oro: entrenas tu modelo con datos hasta cierta fecha y evalúas su rendimiento en datos posteriores que nunca ha visto. Si tu modelo tiene un yield positivo en este período de prueba, tienes evidencia de que podría funcionar en tiempo real. Si no, tienes un ejercicio académico interesante pero no una herramienta de betting.

El backtesting con cuotas históricas es crucial porque la rentabilidad no depende solo de predecir resultados, sino de predecirlos mejor que el mercado. Un modelo que acierta el 55% de las veces parece impresionante, pero si solo apuesta a favoritos claros con cuotas de 1.40, está perdiendo dinero. Football-data.co.uk incluye cuotas de cierre de varias casas en sus datasets, permitiéndote simular exactamente cuánto habrías ganado o perdido apostando según tu modelo durante temporadas pasadas.

La calibración mide si tus probabilidades predichas corresponden a frecuencias reales. Si tu modelo dice que hay 30% de probabilidad de empate y de todos los partidos donde dijo eso, el 30% efectivamente terminaron en empate, tu modelo está bien calibrado. Si dice 30% pero la frecuencia real es 40%, estás sistemáticamente subestimando los empates, lo que afectará tu capacidad de encontrar valor en ese mercado. Herramientas como diagramas de fiabilidad te ayudan a visualizar y corregir estos sesgos.

Gráficos mostrando resultados de validación y backtesting de un modelo predictivo

Automatización y workflow

Un modelo que requiere horas de trabajo manual cada semana para generar predicciones no es sostenible. La automatización no es lujo, es necesidad. En Excel, puedes usar tablas dinámicas y referencias estructuradas para minimizar el trabajo manual al actualizar datos. En Python, scripts programados pueden ejecutarse automáticamente, descargar nuevos resultados, recalcular parámetros, y enviarte un email con las apuestas sugeridas para la jornada.

El scraping de datos automatizado es una habilidad valiosa pero viene con consideraciones legales y éticas. Muchos sitios prohíben el scraping en sus términos de servicio, y algunos bloquean activamente los intentos automatizados. Las APIs oficiales son la alternativa legítima, aunque las gratuitas suelen tener limitaciones de llamadas. Encuentra el equilibrio entre automatización y sostenibilidad: no tiene sentido construir un pipeline elaborado si la fuente de datos puede bloquearte en cualquier momento.

El versionado de modelos te permite experimentar sin perder lo que ya funciona. Cuando modificas una fórmula o añades una variable, guarda una copia del estado anterior. Si el cambio mejora el rendimiento en validación, avanza; si lo empeora, retrocede. Git es el estándar para versionado de código, pero incluso algo tan simple como copias de archivos con fechas en el nombre es mejor que nada. Perder semanas de trabajo por un cambio mal pensado es frustrante y completamente evitable.

Expectativas y realidad

Tu primer modelo no va a ser rentable. Probablemente tu segundo y tercero tampoco. Esto no es fracaso; es el proceso de aprendizaje. Cada modelo que construyes te enseña algo sobre los datos, sobre las dinámicas del fútbol, y sobre las limitaciones de los enfoques cuantitativos. El valor no está solo en el output final sino en la comprensión profunda que desarrollas por el camino.

Incluso un modelo modestamente exitoso no te hará rico. Los profesionales con modelos sofisticados y acceso a cuentas sin limitar operan con yields del 2-5%. Para alguien empezando, con un modelo básico y apostando en cuentas retail que eventualmente limitarán, expectativas del 1-2% de yield son más realistas. Eso sigue siendo mejor que perder el 5-10% que pierde el apostador promedio, pero no es un camino a la independencia financiera.

El verdadero beneficio de construir tu propio modelo es la disciplina estructurada que impone a tu proceso de apuestas. Cuando tienes que justificar cada apuesta contra una probabilidad calculada, dejas de apostar por corazonadas. Cuando ves el histórico de tu modelo, entiendes visceralmente la varianza y por qué las rachas negativas son inevitables. Cuando comparas tus predicciones con el mercado, ganas respeto por lo eficientes que son las líneas y lo difícil que es encontrar valor real. Este cambio de mentalidad vale más que cualquier sistema de predicción, y es algo que solo se adquiere haciendo el trabajo de construir uno propio.