Calcoli corretti non bastano. Impariamo a controllare dati e previsioni nel tempo, misurare gli errori e confrontare modifiche senza usare il futuro.

Il percorso sui modelli predittivi
1. Tre controlli diversi
Controllo aritmetico: gli stessi dati e regole producono gli stessi numeri? Controllo dei dati: le righe descrivono davvero le partite corrette, con gol e orari giusti? Validazione predittiva: probabilità prodotte prima degli eventi descrivono bene molti risultati successivi? Superare il primo controllo non supera gli altri. Un’impronta digitale dei dati ne prova l’identità, non la verità.
I due esempi permettono il controllo dei calcoli, non una misura onesta di accuratezza o redditività. Qui useremo esempi inventati, dichiarati, per imparare gli strumenti. Non presenteremo queste esercitazioni come risultati ottenuti dal modello reale.
2. Controllare l’archivio prima delle formule
Per ogni incontro conserva identificativo, competizione, squadre, ruolo casa/trasferta, inizio UTC, risultato nei tempi regolamentari, stato terminato e momento di disponibilità. Elimina duplicati tramite identificativo. Verifica che GF e GS siano riferiti alla squadra studiata; confronta un campione con la fonte originale. Non convertire un dato mancante in zero gol.
Congela dati, versione e parametri prima della previsione. Se correggi un dato, crea una nuova versione: non riscrivere silenziosamente la previsione originale dopo aver visto il risultato. Negli esempi abbiamo gli aggregati delle 537 partite, ma non tutte le righe: questo limite va scritto nel registro.
3. Separare passato e futuro
Addestramento significa stimare il modello usando soltanto il passato disponibile. Validazione significa confrontare scelte su un periodo successivo. Test finale significa valutare una sola volta la scelta già fissata su un ultimo periodo mai usato per decidere. Date esatte e durata dipendono dall’archivio; non vanno inventate dopo aver visto i risultati.
past data → forecast next block → observe outcomes → move forward → repeat
Questa procedura si chiama verifica a origine mobile: prima prevedi, poi osservi. A ogni passo ricalcola anche le medie della competizione solo sul passato ammesso. Mescolare casualmente partite future e passate, usare classifiche finali o quote ancora indisponibili all’istante della previsione fa entrare il futuro nei dati: è una fuga di informazione.
4. Confrontare con qualcosa di semplice
Una buona prima alternativa usa solo μ_H e μ_A della competizione e la stessa distribuzione Poisson, senza fattori delle squadre. Una seconda usa le medie delle squadre senza pesi temporali, sugli stessi incontri ammessi. Questi riferimenti semplici sono modelli di confronto. Usa gli stessi eventi e periodi per tutti: un modello complesso non è migliore per definizione.
5. Registrare una previsione completa
| Grandezza | Significato |
|---|---|
| ID, UTC, cutoff | Identità dell’evento e istanti congelati |
| version, h, m, window | Regole e parametri fissati prima |
| λ_H, λ_A, P1, PX, P2 | Previsione completa, non solo favorito |
| G_H, G_A, y | Esito aggiunto soltanto dopo |
Non conservare soltanto l’esito più probabile. Le previsioni (0,40; 0,35; 0,25) e (0,98; 0,01; 0,01) scelgono entrambe 1, ma esprimono fiducia molto diversa. Contare solo quante volte si indovina il primo esito perde questa informazione. Il risultato osservato si aggiunge dopo, senza modificare le probabilità salvate.
6. Misurare l’errore: Brier, con tutti i passaggi
Esempio inventato: il risultato è X, pareggio. Nell’ordine (1,X,2), il vettore osservato è y=(0,1,0): uno sulla categoria avvenuta, zero sulle altre. Previsione U: p=(0,50;0,25;0,25). Previsione V: p=(0,25;0,50;0,25). Per ogni categoria sottrai il valore osservato dalla probabilità, eleva al quadrato e somma. Qui usiamo la somma sulle tre categorie, senza dividere per due.
Brier=Σ(p_c−y_c)²
U: (0.50−0)²+(0.25−1)²+(0.25−0)²
=0.25+0.5625+0.0625=0.875
V: (0.25−0)²+(0.50−1)²+(0.25−0)²
=0.0625+0.25+0.0625=0.375
Più basso è meglio; con questa convenzione il punteggio va da 0 a 2. V è migliore su questo singolo caso, non necessariamente in generale. Su n incontri calcola la somma dei n punteggi divisa per n. Non è una percentuale di vittorie, e non basta da solo per descrivere la calibrazione.
7. Penalizzare la sicurezza sbagliata
La perdita logaritmica guarda la probabilità assegnata proprio all’esito avvenuto. Usa ln, logaritmo naturale, e cambia segno per ottenere una perdita non negativa. Anche qui più basso è meglio. Nell’esempio del pareggio U aveva assegnato 0,25, V aveva assegnato 0,50.
loss=−ln(p_actual)
U: −ln(0.25)≈1.386294
V: −ln(0.50)≈0.693147
Dare probabilità zero a un evento che poi accade produce perdita infinita. Se il software protegge gli arrotondamenti con una soglia minima, documentala: non deve nascondere previsioni catastrofiche. Confronta la media della perdita su molti incontri e affianca Brier, conteggi e altri controlli.
8. Una probabilità del 70% si comporta come tale?
La calibrazione confronta probabilità e frequenze osservate. Raggruppa, per uno stesso evento, previsioni simili; confronta la probabilità media nel gruppo con la frazione di eventi avvenuti. Esempio inventato: 100 previsioni tutte al 70%, 68 eventi avvenuti. Frequenza=68/100=0,68; 0,68×100%=68%. La differenza è 68%−70%=−2 punti percentuali.
Non basta confrontare due numeri: mostra quanti casi ci sono in ogni gruppo e l’incertezza dovuta al campione. Un gruppo di cinque eventi dice poco. Un Brier più basso non prova, da solo, una calibrazione migliore: conta anche quanto il modello distingue situazioni diverse. Non confondere punti percentuali con variazione percentuale.
9. Cambiare un parametro, non inseguire il risultato
| Incontro | m | λ_H ≈ | λ_A ≈ | P1 × 100% |
|---|---|---|---|---|
| Shakhtar Donetsk–Sporting CP | 4 | 1,784565 | 1,249723 | 49,9581% |
| Shakhtar Donetsk–Sporting CP | 8 | 1,857489 | 1,287066 | 50,797% |
| Shakhtar Donetsk–Sporting CP | 16 | 1,915621 | 1,312806 | 51,5319% |
| Galatasaray–VfB Stuttgart | 4 | 1,526918 | 1,960186 | 30,2447% |
| Galatasaray–VfB Stuttgart | 8 | 1,719143 | 1,693939 | 39,2265% |
| Galatasaray–VfB Stuttgart | 16 | 1,844595 | 1,532769 | 45,2497% |
La tabella cambia solo m, lasciando fissi dati e riferimento. Mostra sensibilità, non miglioramento: senza risultati successivi non sappiamo quale scelta funzioni meglio. Per cambiare emivita o finestra temporale occorrono tutte le righe della competizione e un ricalcolo a ogni cutoff; i soli aggregati delle 537 partite non bastano.
Stoccarda ha tre partite utili ma W≈1,074709. Con m=8, la parte della squadra è circa 11,84% e quella del riferimento 88,16%. Non sono intervalli di fiducia: descrivono i pesi della formula. Avere una probabilità con molte cifre non elimina questa debolezza dei dati.
10. Come affinare senza autoingannarsi
Fissa prima obiettivo, periodi e misure. Cambia una cosa alla volta: m, emivita, correzione per forza avversaria, oppure una distribuzione che gestisca correlazioni o variabilità diversa dalla Poisson. Queste ultime non sono già implementate in poisson-v1. Ogni nuova informazione deve essere disponibile prima del cutoff. Conserva la versione semplice e registra anche le prove fallite.
Scegli sulla validazione; valuta una volta sul test finale. Cercare cento varianti e mostrare solo la vincente sullo stesso archivio produce ottimismo: stai scegliendo anche il rumore. Riporta numero di eventi, metriche medie, dispersione o intervalli appropriati, e limiti. Nessun miglioramento è dimostrato dai soli due esempi di questo percorso.
11. Non sostituire la validazione con una quota
Una quota elevata può rendere positivo un valore atteso calcolato con una probabilità sbagliata. Per studiare anche i prezzi servono quote disponibili al momento, eventi selezionati con regole fissate prima, costi e risultati di tutte le selezioni, non solo di quelle vinte. Il confronto probabilistico viene prima; non stiamo proponendo puntate né promettendo guadagni.
12. Il protocollo da portare a casa
- Definisci evento e dati ammessi.
- Controlla righe, duplicati, disponibilità e ruoli.
- Congela versione e parametri, poi registra la previsione.
- Osserva gli esiti dopo; calcola metriche e calibrazione su molti casi.
- Confronta con un riferimento semplice e cambia una cosa alla volta.
- Scegli sulla validazione, valuta sul test intatto e documenta i limiti.
Il risultato corretto di questo percorso non è «ho trovato la formula che vince». È «so spiegare ogni passaggio, riprodurre i numeri, riconoscere ciò che manca e preparare un confronto onesto». Da qui può iniziare un lavoro serio su un archivio completo.
Prima di proseguire: prova tu
1. Il Brier 0,375 è il 37,5% di vittorie?
Mostra la spiegazione
No. È una somma di errori quadratici, qui sulle tre categorie senza divisione per due. Non è una probabilità o un tasso di vittoria.
2. Posso scegliere m dopo aver visto il test finale?
Mostra la spiegazione
Non mantenendo quel periodo come test finale indipendente. Scegli sulla validazione, poi valuta la scelta fissata su dati mai usati per decidere.
3. Posso cambiare emivita usando soltanto le somme delle 537 partite?
Mostra la spiegazione
No. Ogni riga riceverebbe un peso diverso: occorrono date e gol di tutte le partite ammesse, ricalcolati a ogni cutoff. Cambiare m con riferimento fisso è invece una semplice analisi di sensibilità.
Il percorso sui modelli predittivi