È la domanda che mi viene posta più spesso, in varie forme, da chi ha appena finito di sviluppare la sua prima strategia: quante operazioni mi servono perché il risultato sia attendibile? Di solito viene indicato anche un numero: «Ho 1,200 operazioni, basta, vero?». La risposta onesta dà fastidio a tutti, perché non riguarda affatto il numero di operazioni.
Ecco tutto in una sola riga; poi dedicherò il resto del post a spiegare perché è una verità scomoda.
Qual è l'errore standard di un rapporto di Sharpe?
Per uno Sharpe calcolato su n rendimenti periodici, supponendo che siano indipendenti e approssimativamente normali, l'errore di campionamento è:
SE(s) ≈ √((1 + s²/2) / n)
dove s è lo Sharpe misurato alla stessa frequenza. Annualizzando entrambi i termini, si ottiene una formula semplice. Con k osservazioni all'anno e T anni, lo Sharpe annualizzato S ha:
SE(S) ≈ √((1 + S²/(2k)) / T)
Guarda quel 2k al denominatore. Per i rendimenti giornalieri k = 252, quindi anche uno Sharpe pari a 2 contribuisce 4/504 ≈ 0.008 al numeratore. L'intero termine si riduce a 1. L'errore standard di uno Sharpe annualizzato è approssimativamente 1/√T, dove T indica gli anni di calendario dei dati. Dipende a malapena dallo Sharpe stesso, non dipende dalla frequenza di campionamento e, di certo, non dipende dal numero di operazioni eseguite.
Quindi:
| Anni di dati | SE(Sharpe) | IC al 95% se la stima è 1.5 |
|---|---|---|
| 1 | 1.00 | da −0.46 a 3.46 |
| 2 | 0.71 | da 0.11 a 2.89 |
| 3 | 0.58 | da 0.37 a 2.63 |
| 5 | 0.45 | da 0.62 a 2.38 |
| 10 | 0.32 | da 0.88 a 2.12 |
Un backtest con Sharpe 1.5 su due anni di dati storici non può distinguersi statisticamente dal lancio di una moneta al livello di confidenza del 95%. È la situazione di partenza per gran parte della ricerca nel settore crypto: per la maggior parte delle persone, i dati puliti, corretti per il survivorship bias e con commissioni accurate iniziano intorno al 2022, e metà dei simboli interessanti non esisteva prima del 2023.
Ma ho 40,000 operazioni. Questo risolve il problema?
No, ed è proprio questo il malinteso che vorrei eliminare.
Il numero di operazioni e la lunghezza del campione sono grandezze diverse, e nella formula compare solo una delle due. Se la tua strategia esegue 40,000 operazioni in sei mesi, hai T = 0.5 e SE ≈ 1.41. L'intervallo al 95% per uno Sharpe stimato di 2.0 va da −0.8 a 4.8. Quarantamila operazioni, e la conclusione onesta è: «Potrebbe essere valida, ma potrebbe anche avere rendimenti negativi».
Il motivo è che quelle 40,000 operazioni non sono 40,000 scommesse indipendenti in 40,000 diverse condizioni di mercato. Sono 40,000 osservazioni tratte da circa 180 giorni di comportamento del mercato; i giorni sono correlati tra loro e i regimi sono correlati al loro interno. Un portafoglio di mean reversion ad alta frequenza che guadagna ogni giorno per quattro mesi ha in realtà fatto una sola scommessa — che la reversione di breve periodo regga in questo regime di liquidità — e ha osservato l'esito di quella scommessa forse una manciata di volte indipendenti.
Il cambio di prospettiva che uso io: conta i regimi, non le esecuzioni. Quante condizioni di mercato davvero diverse ha superato questa strategia? Una strategia di funding carry che ha operato durante un unico lungo periodo con basis positiva ha visto n = 1, indipendentemente dal numero di ribilanciamenti orari registrati.
Verifica rapida: applica il block bootstrap ai P&L giornalieri usando blocchi di 20 giorni e osserva la dispersione degli Sharpe ricampionati. Se il 5° percentile è sotto zero, il numero di operazioni è irrilevante. Bastano circa nove righe di numpy e questo controllo mi ha dissuaso da più strategie di qualsiasi altro singolo test.
La formula vale per le strategie reali?
Non proprio, e sbaglia nella direzione che non ti piacerà. Il risultato 1/√T presuppone rendimenti IID normali. I rendimenti delle strategie reali sono autocorrelati e asimmetrici, e l'asimmetria è solitamente negativa per tutto ciò che assomiglia a carry, short vol o mean reversion. La correzione di Mertens reinserisce questi momenti:
SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)
dove γ₃ è l'asimmetria e γ₄ la curtosi. Un'asimmetria negativa rende positivo il termine −γ₃·s, ampliando l'intervallo. La curtosi in eccesso lo amplia ulteriormente. Per un P&L tipico da crypto carry, con asimmetria intorno a −1.2 e curtosi intorno a 9, ho visto l'errore standard corretto risultare del 30–40% superiore a quello ingenuo. Il lavoro di Lo del 2002 tratta l'autocorrelazione e l'effetto ha lo stesso segno: la correlazione seriale positiva nei rendimenti gonfia lo Sharpe ingenuo e riduce l'errore apparente, una combinazione pericolosa.
Considera quindi 1/√T come un limite inferiore alla tua incertezza. È lo scenario migliore.
Quanto deve essere alto lo Sharpe se ho testato 500 varianti?
Eccoci alla parte che conta per chiunque gestisca una pipeline di ricerca automatizzata, come facciamo ogni giorno a Stratmill: l'agente che genera strategie non produce una sola candidata, ma centinaia.
Il massimo atteso di M estrazioni da una normale standard è all'incirca √(2 ln M). Moltiplicalo per l'errore standard e ottieni lo Sharpe che mostrerebbe la più fortunata tra M strategie del tutto prive di valore.
| Strategie testate | √(2 ln M) | Sharpe massimo del rumore, 5 anni (SE 0.45) | Massimo del rumore, 2 anni (SE 0.71) |
|---|---|---|---|
| 10 | 2.15 | 0.96 | 1.52 |
| 100 | 3.03 | 1.36 | 2.16 |
| 500 | 3.53 | 1.58 | 2.50 |
| 5,000 | 4.13 | 1.85 | 2.93 |
Guarda la penultima riga. Se hai generato 500 candidate usando due anni di dati e la vincitrice mostra Sharpe 2.4, non hai trovato proprio nulla. È sotto la soglia del rumore. Lo Sharpe deflazionato di Bailey e López de Prado formalizza questo concetto usando la varianza degli Sharpe ottenuti nei vari test al posto dell'approssimazione √(2 ln M): vale la pena implementarlo correttamente, ma la versione approssimativa basta già a cambiare comportamento da oggi.
Ci sono due aspetti che rendono la situazione peggiore di quanto mostri la tabella. Primo, M non è il numero di strategie che hai salvato, ma quello che hai valutato, comprese tutte le modifiche ai parametri, ogni «provo solo un lookback di 30 periodi», ogni nuova esecuzione dopo la correzione di un bug. Nessuno fa un conteggio onesto. Secondo, le candidate non sono estrazioni indipendenti, quindi √(2 ln M) sovrastima l'ampiezza effettiva della ricerca; tuttavia, le prove correlate fanno anche sì che un unico regime fortunato faccia salire insieme un intero gruppo di candidate.
Il numero più pericoloso nella ricerca quantitativa è quello che nessuno ha registrato: quante volte hai guardato i risultati.
Quindi, cosa faccio in pratica?
Cinque cose, nell'ordine in cui le farei.
- Registra ogni valutazione. Un contatore che aumenta a ogni backtest eseguito, salvato in modo persistente e mai azzerato. Se non sai dire quanto vale M, non puoi stabilire la soglia. È l'ora di lavoro con il maggior valore di tutto l'elenco.
- Indica sempre lo Sharpe con il suo intervallo. Non stampare mai un numero senza contesto. I nostri report di backtest riportano
1.72 ± 0.51 (2.9y, skew-adjusted)e il simbolo ± non è facoltativo. Cambia il modo in cui tutto il team discute i risultati. - Stabilisci la soglia in base a M e T prima di guardare i risultati. Prendi il numero dalla tabella qui sopra e annotalo. Le soglie stabilite a posteriori sono il modo in cui tutti finiscono per convincersi di aver trovato un curve fit.
- Quando hai pochi dati, privilegia l'ampiezza rispetto alla frequenza. Non puoi creare altro tempo di calendario, ma puoi applicare lo stesso segnale a 40 simboli non correlati. Questo aumenta davvero l'n effettivo, cosa che aumentare la frequenza delle operazioni non fa. Attenzione però alle correlazioni: 40 perp crypto in un'ora di avversione al rischio sono un unico strumento.
- Poi fai paper trading. Il campione fuori campione cresce di un giorno ogni giorno e non ci sono scorciatoie: proprio per questo è l'unico campione che nessuno può sottoporre a overfitting.
Niente di tutto questo rende utilizzabili i campioni brevi. Ti aiuta a essere onesto su quali conclusioni possa sostenere un campione breve: molto meno di quanto lascino intendere la maggior parte dei report di backtest. Uno Sharpe di 1.5 su due anni è un'ipotesi che vale la pena mettere alla prova con il paper trading. Non è una scoperta.
← Tutti gli articoli
