Dette er spørsmålet jeg oftest får, i en eller annen form, fra folk som nettopp har fullført sin første strategi: Hvor mange handler trenger jeg før resultatet er reelt? Som regel følger det med et tall. «Jeg har 1,200 handler, det er nok, ikke sant?» Det ærlige svaret irriterer alle, for det handler ikke om antall handler i det hele tatt.
Her er hele greia på én linje. Resten av innlegget bruker jeg på å forklare hvorfor det gjør vondt.
Hva er standardfeilen til en Sharpe-ratio?
For en Sharpe beregnet på n periodiske avkastninger, under forutsetning av at de er uavhengige og omtrent normalfordelte, er utvalgsfeilen:
SE(s) ≈ √((1 + s²/2) / n)
der s er Sharpe målt med samme frekvens. Annualiserer vi begge sider, får vi et enkelt resultat. Med k observasjoner per år og T år, har den annualiserte Sharpe-ratioen S:
SE(S) ≈ √((1 + S²/(2k)) / T)
Se på 2k i nevneren. For daglige avkastninger er k = 252, så selv en Sharpe på 2 bidrar med 4/504 ≈ 0.008 i telleren. Hele leddet ender på 1. Standardfeilen til en annualisert Sharpe er omtrent 1/√T, der T er antall kalenderår med data. Den avhenger knapt av selve Sharpe-tallet, ikke av samplingsfrekvensen og absolutt ikke av hvor mange handler du har gjort.
Altså:
| År med data | SE(Sharpe) | 95% KI hvis målt verdi er 1.5 |
|---|---|---|
| 1 | 1.00 | −0.46 til 3.46 |
| 2 | 0.71 | 0.11 til 2.89 |
| 3 | 0.58 | 0.37 til 2.63 |
| 5 | 0.45 | 0.62 til 2.38 |
| 10 | 0.32 | 0.88 til 2.12 |
En backtest som viser Sharpe 1.5 over to års historikk, kan ikke statistisk skille seg fra et myntkast på 95%-nivå. Det er utgangspunktet for mesteparten av kryptoforskningen, fordi de fleste først får rene data, korrigert for overlevelsesskjevhet og med nøyaktige gebyrer fra rundt 2022, og halvparten av de interessante symbolene fantes ikke før 2023.
Men jeg har 40,000 handler. Løser ikke det problemet?
Nei, og det er denne misforståelsen jeg helst vil få tatt livet av.
Antall handler og utvalgets lengde er forskjellige størrelser, og bare én av dem inngår i formelen. Hvis strategien din utløser 40,000 ganger på seks måneder, har du T = 0.5 og SE ≈ 1.41. 95%-intervallet for en målt Sharpe på 2.0 går fra −0.8 til 4.8. Med 40,000 handler er den ærlige konklusjonen fortsatt «kan være bra, kan være negativ».
Grunnen er at disse 40,000 handlene ikke er 40,000 uavhengige veddemål på 40,000 forskjellige markedstilstander. De er 40,000 observasjoner fra omtrent 180 dager med markedsatferd. Dagene er korrelerte med hverandre, og regimene er innbyrdes korrelerte. En høyfrekvent mean-reversion-portefølje som tjener penger hver dag i fire måneder, har i realiteten gjort ett veddemål – at reversering på kort sikt holder i dette likviditetsregimet – og observert utfallet av dette veddemålet kanskje en håndfull uavhengige ganger.
Huskeformelen jeg bruker: Tell regimer, ikke handler. Hvor mange genuint ulike markedsforhold har strategien overlevd? En funding-carry-strategi som gikk gjennom én lang periode med positiv basis, har sett n = 1, uansett hvor mange rebalanseringer hver time den loggførte.
Rask diagnostikk: Kjør block bootstrap på daglig P&L med blokkstørrelse på 20 dager, og se på spredningen i Sharpe-tallene fra de nye utvalgene. Hvis 5-persentilen er under null, er antall handler irrelevant. Det tar omtrent ni linjer med numpy-kode, og denne kontrollen har fått meg til å droppe flere strategier enn noen annen enkeltkontroll.
Gjelder formelen for strategier i den virkelige verden?
Ikke helt, og avviket går i en retning du ikke vil like. Resultatet 1/√T forutsetter IID-normalfordelte avkastninger. Avkastningen fra virkelige strategier er autokorrelert og skjevfordelt, og skjevheten er som regel negativ for strategier som ligner på carry, short vol eller mean reversion. Mertens' korreksjon tar hensyn til disse momentene:
SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)
der γ₃ er skjevheten og γ₄ er kurtosen. Negativ skjevhet gjør −γ₃·s-leddet positivt, noe som utvider intervallet. Overflødig kurtose utvider det ytterligere. For en typisk krypto carry-P&L med skjevhet rundt −1.2 og kurtose rundt 9 har jeg sett at den korrigerte standardfeilen blir 30–40% større enn den naive. Lo-artikkelen fra 2002 tar for seg autokorrelasjonen, og effekten har samme fortegn: positiv seriekorrelasjon i avkastningen blåser opp den naive Sharpe-ratioen og krymper den tilsynelatende feilen. En kjip kombinasjon.
Se derfor på 1/√T som en nedre grense for usikkerheten. Det er best tenkelige utfall.
Hvor høy må Sharpe være hvis jeg har testet 500 varianter?
Nå kommer vi til delen som betyr noe for alle som kjører en automatisert forskningspipeline. Det er situasjonen vår hver eneste dag i Stratmill: agenten som genererer strategier, lager ikke én kandidat, men hundrevis.
Forventet maksimum av M trekk fra en standard normalfordeling er omtrent √(2 ln M). Multipliserer du det med standardfeilen, får du Sharpe-tallet som den heldigste av M genuint verdiløse strategier vil vise.
| Testede strategier | √(2 ln M) | Beste støy-Sharpe, 5 år (SE 0.45) | Beste støy-Sharpe, 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 |
Se på nest siste rad. Hvis du genererte 500 kandidater med to års data og vinneren viser Sharpe 2.4, har du ikke funnet noe som helst. Det ligger under støygulvet. Bailey og López de Prados deflaterte Sharpe formaliserer dette ved å bruke variansen til Sharpe-tallene fra forsøkene i stedet for den grove tilnærmingen √(2 ln M). Det er verdt å implementere ordentlig, men den grove varianten er nok til å endre hvordan du jobber allerede i dag.
To ting gjør dette verre enn tabellen antyder. For det første er M ikke antallet strategier du lagret, men antallet du evaluerte, inkludert hver eneste parameterjustering, hvert «la meg bare prøve en lookback på 30 perioder i stedet» og hver ny kjøring etter en feilretting. Ingen teller ærlig. For det andre er ikke kandidatene dine uavhengige trekk, så √(2 ln M) overvurderer den effektive bredden. Samtidig betyr korrelerte forsøk at ett heldig regime løfter en hel gruppe av dem på én gang.
Det farligste tallet i kvantitativ forskning er det ingen har loggført: hvor mange ganger du så på resultatet.
Så hva gjør jeg i praksis?
Fem ting, i den rekkefølgen jeg ville gjort dem.
- Loggfør hver evaluering. En teller som øker for hver backtestkjøring, lagres og aldri nullstilles. Hvis du ikke kan si hva M er, kan du heller ikke si hva terskelen din er. Dette er den mest verdifulle timen med utviklingsarbeid på hele listen.
- Rapporter Sharpe med intervallet sitt, alltid. Skriv aldri ut et bart tall. Backtestrapportene våre viser
1.72 ± 0.51 (2.9y, skew-adjusted), og ± er obligatorisk. Det endrer hvordan hele teamet snakker om resultater. - Fastsett terskelen ut fra M og T før du ser på resultatet. Hent tallet fra tabellen over og skriv det ned. Terskler satt i etterkant er slik folk overbeviser seg selv om at en kurvetilpasning er god.
- Velg bredde fremfor frekvens når utvalget er lite. Du kan ikke skape mer kalendertid, men du kan kjøre det samme signalet på 40 ukorrelerte symboler. Det øker den effektive n-verdien på en måte høyere handelsfrekvens ikke gjør. Følg med på korrelasjonene også – 40 kryptoperpetuelle kontrakter i en risikofri time er ett instrument.
- Kjør deretter papirsimulering. Utvalg utenfor utvalget bygges opp én dag om gangen, og det finnes ingen snarvei. Nettopp derfor er dette det eneste utvalget ingen kan overtilpasse.
Ingenting av dette gjør korte utvalg brukbare. Det gjør deg ærlig om hva et kort utvalg faktisk kan underbygge, som er en langt svakere påstand enn de fleste backtestrapporter gir inntrykk av. En Sharpe på 1.5 over to år er en hypotese det er verdt å papirsimulere. Det er ikke et funn.
← Alle innlegg
