Rapporto di progettazione · v1

Il Listino

Come si costruisce un mercato in cui si comprano squadre di calcio, e come si verifica che non sia rotto.

11 stagioni reali 5 campionati 21.568 partite 33.000 osservazioni di prezzo
Inter297+28% ▲Napoli208+2% ▲Milan183+28% ▲Roma181+22% ▲Juventus181+7% ▲Como155+82% ▲Atalanta147-24% ▼Bologna114-7% ▼Lazio113-18% ▼Fiorentina86-38% ▼Udinese83+22% ▲Torino78+1% ▲Sassuolo77+49% ▲Parma69+36% ▲Genoa66+1% ▲Cagliari64+24% ▲Lecce55+23% ▲Monza49Venezia48Frosinone47Inter297+28% ▲Napoli208+2% ▲Milan183+28% ▲Roma181+22% ▲Juventus181+7% ▲Como155+82% ▲Atalanta147-24% ▼Bologna114-7% ▼Lazio113-18% ▼Fiorentina86-38% ▼Udinese83+22% ▲Torino78+1% ▲Sassuolo77+49% ▲Parma69+36% ▲Genoa66+1% ▲Cagliari64+24% ▲Lecce55+23% ▲Monza49Venezia48Frosinone47
01 — IL PROBLEMA

Un motore di quotazione non si progetta a tavolino

L'idea è semplice: ogni squadra ha una quotazione, sale se vince, scende se perde, e l'utente compra e vende con un budget virtuale. La difficoltà non è scrivere la formula. È che quasi tutte le formule ragionevoli sono rotte, e lo si scopre solo facendole girare sui risultati veri.

Il fallimento tipico non è che il gioco sia noioso: è che qualcuno trova la strategia che vince sempre, la pubblica, e nel giro di tre settimane il gioco è finito. Il primo motore che ho testato aveva esattamente questo difetto: comprare ogni giornata la squadra favorita rendeva il 108% e vinceva 30 stagioni su 30.

Il criterio

Un motore è corretto quando nessuna classe osservabile di squadre — le big, le piccole, i favoriti di giornata, quelle appena salite, quelle appena scese — ha rendimento atteso diverso da zero. L'abilità deve stare nel prevedere le sorprese, non nel leggere la classifica.

02 — LE QUOTAZIONI DI APERTURA

Il prezzo del primo giorno decide tutto

Se ogni squadra apre a 100 monete, le prime otto giornate sono una convergenza garantita verso il valore reale: si comprano le big e si incassa senza rischio. Le quotazioni di apertura devono già contenere le aspettative.

Il modello le costruisce da tre segnali: i punti per partita della stagione precedente (45%), una media pesata sulle ultime tre stagioni (20%) e il logaritmo del valore della rosa (35%). Le neopromosse partono da un prior equivalente a circa 40 punti, con un malus prudenziale del 7%.

2026-08-07T15:06:00.765609 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 0 50 100 150 200 250 300 monete per quota Frosinone Venezia Monza Lecce Cagliari Genoa Parma Sassuolo Torino Udinese Fiorentina Lazio Bologna Atalanta Como Juventus Roma Milan Napoli Inter 47 48 49 55 64 66 69 77 78 83 86 113 114 147 155 181 181 183 208 297
Serie A 2026/27. In oro le tre neopromosse. Rapporto fra la quota più alta e la più bassa: 5,5 volte — abbastanza perché la scelta conti, non tanto da rendere le piccole irrilevanti.
03 — COME SI MUOVE UNA QUOTA

Sorpresa, non risultato

La quota non si muove sul risultato ma sullo scarto fra il risultato e l'attesa. Una squadra che vince contro l'ultima in classifica ha fatto quello che il mercato già prezzava: la quota non si muove. La stessa squadra che pareggia perde valore.

Sopra questo nucleo agiscono quattro forze: una leva che rende le squadre economiche più volatili (non più redditizie), i bonus narrativi per rimonte e gol nel finale, un richiamo verso il valore fondamentale implicito nell'Elo, e l'impatto della domanda — se molti comprano l'Inter, l'Inter costa di più. Quest'ultimo ingrediente è ciò che distingue un mercato da una tabella di pagamenti.

