Soccer Oracle: come abbiamo costruito un motore predittivo per il calcio con Machine Learning

Marzo 30, 2026

Tabella dei Contenuti

Dal modello sui cartellini all’analisi live minuto per minuto: il processo creativo dietro il nostro progetto interno più ambizioso.

A ottobre 2025 ci siamo fatti una domanda semplice: è possibile prevedere quanti gol verranno segnati in una partita di Serie A prima che inizi? Non come un pronostico da bar, ma come analisi statistica rigorosa, con modelli addestrati su anni di dati reali.

La domanda non era così strana per un’agenzia come Ars Digitalia. Lavoriamo ogni giorno con dati, algoritmi e architetture digitali per i nostri clienti. Ma in questo caso volevamo farlo per noi: costruire qualcosa di nostro, dall’idea al prodotto funzionante, senza un brief e senza un cliente.

Quello che è nato da quella domanda si chiama Soccer Oracle. Questo articolo racconta il percorso: le ipotesi di partenza, gli errori, le scoperte inattese e l’architettura tecnica che ci ha portati dove siamo oggi.

Non è un articolo di marketing. È il diario onesto di un progetto che ci ha messi alla prova e continua a farlo.

Il punto di partenza: capire gli arbitri prima delle squadre

Analisi cartellini partite: dati e modello predittivo calcio

Il progetto non è iniziato dai gol. È iniziato dai cartellini.

Nella prima fase volevamo rispondere a una domanda più semplice: è possibile prevedere quanti cartellini verranno estratti in una partita?

Il ragionamento era chiaro: i cartellini dipendono da variabili più controllabili rispetto ai gol il profilo disciplinare delle squadre, lo stile di gioco, il comportamento storico degli arbitri.

Abbiamo raccolto dati da fonti pubbliche: statistiche di squadra, dati tecnico-tattici e profili degli arbitri di Serie A dall’AIA. Migliaia di partite, stagioni dal 2020 al 2025, decine di variabili per match.

La prima scoperta sorprendente: i dati sugli arbitri erano più predittivi del comportamento delle squadre.

Avevamo costruito un modello GBR (Gradient Boosting Regressor), un algoritmo di ensemble learning, particolarmente efficace su dati tabellari. Il modello cercava di prevedere i “booking points” di ogni partita (un indicatore composito che pesa gialli e rossi).

Il risultato iniziale: AUC intorno a 0.62. Debole, ma reale.

La sorpresa era nella distribuzione delle feature: il profilo dell’arbitro pesava più delle statistiche delle squadre.

Non ce lo aspettavamo. E ci ha insegnato una cosa: nei sistemi complessi, le variabili più importanti non sono sempre quelle ovvie.

Il modello dei cartellini “CardMaster” è diventato la base tecnica del progetto: pipeline dati, gestione serie temporali, calibrazione modelli. Una palestra indispensabile.

📌 Nota tecnica – Data leakage nelle serie temporali

Uno degli errori più comuni nel machine learning sportivo è usare uno split casuale tra training e test set.

Se il modello è addestrato su partite future rispetto a quelle su cui viene testato, le performance risultano artificialmente alte: il modello ha “visto” il futuro.

Noi lo abbiamo scoperto nella prima versione: risultati eccellenti che si sono sgonfiati appena corretto lo split temporale.

Da quel momento: split temporale obbligatorio su tutto.

Il pivot verso i gol: leggere la partita prima che inizi

analisi prematch calcio con lambda gol attesi e probabilità under over modello Soccer Oracle

A gennaio 2026 lo scope si è allargato. Il mercato Under/Over gol cioè quante reti verranno segnate in una partita era molto più interessante per un prodotto pubblico rispetto ai cartellini.

Più intuitivo, più seguito, con più dati disponibili.

Abbiamo costruito un nuovo dataset: oltre 2.000 partite di Serie A dal 2020 al 2025, con metriche di rolling average sugli ultimi 5 e 10 match per ciascuna squadra, dati sugli expected goals (xG) e statistiche tecnico-tattiche recuperate online.

Il modello produce, per ogni partita, una stima del lambda (i gol attesi) e da lì calcola le probabilità su tutte le soglie: da Under/Over 0.5 fino a Under/Over 4.5.

