30. august 2026 · statistik

Hvor mange handler kræver en backtest, før Sharpe siger noget?

Hvor mange handler kræver en backtest, før Sharpe siger noget?

Det er det spørgsmål, jeg oftest får, i en eller anden form, fra folk, der netop har færdiggjort deres første strategi: Hvor mange handler skal jeg bruge, før resultatet er reelt? Som regel følger der et tal med. »Jeg har 1.200 handler, det er nok, ikke?« Og det ærlige svar irriterer alle, for det handler slet ikke om antallet af handler.

Her er det hele i én linje. Bagefter bruger jeg resten af indlægget på at forklare, hvorfor den gør ondt.

1/√Tstandardfejl for en annualiseret Sharpe, T målt i år
±0.8895 %-interval omkring enhver Sharpe over 5 år
1.4Sharpe, som den heldigste af 100 støjstrategier viser over de samme 5 år

Hvad er standardfejlen for en Sharpe-ratio?

For en Sharpe beregnet ud fra n periodiske afkast, under antagelse af at de er uafhængige og omtrent normalfordelte, er stikprøvefejlen:

SE(s) ≈ √((1 + s²/2) / n)

hvor s er Sharpe målt ved den samme frekvens. Annualiserer vi begge sider, får vi et enkelt resultat. Med k observationer om året og T år er den annualiserede Sharpe S givet ved:

SE(S) ≈ √((1 + S²/(2k)) / T)

Se på 2k i nævneren. For daglige afkast er k = 252, så selv en Sharpe på 2 bidrager med 4/504 ≈ 0.008 til tælleren. Hele udtrykket ender på 1. Standardfejlen for en annualiseret Sharpe er cirka 1/√T, hvor T er antallet af kalenderår med data. Den afhænger kun i ringe grad af selve Sharpe-værdien, ikke af hvor ofte du tager stikprøver, og bestemt ikke af, hvor mange handler du har foretaget.

Altså:

DataårSE(Sharpe)95 % CI, hvis du målte 1.5
11.00−0.46 til 3.46
20.710.11 til 2.89
30.580.37 til 2.63
50.450.62 til 2.38
100.320.88 til 2.12

En backtest med Sharpe 1.5 over 2 års historik kan ikke på 95 %-niveau skelne sig statistisk fra et møntkast. Det er udgangspunktet for det meste kryptoforskning, fordi de fleste først har rene data korrigeret for overlevelsesskævhed og med præcise gebyrer fra omkring 2022, og halvdelen af de interessante symboler ikke fandtes før 2023.

Men jeg har 40.000 handler. Retter det ikke op på det?

Nej, og det er den misforståelse, jeg helst vil slå ihjel.

Antal handler og stikprøvelængde er forskellige størrelser, og kun den ene indgår i formlen. Hvis din strategi udløser 40.000 handler på 6 måneder, har du T = 0.5 og SE ≈ 1.41. Dit 95 %-interval for en målt Sharpe på 2.0 går fra −0.8 til 4.8. Med 40.000 handler er den ærlige konklusion stadig »den er måske god, måske negativ«.

Grunden er, at de 40.000 handler ikke er 40.000 uafhængige væddemål på 40.000 forskellige markedstilstande. De er 40.000 observationer fra cirka 180 dages markedsadfærd, hvor dagene hænger sammen, og regimerne også er indbyrdes korrelerede. En højfrekvent mean-reversion-portefølje, der tjener penge hver dag i 4 måneder, har i virkeligheden foretaget ét væddemål — at kortsigtet tilbagevenden holder i dette likviditetsregime — og har måske kun set væddemålet blive afgjort et lille antal uafhængige gange.

Den mentale omformulering, jeg bruger: Tæl regimer, ikke handler. Hvor mange reelt forskellige markedsforhold har strategien klaret sig igennem? En funding-carry-strategi, der kørte gennem én lang periode med positiv basis, har oplevet n = 1, uanset hvor mange ombalanceringer hver time den registrerede.

Hurtig kontrol: Lav en block-bootstrap af din daglige P&L med en bloklængde på 20 dage, og se på spændet mellem de genudtrukne Sharpe-værdier. Hvis 5-percentilen er under nul, er antallet af handler irrelevant. Det kræver omkring 9 linjer numpy, og den har fået mig til at droppe flere strategier end nogen anden enkelt kontrol.

Holder formlen for virkelige strategier?

Ikke helt, og den fejler i den retning, du helst ville undgå. Resultatet 1/√T forudsætter IID-normalfordelte afkast. Virkelige strategiafkast er autokorrelerede og skæve, og skævheden er som regel negativ for alt, der ligner carry, short vol eller mean reversion. Mertens' korrektion tager højde for de momenter:

SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)

hvor γ₃ er skævheden, og γ₄ er kurtosis. Negativ skævhed gør −γ₃·s-leddet positivt, hvilket udvider intervallet. Overskydende kurtosis udvider det yderligere. For en typisk krypto-carry-P&L med skævhed omkring −1.2 og kurtosis omkring 9 har jeg set den korrigerede standardfejl være 30–40% større end den naive. Lo's artikel fra 2002 behandler autokorrelationsdelen, og effekten går samme vej: positiv seriel korrelation i afkast overvurderer den naive Sharpe og undervurderer den tilsyneladende fejl, en ubehagelig kombination.

Betragt derfor 1/√T som en nedre grænse for din usikkerhed. Det er det bedste tilfælde.

Hvor høj skal Sharpe være, hvis jeg har testet 500 varianter?

Nu kommer vi til det, der betyder noget for alle, der kører en automatiseret forskningspipeline, sådan som vi gør hver dag hos Stratmill: genereringsagenten producerer ikke én kandidat, men hundredvis.

Den forventede maksimumværdi af M træk fra en standardnormalfordeling er cirka √(2 ln M). Gang den med standardfejlen, så får du den Sharpe, som den heldigste af M reelt værdiløse strategier vil vise.

Testede strategier√(2 ln M)Bedste Sharpe blandt støjstrategier, 5 år (SE 0.45)Bedste blandt støjstrategier, 2 år (SE 0.71)
102.150.961.52
1003.031.362.16
5003.531.582.50
5,0004.131.852.93

Se på den næstsidste række. Hvis du genererede 500 kandidater ud fra 2 års data, og vinderen viser Sharpe 2.4, har du ikke fundet noget som helst. Det ligger under støjgulvet. Bailey og López de Prados deflaterede Sharpe formaliserer dette ved at bruge variansen for dine testede Sharpe-værdier i stedet for den grove √(2 ln M). Det er værd at implementere ordentligt, men den grove version er nok til at ændre adfærd allerede i dag.

To ting gør situationen værre, end tabellen antyder. For det første er M ikke antallet af strategier, du gemte, men antallet, du evaluerede, inklusive hver eneste parameterjustering, hvert »lad mig lige prøve et 30-perioders lookback i stedet« og hver genkørsel efter en fejlrettelse. Ingen tæller ærligt. For det andet er dine kandidater ikke uafhængige træk, så √(2 ln M) overvurderer den effektive bredde, selvom korrelerede forsøg også betyder, at ét heldigt regime løfter en hel gruppe af dem på én gang.

Det farligste tal i kvantitativ forskning er det, ingen har ført log over: hvor mange gange du kiggede.

Så hvad gør jeg rent faktisk?

5 ting, i den rækkefølge jeg ville gøre dem.

  1. Log hver evaluering. En tæller, der øges for hver backtestkørsel, gemmes permanent og aldrig nulstilles. Hvis du ikke kan sige, hvad M er, kan du heller ikke sige, hvor din tærskel ligger. Det er den time med størst værdi, du kan bruge på udvikling, af alt på listen.
  2. Rapportér altid Sharpe med sit interval. Vis aldrig et nøgent tal. Vores backtestrapporter viser 1.72 ± 0.51 (2.9y, skew-adjusted), og ± er ikke valgfrit. Det ændrer måden, hele teamet taler om resultater på.
  3. Fastlæg grænsen ud fra M og T, før du kigger. Find tallet i tabellen ovenfor, og skriv det ned. Efterfølgende fastsatte tærskler er sådan, folk får sig selv overtalt til at tro på en kurvetilpasning.
  4. Vælg bredde frem for frekvens, når stikprøven er lille. Du kan ikke skabe mere kalendertid, men du kan køre det samme signal på tværs af 40 ukorrelerede symboler. Det øger faktisk det effektive n, hvorimod en højere handelsfrekvens ikke gør. Hold dog øje med korrelationerne — 40 krypto-perps i en time med risikoaversion er ét instrument.
  5. Lad den derefter køre på en papirkonto. Out-of-sample-tid vokser med én dag om dagen, og der er ingen genvej. Netop derfor er det den eneste stikprøve, ingen kan overtilpasse.

Intet af dette gør korte stikprøver brugbare. Det hjælper dig med at være ærlig om, hvad en kort stikprøve kan underbygge — en langt svagere påstand, end de fleste backtestrapporter lægger op til. En Sharpe på 1.5 over 2 år er en hypotese, der er værd at afprøve på en papirkonto. Det er ikke et fund.

Sharpe-forholdovertilpasningbacktestingstatistisk signifikanskvantitativ forskning
← Alle indlæg