Je stuurde me de equity curve en het transactielogboek en vroeg of het te mooi is om waar te zijn. Kort antwoord: het is niet overduidelijk echt en ook niet overduidelijk nep, en je kunt in ongeveer een dag werk achterhalen wat het is. Het lange antwoord volgt, want de diagnose is belangrijker dan het oordeel.
Wat je hebt: een mean-reversionsignaal van 15 minuten op BTCUSDT- en ETHUSDT-perpetuals op Binance, een z-score van de prijs ten opzichte van een gemiddelde over 96 bars, de uitschieters vervagen en 2-8 bars aanhouden. De backtest loopt van feb 2024 tot jun 2026. Sharpe 2.9 na aftrek van je kostenmodel. En toen je de P&L indeelde naar minuut van de dag, bleek 71% ervan te vallen in de drie kwartierblokken waarin 00:00, 08:00 en 16:00 UTC vallen.
Je weet al waarom dat verdacht is. Laat me uitleggen waarom het ook deels niet verdacht is.
De fundingklok bestaat echt en beweegt de prijs echt
Binance verrekent perpetual funding om 00:00, 08:00 en 16:00 UTC. Elke positie die op het afrekenmoment openstaat, betaalt of ontvangt funding. Dat is een harde, geplande en algemeen bekende kasstroom, die echte orderflow veroorzaakt — geen data-artefact, maar iets wat traders daadwerkelijk doen.
Die flow heeft een bepaald patroon. In de tien tot dertig minuten vóór de afrekening sluiten of hedgen traders posities waarvoor ze niet willen betalen. Als de funding voor het interval op +0.04% staat, sluit een long die toch al van plan is uit te stappen vóór de afrekening in plaats van erna, terwijl een basistrader die short zit in perpetuals de positie graag aanhoudt. Dat is asymmetrische druk met een deadline. Meteen na de afrekening komt een deel van die flow terug — longs die funding wilden vermijden stappen opnieuw in — en krijg je een gedeeltelijke omkering.
Een mean-reversionsignaal dat om 23:52 afgaat en om 00:12 sluit, staat dus precies op de plek waar een voorspelbare liquiditeitsgebeurtenis plaatsvindt. Een deel van je rendement komt waarschijnlijk van de omkering na een mechanische prijsbeweging die door de kalender wordt gestuurd. Dat is een echt microstructuurfenomeen en dat bestaat al jaren.
Maar voordat ik een getal zo groot als dat van jou zou geloven, wil ik dit weten.
Zes controles, in de volgorde waarin ik ze zou uitvoeren
Begin met de goedkoopste: de meeste van dit soort strategieën sneuvelen bij controle twee of drie.
- Is je funding-P&L dubbel geteld? Als je fillsysteem funding toepast op open posities en je prijsreeks een mark-prijsreeks is en geen reeks van laatste transacties, betaal of ontvang je funding mogelijk twee keer — één keer expliciet en één keer via het convergentiegedrag van de markprijs. Toon de ruwe fundingkasstroom per transactie en vergelijk er tien op het oog met het historische fundingendpoint van de exchange.
- Welke timestamp staat er bij je fundingregel? De fundinggeschiedenis van Binance geeft een fundingTime terug die het afrekenmoment aangeeft. Sommige leveranciers voorzien dezelfde regel van een timestamp aan het begin van het interval waarop die van toepassing is. Als jouw gegevens acht uur verschoven zijn, handel je op een signaal dat de toekomst kent. Dit is de meest voorkomende manier waarop ik een fictief fundingrendement heb zien ontstaan, en het levert precies jouw P&L-profiel op — geconcentreerd op de afrekenbars, met het juiste teken en prachtig.
- Wat doet de spread om 00:00:00? Haal de orderboekdata op, niet de klines. Op een bar van 1 minuut is de spread onzichtbaar; in de seconden rond de afrekening kan die op een exchange van gemiddeld niveau 3-5x zo groot worden. Als je fills tegen de midprijs of de slotkoers modelleert, incasseer je een spread die er niet was.
- Houdt het stand op alleen de andere twee afrekeningen? Splits de drie vensters op. 00:00 UTC kent andere flow dan 08:00 (ongeveer de opening van Azië) en 16:00 (de namiddag in de VS). Als al het rendement in één van de drie zit, heb je ongeveer 300 gebeurtenissen in plaats van 900 en moet je Sharpe op basis daarvan opnieuw berekenen.
- Houdt het stand op een exchange met een andere klok? Dit is de beste controle. Voer hetzelfde signaal uit op een exchange die funding per uur of volgens een ander schema verrekent. Als het effect door funding wordt gedreven, moet het de klok van die exchange volgen. Blijft het signaal afgaan om 00:00 UTC op een exchange die niet om 00:00 UTC afrekent, dan heb je een middernachtartefact in je datapijplijn gevonden, geen fundingeffect.
- Hoeveel van de P&L zit in de eerste en laatste 90 seconden? Als het hele rendement uit een venster van minder dan twee minuten komt, zijn je bars van 15 minuten veel te grof om eerlijk te zijn over de instapprijs. Ga ervan uit dat de fill die je modelleert de beste is die er in dat venster te krijgen valt, en niet de fill die jij zou krijgen.
Controle vijf zou ik als eerste doen als ik maar een uur had. Het is een zuiver natuurlijk experiment en je hebt er geen nieuwe infrastructuur voor nodig, alleen een tweede databron.
Wat het afrekenvenster je werkelijk kost
Stel dat het effect echt is en je alle zes controles doorstaat. Bereken dan de kosten goed, want de transactie die je modelleert is niet de transactie die je zou krijgen.
Hier zie je hoe een retourtransactie van 20 minuten eruitziet tijdens een rustig uur versus rond een afrekening, op een USDⓈ-M-perpetual met een taker-instap en taker-uitstap, voor een order van $50k:
| Rustig uur (bijv. 03:20 UTC) | Rond 00:00 UTC | |
|---|---|---|
| Taker-fee, retourtransactie | 0.09% | 0.09% |
| Typische betaalde spread | ~0.4 bp | 1.5-3 bp |
| Slippage bij een order van $50k | ~0.5 bp | 2-6 bp |
| Betaalde/ontvangen funding | 0 | ±1 tot ±4 bp (heel interval) |
| Realistische totale kosten | ~10 bp | 13-19 bp exclusief funding |
De fundingregel is interessant, en daarom blijf ik hameren op controle één. Als je de afrekening overbrugt, betaal je of ontvang je de funding over het volledige interval, ongeacht hoe lang je de positie aanhield. Twaalf seconden blootstelling om 23:59:54 kosten je een volledige acht uur aan funding. Een strategie met gemiddeld 20 minuten aanhoudtijd die het afrekenmoment overbrugt, betaalt carry over acht uur voor een transactie van twintig minuten. Je kostenmodel moet die kosten volledig rekenen, niet naar rato.
Een verwante valkuil: als je het afrekenmoment helemaal vermijdt — uitstappen om 23:58 en opnieuw instappen om 00:02 — verdubbel je het aantal fees. Dan voer je een strategie uit waarvan de hele these is dat twee extra takertransacties goedkoper zijn dan één fundingbetaling. Soms klopt dat. Reken het expliciet uit in plaats van de backtest voor jou te laten beslissen.
De regimevraag die je nog niet hebt gesteld
Je steekproef loopt van feb 2024 tot jun 2026. De fundingrente kende in die periode niet één regime. Er waren lange periodes waarin de 8-uursrente vastzat op de bodem van 0.01% en niemand reden had om zich rond de afrekening te herpositioneren, en er waren weken waarin de rente dagenlang op 0.05%+ stond en de flow vóór de afrekening hevig was.
Deel je P&L in op basis van de geldende fundingrente ten tijde van de transactie — bijvoorbeeld vier buckets op basis van de absolute rente. Als het rendement door fundingflow wordt veroorzaakt, moet het ruwweg oplopen met |funding|. Bij bijna-nul funding hoort bijna-nul rendement; bij hoge funding hoort hoog rendement. Is het rendement daarentegen vlak verdeeld over de buckets, of erger nog geconcentreerd in de bucket met lage funding, dan is het fundingverhaal een verklaring die je achteraf aan iets anders hebt gekoppeld.
Ik vind deze test goed omdat hij een weerlegbare voorspelling oplevert die uit je eigen verklaring volgt. Je vraagt niet: "werkt het nog steeds?" Je vraagt: "werkt het om de reden die ik heb aangevoerd?"
Wat ik er daadwerkelijk mee zou doen
Als het slaagt: maak de strategie kleiner. De eerlijke versie draait niet 900 transacties per jaar op een grid van 15 minuten. Het zijn enkele honderden zorgvuldig gekozen gebeurtenissen, met instaplogica die tot op de seconde is vastgelegd en een fillmodel op basis van orderboekmomentopnamen in plaats van klines. Dat levert iets kleiners, lelijkers en beter verdedigbaars op. Het is ook de versie die kans maakt om overeen te komen met paper trading; alleen daar ontdek je of de fills waarop je rekende echt bestaan.
Als de strategie faalt bij controle twee — de timestampverschuiving — wees dan niet te gefrustreerd. Iedereen loopt daar minstens één keer tegenaan. Lees je loader goed door in plaats van alleen de verschuiving te corrigeren, want als funding verschoven is, is open interest dat misschien ook. Dat wil je weten voordat je aan je volgende idee begint.
Nog één ding, en dit slaan mensen vaak over. Wat je ook ontdekt, noteer de zes controles en hun uitkomsten naast de strategie. Over zes maanden genereer jij of iemand anders een structureel identiek signaal, krijg je dezelfde prachtige curve en voer je hetzelfde gesprek weer helemaal opnieuw. De diagnose is hier het blijvende bezit. De strategie misschien niet.
← Alle artikelen
