Tirsdag morgen var vores trendstrategi for råoljefutures lang i den kontrakt, der snart udløb. Signalet gjorde præcis, hvad vi havde bedt det om: at holde positionen, så længe trenden var positiv. Backtesten viste en beskeden gevinst. Papirkontoen viste et salg, et køb i den næste kontrakt, to gebyrer og en dårligere indgangskurs, end diagrammet antydede.
Der var ikke sket noget mystisk med signalet. Backtesten havde behandlet “futuresprisen” som én sammenhængende størrelse. Kontoen var nødt til at lukke én kontrakt og åbne en anden i to forskellige ordrebøger til to forskellige priser.
Vi fandt afvigelsen, da vi gennemgik en position, der strakte sig ind i rulningsperioden. Strategien brugte en likvid frontmånedskontrakt og beholdt den, indtil en kalenderregel flyttede positionen til den næste måned. Reglen var fornuftig. Regnskabsføringen omkring den var det ikke.
Vores kontinuerte serie var bagudjusteret for at fjerne forskellen mellem kontrakterne. Det gjorde diagrammet nyttigt til at beregne en trend. Det betød også, at serien ikke indeholdt nogen faktisk pris, vi kunne lukke den gamle kontrakt eller åbne den nye til. Backtesten havde brugt det justerede niveau til at værdiansætte handlen gennem rulningen og derefter genoptaget handlen, som om positionen blot var fortsat.
Til et signal kan en kontinuert serie være et nyttigt måleredskab. Til en fill er den fiktion. En rulning er to handler, og spændet mellem kontrakterne er en del af markedsstrukturen, ikke et kosmetisk spring, der skal glattes ud.
Vi genskabte hændelsen med de to børsnoterede kontrakter. Den gamle måned havde et bud på 79.98 og et udbud på 80.00. Den næste måned havde et bud på 80.42 og et udbud på 80.45. Vores lange position måtte sælge den gamle kontrakt til budprisen og derefter købe den nye kontrakt til udbudsprisen. Kalenderspændet mellem de eksekverbare sider var 44 cents.
Det tal var ikke automatisk et tab på 44 cents. Kontrakterne havde forskellige leveringsmåneder, og spændet afspejlede carry, lager, finansiering og forventninger til udbuddet. En position, der holdes gennem rulningen, bevarer eksponeringen mod den nye kontrakts prisudvikling; man betaler ikke hele det noterede spread som et gebyr. Men strategien skal realisere udgangen fra den gamle kontrakt og etablere indgangen i den nye. Hvis dens afkastberegning sammenligner de priser, som om de gjaldt samme instrument, kan den opfinde eller fjerne P&L.
Vi adskilte opgaverne i replayet. Den kontinuerte serie genererede stadig trendsignalet. Kontraktspecifikke priser håndterede værdiansættelser og ordrer. Ved rulningen sendte simulatoren en lukkeordre for den udløbende måned og en åbningsordre for den næste, anvendte gebyrerne for hver kontrakt og tog højde for spreadet og den tilgængelige dybde i hver ordrebog.
Det første replay stemte stadig ikke overens med papirkontoen. Vi havde synkroniseret begge fills til samme tidsstempel, selv om ordrerne blev indsendt sekventielt. Lukkeordren for den gamle måned blev udført, men udbudsprisen i den næste måned flyttede sig, inden købsordren nåede ordrebogen. En rulning kan udføres som et kalenderspread, hvis handelsstedet understøtter det, eller som to ben med eksponering imellem dem. Det er to forskellige antagelser om eksekvering. Til sammenligningen brugte vi papirkontoens faktiske ordrerækkefølge.
Så opdagede vi, at selve kalenderreglen ikke var præcist defineret. “Rul fem dage før udløb” lyder præcist, indtil en helligdag forskyder handelskalenderen, likviditeten flytter sig tidligere, eller udløbskonventionen varierer fra kontrakt til kontrakt. Ét sted havde vi kodet et antal kalenderdage og et andet sted et antal handelsdage. Papirstrategien rullede på den femte handelssession før sidste handelsdag; backtesten rullede fem kalenderdage før den.
En rulningsdato er en handelsregel. Skriv børsens kalender og den udløsende hændelse ned, ellers bliver backtesten og kontoen før eller siden uenige om, hvilken kontrakt du ejer.
Vi ændrede rulleinstruksen, så den angav kontraktens sidste handelsdag, talte sessioner efter børsens kalender og krævede et minimumstjek af likviditeten, før positionen blev flyttet. Tærsklen var en praktisk sikkerhedsforanstaltning, ikke et løfte om en bedre fill: volumen og open interest er upræcise indikatorer for, hvad vores ordre kan eksekveres til. Vi loggede den valgte kontrakt og priserne på begge ben, så hvert replay kunne forklare overdragelsen.
Efter ændringerne faldt strategiens historiske afkast. Forskellen skyldtes ikke ét stort tab ved rulning. Den kom af mange små korrektioner: den rigtige kontrakt, den rigtige handelssession, faktiske gebyrer på begge ben samt udgange og indgange prissat i hver sin ordrebog. Én rulning i et tyndt marked var særligt dyr, så vi lod den stå synligt i stedet for at udjævne den.
Hvis din futuresbacktest bruger et kontinuert diagram, så spørg, hvad diagrammet egentlig må bruges til. Det kan levere et konsistent input til et signal. Det kan ikke stå i stedet for en kontrakt, du kunne have købt eller solgt. For hver position, der løber frem til udløb, bør forskningsloggen identificere den gamle kontrakt, den nye kontrakt, udløseren for rulningen, eksekveringsmodellen og de to resulterende pengestrømme.
Den handel tirsdag var ikke et sofistikeret nederlag. Det var en linje på et diagram, der så profitabel ud, men sprang over det øjeblik, hvor kontoen måtte ændre, hvad den ejede. Da vi satte det øjeblik tilbage i replayet, blev resultatet mindre flatterende og langt mere nyttigt.
← Alle indlæg


