Verifica fuori campione · stagioni 1718–2526
Il modello batte il mercato?
27.474 partite vere, misurate contro la quota di chiusura. Il modello è stato ristimato ogni giornata usando solo le partite già giocate.
La risposta, senza giri
No. Il modello ha un Brier di 0,58544, la quota di chiusura 0,56802: il mercato è avanti di 0,01742. È il risultato che ci aspettavamo, ed è anche quello che quasi tutti ottengono — battere la chiusura è difficile per i fondi che ci lavorano a tempo pieno, figurarsi per un modello sui soli gol.
Il modello è però calibrato: con un errore di 0,0121, quando dice 45% succede il 45% delle volte. È la cosa che conta per l'uso che ne facciamo — descrivere una partita — e non ha niente a che vedere con l'essere migliori del mercato. Sono due asticelle diverse: per informare serve essere corretti, per guadagnare serve essere migliori.
Ecco perché su questo sito non troverai consigli di gioco. Non è prudenza: è che i numeri dicono che non ne saremmo in grado, e pubblicarli lo stesso vorrebbe dire vendere qualcosa che non abbiamo. Questa pagina esiste perché tu possa verificarlo invece di crederci.
Le due curve di calibrazione
Dichiarato contro osservato. Sulla diagonale le probabilità sono oneste. Il mercato è il riferimento: guarda quanto ci somiglia il modello.
Il nostro modello
Errore di calibrazione 0,0121 su 82.422 osservazioni
La quota di chiusura
Errore di calibrazione 0,0099
Campionato per campionato
Dove il modello regge meglio e dove peggio. Vince in 0 campionati su 11.
| Campionato | Partite | Modello | Mercato | Scarto | Calibrazione |
|---|---|---|---|---|---|
| 🏴 Premier League Inghilterra | 3062 | 0,5799 | 0,5661 | +0,0138 | 0,0077 |
| 🏴 Premiership Scozia | 1684 | 0,5644 | 0,5504 | +0,0141 | 0,0162 |
| 🇪🇸 LaLiga Spagna | 3059 | 0,5935 | 0,5789 | +0,0146 | 0,0060 |
| 🇵🇹 Primeira Liga Portogallo | 2401 | 0,5553 | 0,5400 | +0,0153 | 0,0208 |
| 🇧🇪 Pro League Belgio | 2218 | 0,5997 | 0,5843 | +0,0153 | 0,0106 |
| 🇬🇷 Super League Grecia | 1820 | 0,5659 | 0,5495 | +0,0164 | 0,0082 |
| 🇫🇷 Ligue 1 Francia | 2748 | 0,6050 | 0,5883 | +0,0167 | 0,0087 |
| 🇮🇹 Serie A Italia | 3060 | 0,5863 | 0,5693 | +0,0170 | 0,0121 |
| 🇳🇱 Eredivisie Paesi Bassi | 2329 | 0,5645 | 0,5470 | +0,0175 | 0,0147 |
| 🇩🇪 Bundesliga Germania | 2399 | 0,5978 | 0,5771 | +0,0206 | 0,0171 |
| 🇹🇷 Süper Lig Turchia | 2694 | 0,6103 | 0,5810 | +0,0293 | 0,0147 |
Lo scarto è Brier del modello meno Brier del mercato: negativo vuol dire che il modello è avanti su quel campionato. Attenzione a leggerci troppo — su qualche migliaio di partite le differenze al quarto decimale sono in buona parte caso, ed è il motivo per cui la riga che conta è quella complessiva e non la migliore della tabella.
Come è fatta questa verifica
Due errori rendono inutile un backtest, e qui sono evitati per costruzione. Il primo è guardare avanti: stimare su tutta la stagione e poi «prevedere» partite che erano nel campione dà numeri splendidi e falsi. Qui il modello viene ristimato ogni giornata usando esclusivamente le partite già giocate a quella data.
Il secondo è scegliersi l'avversario. Misurarsi contro le quote di apertura, o contro la media di tutti i bookmaker, è darsi ragione da soli: la media include i banchi al dettaglio, che sono sistematicamente peggiori. Il confronto qui è con la quota di chiusura del Betfair Exchange, o di Pinnacle dove l'exchange manca — il metro più duro che esista.
I dati sono pubblici e gratuiti: vengono da football-data.co.uk, e il codice che produce questi numeri sta in scripts/track_record.py. Chiunque può rifare i conti.