15 september 2026 · research

Din slippagemodell för backtestet bör medvetet ha fel

Din slippagemodell för backtestet bör medvetet ha fel

Den ärligaste slippagemodellen är ofta medvetet felaktig. Ett backtest som redovisar en exakt exekveringskostnad utifrån grova historiska data gör ett påstående som underlaget inte kan styrka.

Det kan låta som ett argument för grova antaganden. Det är tvärtom: använd en enkel modell som du kan förklara och låt den sedan säga emot sig själv. Om en strategi bara fungerar med en bekvämt gynnsam uppskattning av fillen är osäkerheten en del av resultatet.

Varför kan en precis uppskattning av slippage vara missvisande?

Anta att du har OHLCV-staplar på 1 minut och skickar en marknadsorder på 2,000 aktier. Stapeln visar intervallet och den totala volymen under en minut. Den visar inte köp- och säljkursen när din order kom fram, kön framför dig, hur volymen fördelades under minuten eller hur stor del av den din order skulle ha förbrukat.

Du kan ändå sätta en siffra på slippage. Du kan fylla ordern vid nästa stapels öppning plus en fast kostnad i baspunkter, eller skala kostnaden efter orderstorleken dividerad med stapelvolymen. Det är användbara approximationer. De är inte observationer. När resultatet redovisas som ”slippage: 3.2 baspunkter” framstår ett modellval som en mätning.

Som ett konkret exempel: låt en strategi handla för $20,000 per order i en aktie där nästa stapels volym är $400,000. Deltagandegraden är 5%. En modell som tar 2 baspunkter kostar $4 per order; en modell som tar 10 baspunkter kostar $20. För 500 tur-och-retur-affärer blir skillnaden $16,000 före provisioner. Om strategins bruttoresultat i backtestet är $18,000 påverkar exekveringsantagandet resultatet nästan lika mycket som signalen.

5%orderstorlek som andel av nästa stapels volym
$16,000kostnadsskillnad för 500 tur-och-retur-affärer vid 2 respektive 10 baspunkter

Bygg ett intervall som speglar vad dina data kan visa

Börja med ett grundscenario som passar strategins ordertyp och datans upplösning. En marknadsorder kräver spread och marknadspåverkan. En limitorder kräver en regel för om den alls fylls; att anta att varje pris som berörs leder till fill är ett annat exekveringsfel.

Kör sedan samma backtest med ett litet antal tydligt beskrivna scenarier. Håll signal, storlek och tidsstämplar fasta så att du kan hänföra förändringarna till exekveringen:

ScenarioExekveringsantagandeVad det undersöker
GynnsamtGrundspread och låg marknadspåverkanHur beroende är strategin av gynnsamma handelsförhållanden?
BasTypisk spread och marknadspåverkan skalad efter deltagandegradenVad innebär det valda grundantagandet?
OgynnsamtBredare spread, större marknadspåverkan och fördröjd fillÖverlever strategins edge en rimligt svår marknad?

Det här är inte konfidensintervall om du inte har kalibrerat dem statistiskt. Det är scenariotester. Beskriv vad de betyder i rapporten och slå inte ihop dem till en påhittad ”förväntad slippage” utan belägg för sannolikheterna.

Låt modellen reagera på ordern

En fast kostnad i baspunkter kan vara en rimlig första approximation för små order. Den blir mindre trovärdig när deltagandegraden ökar. Registrera åtminstone orderns nominella värde, tillgänglig stapelvolym och deltagandegrad. Om strategin handlar med terminer ska du registrera kontraktsvärde och relevanta volymenheter; handlar den med spotkrypto ska du ange noteringsvaluta och handelsplats tydligt.

En enkel kurva för marknadspåverkan kan synliggöra kapacitetspress utan att låtsas återskapa en orderbok. Du kan till exempel definiera kostnaden som en grundavgift för spreaden plus en marknadspåverkanskomponent som ökar med kvadratroten ur deltagandegraden. Anpassa parametrarna bara om du har lämpliga exekveringsdata. Annars kan du variera parametrarna och visa hur snabbt resultatet försämras.

Se också till att fillmodellen inte i tysthet räddar strategin. En köpsignal som kommer efter en kraftig uppgång ska inte få stapelns lägsta pris bara för att det förekommer i ljusstaken. Använd en kausal regel för fillen, stresstesta sedan priset och lägg på en fördröjning. Om en fördröjd order missar rörelsen är det ett exekveringsutfall, inget störningsmoment att jämna bort.

En användbar fråga: vid vilken spread, marknadspåverkan, fördröjning eller deltagandegrad blir nettoresultatet noll? Den brytpunkten är ofta mer handlingsbar än ett enskilt Sharpe-tal från backtestet.

Använd pappershandel för att snäva in intervallet

Pappershandel avslöjar inte vilken fill du skulle ha fått i en live-matchningsmotor. Den kan ändå visa om backtestets orderflöde liknar systemets faktiska beslut: när order skapas, hur stora de är och hur länge de fortfarande kan genomföras.

Jämför det simulerade orderpriset med samtidiga köp- och säljkurser eller den marknadsdata som ditt pappershandelssystem registrerar. Följ skillnaden per instrument, tid på dagen, orderstorlek och ordertyp. Observationerna kan snäva in antagandena för just den konfigurationen. De gäller inte automatiskt för en annan handelsplats, marknadsregim eller större order.

Kritikerna har rätt i att pessimistiska scenarier kan vara godtyckliga. En medvetet hård modell kan underkänna en fungerande strategi, precis som en gynnsam modell kan smickra en svag. Utse därför inte det hårdaste scenariot till sanningen. Redovisa antagandena, visa känsligheten och samla in data som kan ersätta gissningar med kalibrerade uppskattningar.

Ett backtest kan inte känna till strategins historiska köposition utifrån en ljusstake. Det kan visa om idén fortfarande verkar hållbar när exekveringen blir sämre på sätt som dina data inte kan utesluta. Det svaret är mer användbart än en extra decimal.

slippagemarknadspåverkanbacktestingexekveringpappershandel
← Alla inlägg