9 Novembre 2026 · microstruttura

Il massimo della barra giornaliera è stato segnato alle 7:41 PM. Avresti potuto fare trading su quel prezzo?

Il massimo della barra giornaliera è stato segnato alle 7:41 PM. Avresti potuto fare trading su quel prezzo?

Alex — ci hai mandato due curve azionarie e una lamentela. Il breakout sul massimo a 20 giorni sembra pulito nel backtest. Il conto simulato, che esegue lo stesso codice sugli stessi titoli, prende circa la metà delle posizioni e poi viene stoppato in giorni in cui il backtest non ha battuto ciglio. Ci hai chiesto se il nostro gateway di simulazione sta perdendo ordini. Non è così. Le tue barre giornaliere fondono due sessioni e chiamano il risultato un giorno.

Ho controllato il titolo a media capitalizzazione che hai cerchiato, quello del 22 ottobre. Il massimo giornaliero del fornitore è $41.86. Durante gli orari regolari il prezzo non è mai andato oltre $41.12. Quel $41.86 è un eseguito di 800 azioni alle 7:41 PM Eastern, con uno spread di 22 centesimi. Il tuo segnale ha registrato un nuovo massimo a 20 giorni e ha messo in coda un acquisto per l'apertura successiva. La sessione simulata, che impostiamo dalle 9:30 alle 16:00 Eastern a meno che tu non la modifichi, non ha mai visto il breakout. Non c'era nulla da comprare.

8/14breakout mai verificatisi durante gli orari regolari
800azioni nell'eseguito che ha fissato il massimo giornaliero
22¢spread attorno a quell'eseguito delle 7:41 PM

Quale massimo compare in quella riga?

Sui titoli azionari statunitensi, il dato giornaliero è una comodità offerta dal fornitore. Per la stessa data di calendario puoi ricevere almeno tre barre diverse, e la maggior parte dei file CSV esportati non ti dice quale hai ottenuto.

BarraOrarioDa dove provengono massimo/minimoCosa avrebbe significato un eseguito a quel massimo
Orari regolari9:30-16:00 ET, più le due asteIl book continuo e gli incroci di apertura/chiusuraEssere nella sessione regolare, spesso in un'asta
EstesaCirca 4:00-9:30 e 16:00-20:00, a seconda del brokerEseguiti sottili pre-market e after-hoursUna sessione per cui il tuo conto cash potrebbe anche non avere l'autorizzazione
CompositaQuello che il fornitore ha assemblatoUn mix di quanto sopra, talvolta lotti dispari ed eseguiti TRFUn eseguito che potrebbe essere stato di 80 azioni su una quotazione ampia

Le criptovalute ti hanno abituato a considerare la mezzanotte UTC come l'inizio di una giornata di trading. I titoli azionari non sono tenuti a seguire questa convenzione. Il motore di matching a cui puoi davvero accedere con un conto cash long-only offre sei ore e mezza di negoziazione continua e due incroci. Il resto è una platea diversa, uno spread diverso e spesso un ultimo prezzo diverso.

Ho ancora una cartella di file CSV di Yahoo del 2015, quando ero convinto di avere un bel Donchian sui titoli biotech a bassa capitalizzazione. I massimi erano eseguiti after-hours legati a eventi binari. Stavo facendo backtesting sul panico di 200 azioni di qualcun altro e lo chiamavo canale. Tu stai facendo una versione più rispettabile della stessa cosa con un feed a pagamento.

Se il tuo agente di ricerca ha chiesto al fornitore dati OHLCV giornalieri senza specificare la sessione, presumili compositi. Gli agenti scelgono l'impostazione predefinita più comoda. Ed è così che le 7:41 PM finiscono dentro un breakout.

Perché allora la simulazione sembra guasta in entrambe le direzioni

Quando la sessione del file non corrisponde a quella del conto, non ottieni un semplice sottoconteggio. Ottieni tre tipi di scostamento, e nel tuo caso c'erano tutti e tre.

  1. Breakout su un massimo degli orari estesi. Il backtest entra all'apertura regolare successiva. La simulazione non ha mai generato un segnale. Ecco gli otto ingressi mancanti.
  2. Stop sotto il minimo di ieri, con il minimo di ieri preso dalla barra composita. Il backtest ha già chiuso la posizione su uno spike after-hours. La simulazione, che considera solo gli orari regolari, mantiene la posizione durante una giornata in cui il backtest risulta flat.
  3. Lo stop opposto: la simulazione aggiorna l'ultimo prezzo includendo il pre-market, un eseguito delle 5:10 AM ti fa uscire e il backtest sugli orari regolari è ancora dentro perché quell'eseguito non compare nella sua barra.

Il caso dello stop è più subdolo del breakout mancato. Gli ingressi mancati si manifestano come un numero inferiore di operazioni. Gli stop che scattano in una stanza con sette persone dentro si manifestano in importi diversi sulle operazioni che hai effettivamente eseguito, ed è per questo che hai dato la colpa al gateway.

Dire che non fai trading after-hours non significa che i tuoi dati non lo facciano. Sono due impostazioni distinte. Impostale entrambe.

Sulle barre a 1 minuto lo stesso errore è più discreto. Filtra per sessione in America/New_York. Se il file non ha un tag di sessione, il filtro è solo una messinscena.

Fissa la sessione prima di ricalibrare il periodo di lookback

Ho ricalcolato il tuo massimo a 20 giorni usando barre giornaliere degli orari regolari, con gli stessi titoli e le stesse date. Restano sei breakout. Quello è il conto simulato. Gli altri otto dipendevano da un eseguito che avresti dovuto accettare alle 7:41 PM per 800 azioni. Non passare una settimana a calibrare un parametro di slippage della simulazione per correggere una discrepanza tra sessioni.

Per ogni serie azionaria, inserisci tre valori booleani nel contratto di ricerca: includes_premarket, includes_afterhours, includes_odd_lots. Poi scegli la sessione in cui la strategia può operare e fai sì che il modello di esecuzione operi in quella sessione. Se vuoi davvero usare gli orari estesi, dichiaralo e dimensiona le posizioni tenendo conto delle 7:41 PM: spread più ampi, cancellazioni più lente, un book che sembra una quotazione ma in realtà è un solo lotto.

Se un fornitore non sa dirti quale sessione è stata usata per una riga giornaliera, trattala come composita finché non sarà in grado di farlo. Chiediglielo per iscritto. Un grafico sul web non ti darà la risposta. E se più avanti decidi che la strategia dovrebbe operare in chiusura, sarà un'altra lettera: la chiusura ufficiale è un'asta a cui devi partecipare.

Eseguilo di nuovo con la sessione fissata. Poi possiamo parlare dei sei.

orari estesiazionibacktestingdati di mercatotrading simulato
← Tutti gli articoli