Cos'è l'asta di apertura azionaria
Scopri come l'opening auction stabilisce il prezzo ufficiale di ogni stock tramite un trade incrociato alle nove e trenta e perché differisce dal primo trade.
L'asta di apertura è un singolo trade incrociato alle 9:30 a.m. Eastern che stabilisce il prezzo ufficiale di apertura di ogni stock. Prima della campana, la borsa di quotazione raccoglie tutti gli ordini contrassegnati per l'apertura, calcola l'unico prezzo che permette il maggior numero di azioni scambiate ed esegue l'intero pool in un'unica operazione — il riflesso mattutino di l'asta di chiusura che termina la giornata. Ogni numero riportato di seguito proviene dal consolidated tape — il registro pubblico di ogni trade su stock negli U.S. — con la relativa query SQL associata a ogni pannello.
Cos'è l'asta di apertura? Una definizione semplice
Le borse non si limitano ad attivarsi alle 9:30 per incrociare gli ordini uno alla volta. Durante la notte e durante il pre-market, la borsa di quotazione accumula gli ordini destinati all'apertura — oltre agli ordini limit compatibili presenti sul book — e al suono della campana incrocia l'intero pool in un'unica transazione a un unico prezzo. Quel print riporta la propria etichetta di condizione di vendita (codice 17, "Market Center Opening Trade" — ricevute nell'ultimo pannello) e il suo prezzo diventa l'apertura ufficiale: l' "open" nel registro dei prezzi giornalieri, il riferimento per i concetti di "gapped up" e "gapped down". L'asta e il mercato continuo fanno parte dello stesso tape; ciò che cambia al suono della campana è il meccanismo.
L'asta di apertura sul tape reale: SPY, AAPL, NVDA
Il pannello sottostante analizza il 2 luglio 2026 — una sessione completa verificata (ricevuta nel pannello successivo) — e dimensiona l'opening cross per SPY, AAPL e NVDA rispetto al resto della giornata. Il "volume matchato" include solo le azioni che il tape aggiunge al volume consolidato; i messaggi amministrativi (sale conditions 15, 16, 38) sono esclusi da ogni denominatore.
L'esatto SQL dietro ogni numero
SELECT
ticker,
round(toFloat64(maxIf(size, has(conditions, 17))) / 1e3, 1) AS auction_shares_k,
toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17))) AS auction_price,
formatDateTime(toTimeZone(argMaxIf(sip_timestamp, (size, sip_timestamp), has(conditions, 17)), 'America/New_York'), '%H:%i:%S') AS auction_time_et,
countIf(has(conditions, 17)) AS opening_print_count,
countIf(has(conditions, 17) AND formatDateTime(toTimeZone(sip_timestamp, 'America/New_York'), '%H:%i:%S') = '09:30:00') AS open_prints_at_0930,
minIf(size, has(conditions, 17)) AS smallest_open_print_shares,
round(toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]) AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) >= 570 AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) < 575)) / 1e3) AS first5_shares_k,
round(100 * toFloat64(maxIf(size, has(conditions, 17))) / toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]) AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) >= 570 AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) < 575)), 1) AS auction_pct_of_first5,
round(100 * toFloat64(maxIf(size, has(conditions, 17))) / toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))), 2) AS auction_pct_of_day,
round(toFloat64(maxIf(size, has(conditions, 8))) / 1e6, 2) AS closing_auction_shares_m,
round(toFloat64(maxIf(size, has(conditions, 8))) / toFloat64(maxIf(size, has(conditions, 17))), 1) AS close_vs_open_x
FROM global_markets.stocks_trades
WHERE ticker IN ('SPY', 'AAPL', 'NVDA')
AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
GROUP BY ticker
ORDER BY indexOf(['SPY', 'AAPL', 'NVDA'], ticker)Leggere prima la riga di AAPL: un opening cross di 323.3 mila azioni a $294.1, registrato alle 09:30:00 ET. L'opening cross di NVDA è stato di 690 mila azioni, quello di SPY di 122 mila. L'asta da sola ha rappresentato il 17.4% di tutte le azioni AAPL matchate nei primi cinque minuti della sessione (1856 mila azioni), il 13.8% per NVDA, il 9.4% per SPY — eppure le azioni totali della giornata sono state solo 0.43%, 0.48% e 0.21%: meno dello zero virgola cinque per cento.
Le ultime due colonne rappresentano il limite finale: l'closing cross di AAPL di quel giorno ha matchato 10.89 milioni di azioni — 33.7 volte il suo open; quello di NVDA è stato 25.2 volte, quello di SPY 13.5 volte. Gli index fund e i desk benchmarked operano ai prezzi ufficiali di chiusura, e tale flusso si concentra nell'asta delle 16:00; la mattina non ha un equivalente. L'asta di chiusura è l'operazione più grande della giornata — l'asta di apertura è il momento in cui inizia ufficialmente la giornata.
Perché l'apertura ufficiale può differire dal primo trade della giornata?
Al momento dell'asta, il titolo viene solitamente scambiato da ore — il pre-market trading inizia già dalle 4:00 ET, ma nessuna di queste transazioni determina l'apertura ufficiale. La riga sottostante analizza AAPL per il periodo 1-2 luglio 2026, iniziando con un controllo della sessione: SPY ha registrato esattamente 390 minute bars della sessione regolare il 2 luglio — una sessione completa, verificata e non presunta.
L'esatto SQL dietro ogni numero
WITH
(
SELECT countIf(window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York') AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York'))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-02 00:00:00', 'America/New_York') AND window_start < toDateTime('2026-07-03 00:00:00', 'America/New_York')
) AS bars_jul02,
(
SELECT argMax(sip_timestamp, (size, sip_timestamp))
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL' AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00' AND has(conditions, 17)
) AS auction_ts,
(
SELECT argMax(exchange, (size, sip_timestamp))
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL' AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00' AND has(conditions, 17)
) AS listing_exchange
SELECT
bars_jul02 AS spy_session_bars_jul02,
countIf(has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00') AS jul01_close_print_count,
toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00')) AS prior_close_price,
countIf(has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00') AS opening_print_count,
toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00')) AS auction_price,
formatDateTime(toTimeZone(auction_ts, 'America/New_York'), '%H:%i:%S.%f') AS auction_et,
round(100 * (toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00')) - toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00'))) / toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00')), 2) AS overnight_gap_pct,
formatDateTime(toTimeZone(minIf(sip_timestamp, sip_timestamp >= '2026-07-02 00:00:00' AND NOT hasAny(conditions, [15, 16, 38])), 'America/New_York'), '%H:%i:%S') AS first_trade_et,
toFloat64(argMinIf(price, (sip_timestamp, sequence_number), sip_timestamp >= '2026-07-02 00:00:00' AND NOT hasAny(conditions, [15, 16, 38]))) AS first_trade_price,
countIf(sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < auction_ts AND NOT hasAny(conditions, [15, 16, 38])) AS trades_before_official_open,
countIf(sip_timestamp >= toDateTime('2026-07-02 09:30:00', 'America/New_York') AND sip_timestamp < auction_ts AND NOT hasAny(conditions, [15, 16, 38])) AS bell_to_cross_trades,
countIf(has(conditions, 16) AND sip_timestamp >= '2026-07-02 00:00:00') AS official_open_msgs,
countIf(has(conditions, 16) AND sip_timestamp >= '2026-07-02 00:00:00' AND exchange = listing_exchange) AS listing_venue_open_msgs,
round(toFloat64(anyIf(price, has(conditions, 16) AND sip_timestamp >= '2026-07-02 00:00:00' AND exchange = listing_exchange)) - toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00')), 4) AS listing_open_msg_price_difference
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL' AND sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'La prima transazione di AAPL con volume registrato il 2 luglio è avvenuta alle 04:00:00 ET a $296.1. L'apertura ufficiale non è stata stabilita fino alle 09:30:00.491313 ET, quando il cross è stato registrato a $294.1 — a quel punto erano già presenti 15832 transazioni di AAPL, incluse 173 nella frazione di secondo tra le 9:30:00.000 e il cross — scambi continui su altri venue che iniziano il matching alla campana. Pochi istanti dopo sono arrivati 2 messaggi "Market Center Official Open" (sale condition 16) — la registrazione dell'apertura ufficiale di ogni singolo market center, che non aggiunge volume; la listing exchange ripete esattamente il prezzo dell'asta (differenza: 0).
Il report misura anche il gap overnight. La chiusura ufficiale precedente di AAPL — esattamente la chiusura 1 del 1 luglio — era a $294.38; l'asta della mattina successiva è stata registrata a $294.1, con una variazione overnight del -0.1%. Notte tranquilla, gap contenuto. Quando i report sugli earnings o le news arrivano durante la notte, il pre-market ricalcola il prezzo; l'asta registra il movimento nel record ufficiale.
Come funziona l'asta di apertura? Ordini market-on-open e limit-on-open
Due tipologie di ordini dedicate alimentano l'apertura, riflettendo i rispettivi ordini di chiusura:
- Un ordine market-on-open (MOO) viene eseguito al prezzo stabilito dall'asta — senza protezione del prezzo, garantisce quasi certamente la partecipazione all'apertura ufficiale.
- Un ordine limit-on-open (LOO) entra nell'asta solo se il prezzo di apertura è al limite indicato o migliore — offre protezione del prezzo, con il rischio di non essere eseguiti durante il cross.
Entrambi rimangono in borsa fino al cross e non vengono mai scambiati durante il pre-market. Le borse smettono di accettare o modificare gli ordini di apertura poco prima delle 9:30 (i termini variano a seconda della borsa) e molti broker fissano scadenze più anticipate.
Cos'è un imbalance dell'asta di apertura?
Prima della campana, le borse pubblicano i dati sull'imbalance per l'apertura: il numero di azioni in coda per l'acquisto rispetto alla vendita, insieme a un prezzo indicativo al quale avverrebbe il cross in quel momento. Un buy imbalance di un milione di azioni significa che, al momento, ci sono un milione di azioni in acquisto non accoppiate. I trader del pre-market monitorano questi dati e posizionano le proprie operazioni in base ad essi.
La candela delle 9:30 non è l'apertura ufficiale
La maggior parte delle piattaforme di charting include l'apertura nella prima candela da un minuto: tutto ciò che è stato registrato dalle 9:30:00.000 alle 9:30:59.999, da ogni venue — l'auction più quasi un minuto di trading continuo. La sua "apertura" è il primo prezzo registrato nella finestra temporale, non necessariamente l'auction.
L'esatto SQL dietro ogni numero
WITH auctions AS (
SELECT ticker, toFloat64(argMax(price, (size, sip_timestamp))) AS official_open
FROM global_markets.stocks_trades
WHERE ticker IN ('SPY', 'AAPL', 'NVDA')
AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
AND has(conditions, 17)
GROUP BY ticker
)
SELECT
b.ticker AS ticker,
toFloat64(anyIf(b.open, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York'))) AS bar_0930_open,
a.official_open AS official_open,
round(100 * (toFloat64(anyIf(b.open, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York'))) - a.official_open), 0) AS bar_open_minus_official_cents,
round(sumIf(b.volume, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York')) / 1e3) AS bar_0930_vol_k,
anyIf(b.transactions, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York')) AS bar_0930_trades,
round(sumIf(b.volume, b.window_start = toDateTime('2026-07-02 12:30:00', 'America/New_York')) / 1e3) AS bar_1230_vol_k,
round(sumIf(b.volume, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York')) / sumIf(b.volume, b.window_start = toDateTime('2026-07-02 12:30:00', 'America/New_York')), 1) AS x_0930_vs_1230
FROM global_markets.delayed_stocks_minute_aggs AS b
INNER JOIN auctions AS a ON a.ticker = b.ticker
WHERE b.ticker IN ('SPY', 'AAPL', 'NVDA')
AND b.window_start >= toDateTime('2026-07-02 00:00:00', 'America/New_York')
AND b.window_start < toDateTime('2026-07-03 00:00:00', 'America/New_York')
GROUP BY b.ticker, a.official_open
ORDER BY indexOf(['SPY', 'AAPL', 'NVDA'], b.ticker)Il 2 luglio tutte e tre le candele delle 9:30 sono aperte sopra l'apertura ufficiale: la candela di AAPL mostra $294.12 rispetto ai $294.1 ufficiali — con una differenza di 2 centesimi — con SPY a 18 centesimi e NVDA a 2 centesimi sopra i rispettivi cross. Un prezzo pre-cross su un'altra venue è stato registrato per primo in ogni candela; quando l'apertura di un grafico differisce dall'apertura ufficiale di pochi centesimi, questo è solitamente il meccanismo.
Le colonne del volume mostrano il peso del primo minuto. La candela delle 9:30 di AAPL ha registrato 743 mila azioni in 14662 trade — ovvero 6.1 volte la sua candela delle 12:30 del pranzo da 121 mila; il rapporto di NVDA è stato di 7.5 volte, quello di SPY di 3.6 volte. I minuti con questa intensità hanno un peso reale nel VWAP, il prezzo medio ponderato per i volumi.
Qual è l'andamento della giornata in prossimità dell'apertura?
Suddividendo l'intero tape di AAPL di luglio in intervalli di quindici minuti 64, dalle 4:00 alle 20:00, si può contestualizzare il picco di volume iniziale: i segmenti pre-market sono quasi trascurabili, i volumi aumentano drasticamente alle 9:30, diminuiscono verso l'orario di pranzo e crescono nuovamente verso la chiusura — dove la giornata termina come è iniziata, con un cross di 10.89 milioni di azioni AAPL.
L'esatto SQL dietro ogni numero
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 15 MINUTE), '%H:%i') AS et_time,
round(sum(volume) / 1e6, 2) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
AND window_start >= toDateTime('2026-07-02 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-03 00:00:00', 'America/New_York')
GROUP BY et_time
ORDER BY et_timeHow do you identify the opening auction print? Sale condition codes
Which print is the auction? The tape itself answers; the code dictionary ships in the same warehouse, and the receipt below is a query, not an assertion.
L'esatto SQL dietro ogni numero
SELECT
name,
id,
toUInt8(JSONExtractBool(update_rules, 'consolidated', 'updates_volume')) AS counts_toward_volume
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks' AND type = 'sale_condition' AND id IN (8, 15, 16, 17, 38)
ORDER BY idOne asymmetry matters. The close gets one consolidated label (code 8, "Closing Prints"); the open's label is per venue: code 17, "Market Center Opening Trade", flags each market center's own opening trade, and the listing exchange's is the auction. SPY's July 2 tape carries 2 such prints — the 122 thousand-share cross plus a 4-share print from another venue — while AAPL and NVDA each show exactly one (1 and 1), all inside the 9:30:00 second (the open_prints_at_0930 column pins it). Every auction number above is the session's largest such print. Code 16, "Market Center Official Open", is the volume-free administrative echo (0 in the volume column), excluded from every denominator with codes 15 and 38.
FAQ sull'auction di apertura
A che ora si svolge l'auction di apertura?
Alle 9:30 a.m. ET, all'inizio della sessione regolare; i titoli meno liquidi possono incrociarsi poco dopo. Il 2 luglio 2026, i cross di SPY, AAPL e NVDA sono stati registrati esattamente alle 09:30:00 ET. Le giornate con chiusura anticipata accorciano il pomeriggio, non la mattina: l'auction di chiusura viene spostata alle 1:00 p.m.; consultare festività di mercato e chiusure anticipate.
Qual è il prezzo ufficiale di apertura?
Il prezzo dell'auction di apertura stabilito sul listing exchange del titolo. Il 2 luglio 2026, il cross di AAPL è stato di $294.1 — l'apertura ufficiale della giornata, nonostante 15832 titoli AAPL siano stati scambiati precedentemente quella mattina.
Posso fare trading durante l'auction di apertura?
Sì. Gli ordini Market-on-open (MOO) e limit-on-open (LOO) sono standard presso la maggior parte dei broker: gli ordini MOO vengono eseguiti al prezzo stabilito dall'auction, gli ordini LOO vengono eseguiti solo al prezzo limite o migliore. L'invio degli ordini termina poco prima delle 9:30, e molti broker anticipano tale limite.
Perché un titolo ha aperto molto lontano dalla chiusura di ieri?
Gli ordini si accumulano durante tutta la notte mentre l'exchange è chiuso, e l'auction incrocia quell'interesse accumulato in un unico prezzo. In una notte tranquilla il gap è ridotto: la variazione overnight di AAPL del 2 luglio 2026 è stata pari a -0.1%.
L'auction di apertura è più grande dell'auction di chiusura?
No — la chiusura è molto più voluminosa. Il 2 luglio 2026, il closing cross di AAPL è stato 33.7 volte il suo opening cross, quello di NVDA 25.2 volte, quello di SPY 13.5 volte. I flussi di trading che seguono i benchmark operano alla chiusura ufficiale — l'auction di chiusura copre tale fase.
Ogni cifra sopra riportata deriva da una query memorizzata e ispezionabile — espandere la SQL sotto ogni pannello per verificarla. Per analizzare l'opening cross di un ticker che si segue, porre le stesse domande in inglese semplice sul terminale Strasmore.