20. oktober 2026 · research

Strategien fungerte helt til vi tok betalt for å rulle en futuresposisjon

Strategien fungerte helt til vi tok betalt for å rulle en futuresposisjon

Tirsdag morgen var trendstrategien vår for råoljefutures long i kontrakten som snart utløp. Signalet gjorde akkurat det vi hadde bedt det om: holde posisjonen så lenge trenden var positiv. Backtesten viste en beskjeden gevinst. Papirkontoen viste et salg, et kjøp i neste kontrakt, to gebyrer og en dårligere inngang enn diagrammet antydet.

Det hadde ikke skjedd noe mystisk med signalet. Backtesten hadde behandlet «futuresprisen» som én sammenhengende størrelse. Kontoen måtte stenge én kontrakt og åpne en annen, i to ulike ordrebøker og til to ulike priser.

Vi oppdaget avviket da vi gjennomgikk en posisjon som strakte seg over rulleringsperioden. Strategien brukte en likvid kontrakt med nærmeste forfall og holdt den til en kalenderregel flyttet posisjonen til neste måned. Regelen var fornuftig. Regnskapsføringen rundt den var det ikke.

Den kontinuerlige prisserien vår var bakoverjustert for å fjerne gapet mellom kontraktene. Det gjorde diagrammet nyttig for å beregne en trend. Det betydde også at serien ikke inneholdt noen faktisk pris vi kunne ha stengt den gamle kontrakten eller åpnet den nye til. Backtesten brukte det justerte nivået til å verdsette handelen gjennom rulleringen, og fortsatte deretter å handle som om posisjonen bare hadde løpt videre.

For et signal kan en kontinuerlig serie være et nyttig måleverktøy. For en handel er den fiksjon. En rullering består av to handler, og spreaden mellom kontraktene er en del av markedsstrukturen, ikke et kosmetisk hopp som kan glattes bort.

2 leddfor å stenge og åpne en futuresposisjon på nytt
2 ordrebøkermed egne kjøpspriser, salgspriser og dybde
1 signalsom kanskje ikke trenger å endres i det hele tatt

Vi gjenskapte hendelsen med de to børsnoterte kontraktene. Den gamle måneden hadde en kjøpspris på 79.98 og en salgspris på 80.00. Neste måned hadde en kjøpspris på 80.42 og en salgspris på 80.45. Long-posisjonen vår måtte selge den gamle kontrakten til kjøpsprisen og deretter kjøpe den nye til salgsprisen. Kalenderspreaden mellom disse utførbare prisene var 44 cent.

Dette tallet betydde ikke automatisk et tap på 44 cent. Kontraktene hadde ulike leveringsmåneder, og spreaden reflekterte carry, lagring, finansiering og forventninger til tilbudet. En posisjon som holdes gjennom rulleringen, beholder eksponeringen mot prisutviklingen i den nye kontrakten; den betaler ikke hele den oppgitte spreaden som et gebyr. Men strategien må realisere utgangen fra den gamle kontrakten og etablere inngangen i den nye. Hvis avkastningsberegningen sammenligner disse prisene som om de gjaldt samme instrument, kan den finne på eller viske ut P&L.

Vi skilte mellom oppgavene i rekonstruksjonen. Den kontinuerlige serien genererte fortsatt trend-signalet. Kontraktsspesifikke priser håndterte verdsetting og ordre. Ved rulleringen sendte simulatoren en lukkeordre for måneden som utløp, og en åpningsordre for neste måned. Den la til gebyrene for hver kontrakt og brukte spreaden og tilgjengelig dybde i hver ordrebok.

Den første rekonstruksjonen stemte fortsatt ikke med papirkontoen. Vi hadde synkronisert begge utførelsene til samme tidspunkt, selv om ordrene ble sendt inn etter hverandre. Lukkingen av den gamle måneden ble utført, men salgsprisen for neste måned flyttet seg før kjøpsordren nådde ordreboken. En rullering kan utføres som en kalenderspread der markedsplassen støtter det, eller som to separate ledd med eksponering mellom dem. Dette er ulike forutsetninger om utførelsen. Vi brukte den faktiske rekkefølgen på ordrene i papirkontoen som sammenligningsgrunnlag.

Deretter oppdaget vi at selve kalenderregelen var for lite presis. «Rullering fem dager før utløp» høres nøyaktig ut helt til en helligdag forskyver handelskalenderen, likviditeten flytter seg tidligere, eller utløpskonvensjonen varierer mellom kontrakter. Ett sted hadde vi kodet antall kalenderdager, et annet sted antall virkedager. Papirstrategien rullerte på den femte handelsøkten før siste handelsdag; backtesten rullerte fem kalenderdager før den.

En rulleringsdato er en handelsregel. Skriv ned børsens kalender og hendelsen som utløser rulleringen, ellers vil backtesten og kontoen før eller siden være uenige om hvilken kontrakt du eier.

Vi endret rulleringsinstruksen slik at den angir kontraktens siste handelsdag, teller handelsøkter etter børsens kalender og krever en minimumssjekk av likviditeten før posisjonen flyttes. Denne terskelen var en praktisk sikkerhetsregel, ikke et løfte om bedre utførelse: volum og åpen interesse gir bare en ufullkommen pekepinn på hva ordren vår faktisk kan få utført. Vi loggførte den valgte kontrakten og prisene for begge ledd, slik at hver rekonstruksjon kunne forklare overføringen.

Etter disse endringene falt strategiens historiske avkastning. Forskjellen skyldtes ikke ett stort tap ved rullering. Den kom av mange små korrigeringer: riktig kontrakt, riktig handelsøkt, faktiske gebyrer for begge ledd og utganger og innganger priset i hver sin ordrebok. Én rullering i et tynt marked var særlig kostbar, så vi lot den stå synlig i stedet for å jevne den ut med et gjennomsnitt.

Hvis futuresbacktesten din bruker et kontinuerlig diagram, bør du spørre hva diagrammet faktisk kan brukes til. Det kan gi et konsistent grunnlag for et signal. Det kan ikke erstatte en kontrakt du kunne ha kjøpt eller solgt. For hver posisjon som går over utløpsdatoen, bør forskningsloggen identifisere den gamle kontrakten, den nye kontrakten, utløseren for rulleringen, utførelsesmodellen og de to tilhørende kontantstrømmene.

Handelen den tirsdagen var ikke et sofistikert feiltrinn. Det var en linje i et diagram som så lønnsom ut, men som hoppet over øyeblikket da kontoen måtte bytte hva den eide. Da vi tok med det øyeblikket i rekonstruksjonen igjen, ble resultatet mindre flatterende og langt mer nyttig.

futuresrullkostnaderbacktestingmarkedsmikrostrukturtransaksjonskostnader
← Alle innlegg