2026-08-07T15:04:03.319773 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 0 5 10 15 20 25 30 35 40 giornata -60% -40% -20% +0% variazione quota Inter Como Napoli Atalanta Fiorentina Sassuolo
Stagione 2025/26 rigiocata dal motore. Il Como parte quarto per quotazione e chiude in alto; l'Atalanta scende per tutta la seconda metà. Le traiettorie raccontano la stagione senza bisogno di didascalie.
2026-08-07T15:04:03.468033 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ -40% -20% +0% +20% +40% +60% +80% rendimento totale (quota + cedole) Pisa Fiorentina Verona Atalanta Lazio Bologna Torino Genoa Napoli Cremonese Juventus Roma Udinese Lecce Cagliari Inter Milan Parma Sassuolo Como -41% -38% -25% -24% -18% -7% +1% +1% +2% +6% +7% +22% +22% +23% +24% +28% +28% +36% +49% +82%
Rendimento totale per squadra, 2025/26: quotazione finale più cedole incassate. Chi vince lo scudetto sale, chi crolla dopo un'annata buona viene punito, le neopromosse che stupiscono sono l'occasione migliore.
04 — I DIFETTI TROVATI

Sei cose che solo il backtest poteva dire

Le cedole a stacco, in breve

Prima della partita la quota scende dell'importo atteso della cedola; dopo la partita chi possiede la quota incassa quella realizzata. Il valore atteso resta zero — nessun arbitraggio — ma l'esperienza dell'utente diventa «la mia squadra ha vinto, mi hanno accreditato monete». È la differenza fra un modello corretto e un gioco che si ha voglia di riaprire il lunedì.

05 — GLI ARCHETIPI

Nessuno deve vincere sempre

Sette archetipi di giocatore competono nello stesso mercato per quaranta stagioni simulate. Il criterio non è che vincano i più bravi: è che nessuno domini e che il giocatore casuale perda. Se il random sta a metà classifica, le decisioni non contano e il gioco è una lotteria.

2026-08-07T15:04:03.572821 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ -30% -20% -10% +0% +10% +20% +30% +40% rendimento a fine stagione — punto = media, barra = min/max su 20 run Value Cacciatore di outsider Compra i favoriti Momentum A caso Contrarian Compra e tieni
Le barre chiare sono l'intervallo fra la stagione peggiore e la migliore. La sovrapposizione fra strategie è il segnale che si cerca: significa che nessuna è la risposta giusta a priori.
06 — LA PROVA DEL NOVE

Gli stessi parametri, altri quattro campionati

I parametri sono stati calibrati sulla sola Serie A: potevano essere sovradattati. La verifica applica esattamente gli stessi valori a Premier League, Liga, Bundesliga e Ligue 1 — undici stagioni ciascuno, oltre ventunmila partite — senza ritoccare nulla tranne un parametro dichiaratamente locale, l'ampiezza delle quotazioni di apertura.

campionatospreaddistorsione
di prezzo
distorsione
sui favoriti
auto
correlazione
informativitàvolatilitàabilità
Serie A0.54-0.008+0.0010+0.0180.954.1%+13.9%
Premier League0.36-0.010+0.0006-0.0300.884.2%+13.5%
La Liga0.36-0.012+0.0005-0.0470.844.0%+12.2%
Bundesliga0.30-0.017-0.0016-0.0430.864.2%+11.4%
Ligue 10.30-0.036+0.0002-0.0560.884.1%+9.7%
2026-08-07T15:04:03.726477 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ -0.10 +0.00 +0.10 Serie A Premier League La Liga Bundesliga Ligue 1 distorsione di prezzo -0.05 -0.03 +0.00 +0.02 autocorrelazione +3% +4% +5% +6% volatilità per giornata
In verde la banda di accettazione. La distorsione di prezzo resta sotto il 2% ovunque e quella sui favoriti è a zero: il motore non regala rendimento a nessuna classe di squadre in nessun campionato.

Risultato controintuitivo dello stesso esercizio: i campionati con un padrone stabile richiedono le quotazioni di apertura più strette. Ligue 1 e Bundesliga stanno a 0,30, la Serie A a 0,54. Il dominio del PSG e del Bayern è già interamente scontato nei tre segnali del modello — che ogni anno concordano tutti sulla stessa squadra — e allargare ulteriormente le quote finisce per sovraprezzarli.

Quello che cinque stagioni non bastavano a vedere

Sul campione corto l'autocorrelazione dei prezzi risultava nulla, cioè perfetta. Su undici stagioni e oltre trentamila osservazioni si vede che un residuo negativo di circa −0,03 è strutturale. Non è un bug da correggere: è la misura di quanto vantaggio ha chi compra ciò che è appena sceso. Un margine reale ma modesto, che va scoperto e tenuto con disciplina — non una formula che risolve il gioco. La differenza fra le due cose è tutta nella dimensione del numero, e serviva il campione lungo per vederla.

