Det här är frågan jag oftast får, i någon form, från personer som precis har byggt sin första strategi: hur många affärer behöver jag innan resultatet är på riktigt? Vanligtvis kommer det en siffra också. ”Jag har 1,200 affärer, det räcker väl?” Och det ärliga svaret irriterar alla, för det handlar inte alls om antalet affärer.
Här är allt i en enda rad. Sedan ägnar jag resten av inlägget åt att förklara varför den svider.
Vad är standardfelet för en Sharpe-kvot?
För en Sharpe beräknad på n periodiska avkastningar, under antagandet att de är oberoende och ungefär normalfördelade, är stickprovsfelet:
SE(s) ≈ √((1 + s²/2) / n)
där s är Sharpe beräknad med samma frekvens. Annualisera båda leden så får du ett snyggt resultat. Med k observationer per år och T år blir standardfelet för den annualiserade Sharpe-kvoten S:
SE(S) ≈ √((1 + S²/(2k)) / T)
Titta på 2k i nämnaren. För dagliga avkastningar är k = 252, så även en Sharpe på 2 bidrar med 4/504 ≈ 0.008 till täljaren. Hela uttrycket krymper till 1. Standardfelet för en annualiserad Sharpe är ungefär 1/√T, där T är antalet kalenderår med data. Det beror knappt på själva Sharpe-värdet, inte på samplingsfrekvensen och absolut inte på hur många affärer du gjorde.
Alltså:
| Dataår | SE(Sharpe) | 95% KI om det uppmätta värdet är 1.5 |
|---|---|---|
| 1 | 1.00 | −0.46 till 3.46 |
| 2 | 0.71 | 0.11 till 2.89 |
| 3 | 0.58 | 0.37 till 2.63 |
| 5 | 0.45 | 0.62 till 2.38 |
| 10 | 0.32 | 0.88 till 2.12 |
Ett backtest med Sharpe 1.5 över två års historik kan inte statistiskt skilja sig från ett slantsinglingsresultat på 95%-nivån. Det är utgångsläget för det mesta av kryptoforskningen, eftersom de flesta saknar ren data med korrigering för överlevnadsbias och korrekta avgifter före ungefär 2022, och hälften av de intressanta symbolerna inte fanns före 2023.
Men jag har 40,000 affärer. Löser inte det problemet?
Nej, och det här är missförståndet jag helst vill slå hål på.
Antalet affärer och stickprovets längd är olika storheter, och bara den ena finns med i formeln. Om strategin går in i marknaden 40,000 gånger på sex månader har du T = 0.5 och SE ≈ 1.41. Ditt 95%-intervall för en uppmätt Sharpe på 2.0 sträcker sig från −0.8 till 4.8. Fyrtiotusen affärer, och den ärliga slutsatsen är ”den kan vara bra, den kan vara negativ”.
Orsaken är att de där 40,000 affärerna inte är 40,000 oberoende vad på 40,000 olika marknadslägen. De är 40,000 observationer från ungefär 180 dagars marknadsbeteende. Dagarna är korrelerade med varandra, och regimerna är också korrelerade sinsemellan. En högfrekvent mean reversion-portfölj som tjänar pengar varje dag i fyra månader har i själva verket gjort en enda satsning — att återgången på korta tidshorisonter håller i sig i den här likviditetsregimen — och sett den satsningen avgöras kanske en handfull gånger oberoende av varandra.
Så här brukar jag tänka i stället: räkna regimer, inte avslut. Hur många genuint olika marknadsförhållanden har strategin klarat sig igenom? En funding carry-strategi som körts under en enda lång period med positiv basis har sett n = 1, oavsett hur många ombalanseringar varje timme den registrerat.
Snabbdiagnos: block-bootstrapa din dagliga P&L med en blocklängd på 20 dagar och granska spridningen i de omsamplade Sharpe-värdena. Ligger den 5:e percentilen under noll är antalet affärer irrelevant. Det tar ungefär nio rader numpy och har fått mig att överge fler strategier än någon annan enskild kontroll.
Stämmer formeln för verkliga strategier?
Inte exakt, och felet går åt det håll du inte kommer att gilla. Resultatet 1/√T förutsätter IID-normalfördelade avkastningar. Verkliga strategiers avkastning är autokorrelerad och skev, och skevheten är oftast negativ för allt som liknar carry, short vol eller mean reversion. Mertens korrigering tar hänsyn till de momenten:
SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)
där γ₃ är skevheten och γ₄ är kurtosen. Negativ skevhet gör att termen −γ₃·s blir positiv, vilket breddar intervallet. Överdriven kurtosis gör det ännu bredare. För en typisk krypto carry-P&L med skevhet kring −1.2 och kurtosis kring 9 har jag sett det korrigerade standardfelet bli 30–40% större än det naiva. Los artikel från 2002 hanterar autokorrelationen och effekten har samma riktning: positiv seriell korrelation i avkastningen blåser upp den naiva Sharpe-kvoten och krymper det skenbara felet, en obehaglig kombination.
Se därför 1/√T som en nedre gräns för osäkerheten. Det är bästa möjliga fall.
Hur hög måste Sharpe vara om jag testade 500 varianter?
Nu kommer vi till det som spelar roll för alla som kör ett automatiserat forskningsflöde, vilket är vår vardag på Stratmill: genereringsagenten producerar inte en kandidat, utan hundratals.
Det förväntade maximumet av M dragningar från en standardnormalfördelning är ungefär √(2 ln M). Multiplicera det med standardfelet så får du Sharpe-värdet som den tursammaste av M helt värdelösa strategier kommer att uppvisa.
| Testade strategier | √(2 ln M) | Bästa brusresultat, 5 år (SE 0.45) | Bästa brusresultat, 2 år (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 |
Titta på näst sista raden. Om du genererade 500 kandidater mot två års data och vinnaren visar Sharpe 2.4 har du inte hittat någonting. Det ligger under brusgolvet. Bailey och López de Prados deflaterade Sharpe formaliserar detta genom att använda variansen hos dina testade Sharpe-värden i stället för det grova √(2 ln M). Den är värd att implementera ordentligt, men den grova versionen räcker för att ändra beteendet redan i dag.
Två saker gör läget värre än tabellen visar. För det första är M inte antalet strategier du sparade, utan antalet du utvärderade, inklusive varje parameterjustering, varje ”jag testar väl en lookback på 30 perioder i stället”, varje omkörning efter en buggfix. Ingen räknar ärligt. För det andra är kandidaterna inte oberoende dragningar, så √(2 ln M) överskattar den effektiva bredden. Samtidigt gör korrelerade tester att en enda tursam regim kan lyfta en hel grupp av dem tillsammans.
Det farligaste talet inom kvantitativ forskning är det ingen loggade: hur många gånger du tittade.
Så vad gör jag i praktiken?
Fem saker, i den ordning jag skulle göra dem.
- Logga varje utvärdering. En räknare som ökar vid varje backtestkörning, sparas och aldrig nollställs. Om du inte kan ange M kan du inte heller ange din tröskel. Det här är den enskilt mest värdefulla timmen av ingenjörsarbete på hela listan.
- Rapportera alltid Sharpe med sitt intervall. Skriv aldrig ut en ensam siffra. Våra backtestrapporter visar
1.72 ± 0.51 (2.9y, skew-adjusted), och ± är obligatoriskt. Det förändrar hur hela teamet pratar om resultaten. - Bestäm tröskeln utifrån M och T innan du tittar. Hämta siffran ur tabellen ovan och skriv ner den. Trösklar som bestäms i efterhand är så alla övertalar sig själva att en kurvanpassning är en upptäckt.
- Välj bredd framför frekvens när stickprovet är litet. Du kan inte skapa fler kalenderdagar, men du kan köra samma signal på 40 okorrelerade symboler. Det ökar faktiskt det effektiva n på ett sätt som högre handelsfrekvens inte gör. Håll koll på korrelationerna bara — 40 krypto-perps under en risk-off-timme är ett enda instrument.
- Papertrada sedan strategin. Tiden utanför stickprovet byggs på med en dag per dag, och det finns ingen genväg. Det är just därför det är det enda stickprov som ingen kan överanpassa.
Inget av det här gör korta stickprov användbara. Det hjälper dig att vara ärlig med vad ett kort stickprov faktiskt kan stödja, vilket är ett betydligt svagare påstående än vad de flesta backtestrapporter antyder. En Sharpe på 1.5 över två år är en hypotes värd att papertrada. Det är inget belägg.
← Alla inlägg
