söndag 22 februari 2015

Backtesting och överoptimering

Jag har den senaste tiden lagt rätt mycket tid på backtesting, att gå igenom statistik och försöka hitta nya edger. En grej jag alltid brottas med är huruvida det jag hittat bara är ett resultat av att jag har "misshandlat" data för mycket. Det finns några citat i stil med "if you torture the data long enough, it will confess" som beskriver fenomenet väl.

Jag skrev för ca en månad sedan om en ny idé jag hade med fundamental data, läs här. Så här en månad senare är det bara att konstatera att det fanns en hel del curve-fitting och överoptimering i det testet. Efter en månad ser out-of-sample ut så här:

Not so hot...

Ändå bygger strategin inte på några komplicerade formler eller 50 olika parametrar med exakta värden. Den var tvärt om, väldigt enkel, få parametrar med vad jag ansåg ganska logiska förklaringar till varför de borde vara relevanta. Just därför är det så viktigt att inte "hoppa rakt in" och börja handla en strategi direkt utan att man observerar den ett tag för att se om det verkligen fungerar.

Jag tittade på ett webinarium med Trade-Ideas(programmet jag använder) där dom visade en strategi som verkade rätt lik en idé jag har försökt få fungera under ett tag. Resultatet var helt sjukt bra så jag antog redan från början att dom hade överoptimerat strategin. Det borde ändå finnas en del värdefull information tänkte jag och skickade iväg ett mail med lite fler frågor angående vilka parametrar som var med. Jag fick faktiskt till min förvåning hela strategin med alla parametrar och insåg därmed att den var dömd att misslyckas (ingen ger bort något så värdefullt om den faktiskt fungerade).  Så här såg resultatet ut:



När jag gick igenom allt så visade det sig att de två största problemen var att det inte fanns något volym-filter, dvs handel skedde i aktier utan någon riktig omsättning. I verkligheten hade det varit omöjligt att handla dessa. Det andra stora problemet var att vissa parametrar var satta till extremt specifika värden, tex att rangen den senaste minuten måste vara minst 0.76 $. Varför just 0.76? När man utvecklar en strategi är det ofta viktigt att ett brett intervall av värden är lönsamma. Till exempel om du använder ett RSI så är det viktigt att värden mellan säg, 0-20, generar vinst och inte bara värdet 12 eller 17. 

Hur som helst så gjorde jag de ändringar jag ansåg nödvändiga och fick följande resultat:


Ganska stor skillnad, återstår att se om det håller i framtiden. Min spontana känsla är att detta bara är ett resultat av misshandlat data. 





Inga kommentarer:

Skicka en kommentar