Backtesting di una Strategia di Scommesse: Guida Metodologica

Un modello di previsione calcistica che non è stato testato sul passato non è un modello — è un’opinione con le formule. Il backtesting è il processo attraverso il quale verifichi se il tuo algoritmo avrebbe generato profitti su dati storici, simulando le scommesse che avresti piazzato e calcolando il rendimento complessivo. È il passaggio che separa la speculazione dalla validazione, e saltarlo è l’errore più costoso che un scommettitore algoritmico possa fare.
Questa guida spiega come condurre un backtesting rigoroso, quali errori metodologici evitare e come interpretare i risultati senza cadere nella trappola dell’ottimismo.
Principi fondamentali del backtesting
Il primo principio è l’assenza di look-ahead bias — non puoi mai usare informazioni future per fare previsioni passate. Se il tuo modello usa la media gol stagionale per prevedere la giornata 10, quella media deve essere calcolata sulle prime 9 giornate, non sull’intera stagione. Sembra ovvio, ma è un errore sorprendentemente comune: molti fogli Excel calcolano i parametri su tutti i dati disponibili e poi li applicano retroattivamente a ogni partita, producendo risultati gonfiati che non si replicheranno nella pratica.
L’implementazione corretta è la walk-forward validation: per ogni giornata di campionato, calcoli i parametri del modello usando solo le partite precedenti, generi le previsioni, le confronti con le quote e registri l’esito. Poi avanzi di una giornata, ricalcoli i parametri includendo i nuovi risultati e ripeti. Il processo è sequenziale e simula esattamente ciò che faresti in tempo reale.
Il secondo principio è l’uso delle quote corrette. Il ROI del tuo modello dipende tanto dalla precisione delle previsioni quanto dalle quote alle quali scommetti. Per il backtesting, le quote di chiusura sono il benchmark standard — rappresentano il prezzo di mercato al momento della partita. Se usi le quote di apertura (rilasciate giorni prima), il ROI potrebbe essere più alto perché le quote di apertura sono meno efficienti, ma questo sovrastima i profitti reali a meno che tu non sia effettivamente in grado di scommettere sempre alle quote di apertura.
Il terzo principio è il campione sufficiente. Un backtesting su 50 partite non dimostra nulla — la varianza è troppo alta per distinguere un modello profittevole dalla fortuna. Come regola empirica, servono almeno 300-500 scommesse per avere una confidenza ragionevole che il ROI osservato rifletta un edge reale. Per i modelli che scommettono selettivamente (solo sulle value bet con EV sopra una soglia), raggiungere questo numero può richiedere due o tre stagioni di dati.
Le metriche che contano
Il ROI (Return on Investment) è la metrica più citata ma non l’unica rilevante. Il ROI ti dice quanto guadagni (o perdi) per ogni euro scommesso: un ROI del 5% significa che per ogni 100 euro scommessi, il profitto medio è di 5 euro. Ma il ROI da solo non racconta tutta la storia.
Il yield è spesso usato come sinonimo di ROI nel contesto delle scommesse, ma vale la pena chiarire la formula: yield = profitto netto / totale scommesso × 100. Un yield positivo è la condizione necessaria per la profittabilità, ma la sua dimensione va contestualizzata con il volume di scommesse e il tipo di mercato.
Il drawdown massimo è la metrica che il ROI nasconde. Misura la perdita massima dal picco al punto più basso del bankroll durante il periodo di test. Un modello con ROI del 5% ma drawdown massimo del 40% è molto più rischioso di uno con ROI del 3% e drawdown del 15%. Il drawdown massimo ti dice quanto devi essere preparato a soffrire prima che il modello si riprenda — e se sei psicologicamente ed economicamente in grado di resistere.
La percentuale di vincita (hit rate) è informativa ma va interpretata con cautela. Un modello che vince il 60% delle scommesse a quote basse (media 1,50) può avere un ROI peggiore di uno che vince il 35% delle scommesse a quote alte (media 3,50). Ciò che conta è il prodotto tra frequenza di vincita e quota media, non la frequenza da sola.
Lo Sharpe ratio adattato — il rapporto tra il rendimento medio per scommessa e la deviazione standard del rendimento — è una metrica mutuata dalla finanza che misura la qualità del rendimento aggiustata per il rischio. Uno Sharpe ratio alto indica rendimenti consistenti, uno basso indica rendimenti erratici anche se mediamente positivi. Per il betting, uno Sharpe ratio superiore a 0,5 è considerato buono.
Gli errori che invalidano un backtesting
Anche con le migliori intenzioni, un backtesting può produrre risultati fuorvianti. Conoscere gli errori più comuni è la migliore difesa contro l’autoinganno.
Il primo e più insidioso è l’overfitting sui dati storici. Se testi dieci varianti del tuo modello — con parametri diversi, soglie diverse, feature diverse — e scegli quella con il ROI migliore, stai facendo data mining, non validazione. La variante con il ROI migliore potrebbe essere semplicemente quella che si è adattata al rumore dei dati storici, non quella che ha catturato un pattern reale. La protezione è testare su un dataset separato (out-of-sample): calibra il modello sui dati delle stagioni 2020-2023 e testa sui dati della stagione 2024, senza mai guardare i risultati del 2024 durante la calibrazione.
Il secondo errore è ignorare i costi di transazione. Nel betting, i costi di transazione sono il margine del bookmaker e le eventuali commissioni sugli exchange. Se il tuo backtesting usa le quote lorde (con il margine incluso), il ROI simulato è già al netto del margine — corretto. Ma se confronti le tue probabilità con probabilità “pure” rimuovendo il margine, e poi calcoli il ROI usando le quote originali, stai mescolando due piani e il risultato è inaffidabile.
Il terzo errore è il survivorship bias applicato ai campionati. Se testi il tuo modello solo sulla Serie A perché è il campionato che conosci meglio, i risultati non dicono nulla sulla sua capacità di funzionare su altri campionati. Un modello veramente robusto dovrebbe essere testato su più campionati e più stagioni, idealmente con caratteristiche diverse (campionati ad alta e bassa media gol, campionati con e senza una dominatrice chiara).
Il quarto errore è non tenere conto della disponibilità delle quote nel momento della scommessa. Il backtesting assume che tu possa scommettere alla quota registrata nel dataset, ma nella realtà la quota potrebbe non essere disponibile nel momento in cui il tuo modello genera il segnale. Le quote di chiusura sono disponibili solo un attimo prima della partita, e se il tuo modello genera segnali 48 ore prima, la quota effettiva sarà diversa.
Come interpretare i risultati senza illudersi
Un backtesting che mostra un ROI positivo non è una garanzia di profitti futuri. È un segnale incoraggiante che richiede ulteriore validazione. La domanda chiave è: il ROI osservato è statisticamente significativo o potrebbe essere frutto del caso?
Il test più semplice è il test di ipotesi sul ROI. L’ipotesi nulla è che il tuo modello non abbia edge (ROI = 0). Se il ROI osservato su 500 scommesse è del 4% con una deviazione standard del rendimento per scommessa di 1,5, il test statistico ti dice con quale probabilità avresti osservato quel ROI per puro caso. In Python, poche righe di codice con scipy.stats bastano per calcolare il p-value.
Un ROI statisticamente significativo (p-value inferiore a 0,05) su un campione ampio e out-of-sample è il risultato più forte che un backtesting possa produrre. Ma anche in questo caso, il futuro non è obbligato a replicare il passato: i mercati cambiano, i bookmaker diventano più efficienti, i pattern storici possono scomparire. Il backtesting ti dice che il tuo modello ha funzionato, non che funzionerà per sempre.
La pratica migliore è il paper trading: dopo il backtesting, esegui il modello in tempo reale per qualche settimana senza scommettere denaro, registrando le previsioni e confrontandole con i risultati. Se le performance in paper trading sono coerenti con quelle del backtesting, hai una conferma aggiuntiva che il modello funziona. Se divergono significativamente, c’è un problema — forse un errore nel codice, forse un overfitting sui dati storici, forse un cambiamento nel mercato.
Il backtesting come specchio, non come sfera di cristallo
Il backtesting ha un potere seduttivo pericoloso: ti mostra un passato dove il tuo modello funzionava, e la tentazione è proiettare quel passato nel futuro. Ma il backtesting non prevede il futuro — ti mostra cosa sarebbe successo se avessi usato il tuo modello nel passato, con tutta l’informazione che il passato conteneva e che il futuro potrebbe non contenere.
Il suo valore reale è diagnostico, non predittivo. Ti dice se la logica del modello è coerente, se i parametri sono ragionevoli, se le previsioni sono calibrate. Ti mostra i periodi di drawdown e ti prepara psicologicamente a sopportarli. Ti costringe a definire regole di ingresso e uscita prima di rischiare denaro reale.
Un modello che supera un backtesting rigoroso — out-of-sample, walk-forward, su più campionati e più stagioni — non è un modello che vincerà sicuramente. È un modello che merita una possibilità con denaro reale. La differenza tra le due affermazioni è tutta la differenza tra un approccio professionale e un’illusione ben documentata.