Riepilogo mercato 6 luglio 2026
Rientro dopo l'Independence Day con gap rialzista guidato dalla crescita. Settori divergenti e quotazioni più strette dell'ultimo mese per l'indice.
Lunedì 6 luglio 2026 — la prima sessione dopo il weekend dell'Independence Day — si è aperta con un gap rialzista guidato dalla crescita, mantenendo il livello raggiunto. QQQ ha chiuso a 1.39% rispetto al 0.42% di DIA, riflettendo la rotazione di giovedì, e la breadth è rimasta positiva: 3861 titoli liquidi sono cresciuti rispetto a 2242. La maggior parte del movimento è stata determinata dal gap di riapertura, quotato al livello più stretto dell'indice nell'ultimo mese. Ogni cifra riportata di seguito è estratta da una query memorizzata.
Il tabellone
I cambiamenti confrontano l'ultima barra della sessione regolare del 6 luglio con quella di giovedì 2 luglio — una festività di mercato in meno.
L'esatto SQL dietro ogni numero
WITH prior AS (
SELECT ticker, argMax(close, window_start) AS prior_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY ticker
),
sess AS (
SELECT ticker,
argMin(open, window_start) AS day_open,
argMax(close, window_start) AS day_close,
max(high) AS day_high,
min(low) AS day_low,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_traded_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
GROUP BY ticker
)
SELECT
s.ticker AS ticker,
round(toFloat64(p.prior_close), 2) AS prior_close,
round(toFloat64(s.day_open), 2) AS day_open,
round(toFloat64(s.day_close), 2) AS day_close,
round((toFloat64(s.day_open) / toFloat64(p.prior_close) - 1) * 100, 2) AS gap_pct,
round((toFloat64(s.day_close) / toFloat64(s.day_open) - 1) * 100, 2) AS intraday_pct,
round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
round(toFloat64(s.day_high), 2) AS day_high,
round(toFloat64(s.day_low), 2) AS day_low,
s.shares_traded_m AS shares_traded_m
FROM sess s
JOIN prior p ON s.ticker = p.ticker
ORDER BY s.tickerIl 1.39% di QQQ ha guidato i quattro ETF indicizzati e il 0.42% di DIA è rimasto ultimo — l'esatto opposto di giovedì, quando DIA è salito e QQQ è sceso. SPY ha chiuso 0.87%, IWM 0.45%. Il gap rispetto al trend graduale definisce l'andamento della giornata: QQQ è aperto con un gap del 1.01% sopra la chiusura di giovedì e ha aggiunto solo un altro 0.38% dall'apertura alla chiusura; il gap del 0.53% di SPY ha rappresentato la maggior parte del suo 0.87% giornaliero. IWM (0.07%) e DIA (0.17%) hanno registrato gap minimi, preferendo una crescita graduale durante la sessione.
La giornata è stata insolita?
L'esatto SQL dietro ogni numero
SELECT round(anyIf(oc_pct, d = toDate('2026-07-06')), 2) AS day_move_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-06'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-06'))) + 1 AS abs_move_rank,
count() AS sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-06 00:00:00')
AND window_start < toDateTime('2026-07-07 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)A livello di indice, no: il movimento di SPY dall'apertura alla chiusura di 0.34% si posiziona al 13 dei 19 sessioni precedenti per ampiezza assoluta — una posizione mediana. L'andamento intraday è stato ordinario; la variazione significativa è avvenuta nel gap.
Breadth: segnali positivi, la crescita torna in primo piano
L'esatto SQL dietro ogni numero
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 00:00:00') AS day_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
GROUP BY ticker
)
SELECT
countIf(day_close > prior_close AND day_dollar_volume >= 1000000) AS advancers,
countIf(day_close < prior_close AND day_dollar_volume >= 1000000) AS decliners,
countIf(day_close = prior_close AND day_dollar_volume >= 1000000) AS unchanged,
countIf(day_dollar_volume >= 1000000) AS liquid_tickers,
count() AS tickers_traded_both_sessions,
count() - countIf(day_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
/ countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct
FROM per_ticker
WHERE prior_close > 0 AND day_close > 03861 rialzi, 2242 ribassi, 86 invariati — 62.4% del volume scambiato è salito. Sia il weighting dell'indice che la breadth a equal-count sono risultati positivi, a differenza di quanto accaduto giovedì dove i due indicatori divergono. Il filtro esclude il 5361 di 11550 ticker con scambi dual-session inferiori a un milione di dollari.
Settore per settore: quanto è stato ampio il divario?
Quattro megacap non costituiscono un mercato. Il panel valuta la giornata attraverso gli undici principali ETF settoriali — un fondo per ogni fetta dell'S&P 500, lo stesso paniere ogni sessione. Osservate lo spread tra il miglior settore e il peggiore: la dispersion della giornata.
L'esatto SQL dietro ogni numero
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-06 00:00:00')) AS day_open,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
round((day_close / day_open - 1) * 100, 2) AS intraday_pct,
day_dollar_bn,
round(max((day_close / prior_close - 1) * 100) OVER () - (day_close / prior_close - 1) * 100, 2) AS points_behind_leader
FROM per_name
ORDER BY pct_chg DESC, ticker ASCIl settore Technology (XLK) ha dominato la giornata con un rendimento del 1.71%, di cui quasi tutto è dovuto al gap: 1.19% all'apertura, 0.52% nelle successive sei ore e mezza. Financials (0.99%) e industrials (0.9%) sono seguiti. Poi la situazione si inverte: cinque righe verdi lasciano il posto a sei rosse, nella parte difensiva — utilities, health care, staples — con minimi al -1.08%. Dall'alto verso il basso, 2.79 punti percentuali hanno separato il miglior settore dal peggiore in una giornata in cui l'indice S&P si è mosso dello 0.87% — diverse volte il movimento dell'indice, e un caso a favore del non considerare una giornata in rialzo come un fenomeno uniforme. Real estate e utilities hanno seguito un andamento opposto al tech: aperture quasi piatte (0.09%, -0.11%), seguite da un calo durante tutta la sessione (-1.01% e -0.92% dall'apertura alla chiusura).
Il punto della giornata: il crollo della memoria, ripreso solo a metà
Il comparto memory-and-storage che ha subito il crollo tra mercoledì e giovedì ha registrato un rimbalzo lunedì, ma solo parziale.
L'esatto SQL dietro ogni numero
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-06 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-06 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-06 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-06 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
AND ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round(day_high, 2) AS day_high,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
round(day_low, 2) AS day_low,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerI due produttori di drive hanno guidato la ripresa: Western Digital 7.14% e Seagate 6%, entrambi con picchi in tarda mattinata (10:44 e 10:39 ET). I due titoli più pesanti sono rimasti fermi: MU ha aggiunto 0.88%, toccando il minimo sulla barra di chiusura (15:59); SanDisk ha chiuso -0.03% con un range di 7.27%. MU ha comunque scambiato $30.9 miliardi di azioni, più degli altri tre titoli messi insieme (l'analisi approfondita su MU copre il suo trimestre).
L'altra metà della rotazione è avvenuta tra le megacap:
L'esatto SQL dietro ogni numero
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-06 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-06 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-06 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-06 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA')
AND ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round(day_high, 2) AS day_high,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
round(day_low, 2) AS day_low,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerTSLA ha registrato una salita costante fino a 6.86% — minimo a 09:37 ET, massimo sulla barra di chiusura (15:59) — speculare al calo di giovedì. AAPL ha aggiunto 1.49% e NVDA 0.57%; MSFT è stata l'unica megacap in rosso a -0.7%, con il massimo registrato all'apertura delle 09:30.
Dove sono stati scambiati i capitali
L'esatto SQL dietro ogni numero
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
/ max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
FROM (
SELECT
'by dollars traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_volume_bn DESC
LIMIT 6
UNION ALL
SELECT
'by shares traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESCSPY ha guidato gli scambi del dollaro con 31.49 miliardi, seguito da MU (30.9 miliardi) — concludendo così il trend di quattro sessioni in testa di MU (lunedì fino a giovedì i dati confermano il trend). Sul listino azionario, SOXS — l'ETF con leva inversa 3x sui semiconduttori — ha scambiato 467.1 milioni di azioni, registrando nuovamente il volume più alto nonostante il rialzo dei chip monitorati.
L'esatto SQL dietro ogni numero
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
GROUP BY et_time
ORDER BY et_time1.96 miliardi di azioni nella prima mezz'ora di negoziazione, un minimo di 0.68 miliardi a 14:30, e 2.1 miliardi alla chiusura delle 15:30 — la tipica curva intraday a forma di sorriso, con volumi maggiori sia all'apertura che alla chiusura.
Il tape delle opzioni
L'esatto SQL dietro ogni numero
WITH
(
SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
sum(size), count(), round(avg(toFloat64(price)), 3))
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'
GROUP BY ticker
ORDER BY sum(size) DESC
LIMIT 1
) AS top_contract,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
) AS spy_regular_close
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260706') / sum(size), 1) AS same_day_expiry_pct,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260706')) / 1e6, 2) AS same_day_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'TSLA')) / 1e6, 2) AS tsla_contracts_m,
top_contract.1 AS top_contract_underlying,
top_contract.2 AS top_contract_strike,
top_contract.3 AS top_contract_type,
if(top_contract.3 = 'C', 1, 0) AS top_contract_is_call,
top_contract.4 AS top_contract_expiry,
round(toFloat64(top_contract.5) / 1e6, 2) AS top_contract_volume_m,
round(top_contract.7, 3) AS top_contract_avg_price,
round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'Sono stati scambiati 60.98 milioni di contratti su 10.53 milioni di operazioni, di cui 58.4% in call. Le scadenze in giornata hanno rappresentato il 38.7% del volume totale (23.57 milioni di contratti): un tipico lunedì 0DTE, con valori inferiori a quelli carichi di giovedì della vigilia festiva. Il contratto più scambiato è stato la call SPY con strike $751, con 1.08 milioni di contratti a un prezzo medio di $0.564, mentre lo SPY ha chiuso $0.3 sopra lo strike — in the money. Una call in cima alla classifica, dove giovedì si è concluso con una put.
Il tape delle quotazioni: il gap up ha scambiato con spread ampi?
Sotto ogni prezzo si trova il flusso delle quotazioni — il National Best Bid and Offer, quotato continuamente per ogni titolo quotato. Un gap all'apertura può rendere le quotazioni ostili, quindi lo misuriamo in ogni sessione.
L'esatto SQL dietro ogni numero
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-06')) / 1e6, 2) AS jul6_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-06')) / countIf(toDate(sip_timestamp) = toDate('2026-07-02')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 14:00:00') / 1e6, 2) AS jul6_open_half_hour_m,
round(countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 18:00:00') / 1e6, 2) AS jul6_midday_half_hour_m,
round(countIf(sip_timestamp >= '2026-07-06 19:30:00' AND sip_timestamp < '2026-07-06 20:00:00') / 1e6, 2) AS jul6_close_half_hour_m
FROM global_markets.cache_stocks_quotes
WHERE (sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00')
OR (sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00')Il tape ha registrato 391.96 milioni di aggiornamenti NBBO lunedì contro 597.22 milioni di giovedì — -34.4%, un terzo di messaggi in meno rispetto alla sessione pre-festiva — e si sono accumulati all'apertura: 58.66 milioni nella prima mezz'ora contro 20.74 milioni alle 13:30 e 33.7 milioni verso la chiusura. Meno quotazioni rispetto a giovedì, ma non più ampie:
L'esatto SQL dietro ogni numero
SELECT
ticker,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00'), 2) AS open_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 2) AS midday_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00')
- quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 2) AS spread_delta_bps,
round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00') / 1e3, 1) AS open_updates_k,
round(countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00') / 1e3, 1) AS midday_updates_k,
round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00') / countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 1) AS quote_rate_ratio,
round(count() / 1e6, 2) AS session_updates_m,
countIf(bid_price <= 0 OR ask_price <= 0 OR bid_price > ask_price) AS dropped_invalid_quotes
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('DIA', 'IWM', 'MSFT', 'MU', 'QQQ', 'SNDK', 'SPY', 'STX', 'TSLA', 'WDC')
AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 20:00:00'
GROUP BY ticker
ORDER BY tickerLo bid-ask spread è il costo dell'esecuzione, espresso in basis points rispetto al mid-price — 1 bp è un centesimo su un titolo da $100. Nessun titolo verificato ha quotato uno spread più stretto nei primi dodici minuti del gap rispetto a mezzogiorno, e il touch di SPY è stato identico in entrambi i casi (0.27 bps, 0 bps di variazione) nonostante sia stato ricontato 3x più velocemente all'apertura. La penalità sulla larghezza ha colpito i singoli titoli, non i fondi indicizzati: SanDisk ha pagato il prezzo più alto (+12.9 bps, 8.16 a 21.07), MU +3.63, TSLA +2.89, contro i 0.42 bps di QQQ su un touch di 0.83 bps. Seagate risponde alla domanda "non è tutto liquido?": 30.94 bps di ampiezza all'apertura, oltre cento volte il touch di SPY.
L'esatto SQL dietro ogni numero
SELECT
round(anyIf(avg_spread_cents, d = toDate('2026-07-06')), 3) AS jul6_avg_spread_cents,
arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-06')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-06'))) + 1 AS tightness_rank,
count() AS sessions_compared,
round(max(avg_spread_cents), 3) AS widest_session_cents,
round(avgIf(avg_spread_cents, d != toDate('2026-07-06')), 3) AS other_sessions_avg_cents,
replaceAll(formatDateTime(min(d), '%M %e, %Y'), ' ', ' ') AS first_session,
sum(dropped_invalid) AS dropped_invalid_quotes
FROM (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
avgIf(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100 AS avg_spread_cents,
countIf(NOT (bid_price > 0 AND ask_price >= bid_price)) AS dropped_invalid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime('2026-06-04 00:00:00')
AND sip_timestamp < toDateTime('2026-07-07 00:00:00')
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
)Durante l'intera sessione regolare, il 6 luglio è stata la sessione più stretta di SPY dell'ultimo mese: uno spread medio ponderato sugli aggiornamenti di 1.815 centesimi, posizione 1 di 21 sessioni dal June 4, 2026, contro una media mensile di 2.337 centesimi che ha raggiunto i 2.865 nel suo punto massimo. Un numero di quotazioni ridotto per la festività ha comunque garantito all'acquirente dell'indice il touch più economico sul mercato.
Tassi: curva stabile durante il lungo weekend
L'esatto SQL dietro ogni numero
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jul6_yield_pct,
round((t.2 - t.3) * 100) AS session_change_bp
FROM (
SELECT arrayJoin([
('1 month', toFloat64(d.yield_1_month), toFloat64(p.yield_1_month)),
('3 month', toFloat64(d.yield_3_month), toFloat64(p.yield_3_month)),
('1 year', toFloat64(d.yield_1_year), toFloat64(p.yield_1_year)),
('2 year', toFloat64(d.yield_2_year), toFloat64(p.yield_2_year)),
('5 year', toFloat64(d.yield_5_year), toFloat64(p.yield_5_year)),
('10 year', toFloat64(d.yield_10_year), toFloat64(p.yield_10_year)),
('30 year', toFloat64(d.yield_30_year), toFloat64(p.yield_30_year)),
('2s10s spread', toFloat64(d.yield_10_year - d.yield_2_year), toFloat64(p.yield_10_year - p.yield_2_year))
]) AS t
FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-06') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS p
)La curva ha subito variazioni minime durante il lungo weekend. Il rendimento a 10 anni si è attestato al 4.48% e lo 2s10s spread al 0.35 punti percentuali; entrambi i valori erano entro uno o due basis point rispetto ai dati del 2 luglio. L'unico movimento rilevante è stato registrato dal tasso a 3 mesi, pari a 5 basis points.
Il calendario della giornata
L'esatto SQL dietro ogni numero
WITH
(
SELECT (count(), uniqExact(publisher))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-06'
) AS news,
(
SELECT (argMax(t, n), max(n))
FROM (
SELECT t, count() AS n
FROM (
SELECT arrayJoin(tickers) AS t
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-06'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_executed,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS forward_splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-06') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06') AS filings_8k,
news.1 AS news_articles,
news.2 AS news_publishers,
top_news.1 AS most_covered_ticker,
top_news.2 AS most_covered_articles118 record sui dividendi ex-dividend, 15 split eseguiti, 0 nuove quotazioni e 3161 comunicazioni registrate dall'indice SEC — 1219 Form 4s, 201 8-Ks — un volume di dati inferiore rispetto al giovedì precedente le festività. Il feed news ha riportato 236 articoli, con il titolo più trattato, NVDA, con 25.
Il muro dei reverse-split dietro i mover screen
Il 14 dei 15 split erano reverse split — consolidamenti azionari, principalmente a prezzi inferiori a un dollaro — contro il 1 di forward split. Un reverse split trasforma molte vecchie azioni in una singola azione a un prezzo proporzionalmente più alto; uno screen non aggiustato riporta questo movimento come un "gain" a tre cifre, nonostante non ci sia stato alcun guadagno reale. L'intero muro:
L'esatto SQL dietro ogni numero
SELECT
s.ticker AS ticker,
toFloat64(s.split_from) AS old_shares,
toFloat64(s.split_to) AS new_shares,
round(toFloat64(s.split_from) / toFloat64(s.split_to), 0) AS old_shares_per_new,
p.prev_close AS jul2_close,
d.day_close AS jul6_close,
round((d.day_close / p.prev_close - 1) * 100, 1) AS unadjusted_pct_chg
FROM (
SELECT ticker, any(split_from) AS split_from, any(split_to) AS split_to
FROM global_markets.stocks_splits
WHERE execution_date = '2026-07-06'
GROUP BY ticker
) s
INNER JOIN (
SELECT ticker, round(toFloat64(argMax(close, window_start)), 2) AS prev_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
AND ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06')
GROUP BY ticker
HAVING prev_close > 0
) p ON s.ticker = p.ticker
INNER JOIN (
SELECT ticker, round(toFloat64(argMax(close, window_start)), 2) AS day_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
AND ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06')
GROUP BY ticker
HAVING day_close > 0
) d ON s.ticker = d.ticker
ORDER BY unadjusted_pct_chg DESC, ticker ASCCiascuna delle 12 righe è un consolidamento che riporta un "gain" a tre cifre o superiore sul tape grezzo — da 31450% in alto (un consolidamento 200-per-uno, con chiusura non aggiustata da $0.02 a $6.31) fino a 226.1% con il rapporto più piccolo (3-per-uno). A metà tabella si trova l'esempio didattico più chiaro: un reverse split 10-per-uno ha portato la chiusura non aggiustata di TXXS da $2.35 di giovedì a $24.34 di lunedì — dieci vecchie azioni diventate una, non un rally di dieci volte. Uno screener basato sulla variazione del prezzo grezzo posiziona questa tabella sopra ogni vero mover; il nostro esclude gli split. Il forward split di CRWD di giovedì ha simulato l'opposto, un crash.
La sessione, verificata — la prima dopo la pausa
L'esatto SQL dietro ogni numero
SELECT
formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
count() AS spy_minute_bars,
countIf(window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-03 00:00:00' AND window_start < '2026-07-04 00:00:00') AS jul3_spy_bars,
(SELECT replaceAll(formatDateTime(min(date), '%M %e, %Y'), ' ', ' ') FROM global_markets.stocks_market_holidays WHERE date > '2026-07-06' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-06' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'Il 6 luglio è stata una sessione completa, non una chiusura anticipata: le candele di SPY sono andate da 04:00 a 19:59 ora di New York con esattamente 390 candele della sessione regolare. Il venerdì precedente, il 3 luglio, sono state registrate 0 candele di SPY — una chiusura completa poiché il 4 luglio, Independence Day, cadeva di sabato. Prossima chiusura: Labor Day, September 7, 2026. La settimana di quattro sessioni prima della pausa è analizzata nel riepilogo settimanale.
FAQ
Come si è comportato il mercato azionario il 6 luglio 2026?
Tutti e quattro i principali ETF indicizzati hanno chiuso in rialzo — QQQ 1.39%, SPY 0.87%, IWM 0.45%, DIA 0.42% — con il 62.4% dei titoli liquidi in rialzo, principalmente a causa di un gap overnight.
Quale settore ha guidato il mercato il 6 luglio 2026?
Il settore Technology (XLK) ha guidato gli undici ETF settoriali con il 1.71%, mentre il settore difensivo è sceso fino al -1.08% — uno spread tra il miglior e il peggior settore pari a 2.79 punti percentuali, diverse volte il movimento del 0.87% dell'S&P.
Il mercato azionario era aperto il giorno dell'Independence Day 2026?
No. Il 4 luglio cadeva di sabato, quindi le borse hanno osservato l'Independence Day venerdì 3 luglio — una chiusura confermata dalle 0 candele minute di SPY registrate. Il 6 luglio è stata la prima sessione di riapertura.
Perché alcuni titoli hanno mostrato enormi guadagni giornalieri il 6 luglio?
Sono stati eseguiti dei reverse split 14. Consolidare molte vecchie azioni in una singola a un prezzo proporzionalmente più alto fa sì che un report non rettificato mostri un "guadagno" di centinaia di percentuali, mentre il valore della posizione del detentore rimane invariato — i titoli 12 sopra citati appartengono a questa categoria.
Gli spread erano ampi all'apertura del gap?
Solo sui singoli titoli. Lo spread mediano quotato di SPY nei primi dodici minuti era di 0.27 basis points, identico al livello di metà giornata; SanDisk ha quotato uno spread di 12.9 bps più ampio rispetto a metà giornata.
Note sui dati
- Il volume in dollari è un proxy al minuto — calcolato come il prodotto tra prezzo di chiusura e volume per ogni barra di un minuto.
- Il paniere settoriale è un metodo dichiarato, non un campo del vendor: comprende gli undici principali ETF settoriali di S&P (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY), lo stesso set per ogni sessione.
- Gli spread quotati sono le mediane di (ask − bid) ÷ mid su quotazioni bidirezionali valide; le quotazioni unidirezionali, a zero o incrociate vengono scartate e contate nel panel.
- Un listing con simbolo riutilizzato è escluso dalle classifiche in attesa della verifica dell'entità (ricevute).
Metodologia
- Il periodo corrisponde a una singola sessione di trading (sessione 1, verificata tramite le candele osservate). I timestamp sono memorizzati in UTC e convertiti in orario di New York all'interno delle query. "Close" indica l'ultima candela al minuto della sessione regolare; il cambio di giorno confronta il 6 luglio con il 2 luglio — la sessione precedente rispetto alla chiusura del 3 luglio, verificata tramite le candele e mai presunta.
- I decimali vengono convertiti in float a 64-bit prima del calcolo dei ratio. I pannelli vengono letti una sola volta, al momento della redazione, tramite il percorso di sola lettura protetto.
Ogni pannello è il risultato di una query memorizzata — grafico, tabella e SQL sono un unico oggetto. Copia uno qualsiasi di essi nel terminale Strasmore per personalizzarlo. Sessione precedente: 2 luglio. Successiva: 7 luglio.