9 noiembrie 2026 · microstructură

Maximul barei zilnice s-a înregistrat la 7:41 PM. Ai fi putut să-l tranzacționezi?

Maximul barei zilnice s-a înregistrat la 7:41 PM. Ai fi putut să-l tranzacționezi?

Alex — ne-ai trimis două curbe de capital și o nemulțumire. Breakout-ul la maximul pe 20 de zile arată curat în backtest. Contul de tranzacționare simulată, care rulează același cod pe aceleași instrumente, deschide cam jumătate din poziții și apoi este oprit în zile în care backtestul nici măcar n-a clipit. Ai întrebat dacă gateway-ul nostru de simulare pierde ordine. Nu se întâmplă asta. Barele tale zilnice lipesc două sesiuni laolaltă și numesc rezultatul o zi.

Am extras acțiunea cu capitalizare medie pe care ai încercuit-o, din 22 octombrie. Maximul zilnic al furnizorului de date este $41.86. În programul obișnuit, prețul nu a trecut niciodată de $41.12. Valoarea de $41.86 provine dintr-o tranzacție de 800 de acțiuni la 7:41 PM Eastern, într-un spread de 22 de cenți. Semnalul tău a marcat un maxim nou pe 20 de zile și a programat un ordin de cumpărare pentru următoarea deschidere. Sesiunea de tranzacționare simulată, pe care o rulăm între 9:30 și 16:00 Eastern dacă nu o schimbi, nu a văzut niciodată breakout-ul. Nu era nimic de cumpărat.

8/14breakout-uri care nu s-au produs în programul obișnuit
800de acțiuni în tranzacția care a stabilit maximul zilnic
22¢spread-ul din jurul tranzacției de la 7:41 PM

Care maxim apare pe acel rând?

Pentru acțiunile din SUA, „zilnic” este o convenție a furnizorului de date. Poți primi cel puțin trei bare diferite pentru aceeași dată calendaristică, iar majoritatea exporturilor CSV nu îți spun pe care ai primit-o.

BarăInterval orarDe unde provin maximul/minimulCe ar fi însemnat o tranzacție la acel maxim
Program obișnuit9:30-16:00 ET, plus cele două licitațiiRegistrul de ordine continuu și licitațiile de deschidere/închidereSă fii în sesiunea obișnuită, adesea într-o licitație
ExtinsăAproximativ 4:00-9:30 și 16:00-20:00, în funcție de brokerTranzacții cu lichiditate redusă înainte de deschidere și după închidereO sesiune pentru care este posibil ca contul tău cash să nu aibă nici măcar permisiunea de tranzacționare
CompozităCe a îmbinat furnizorul de dateUn amestec din cele de mai sus, uneori cu loturi mici și tranzacții TRFO tranzacție care poate să fi implicat 80 de acțiuni la o cotație cu spread mare

Cripto te-a învățat să tratezi miezul nopții UTC drept începutul unei zile de tranzacționare. Acțiunile nu sunt obligate să respecte această convenție. Motorul de potrivire la care poți ajunge efectiv dintr-un cont cash long-only funcționează șase ore și jumătate cu potrivire continuă și are două licitații. În restul timpului ai alt public, alt spread și adesea alt ultim preț.

Încă mai am un director cu fișiere CSV de la Yahoo din 2015, când eram convins că aveam o strategie Donchian excelentă pe o mică firmă de biotehnologie. Maximele proveneau din tranzacții după închidere, generate de evenimente binare. Făceam backtesting pe panica altora, în tranzacții de 200 de acțiuni, și îi spuneam canal. Tu faci o versiune mai serioasă a aceluiași lucru, cu un flux de date plătit.

Dacă agentul tău de cercetare a cerut unui furnizor de date OHLCV zilnic fără să specifice sesiunea, presupune că datele sunt compozite. Agenții folosesc valoarea implicită convenabilă. Așa ajunge o tranzacție de la 7:41 PM într-un breakout.

De ce simularea pare apoi defectă în ambele sensuri

Când sesiunea din fișier nu coincide cu sesiunea contului, nu obții doar un număr mai mic de tranzacții. Apar trei tipuri de decalaj și le-ai avut pe toate trei.

  1. Breakout pe un maxim din sesiunea extinsă. Backtestul intră la următoarea deschidere din programul obișnuit. În simulare nu a existat niciun semnal. Acestea sunt cele opt intrări care îți lipsesc.
  2. Stop sub minimul de ieri, iar minimul de ieri provine din bara compozită. Backtestul a ieșit deja pe un spike după închidere. Simularea, care marchează doar programul obișnuit, păstrează poziția deschisă până într-o zi în care backtestul arată că nu aveai nicio poziție.
  3. Stop-ul invers: simularea marchează ultimul preț, inclusiv înainte de deschidere, o tranzacție de la 5:10 AM te scoate din poziție, iar backtestul pentru programul obișnuit rămâne în tranzacție fiindcă acea tranzacție nu apare în bara lui.

Cazul stop-ului este mai dur decât breakout-ul ratat. Intrările ratate se văd ca mai puține tranzacții. Stop-urile declanșate într-o încăpere cu șapte oameni se văd ca valori diferite în tranzacțiile pe care le-ai făcut, motiv pentru care ai dat vina pe gateway.

Faptul că spui că nu tranzacționezi după închidere nu înseamnă că datele tale nu includ acele tranzacții. Sunt două opțiuni separate. Setează-le pe amândouă.

Pe bare de 1 minut, aceeași problemă e mai greu de observat. Filtrează după sesiune în America/New_York. Dacă fișierul nu are eticheta sesiunii, filtrul e doar de formă.

Fixează sesiunea înainte să reajustezi perioada de analiză

Am rulat din nou maximul pe 20 de zile folosind bare zilnice din programul obișnuit, cu aceleași instrumente și aceleași date. Au rămas șase breakout-uri. Acesta este contul de simulare. Celelalte opt proveneau dintr-o tranzacție pe care ar fi trebuit s-o execuți la 7:41 PM, pentru 800 de acțiuni. Nu pierde o săptămână ajustând un parametru de slippage pentru simulare ca să compensezi o nepotrivire de sesiune.

Pentru fiecare serie de acțiuni, trece trei valori booleene în contractul de cercetare: includes_premarket, includes_afterhours, includes_odd_lots. Apoi alege sesiunea în care strategia poate tranzacționa și configurează modelul de execuție pentru acea sesiune. Dacă vrei neapărat sesiunea extinsă, spune-o clar și dimensionează pozițiile ca la 7:41 PM: spread-uri mai mari, anulări mai lente, un registru care pare să aibă cotații, dar de fapt conține un singur lot.

Dacă un furnizor de date nu îți poate spune ce sesiune a fost folosită pentru un rând zilnic, tratează-l ca fiind compozit până când poate. Cere-i asta în scris. Un grafic de pe web nu îți va răspunde. Iar dacă mai târziu decizi că strategia ar trebui să tranzacționeze la închidere, asta e o altă scrisoare: prețul oficial de închidere se stabilește într-o licitație la care trebuie să participi.

Rulează din nou cu sesiunea fixată. Apoi putem discuta despre cele șase.

sesiune extinsăacțiunibacktestingdate de piațătranzacționare simulată
← Toate articolele