Ma il valore del prematch non sta solo nel numero.

Sta nel racconto che quel numero permette di costruire.

Ogni partita ha un profilo tattico diverso. L’Oracolo non dice sempre la stessa cosa: racconta che tipo di partita ci aspetta, dove sono le tensioni, chi sono gli uomini chiave. Il numero è il punto di partenza, non il punto di arrivo

Prendiamo due partite con lo stesso lambda di 2.3.

Nel primo caso: due squadre di medio livello, pressing basso, pochi giocatori chiave disponibili. L’Oracolo legge una partita piatta, equilibrata, senza particolari variazioni.

Nel secondo caso: derby ad alta tensione, attaccanti in forma e un arbitro permissivo. L’Oracolo legge una partita instabile, ad alta varianza, dove il numero è solo una base.

Stesso numero, due storie completamente diverse.

Questa è la funzione del prematch di Soccer Oracle: non assegnare un’etichetta, ma descrivere il carattere statistico della partita.

Il modello analizza:

  • profilo tattico delle squadre
  • dati sugli arbitri AIA
  • metriche di pressing
  • cinismo difensivo
  • forma recente
  • disponibilità dei giocatori chiave

Il risultato è un pronunciamento articolato, non un segnale binario.

Confrontando il modello con le quote di mercato abbiamo osservato un pattern interessante: il mercato è efficiente nella media, ma non su tutte le soglie allo stesso modo.

Le soglie estreme (3.5 e 4.5) mostrano divergenze più frequenti rispetto alla soglia 2.5. Questo ci ha permesso di capire dove il modello può aggiungere informazione reale.

Ed è qui che nasce il passaggio successivo: il live.

Se il prematch descrive la partita, il live la aggiorna in tempo reale.

La svolta live: il Barometro e il vantaggio nel real-time

statistiche partita calcio con gol e cartellini analizzate da Soccer Oracle

L’idea era semplice: durante una partita, le quote di mercato non si aggiornano abbastanza velocemente rispetto a ciò che accade in campo.

Un modello che processa eventi live può individuare momenti in cui la probabilità reale e il prezzo di mercato divergono.

È così che nasce il Barometro.

Un sistema che ogni minuto ricalcola le probabilità Under/Over su più soglie (0.5–4.5), combinando:

  • modello Poisson aggiornato
  • correttore Machine Learning “V4” allenato su dati live storici

Come funziona il modello Poisson live

Il modello Poisson tratta i gol come eventi casuali nel tempo.

In base al contesto della partita, aggiorna continuamente il tasso di gol attesi e calcola la distribuzione di probabilità sui risultati finali.

Se il ritmo è basso, la probabilità Under cresce. Se la pressione aumenta, scende.

Il correttore ML, che abbiamo chiamato “V4”, affina questa stima integrando variabili che il puro Poisson non cattura:

  • pressione difensiva
  • tiri
  • corner
  • intensità del pressing

Quando i due modelli convergono su una divergenza rispetto al mercato, il Barometro segnala.

Le soglie di alert

Abbiamo definito tre livelli di allerta:

  • Rosso: segnale forte scatta quando la probabilità del modello supera una soglia calibrata sulla situazione di gioco (tipicamente intorno al > 12–15% di probabilità)
  • Arancione: segnale interno di attenzione, visibile nella nostra dashboard di gestione e analisi dati, ma non distribuito sul canale pubblico.
  • Base: monitoraggio continuo, il sistema è sempre acceso, ma parla solo quando ha qualcosa di rilevante da dire.

L’Oracolo non guarda la partita.
La legge.
E parla solo quando i numeri lo giustificano.

Nella validazione su 14 partite (giornate 28 e 29 di Serie A 2025-26), il sistema ha generato 187 segnali con un win rate del 71.1%.

Non è un campione definitivo. Ma è un punto di partenza solido.

📌 Nota tecnica – Il Barometro V3 (Transformer)

Nella versione più recente abbiamo sostituito il modello GBR con un’architettura Transformer, adattata a serie temporali.

Il modello legge la sequenza degli eventi minuto per minuto e prevede la probabilità di gol su tre orizzonti:

  • 4 minuti
  • 10 minuti
  • 15 minuti

