20 oktober 2026 · onderzoek

De strategie werkte totdat we kosten rekenden voor het doorrollen van een futurespositie

De strategie werkte totdat we kosten rekenden voor het doorrollen van een futurespositie

Dinsdagochtend stonden we met onze trendstrategie voor ruwe-oliefutures long in het aflopende contract. Het signaal deed precies wat we hadden gevraagd: de positie aanhouden zolang de trend positief bleef. De backtest liet een bescheiden winst zien. In de paperaccount stonden een verkoop, een aankoop in het volgende contract, 2 kostenposten en een slechtere instapprijs dan de grafiek deed vermoeden.

Er was niets mysterieus met het signaal gebeurd. De backtest had “de futuresprijs” behandeld als één doorlopend geheel. In de account moesten we het ene contract sluiten en een ander openen, in 2 verschillende orderboeken en tegen 2 verschillende prijzen.

We ontdekten de afwijking toen we een positie bekeken die de rollperiode overspande. De strategie gebruikte een liquide front-monthcontract en hield dat aan totdat een kalenderregel de positie naar de volgende maand verplaatste. Die regel was redelijk. De administratie eromheen niet.

Onze doorlopende reeks was back-adjusted om het verschil tussen contracten weg te werken. Daardoor was de grafiek bruikbaar om een trend te berekenen. Maar de reeks bevatte zo geen werkelijke prijs waartegen we het oude contract konden sluiten of het nieuwe konden openen. De backtest had tijdens het doorrollen het aangepaste niveau gebruikt om de positie te waarderen en was daarna verdergegaan alsof de positie gewoon was doorgezet.

Voor een signaal kan een doorlopende reeks een nuttige meetbasis zijn. Voor een uitvoering is het fictie. Doorrollen bestaat uit 2 transacties, en de spread tussen contracten hoort bij de marktstructuur; het is geen cosmetische sprong die je kunt gladstrijken.

2 legsom een futurespositie te sluiten en opnieuw te openen
2 orderboekenmet elk hun eigen biedprijs, laatprijs en diepte
1 signaaldat misschien helemaal niet hoeft te veranderen

We reconstrueerden de gebeurtenis met de 2 genoteerde contracten. De oude maand had een biedprijs van 79.98 en een laatprijs van 80.00. De volgende maand had een biedprijs van 80.42 en een laatprijs van 80.45. We moesten onze longpositie in het oude contract tegen de biedprijs verkopen en vervolgens het nieuwe contract tegen de laatprijs kopen. De calendar spread bedroeg 44 cent tussen die uitvoerbare kanten van de markt.

Dat betekende niet automatisch een verlies van 44 cent. De contracten hadden verschillende leveringsmaanden en de spread weerspiegelde carry, opslag, financiering en verwachtingen over het aanbod. Een positie die tijdens het doorrollen wordt aangehouden, blijft blootgesteld aan het prijspad van het nieuwe contract; de volledige genoteerde spread is geen vergoeding. Maar de strategie moet de oude positie afsluiten en de nieuwe openen. Als het rendement die prijzen vergelijkt alsof het om hetzelfde instrument gaat, kan de berekening P&L verzinnen of wegpoetsen.

In de replay scheidden we die taken. De doorlopende reeks bleef het trendsignaal genereren. Voor waarderingen en orders gebruikten we contractspecifieke prijzen. Tijdens het doorrollen stuurde de simulator een sluitorder voor de aflopende maand en een openorder voor de volgende maand, rekende hij de kosten van elk contract mee en gebruikte hij de spread en beschikbare diepte van elk orderboek.

De eerste replay kwam nog steeds niet overeen met paper. We hadden beide uitvoeringen op hetzelfde tijdstip gezet, terwijl de orders na elkaar werden ingediend. De sluiting van de oude maand werd uitgevoerd, maar de laatprijs van de volgende maand verschoof voordat de kooporder het orderboek bereikte. Doorrollen kan als calendar spread worden uitgevoerd wanneer de beurs dat ondersteunt, of in 2 legs met tussentijdse blootstelling. Dat zijn verschillende aannames over de uitvoering. Voor de vergelijking gebruikten we de werkelijke ordervolgorde van de paperaccount.

Daarna zagen we dat ook de kalenderregel zelf niet precies genoeg was. “5 dagen voor expiratie doorrollen” klinkt precies, totdat een feestdag de handelskalender verschuift, de liquiditeit eerder verhuist of de expiratieconventie per contract verschilt. Op de ene plek telden we kalenderdagen en op de andere handelsdagen. De paperstrategie rolde op de vijfde sessie vóór de laatste handelsdag; de backtest rolde 5 kalenderdagen ervoor.

Een roldatum is een handelsregel. Leg de beurskalender en de gebeurtenis die de regel activeert vast, anders zullen de backtest en de account vroeg of laat verschillen over welk contract je bezit.

We pasten de rolregel aan: de regel noemt nu de laatste handelsdag van het contract, telt sessies volgens de beurskalender en vereist een minimale liquiditeitscontrole voordat de positie wordt verplaatst. Die drempel was een praktische waarborg, geen belofte van een betere uitvoering: volume en open interest geven maar een onvolledig beeld van wat onze order daadwerkelijk kan uitvoeren. We legden het geselecteerde contract en de prijzen van beide legs vast, zodat elke replay de overdracht kon verklaren.

Na die wijzigingen daalde het historische rendement van de strategie. Het verschil kwam niet door één enorm rolverlies. Het ontstond door veel kleine correcties: het juiste contract, de juiste handelssessie, echte kosten voor beide legs en uitstappen en instappen tegen prijzen uit hun eigen orderboeken. Eén rol bij geringe liquiditeit was bijzonder duur. Die lieten we zichtbaar in plaats van hem weg te middelen.

Als je futuresbacktest een doorlopende grafiek gebruikt, vraag je dan af waarvoor die grafiek mag dienen. Hij kan een consistente input voor een signaal leveren. Hij kan niet in de plaats staan van een contract dat je had kunnen kopen of verkopen. Voor elke positie die expiratie overspant, moet het onderzoekslogboek het oude contract, het nieuwe contract, de roltrigger, het uitvoeringsmodel en de 2 daaruit voortvloeiende kasstromen vermelden.

Die trade op dinsdag was geen ingewikkelde mislukking. Het was een winstgevend ogende lijn op een grafiek die het moment oversloeg waarop de account moest veranderen wat ze bezat. Toen we dat moment weer in de replay opnamen, werd het resultaat minder rooskleurig en veel bruikbaarder.

futuresroldkostenbacktestenmarktstructuurtransactiekosten
← Alle artikelen