Provando a eliminarlo si scopre che la relazione fra la reattività del rating Elo e l'autocorrelazione ha la forma di una U: con un rating troppo lento è il valore fondamentale congelato a riportare indietro i prezzi, con uno troppo veloce è il rating stesso a sovra-reagire. Il minimo cade attorno a K = 10, ma a quel valore l'ampiezza delle quotazioni di apertura necessaria esplode fino a 26 volte fra la prima e l'ultima squadra. Curare il sintomo faceva peggio della malattia.

07 — UN NUMERO DA TENERSI

Quanto dura la forza di una squadra

Misurato su 920 coppie di stagioni consecutive nei cinque campionati: una squadra che quest'anno sta un punto per partita sopra la media, l'anno prossimo starà a 0,81 punti sopra. È il coefficiente di regressione verso la media del calcio europeo, e serve ogni volta che si deve prezzare una stagione che non è ancora cominciata.

0,810
persistenza anno su anno
4,1%
volatilità per giornata
0,89
quota finale vs classifica
±0,04
distorsione residua
2026-08-07T15:04:03.891165 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ −0.50 −0.25 0.00 0.25 0.50 0.75 1.00 1.25 punti/partita sopra la media — stagione N −1.0 −0.5 0.0 0.5 1.0 stagione N+1 β = 0.807 n = 920
Ogni punto è una squadra fra due stagioni consecutive. La linea rossa è la regressione osservata, la tratteggiata sarebbe la persistenza perfetta. La distanza fra le due è il margine di sorpresa su cui vive il gioco.
07b — LE STORIE

Undici anni, 1.072 squadre-stagione

Il motore non serve solo a non essere rotto: serve a raccontare. Ecco cosa avrebbe fatto guadagnare e cosa avrebbe rovinato, in undici stagioni dei cinque campionati.

Le migliori stagioni
+130%Leicester City2015-16 · Premier Leaguequotata 14ª, chiusa 1ª
+121%Bayer Leverkusen2023-24 · Bundesligaquotata 6ª, chiusa 1ª
+117%VfB Stuttgart2023-24 · Bundesligaquotata 16ª, chiusa 2ª
+114%Chelsea FC2016-17 · Premier Leaguequotata 9ª, chiusa 1ª
+92%Girona FC2023-24 · La Ligaquotata 10ª, chiusa 3ª
+89%Lille OSC2018-19 · Ligue 1quotata 15ª, chiusa 2ª
Le peggiori
-51%Monza2024-25 · Serie Aquotata 12ª, chiusa 20ª
-50%AS Monaco2018-19 · Ligue 1quotata 2ª, chiusa 17ª
-50%Parma2020-21 · Serie Aquotata 10ª, chiusa 20ª
-49%Montpellier HSC2024-25 · Ligue 1quotata 12ª, chiusa 18ª
-46%Sheffield United2023-24 · Premier Leaguequotata 20ª, chiusa 20ª
-46%FC Schalke 042020-21 · Bundesligaquotata 11ª, chiusa 18ª
Leicester, andata e ritorno

La stagione più redditizia di tutto il campione e la settima peggiore appartengono alla stessa squadra, ad anni consecutivi. Nel 2015/16 il Leicester apre quattordicesimo per quotazione a 74 monete, vince la Premier League e rende +130%. L'agosto dopo apre primo, a 193 monete, chiude dodicesimo e perde il 46%. Nessuna delle due cose è un errore del modello: è esattamente ciò che deve succedere quando il prezzo incorpora l'anno precedente e il campo no.

Quanto rende comprare una certa squadra

Le categorie non si comportano allo stesso modo, e la forma è a U: le costosissime e le economiche rendono più delle squadre di metà classifica. È il motivo per cui la distorsione misurata in modo lineare risulta nulla pur essendoci struttura — una cosa che si vede solo guardando i gruppi separatamente.

2026-08-07T15:04:04.185505 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ -40% -20% +0% +20% +40% +60% rendimento medio della stagione chi retrocede una da metà classifica la più economica una neopromossa la squadra più cara chi vince il campionato -20% (10% in utile) +3% (51% in utile) +13% (75% in utile) +7% (63% in utile) +13% (75% in utile) +40% (98% in utile)
Chi vince il campionato rende in media il 40% e non è mai in perdita, in undici anni e cinque campionati. Il punto è che a agosto non si sa chi vincerà: la stessa squadra più cara, che è il modo più ovvio di provare a indovinarlo, rende il 12% e va in rosso una volta su quattro.

