Du har byggt en strategi som i backtestet ser nästan för bra ut. Kurvan går jämnt uppåt, dragningarna är små, och du har precis justerat en parameter som gjorde den ännu snyggare. Du lägger den live med liten storlek, och efter några veckor beter den sig som en helt annan strategi. Entryn kommer sent, stoppen träffas oftare än du väntat dig, och du sitter och försöker förstå vad som hände med det du såg i testet.
Det som hände är att testet aldrig var ett test. Varje gång du ändrade en parameter och körde om, fattade du ett beslut med facit i handen. Efter många varianter har strategin formats efter just den datans slumpmässiga svängningar, och det du ser i kurvan är till stor del en avbildning av det förflutna snarare än en förmåga att hantera det som kommer. Datan har varit med och designat strategin, och då kan den inte också döma den. Det är som att rätta sin egen tentamen efter att ha studerat svarsnyckeln.
Vad out of sample faktiskt betyder
Out of sample är data som strategin aldrig varit inblandad i att välja. Allt du använt för att hitta regler, justera nivåer eller välja tidsram är in sample, och där får strategin nästan alltid se bra ut eftersom den är skräddarsydd för just den biten. Det intressanta är vad som händer när samma regler möter data som de inte kunnat anpassas efter. Där finns det enda svar som säger något om framtiden.
Svårigheten är att historien är begränsad. Du kan inte skapa ny data, så varje gång du tittar på en bit och agerar på den har du förbrukat den som oberoende bedömare. Därför behöver du en metod som sparar de oberoende bitarna och använder dem med omsorg.
Så fungerar walk forward analys
En walk forward analys delar upp historiken i segment som följer på varandra i tid. Du optimerar på det första segmentet, låser parametrarna och testar dem på nästa segment, som strategin aldrig sett. Sedan flyttar du fram, tar med det segment du just testade på i träningsdelen, optimerar om och testar på det som kommer därefter. Så fortsätter du genom hela historiken.
Det du får ut är en sammanfogad kurva byggd av enbart out of sample-bitar. Varje handel i den kurvan gjordes med parametrar som valdes innan handeln fanns. Det är det närmaste ett backtest kan komma verkligheten, där du alltid beslutar med det förflutna som underlag och bedöms av en framtid du inte känner.
Resultatet läser du på två sätt. Dels hur kurvan ser ut jämfört med den du fick när du optimerade på allt på en gång, och skillnaden mellan dem är ungefär storleken på den lögn du var på väg att berätta för dig själv. Dels hur parametrarna beter sig mellan fönstren. Hoppar de vilt från ett segment till nästa saknar strategin troligen en stabil kant, och optimeraren har bara hittat det som råkade passa just den perioden. Om samma ungefärliga värden återkommer i fönster efter fönster har du något som är värt att gå vidare med.
Expanding window eller rolling window
Det finns två vanliga sätt att låta träningsdelen röra sig framåt. Med expanding window ligger startpunkten fast och träningsdelen växer för varje steg. Du får mer data att optimera på, parametrarna ändras långsamt och resultaten blir lugnare. Priset är att gamla marknadslägen väger lika tungt som nya, även om marknaden sedan länge beter sig annorlunda.
Med rolling window har träningsdelen en fast längd och den äldsta datan släpps när ny kommer in. Strategin anpassar sig då till marknadens senaste karaktär, men du optimerar på färre observationer och parametrarna blir brusigare. Valet beror på vad du tror om din strategi. Bygger den på något som borde gälla över långa tider passar expanding window bättre, och bygger den på något som kräver att man följer marknadens aktuella tempo kan rolling window vara rimligare.
Det viktiga är att du bestämmer detta innan du kör, och att du skriver ned varför. Väljer du fönstertyp efter vilken som ger snyggast kurva har du smugit in samma fälla igen, bara på en nivå högre upp.
Fönstret du aldrig rör
Även en korrekt walk forward analys lämnar en lucka, eftersom du ändå tittar på resultaten och drar slutsatser mellan körningarna. Därför behöver du ett sista fönster som ligger helt utanför processen. Innan du börjar arbeta klipper du bort den senaste delen av datan och lägger den åt sidan. Den används inte i träning, inte i walk forward och inte för att välja fönsterlängd. När reglerna är låsta och du bestämt dig för att strategin är färdig kör du den på den delen, en gång.
Efter den körningen är fönstret förbrukat. Ändrar du något på grund av vad du såg har informationen läckt in i designen, och du har inget orört fönster kvar. Nästa oberoende test blir då den framtid som ännu inte hänt, alltså den levande marknaden.
Det är här teknik blir beteende. Frestelsen att kika en gång till, bara för att se, är samma muskel som flyttar ett stopp eller tar en hämndaffär. Den är starkast när du är trött, otålig eller redan har bundit upp dig vid idén. Att acceptera att ett test säger nej är samma förmåga som att ta en förlust utan att förhandla med den. Den som sover dåligt och har bråttom kör oftare om testet med en liten justering, och får därmed en strategi som är bevisad på allt utom det som räknas.
Vad du gör härnäst
Välj en strategi du redan har, gärna en du är lite för förtjust i. Skriv ned på papper vilka regler som ligger fast, vilka parametrar som får variera och inom vilka spann. Bestäm om du kör expanding eller rolling window och hur långa segmenten ska vara, och anteckna skälet.
Lägg sedan undan den senaste delen av din data på en plats där du inte råkar öppna den. Kör walk forward på resten och notera både kurvan och hur parametrarna rörde sig. Först när du är klar med det kör du det orörda fönstret, en gång, och skriver ned utfallet i din journal oavsett hur det blev. Gick det dåligt har du fått det beskedet billigare än du hade fått det på ett riktigt konto, och du ändrar inget förrän dagen efter.