Indikora
Läsa diagram · 10/10

Ärlig backtesting: överanpassning, lookahead och överlevnad

Avancerad 11 min läsning

Du har en kapitalkurva som går upp och åt höger. Sharpe över 2, en maximal drawdown du skulle kunna leva med, ett par hundra affärer. Det tog en helg av trimmande och resultatet känns förtjänat.

Det är förmodligen värdelöst, av mekaniska skäl snarare än på grund av bristande skicklighet. Ett backtest testar inte en strategi. Det mäter hur väl en regel beskriver ett dataset du redan har sett. Det är olika påstående, och det andra stöder ingen slutsats om pengar. Har du en strategi du är stolt över, läs resten med den strategin i huvudet.

Överanpassning är inte slarv, det är ett räkneproblem

Standardinramningen är att överanpassning uppstår när du lägger till för många parametrar. Det är en del av det. Den större delen är hur många gånger du tittade.

Varje test du kör mot samma dataset är ett försök. Ändra en tillbakablick och kör om: försök. Lägg till ett filter och kör om: försök. Prova en annan tillgång för att den första var en besvikelse: försök. Efter 200 försök på samma historik är det bäst utseende resultatet vad du skulle vänta dig av brus ensamt, oavsett om någon edge existerar.

Vid en signifikansnivå på 5 % ger 200 oberoende försök ungefär 10 slumpmässigt ”signifikanta” resultat. Du väljer sedan det bästa, vilket är exakt den urvalsprocedur som garanterar att du plockar ett falskt positivt.

Antalet försök dyker nästan aldrig upp i någons redovisning, och det borde vara första talet som rapporteras. Logga varje konfiguration du testar, inklusive de övergivna, och behandla slutresultatet som en dragning ur hela den sökningen.

Och räkningen är större än dina egna experiment. Testar du en korsning av glidande medelvärden på S&P är du inte den första. Tusentals personer har testat varianter av den idén på samma historik, och de som misslyckades publicerades aldrig. Du ärvde en sökning du inte körde.

Lookahead bias gömmer sig i helt vanlig kod

Lookahead är att använda information vid tidpunkt t som inte var tillgänglig vid tidpunkt t. Det är lätt att formulera och överträds hela tiden.

Att använda stängningskursen som både signal och fyllning. Din regel utlöser på dagens stängning och du fylls på dagens stängning. I verklig handel kan du inte känna till stängningen förrän den har inträffat. Glappet är litet på likvida dagsstaplar och enormt på allt intradag eller tunt.

Reviderad data. Ekonomiska siffror revideras. En databas som visar det slutgiltiga reviderade värdet på det ursprungliga datumet låter din regel använda ett tal som inte existerade på flera veckor.

Indikatorer beräknade över hela serien. All normalisering, rangordning eller z-score som räknas över hela historiken injicerar framtidsinformation i varje tidig stapel.

Symptomet är en misstänkt jämn kapitalkurva med hög träffsäkerhet och grunda drawdowns. Den formen betyder oftast att systemet blir serverat svaren snarare än att det gör prognoser.

Överlevnad är en egenskap hos din data, inte hos din kod

Om ditt universum är dagens lista över tillgångar har du redan uteslutit allt som dog. Avnoterade aktier, misslyckade tokens, kollapsade börser, par som slutade handlas. Vartenda ett fanns i det investerbara universumet på sin tid och saknas i ditt test.

I krypto är det här allvarligt. Mängden tokens med en fullständig prishistorik över flera år är ett kraftigt selekterat urval, alltså de som överlevde. En strategi testad bara på överlevare ser robust ut för att konkursen togs bort ur urvalet.

Kostnader är ingen avrundningspost

Friktioner läggs till sist, om alls, och de ändrar slutsatser mer än någon parameter. Räkna med spreaden du faktiskt betalar snarare än noterat mittpris, slippage som skalar med volatilitet och storlek, samt courtage, funding eller swap på hållna positioner.

Ett system som överlever vid noll kostnad och dör vid realistisk kostnad var aldrig ett system. Det var en beskrivning av mittpriset. Dubbla dina antagna friktioner och se vad som återstår. Om edgen försvinner låg den inne i spreaden.

Hur ett ärligt test ser ut

Dela datan innan du börjar, och rör inte holdouten. Utveckla på ett segment, kör sedan en gång på data du aldrig har granskat. En gång. Går du tillbaka och justerar efter att ha sett det resultatet är holdouten kontaminerad och du har ingen längre.

Föredra walk forward. Anpassa på ett fönster, handla nästa fönster, rulla framåt. Det approximerar hur du verkligen hade opererat, och det avslöjar strategier som bara fungerade i en regim.

Rapportera antalet försök, friktionerna och parameterkänsligheten. Ett resultat som överlever en förändring på 10 % i varje parameter är värt mer än ett bättre resultat som inte gör det.

Räkna sedan ändå med att liveprestandan blir sämre. En viss försämring är normal även med ren metodik, för att marknader ändras och för att du inte helt kan eliminera ditt eget urval.

Det är därför framåtblickande protokoll väger tyngre än backtest. Indikora hashar varje publicerad signal med SHA-256 och kedjar den till den föregående, så att den publika historiken inte kan redigeras eller efterdateras, och plattformen publicerar sannolikhetskalibrering: när den säger 60 % kan du kontrollera hur ofta det stämde. Inget av det är möjligt med ett backtest, som per definition skrivs i efterhand.

Strategin du trimmade över en helg kan fortfarande vara bra. Men du vet inte det än, och den ärliga hållningen är att säga det högt innan du storlekssätter något efter den.

Viktigast

Ett backtest mäter hur väl en regel beskriver det förflutna, och bara resultat out of sample på data du aldrig rört säger något om framtiden.

Testa dig själv

Du testade ungefär 300 parameterkombinationer och behöll den bästa. Vad säger dess backtestresultat dig?
Ditt kryptobacktest täcker 2018 till i dag och använder varje tillgång som just nu ligger bland de 200 största efter börsvärde. Vad är det strukturella felet?
Öva

Skriv ner hur många konfigurationer du testade innan du landade i dina nuvarande regler, plus friktionerna du antog, och håll den anteckningen kopplad till strategin så att framtida resultat bedöms mot den.

Handelsdagbok
Öva på det du just läst

Indikora har en gratis simulator, bar replay och en beteendecoach som läser dina egna affärer.

Öppna appen