L’accuratezza cresce con l’orizzonte: il segnale a 15 minuti raggiunge un hit rate del 76.5% sui dati di test.

Il modello conta circa 164.000 parametri: piccolo per il deep learning, ma efficiente e deployabile su un VPS standard.

L’architettura tecnica: da locale a cloud

infrastruttura cloud per modello predittivo calcio con pipeline dati e analisi in tempo reale

Costruire un modello predittivo è una cosa. Farlo funzionare in produzione durante 10 partite in contemporanea è un’altra.

L’architettura di Soccer Oracle si divide in tre livelli principali.

Dati e raccolta

I dati storici vengono recuperati da fonti pubbliche tramite script Python, con caching su database PostgreSQL locale.

Gli eventi live arrivano via API, mentre le quote vengono aggiornate con polling ogni 60 secondi durante le partite.

Elaborazione e modelli

Il sistema gira su un VPS cloud con 2 vCPU e 4 GB di RAM. Non è potente, ma è sufficiente per il carico attuale.

La gestione dei job è affidata ad APScheduler: ogni giornata di campionato vengono avviati automaticamente i processi per ogni partita.

L’ambiente è diviso in due layer:

  • Staging: test con dati storici
  • Produzione: esecuzione live

Un sistema semplice, ma fondamentale per evitare errori critici durante le partite.

Distribuzione

Gli alert vengono distribuiti tramite Telegram e WhatsApp.

Le grafiche vengono generate con template predefiniti e caricate via SFTP in una cartella monitorata automaticamente dal sistema.

La dashboard live è un file HTML aggiornato minuto per minuto. Attualmente è interna, ma sarà integrata nella versione premium.

Cosa abbiamo imparato (e cosa non sapevamo)

Tre mesi di lavoro su Soccer Oracle ci hanno lasciato alcune lezioni che avremmo voluto conoscere prima.

Il mercato è più intelligente di quanto pensiamo.
Le quote prematch incorporano già la maggior parte del segnale disponibile. Il vantaggio reale emerge nel live, dove il mercato è più lento ad adattarsi.

Il data leakage è invisibile se non lo cerchi.
Abbiamo perso settimane su modelli apparentemente perfetti. Finché non abbiamo scoperto che stavamo usando dati futuri. Da quel momento, disciplina assoluta sugli split temporali.

L’ingegneria batte il modello.
Il modello è la parte “facile”. La vera difficoltà è gestire dati live, API instabili e pipeline in produzione durante eventi reali.

Il calcio è un sistema caotico.
Un gol è un evento raro, influenzato da variabili non misurabili. L’AUC reale ha un limite strutturale intorno a 0.55–0.57.

Non è un fallimento del modello. È il limite del sistema.

Il valore non sta nella singola previsione.
Sta nella frequenza statistica su centinaia di eventi.

Dove siamo oggi

Soccer Oracle è in beta dalla giornata 28 della Serie A 2025-26.

I canali Telegram e WhatsApp sono pubblici: chiunque può seguire gli alert live gratuitamente fino alla fine del campionato.

L’obiettivo non è fare numeri. È validare il sistema in condizioni reali.

Capire dove il modello sbaglia. E soprattutto, perché.

Nei prossimi mesi lavoreremo su:

  • miglioramento modelli
  • aggiornamento dataset
  • ottimizzazione architettura
  • preparazione al lancio 2026-27

Costruire Soccer Oracle ci ha ricordato perché facciamo questo lavoro:

Non per consegnare progetti.
Ma per risolvere problemi difficili.

Anche quando “il problema” è il calcio.

Nei prossimi articoli approfondiremo i singoli moduli: Barometro, pipeline live e soglie di alert.

Se vuoi seguire il progetto o saperne di più, puoi scriverci o seguire Soccer Oracle sui suoi canali ufficiali.

Segui Soccer Oracle

Il sistema è attivo live durante le partite di Serie A. Canale Telegram e Whatsapp gratuiti fino alla fine della stagione 2025-2026.

Telegram: t.me/socceroracleai

Whatsapp: socceroracleai

Instagram: @socceroracleai

Condividi su

Articoli correlati

Servizi correlati

Sviluppo App Web & Mobile

Consulenza per la digitalizzazione

Digital Advertising

Come possiamo aiutarti?

Ti risponderemo entro poche ore