Le sorprese e le delusioni

Chi ha fatto più posti di quanti ne dicesse il prezzo
+15RB Leipzig2016-17 · Bundesligaquotata 17ª, chiusa 2ª
+14VfB Stuttgart2023-24 · Bundesligaquotata 16ª, chiusa 2ª
+13Leicester City2015-16 · Premier Leaguequotata 14ª, chiusa 1ª
+13Wolverhampton Wanderers2018-19 · Premier Leaguequotata 20ª, chiusa 7ª
+13Granada CF2019-20 · La Ligaquotata 20ª, chiusa 7ª
+13Lille OSC2018-19 · Ligue 1quotata 15ª, chiusa 2ª
Chi ne ha persi di più
-15AS Monaco2018-19 · Ligue 1quotata 2ª, chiusa 17ª
-13Espanyol Barcelona2019-20 · La Ligaquotata 7ª, chiusa 20ª
-13Girona FC2024-25 · La Ligaquotata 3ª, chiusa 16ª
-13AS Saint-Étienne2019-20 · Ligue 1quotata 4ª, chiusa 17ª
-12Tottenham Hotspur2024-25 · Premier Leaguequotata 5ª, chiusa 17ª
-121. FC Köln2017-18 · Bundesligaquotata 6ª, chiusa 18ª

Comprare ogni agosto e tenere fino a maggio

Undici stagioni consecutive, riacquistando ogni anno alla quotazione di apertura. Il risultato dice una cosa che al tifoso suona strana e all'investitore no: vincere non paga, se eri dato per vincente. La Juventus ha messo in fila cinque scudetti dentro questa finestra e ha moltiplicato per 2,3, meno di Roma. L'Inter, che ha alternato disastri e trionfi partendo spesso sottovalutata, ha moltiplicato per quasi 9.

2026-08-07T15:04:04.078802 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ ×0,25 ×0,5 ×1 ×2 ×4 ×8 capitale moltiplicato in 11 stagioni Southampton FC Verona Montpellier HSC VfL Wolfsburg Genoa 1. FC Köln Atalanta Napoli Borussia Dortmund Real Madrid Inter FC Barcelona Manchester City Paris Saint-Germain Bayern München ×0.32 ×0.42 ×0.69 ×0.69 ×0.73 ×0.76 ×6.29 ×6.38 ×6.56 ×6.64 ×8.82 ×9.25 ×10.39 ×13.48 ×17.53
Squadre presenti in almeno nove delle undici stagioni. Scala logaritmica. Sotto la linea verticale si è perso capitale.

All'altro capo della classifica ci sono i club che hanno passato il decennio a deludere le proprie quotazioni: il Southampton ha lasciato per strada il 68% del capitale, la Sampdoria il 57%, il Genoa il 27%. Il caso del Genoa è istruttivo perché la media non racconta una discesa continua: nel 2023/24, quotato diciottesimo, ha chiuso undicesimo e reso il 50% in una sola stagione. È il profilo di rendimento di chi viene sistematicamente prezzato male in entrambe le direzioni.

08 — COSA MANCA

Quattro cose ancora aperte

Le quote dei bookmaker

Oggi le probabilità pre-partita vengono stimate con l'Elo. Sostituirle con le quote reali (i CSV storici sono gratuiti) rende il calcolo della sorpresa molto più preciso.

Le dominanze a diciotto squadre

In Bundesliga e Ligue 1 la strategia contrarian vince un po' troppo spesso. Entrambi i campionati hanno 18 squadre invece di 20: meno diversificazione possibile, quindi edge di mean reversion più concentrato. Va riverificato con più ripetizioni prima di concludere che sia un problema reale.

Il livello dei prezzi che si sgonfia

Lo stacco delle cedole fa scendere le quotazioni di circa il 60% nel corso della stagione, compensato in contanti. Matematicamente corretto, visivamente brutto: mostrare sempre il rendimento totale e mai la quota nuda risolve il problema senza toccare il modello.

Le quote non sono confrontabili fra campionati

Avendo ampiezze diverse per campionato, «150 monete» significa cose diverse in Serie A e in Ligue 1. Se resta l'idea del budget unico distribuito sui cinque campionati, serve un fattore di conversione dichiarato.