Vi börjar med siffrorna, för de är hela argumentet. En tur-och-retur som taker på en stor perp-börs kostar ungefär 0.10% of notional i courtage. Funding på en överfull long-sida kan gå 10-30% annualized emot dig. En marknadsorder som är stor i förhållande till djupet högst upp i orderboken betalar påverkan enligt kvadratrotslagen ovanpå spreaden. Och en backtest som läser dagens revidering av gårdagens data får en edge värd flera procent om året som aldrig existerade.
Den överraskande siffran är den första. Inte för att den är stor – utan för vad den gör med handelsfrekvensen. Alla nickar instämmande åt "räkna med avgifterna" och testar sedan en strategi som handlar fyrtio gånger om dagen. Vid 0.10% tur och retur blir fyrtio affärer 4% of notional per day i kostnader. Det finns ingen signal på en mid-cap-perp som klarar den ribban. Strategin var inte i närheten av gångbar, och den avgiftsfria backtesten sa att den var lysande.
Avgifter är ett filter, inte ett avdrag
Den mentala modell de flesta bär på är att avgifter hyvlar av kurvan: samma form, lite lägre. Det stämmer inte. Avgifter är ett frekvensfilter. De utplånar högfrekventa varianter av en edge helt och lämnar långsamma varianter nästan orörda. När vår pipeline började tillämpa riktiga maker/taker-scheman per börs var det inte de dåliga idéerna som dog – det var bra idéer som handlade för ofta. Lösningen var oftast en längre tidsupplösning, inte en bättre signal. Vi överger numera allt vars genomsnittliga avkastning per affär ligger under 0.15% of notional, för efter kostnader åt båda hållen finns inget kvar att ränta på.
Funding är en positionsskatt med minne
Perpetual futures betalar funding varje timme eller var åttonde timme, och det är inte brus: det är strukturellt korrelerat med precis de positioner momentumsystem vill ha. När alla är långa är funding positiv, och din långa momentumposition betalar den. En backtest utan funding-ackumulering smickrar systematiskt trendföljning på perps. Vi lärde oss det på det pinsamma sättet – en hel familj funding-carry-strategier blev automatiskt övergivna för att motorn inte krediterade den funding de var byggda för att skörda. Signalen var i sin ordning. Bokföringen saknades.
Påverkan skalar med kvadratroten ur din storlek
Den artiga lögnen i barbaserad backtesting är att du fylls på stängningskursen. För små ordrar stämmer det ungefär. För allt av betydelse är den vedertagna modellen att påverkan växer med kvadratroten ur orderstorleken i förhållande till volymen – och den kommer aldrig tillbaka. Vi väger in en påverkansuppskattning enligt kvadratrotslagen i varje fill och i själva equity-kurvan. Det spelar som mest roll precis där det passar som sämst: kapaciteten. En strategi kan vara genuint lönsam vid $50k och strukturellt olönsam vid $5M, och bara en påverkansmedveten kurva visar var gränsen går.
Look-ahead gömmer sig i datan, inte i koden
Ingen skriver if tomorrow_close > today_close: buy(). Look-ahead smyger sig in genom datarören: nyhetssentiment tidsstämplat efter publiceringstid i stället för inläsningstid, funding-räntor sammanfogade på perioden de täcker i stället för när de var kända, "aktuella" symboluniversum applicerade på historik (survivorship), reviderade ekonomiska siffror som ersätter det tal som faktiskt nådde marknaden. Vår regel är point-in-time överallt: varje kompletterande serie tidsstämplas efter när vi kunde ha känt till den, och en backtest får bara läsa det som existerade vid den nanosekunden.
Provet på en backtest är inte om kurvan pekar uppåt. Det är om samma kod, matad med samma signaler live, producerar samma affärer – och det får du bara reda på genom att kontrollera, varje dag, för alltid.
Den sista meningen är en verklig process, inte en slogan. Varje dag spelar vi upp varje pappershandlad strategis fönster genom backtest-motorn och diffar affärerna en och en. När papper och uppspelning inte stämmer överens ljuger den ena av dem, och det är oftast en kostnad eller en tidsstämpel. De fyra posterna ovan är helt enkelt de som ljög för oss först.
← Alla inlägg