Alex — du skickade två aktiekurvor och ett klagomål. Breakout-strategin med 20-dagars högsta ser ren ut i backtestet. Papperskontot, som kör samma kod på samma aktier, tar ungefär hälften så många positioner och blir sedan stoppat på dagar då backtestet inte ens blinkade. Du frågade om vår pappershandelsgateway tappar order. Det gör den inte. Dina dagliga staplar klistrar ihop två sessioner och kallar resultatet en dag.
Jag hämtade den medelstora aktien du ringade in från den 22 oktober. Leverantörens dagliga högsta är $41.86. Under ordinarie öppettider gick kursen aldrig över $41.12. Noteringen på $41.86 är ett avslut på 800 aktier kl. 7:41 PM Eastern, mitt i en spread på 22 cent. Din signal markerade ett nytt 20-dagars högsta och lade en köporder till nästa öppning. Papperssessionen, som vi kör från 9:30 till 16:00 Eastern om du inte ändrar inställningen, såg aldrig utbrottet. Det fanns inget att köpa.
Vilket högsta står på den raden?
För amerikanska aktier är dagliga staplar något leverantören erbjuder av bekvämlighetsskäl. Du kan få minst tre olika staplar för samma kalenderdatum, och de flesta CSV-exporter talar inte om vilken du fått.
| Stapeln | Klockslag | Varifrån högsta/lägsta kommer | Vad en affär till den kursen skulle ha inneburit |
|---|---|---|---|
| Ordinarie öppettider | 9:30-16:00 ET, plus de två auktionerna | Den löpande orderboken och öppnings-/stängningskorsningarna | Att vara med under ordinarie session, ofta i en auktion |
| Utökade öppettider | Ungefär 4:00-9:30 och 16:00-20:00, beroende på mäklare | Tunna avslut före marknadsöppning och efter stängning | En session som ditt kontantkonto kanske inte ens har behörighet att handla under |
| Sammansatt | Vad leverantören nu har fogat ihop | En blandning av ovanstående, ibland udda lotter och TRF-avslut | Ett avslut som kanske gällde 80 aktier till en bred köp-/säljkurs |
Krypto lärde dig att betrakta midnatt UTC som början på en handelsdag. Aktier är inte skyldiga dig det. Matchningsmotorn som du faktiskt når från ett kontantkonto med enbart långa positioner är sex och en halv timmes löpande matchning och två korsningar. Resten innebär andra aktörer, en annan spread och ofta en annan sista kurs.
Jag har fortfarande en katalog med Yahoo-CSV-filer från 2015, då jag var övertygad om att jag hade en fin Donchian-strategi för små bioteknikbolag. De högsta kurserna var avslut efter stängning i samband med binära händelser. Jag hade backtestat andras panikaffärer på 200 aktier och kallat det en kanal. Du gör en mer respektabel version av samma sak med en betald datakälla.
Om din research-agent bad en leverantör om daglig OHLCV utan att fråga vilken session som avsågs, utgå från att datan är sammansatt. Agenter väljer det bekväma standardalternativet. Det är så en kursnotering kl. 7:41 PM hamnar i ett utbrott.
Varför pappershandeln sedan verkar fel åt båda hållen
När sessionen i filen inte stämmer med sessionen på kontot får du inte bara en enkel underskattning. Du får tre sorters avvikelser, och du hade alla tre.
- Utbrott vid ett högsta under utökade öppettider. Backtestet går in vid nästa ordinarie öppning. Papperskontot fick aldrig någon signal. Där har du dina åtta saknade positioner.
- Stoppen ligger under gårdagens lägsta, som hämtats från den sammansatta stapeln. Backtestet har redan gått ur efter en svans efter stängning. Papperskontot, som bara följer ordinarie öppettider, behåller positionen in på en dag då backtestet visar att du inte har någon position.
- Det omvända stoppfallet: papperskontot markerar senaste kurs inklusive förhandel, en notering kl. 5:10 AM stoppar ut dig och backtestet för ordinarie öppettider ligger fortfarande kvar eftersom noteringen inte finns med i dess stapel.
Stoppfallet är värre än det missade utbrottet. Missade positioner syns som färre affärer. Stopp som utlöses i ett rum med sju personer syns som andra belopp i de affärer du faktiskt tog, och därför skyllde du på gatewayen.
På 1-minute-staplar är samma fel mer svårupptäckt. Filtrera efter session i America/New_York. Om filen saknar sessionstagg är filtret bara teater.
Lås sessionen innan du justerar återblicksperioden
Jag körde om ditt 20-dagars högsta på dagliga staplar för ordinarie öppettider, med samma aktier och samma datum. Sex utbrott återstår. Det är papperskontots resultat. De andra åtta byggde på avslut som du hade behövt ta kl. 7:41 PM för 800 aktier. Lägg inte en vecka på att anpassa en glidningsparameter för pappershandel till en sessionsmiss.
För varje aktieserie ska du ange tre booleska värden i research-avtalet: includes_premarket, includes_afterhours, includes_odd_lots. Välj sedan vilken session strategin får handla under och se till att fyllnadsmodellen gäller i den sessionen. Om du verkligen vill handla under utökade öppettider, säg det och dimensionera positionerna som för kl. 7:41 PM: bredare spreadar, långsammare annulleringar och en orderbok som ser ut att ha en viss volym men i själva verket bara en lot.
Om en leverantör inte kan tala om vilken session som ligger bakom en daglig rad, behandla den som sammansatt tills de kan det. Fråga skriftligen. En webbkursgraf ger dig inget svar. Och om du senare bestämmer att strategin ska handla vid stängning är det en annan historia: den officiella stängningskursen sätts i en auktion som du måste delta i.
Kör den igen med sessionen låst. Sedan kan vi prata om de sex.
← Alla inlägg


