15. september 2026 · research

Din backtests slippage-model bør med vilje tage fejl

Din backtests slippage-model bør med vilje tage fejl

Den mest ærlige slippage-model tager ofte bevidst fejl. En backtest, der angiver én præcis eksekveringsomkostning ud fra grove historiske data, fremsætter en påstand, som dataene ikke kan understøtte.

Det lyder måske som et argument for grove antagelser. Det er lige omvendt: Brug en enkel model, du kan forklare, og få den så til at være uenig med sig selv. Hvis en strategi kun virker med ét bekvemt gunstigt fill-estimat, er usikkerheden en del af resultatet.

Hvorfor kan et præcist slippage-estimat være misvisende?

Forestil dig, at du har 1-minuts OHLCV-bars og sender en markedsordre på 2,000 aktier. Baren viser spændet og den samlede volumen over et minut. Den fortæller dig ikke, hvad bid- og ask-kursen var, da din ordre ankom, hvor mange der stod foran dig i køen, hvordan volumen fordelte sig gennem minuttet, eller hvor meget af den din ordre ville have brugt.

Du kan stadig sætte et tal på slippage. Du kan for eksempel antage, at ordren fyldes ved den næste bars åbningskurs plus en fast omkostning i basispoint, eller lade omkostningen skalere med ordrestørrelsen divideret med barens volumen. Det er nyttige tilnærmelser. Det er ikke observationer. Når du rapporterer resultatet som “slippage: 3.2 basispoint”, kommer et modelvalg til at ligne en måling.

Lad os tage et konkret eksempel. En strategi handler for $20,000 pr. ordre i en aktie, hvor volumen i den næste bar er $400,000. Deltagelsesraten er 5%. En model, der opkræver 2 basispoint, koster $4 pr. ordre; en model, der opkræver 10 basispoint, koster $20. Over 500 round trips er forskellen $16,000 før kurtage. Hvis strategiens bruttofortjeneste i backtesten er $18,000, påvirker eksekveringsantagelsen resultatet næsten lige så meget som signalet.

5%ordrestørrelse som andel af volumen i næste bar
$16,000omkostningsforskel over 500 round trips ved 2 mod 10 basispoint

Lav et spænd, der afspejler, hvad dine data kan vise

Begynd med et udgangspunkt, der passer til strategiens ordretype og dataenes opløsning. En markedsordre kræver spread og markedspåvirkning. En limitordre kræver en regel for, om den overhovedet bliver fyldt; at antage, at ordren altid fyldes, når kursen rammer limitkursen, er en anden eksekveringsfejl.

Kør derefter den samme backtest med et lille sæt tydeligt beskrevne scenarier. Hold signal, positionsstørrelse og tidsstempler fast, så du kan henføre ændringerne til eksekveringen:

ScenarieEksekveringsantagelseHvad undersøger det?
GunstigtNormalt spread og lav markedspåvirkningHvor afhængig er strategien af gunstige handelsforhold?
BasisTypisk spread og markedspåvirkning skaleret efter deltagelsesratenHvad indebærer den valgte arbejdsantagelse?
UgunstigtBredere spread, større markedspåvirkning og forsinket fillHolder strategiens edge i et plausibelt vanskeligt marked?

Det er ikke konfidensintervaller, medmindre du har kalibreret dem statistisk. Det er scenarietests. Forklar i rapporten, hvad de betyder, og beregn ikke et gennemsnit som en opdigtet “forventet slippage”, medmindre du har belæg for sandsynlighederne.

Lad modellen reagere på ordren

En fast omkostning i basispoint kan være et rimeligt første bud for små ordrer. Den bliver en dårlig beskrivelse, når deltagelsesraten vokser. Registrer som minimum ordrenominel, tilgængelig barvolumen og deltagelsesrate. Hvis strategien handler futures, så registrer kontraktværdien og de relevante volumenenheder; hvis den handler spotkrypto, så angiv tydeligt quotevaluta og handelsplads.

En enkel kurve for markedspåvirkning kan synliggøre pres på kapaciteten uden at foregive at genskabe en ordrebog. Du kan for eksempel definere omkostningen som en grundomkostning for spreadet plus et påvirkningsled, der vokser med kvadratroden af deltagelsesraten. Tilpas kun parametrene, hvis du har egnede eksekveringsdata. Ellers kan du variere parametrene og vise, hvor hurtigt resultatet forringes.

Sørg også for, at fill-modellen ikke i stilhed redder strategien. Et købssignal, der kommer efter en kraftig stigning, bør ikke få barens laveste kurs, blot fordi den ligger inden for candle-intervallet. Brug en kausal fill-konvention, og stress derefter kursen og forsink ordren. Hvis en forsinket ordre går glip af bevægelsen, er det et eksekveringsresultat, ikke støj, der skal glattes ud.

Et nyttigt spørgsmål: Ved hvilket spread, hvilken markedspåvirkning, forsinkelse eller deltagelsesrate bliver nettoresultatet nul? Dette break-even-punkt er ofte mere brugbart end én enkelt Sharpe-værdi fra en backtest.

Brug paper trading til at indsnævre spændet

Paper trading afslører ikke, hvilket fill du ville have fået i en live matching engine. Det kan stadig fortælle dig, om backtestens ordrestrøm ligner systemets faktiske beslutninger: hvornår ordrer oprettes, hvor store de er, og hvor længe de kan handles.

Sammenlign den simulerede ordrekurs med samtidige quotes eller de markedsdata, dit paper trading-system ellers registrerer. Følg forskellen fordelt på instrument, tidspunkt på dagen, ordrestørrelse og ordretype. Observationerne kan indsnævre antagelserne for netop den opsætning. De kan ikke uden videre overføres til en anden handelsplads, et andet markedsregime eller en større ordre.

Kritikerne har ret i, at pessimistiske scenarier kan være vilkårlige. En bevidst hård model kan afvise en levedygtig strategi, ligesom en gunstig model kan få en svag strategi til at se bedre ud. Gør derfor ikke det hårdeste scenarie til sandheden. Offentliggør antagelserne, vis følsomheden, og indsamle de data, der skal til for at erstatte gæt med kalibrerede estimater.

En backtest kan ikke kende sin historiske køposition ud fra en candle. Den kan vise, om idéen stadig hænger sammen, når eksekveringen bliver dårligere på måder, dine data ikke kan udelukke. Det er et mere nyttigt svar end et ekstra decimaltegn.

slippagemarkedspåvirkningbacktestingeksekveringpaper trading
← Alle indlæg