En strategi sender en limitordre kl. 10:00. Signalet ændrer sig kl. 10:03. Backtesten erstatter ubemærket ordren kl. 10:04 og registrerer derefter et fill kl. 10:05. I papirhandel kan den oprindelige ordre stadig ligge på handelsplatformen. Hvis den bliver udført, mens erstatningsordren også er aktiv, har strategien 2 ordrer og én positionsmodel, der lader som om, der kun var én.
Åbne ordrer har brug for deres egen tilstand og deres eget ur. En backtest bør vide, hvornår hver ordre blev sendt, hvornår den kan annulleres, om annulleringen nåede frem til handelsplatformen, og hvad der sker, hvis et fill falder sammen med annulleringen. 3 genveje fjerner jævnligt disse oplysninger.
Fejl 1: At behandle et nyt signal som en øjeblikkelig annullering
Mange backtests genberegner målpositionen for hver bar og overskriver derefter den liggende ordre med det, det seneste signal ønsker. Så forsvinder ordren præcis i det øjeblik, strategien ombestemmer sig. Virkelige handelsplatforme fungerer ikke sådan. En annulleringsanmodning tager tid, og en ordre kan blive udført, før handelsplatformen behandler den.
Forestil dig en købs-limitordre på 100 aktier til $50.00. Kl. 10:03 svækkes signalet, så strategien sender en annulleringsanmodning. Kl. 10:03:00.080 bliver 60 aktier fra ordren fyldt; annulleringen bekræftes kl. 10:03:00.110. De resterende 40 aktier annulleres, men positionen omfatter nu 60 aktier. En barbaseret backtest, der sletter ordren kl. 10:03, kan rapportere 0. En backtest, der antager øjeblikkelig annullering og stadig registrerer et senere fill, har opfundet en eksponering i den modsatte retning.
Følg ordrecyklussen eksplicit: sendt, bekræftet, delvist fyldt, annullering afventes, annulleret eller fuldt fyldt. Behold fills, der sker, før annulleringen er bekræftet. I en grovkornet barsimulering skal du vælge og oplyse en konservativ rækkefølge, når begge hændelser kan ske inden for samme bar.
Fejl 2: At give en liggende ordre ubegrænset levetid
En limitordre, der prissættes ud fra et signal kl. 10:00, kan blive forældet, selvom signalet ikke har nogen eksplicit exitregel. Ordrebogen flytter sig, volatiliteten ændrer sig, og markedets værdiansættelse af instrumentet kan drive. Alligevel kan en simulator, der lader ordren være aktiv, indtil den fyldes, ende med at få et fill flere måneder senere og tilskrive det en investeringsidé, der ikke længere findes.
Fastlæg en politik for ordrens gyldighedstid, der passer til strategien. Et 1-minute-signal kan bruge en udløbstid på 30 sekunder; en daglig rebalancering kan lade ordren være aktiv indtil lukketid. Det er strategivalg, ikke universelle standardindstillinger. Hvis strategien ændrer prisen for hver bar, skal du modellere annullerings- og erstatningsforløbet i stedet for magisk at teleportere ordren til dens nye pris.
| Ordrepolitik | Typisk brug | Spørgsmål til backtesten |
|---|---|---|
| Øjeblikkelig udførelse eller annullering | Tag den tilgængelige likviditet, og stop derefter | Hvor stor en del kunne fyldes, da ordren blev sendt? |
| Kort udløbstid | Hurtigt signal med et kort udførelsesvindue | Var ordren stadig gyldig, da prisen vendte tilbage? |
| Indtil handelssessionens afslutning | Langsom rebalancering eller hensigt om at handle ved lukkeauktionen | Understøtter handelsplatformen faktisk denne gyldighedstid? |
Fejl 3: At tælle hvert pristouch som et fill
Hvis en candles laveste pris når en købs-limitordre, betyder det ikke nødvendigvis, at ordren blev fyldt. Der kan have været en kø foran ordren, kun en lille handelsvolumen til den pris eller et kortvarigt kursprint, der fandt sted, før ordren ankom. En forældet ordremodel kombinerer ofte alle 3 fejl: Den lader ordren være aktiv for længe, antager, at den stod først i køen, og tildeler derefter et fuldt fill, når prisen rammer ordren.
Som minimum skal du forhindre fills, før ordren ankommer, og begrænse den simulerede mængde til en plausibel handelsvolumen ved limitprisen. For strategier, hvor køpositionen betyder noget, skal du bruge handels- og ordrebogsdata eller en bevidst konservativ kømodel. Et fill baseret på et pristouch kan stadig være nyttigt til en grov screening, men kald det et optimistisk skøn, og sammenlign det med en strengere antagelse.
En praktisk kontrol: Log hver ordres oprettelsestidspunkt, aktive periode, annulleringsanmodning og bekræftelse, filltidspunkt, fyldt mængde og resterende mængde. Gennemgå derefter nogle få handler omkring signalvendinger. Hvis du ikke kan forklare, hvorfor hver ordre stadig var aktiv, da den blev fyldt, skal backtestens filloptælling forbedres.
Modellér den ordre, du har tænkt dig at papirhandle
Ordretilstanden forbinder strategiens hensigt med dens faktiske eksponering. Positionen bør ændres, når ordrer fyldes, ikke når målpositioner beregnes ud fra signaler eller annulleringsanmodninger sendes. Erstatningsordrer bør efterlade et revisionsspor, og delvise fills bør føres med videre til næste beslutning. Det gør backtesten mere besværlig, men sammenligningen med papirhandlen bliver også meningsfuld: De 2 systemer kan være uenige om eksekveringen af grunde, der kan identificeres.
Når ordremodellen er usikker, skal usikkerheden afspejles i resultatet. Kør med kort- og langlivede ordrer, variér annulleringsforsinkelsen, og vis, hvor meget resultatet afhænger af optimistiske antagelser om køpositionen. Strategien kan være fin. Dens tilsyneladende edge kan også skyldes renterne, en ordre har tjent, selvom det virkelige system ville have annulleret den for flere timer siden.
← Alle indlæg


