Recap di mercato 2 luglio 2026: i numeri del giorno
Rotazione pre-festiva: ampiezza positiva con Nasdaq in calo, tecnologia ultima tra gli undici settori, secondo giorno di vendite sulle memorie e un ribasso apparente.
Giovedì 2 luglio 2026, ultima seduta prima della chiusura per l’Independence Day, è stata una giornata di rotazione con i titoli dei media concentrati su un selloff. QQQ ha registrato -1.71%, mentre DIA è salito di 1.04%, e l’ampiezza del mercato è stata POSITIVE: sono saliti 3398 titoli liquidi contro 2758, con 54.6% del mercato in rialzo nonostante il calo dell’indice growth. Otto degli undici fondi settoriali hanno chiuso in rialzo; le vendite si sono concentrate sul comparto tecnologico e sul segmento delle memorie, che aveva ceduto il giorno precedente.
Il tabellone
| ticker | chiusura precedente | apertura giornaliera | chiusura giornaliera | variazione % | massimo giornaliero | minimo giornaliero | azioni scambiate (M) |
|---|---|---|---|---|---|---|---|
| DIA | 522.41 | 525.49 | 527.83 | 1.04 | 528.26 | 523.73 | 3 |
| IWM | 299.31 | 300.54 | 297.53 | -0.59 | 302.23 | 294.98 | 18.5 |
| QQQ | 725.16 | 725.58 | 712.74 | -1.71 | 730.83 | 707.56 | 43.7 |
| SPY | 745.69 | 747.4 | 744.8 | -0.12 | 751.31 | 740.03 | 43.9 |
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-01 13:30:00' AND window_start < '2026-07-01 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-02 13:30:00' AND window_start < '2026-07-02 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_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.tickerDIA a 1.04% contro QQQ a -1.71%: la seduta si riassume così, con industriali e titoli growth separati da quasi tre punti percentuali di rendimento giornaliero. SPY si è collocato a metà, a -0.12%; IWM ha chiuso a -0.59%.
Giornata anomala?
Due prospettive nello stesso pannello: il movimento dall’apertura alla chiusura di SPY e il movimento tra una chiusura e quella precedente di QQQ, ciascuno confrontato con il mese precedente in base all’ampiezza assoluta (rango 1 = maggiore).
| SPY apertura-chiusura (%) | posizione variazione assoluta SPY | sessioni SPY confrontate | QQQ chiusura su chiusura (%) | posizione variazione assoluta QQQ | sessioni QQQ confrontate | prima sessione |
|---|---|---|---|---|---|---|
| -0.35 | 15 | 22 | -1.71 | 9 | 21 | 2026-06-02 |
L'esatto SQL dietro ogni numero
WITH per_day AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct,
argMax(toFloat64(close), window_start) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-06-02 00:00:00')
AND window_start < toDateTime('2026-07-03 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
),
with_prev AS (
SELECT ticker, d, oc_pct,
lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) AS prev_close,
(rth_close / lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct
FROM per_day
)
SELECT
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02'))),
groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-02'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02'))),
groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-02') AND isFinite(cc_pct) AND prev_close > 0)) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ' AND isFinite(cc_pct) AND prev_close > 0) AS qqq_sessions_compared,
toString(minIf(d, ticker = 'SPY')) AS first_session
FROM with_prevA livello di indice, no. Il movimento di SPY dall’apertura alla chiusura, pari a -0.35%, si colloca al 15° posto su 22 sedute precedenti, quindi nella metà inferiore. QQQ ha mostrato un movimento più marcato, ma non estremo: la variazione tra una chiusura e quella precedente, pari a -1.71%, si colloca al 9° posto su 21 sedute con una chiusura precedente definita, a partire da 2026-06-02. Per l’indice growth è stata una giornata negativa nella fascia intermedia. È sul listino dei singoli titoli che il 2 luglio il movimento è stato davvero marcato.
Ampiezza di mercato: tape positivo, indice growth negativo
| titoli in rialzo | titoli in ribasso | invariati | ticker liquidi | ticker scambiati in entrambe le sessioni | esclusi dal filtro di liquidità | titoli in rialzo (%) | titoli in rialzo (formattato) | titoli in ribasso (formattato) | esclusi dal filtro di liquidità (formattato) | ticker scambiati in entrambe le sessioni (formattato) |
|---|---|---|---|---|---|---|---|---|---|---|
| 3398 | 2758 | 63 | 6219 | 11536 | 5317 | 54.6 | 3,398 | 2,758 | 5,317 | 11,536 |
L'esatto SQL dietro ogni numero
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') AS day_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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,
reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close > prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS advancers_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close < prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS decliners_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(count() - countIf(day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS dropped_by_liquidity_filter_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(count())), '[0-9]{1,3}'), ',')) AS tickers_traded_both_sessions_fmt
FROM per_ticker
WHERE prior_close > 0 AND day_close > 03,398 titoli in rialzo, 2,758 titoli in ribasso e 63 invariati; 54.6% dei titoli liquidi ha chiuso in rialzo, mentre QQQ è sceso. Gli indici ponderati per capitalizzazione e l’ampiezza basata sul conteggio paritario hanno fornito indicazioni diverse. Giornate come questa spiegano perché il pannello includa entrambe le metriche. Il filtro esclude 5,317 dei 11,536 ticker presenti in entrambe le sessioni con meno di 1 milione di dollari di scambi.
Settore per settore: dove si è concentrato il rialzo
La breadth conta i titoli, ma non indica di quale tipo siano. Gli undici fondi SPDR settoriali scompongono la seduta per settore, e la distanza tra il migliore e il peggiore misura in un solo dato la dispersione della giornata.
| ticker | chiusura precedente | chiusura giornaliera | variazione (%) | punti sopra il settore peggiore | volume giornaliero ($ mld) |
|---|---|---|---|---|---|
| XLB | 51 | 51.99 | 1.94 | 4.65 | 0.57 |
| XLC | 109.74 | 109.6 | -0.13 | 2.58 | 0.83 |
| XLE | 52.82 | 53.23 | 0.78 | 3.48 | 1.46 |
| XLF | 54.79 | 55.61 | 1.5 | 4.2 | 2.36 |
| XLI | 183.41 | 183.91 | 0.27 | 2.98 | 1.15 |
| XLK | 185.54 | 180.52 | -2.71 | 0 | 2.43 |
| XLP | 83.33 | 85 | 2 | 4.71 | 1.33 |
| XLRE | 44.18 | 44.69 | 1.15 | 3.86 | 0.22 |
| XLU | 44.76 | 45.76 | 2.23 | 4.94 | 1.05 |
| XLV | 159.57 | 163.77 | 2.63 | 5.34 | 2.01 |
| XLY | 118.07 | 117.11 | -0.81 | 1.89 | 1.2 |
L'esatto SQL dietro ogni numero
WITH per_etf AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 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-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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_close / prior_close - 1) * 100 - min((day_close / prior_close - 1) * 100) OVER (), 2) AS pts_above_worst_sector,
day_dollar_bn
FROM per_etf
ORDER BY tickerIl comparto health care (XLV) ha guidato la classifica a 2.63%, seguito da utilities 2.23%, beni di prima necessità 2% e materiali 1.94%. La tecnologia (XLK) ha chiuso in fondo alla classifica a -2.71%, unico settore in calo di oltre un punto; consumer discretionary (-0.81%) e servizi di comunicazione (-0.13%) sono stati gli altri fondi in rosso, mentre gli otto rimanenti hanno chiuso in rialzo. La dispersione tra il migliore e il peggiore è stata di 5.34 punti percentuali. La divergenza tra DIA in rialzo e QQQ in calo ha interessato l’intero mercato, non soltanto quattro megacap. Per questo una linea advance-decline positiva mentre il Nasdaq scende non è una contraddizione.
Il momento clou della giornata: il sell-off dei titoli memory, secondo giorno
Il comparto che mercoledì aveva ceduto terreno è sceso ancora più nettamente giovedì. Sono cambiate l’ampiezza dei movimenti e la loro correlazione, non la causa.
| ticker | chiusura precedente | chiusura giornaliera | variazione (%) | massimo giornaliero | massimo giornaliero ET | minimo giornaliero | minimo giornaliero ET | escursione (%) | volume giornaliero ($ mld) |
|---|---|---|---|---|---|---|---|---|---|
| MU | 1033.29 | 975.77 | -5.57 | 1064.64 | 10:03 | 950.28 | 15:26 | 12.03 | 51.4 |
| SNDK | 2035.07 | 1743.59 | -14.32 | 2052.54 | 09:35 | 1693 | 15:26 | 21.24 | 26.57 |
| STX | 915.25 | 820.25 | -10.38 | 923.06 | 09:53 | 795.66 | 14:23 | 16.01 | 4.74 |
| WDC | 598.37 | 538.99 | -9.92 | 609.46 | 09:35 | 525.84 | 13:59 | 15.9 | 4.31 |
L'esatto SQL dietro ogni numero
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 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-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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 tickerSanDisk ha segnato -14.32%, Seagate -10.38%, Western Digital -9.92% e MU -5.57%, con $51.4 miliardi di controvalore scambiato su MU, circa una volta e mezza quello di SPY. MU e SanDisk hanno segnato i minimi in tarda seduta (15:26, 15:26 ET), mentre Seagate e Western Digital li hanno raggiunti prima (14:23, 13:59). Per il contesto: mercoledì e l’analisi approfondita di MU.
L’altra metà della rotazione, tra le megacap:
| ticker | chiusura precedente | chiusura giornaliera | variazione (%) | massimo giornaliero | massimo giornaliero ET | minimo giornaliero | minimo giornaliero ET | escursione (%) | volume giornaliero ($ mld) |
|---|---|---|---|---|---|---|---|---|---|
| AAPL | 294.25 | 308.22 | 4.75 | 309.42 | 15:57 | 293.68 | 09:30 | 5.36 | 18.36 |
| MSFT | 384.22 | 389.62 | 1.41 | 392.2 | 15:11 | 383.7 | 09:35 | 2.22 | 12.58 |
| NVDA | 197.58 | 194.51 | -1.55 | 200.06 | 10:03 | 192.35 | 13:40 | 4.01 | 21.18 |
| TSLA | 425.34 | 392.81 | -7.65 | 432.35 | 09:31 | 389.3 | 15:23 | 11.06 | 25.41 |
L'esatto SQL dietro ogni numero
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 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-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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 tickerAAPL è salito del 4.75% con un andamento a senso unico. Ha segnato il minimo alle 09:30 ET e il massimo alle 15:57, tre minuti prima della chiusura. TSLA ha invece seguito il movimento speculare, a -7.65%. MSFT ha guadagnato 1.41%; NVDA ha chiuso a -1.55%. Stesso indice, giornate opposte.
Dove si sono concentrati gli scambi
| ticker | classifica | volume in dollari (miliardi) | valore in dollari (milioni) | azioni (milioni) | percentuale del leader della classifica |
|---|---|---|---|---|---|
| MU | by dollars traded | 51.4 | None | 51.9 | 100 |
| SPY | by dollars traded | 32.7 | None | 43.9 | 63.6 |
| QQQ | by dollars traded | 31.3 | None | 43.7 | 60.9 |
| SNDK | by dollars traded | 26.57 | None | 14.6 | 51.7 |
| TSLA | by dollars traded | 25.41 | None | 63.6 | 49.4 |
| NVDA | by dollars traded | 21.18 | None | 108.6 | 41.2 |
| SOXS | by shares traded | 3.24 | None | 748.2 | 100 |
| TZA | by shares traded | 1.27 | None | 325.7 | 43.5 |
| LIMN | by shares traded | 0.04 | 42 | 245.7 | 32.8 |
| BITO | by shares traded | 1.71 | None | 204.9 | 27.4 |
L'esatto SQL dietro ogni numero
SELECT ticker, leaderboard, dollar_volume_bn, if(dollar_volume_bn < 1, dollar_volume_m, NULL) AS dollar_value_m, 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(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
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 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(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
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 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) DESCI $51.4 miliardi di MU hanno guidato il mercato per la quarta seduta consecutiva (lunedì, martedì, mercoledì), contro i $32.7 miliardi di SPY. I $26.57 miliardi di SanDisk hanno portato un secondo titolo del comparto memory tra i primi quattro. SOXS, l’ETF sui semiconduttori con leva inversa 3x, ha guidato la classifica per numero di azioni, con 748.2 milioni: i titoli a basso prezzo dominano il conteggio delle azioni, quelli più costosi il conteggio in dollari, mentre il volume relativo confronta ciascun titolo con la propria norma storica. Base: seduta regolare del 2 luglio, esclusa una quotazione con simbolo riutilizzato (ricevute).
| ora ET | azioni (miliardi) | percentuale del gruppo più grande |
|---|---|---|
| 09:30 | 2.13 | 60.5 |
| 10:00 | 1.64 | 46.4 |
| 10:30 | 1.64 | 46.5 |
| 11:00 | 1.41 | 40 |
| 11:30 | 1.05 | 29.7 |
| 12:00 | 1.03 | 29.2 |
| 12:30 | 0.96 | 27.3 |
| 13:00 | 0.87 | 24.7 |
| 13:30 | 0.85 | 24.2 |
| 14:00 | 0.89 | 25.3 |
| 14:30 | 0.81 | 23.1 |
| 15:00 | 1.05 | 29.8 |
| 15:30 | 3.53 | 100 |
L'esatto SQL dietro ogni numero
SELECT
et_time,
round(sum(shares) / 1e9, 2) AS shares_bn,
round(100 * sum(shares) / max(sum(shares)) OVER (), 1) AS pct_of_biggest_bucket
FROM
(
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
toFloat64(volume) AS shares
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'
UNION ALL
SELECT
'15:30' AS et_time,
toFloat64(size) AS shares
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-07-02 20:00:00' AND sip_timestamp < '2026-07-02 20:15:00'
AND has(conditions, 8)
)
GROUP BY et_time
ORDER BY et_time2.13 miliardi di azioni nella prima mezz’ora di contrattazioni, un minimo di 0.81 miliardi alle 14:30, 3.53 miliardi fino alla chiusura alla vigilia della festività. L’ultimo intervallo è stato il più consistente della giornata, perché l’asta di chiusura convoglia gli ordini pendenti in un unico print.
Il flusso degli ordini sulle opzioni: la weekly posticipata
| eseguiti di opzioni (milioni) | contratti (milioni) | percentuale delle call sul volume | percentuale di scadenze in giornata | contratti in scadenza giovedì 2 luglio (milioni) | eseguiti di venerdì 3 luglio | contratti settimanali del 10 luglio (milioni) | contratti mensili del 17 luglio (milioni) | contratti SPY (milioni) | contratti QQQ (milioni) | sottostante del contratto principale | strike del contratto principale | tipo di contratto principale | scadenza del contratto principale | volume del contratto principale | formato del volume del contratto principale | prezzo medio del contratto principale | strike principale meno chiusura SPY | chiusura SPY meno strike |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 13.15 | 80.96 | 58.4 | 47.4 | 38.38 | 0 | 9.64 | 8.82 | 13.96 | 8.5 | SPY | 740 | P | 2026-07-02 | 540403 | 540,403 | 0.499 | -4.8 | 4.8 |
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-02 00:00:00' AND sip_timestamp < '2026-07-03 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-02 13:30:00' AND window_start < '2026-07-02 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) = '260702') / sum(size), 1) AS same_day_expiry_pct,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702')) / 1e6, 2) AS thu_jul2_expiry_contracts_m,
countIf(substring(ticker, length(ticker) - 14, 6) = '260703') AS fri_jul3_expiry_prints,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710')) / 1e6, 2) AS jul10_weekly_contracts_m,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717')) / 1e6, 2) AS jul17_monthly_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,
top_contract.1 AS top_contract_underlying,
top_contract.2 AS top_contract_strike,
top_contract.3 AS top_contract_type,
top_contract.4 AS top_contract_expiry,
top_contract.5 AS top_contract_volume,
reverse(arrayStringConcat(extractAll(reverse(toString(assumeNotNull(top_contract.5))), '[0-9]{1,3}'), ',')) AS top_contract_volume_fmt,
round(top_contract.7, 3) AS top_contract_avg_price,
round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close,
round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'Sono stati scambiati 80.96 milioni di contratti su 13.15 milioni di eseguiti, e 47.4% di quei volumi è scaduto lo stesso giovedì. Per tutta la giornata non è stato eseguito alcun contratto con codice di scadenza 3 luglio (0 eseguiti), quindi il giovedì ha concentrato sia la scadenza giornaliera sia la weekly posticipata della settimana. Il contratto più scambiato è stato il put SPY a $740 con scadenza in giornata: 540,403 contratti a un premio medio di $0.499, mentre SPY ha chiuso 4.8 dollari sopra lo strike. Era quindi out of the money, ed era un put su un book nel quale martedì e mercoledì avevano visto soprattutto call. Le call hanno comunque rappresentato 58.4% dei volumi; la weekly successiva ha registrato 9.64 milioni di contratti e la mensile di luglio 8.82 milioni (meccanica della scadenza).
Il book delle quotazioni: quanto è costato negoziare
I prezzi dicono che cosa è successo; le quotazioni dicono quanto è costato. Il bid-ask spread è il pedaggio su ogni andata e ritorno, espresso in basis point rispetto al mid-price (un basis point è un centesimo di punto percentuale). Lo misuriamo in ogni seduta, ordinaria o meno. È questo che rende verificabile l’affermazione secondo cui «gli spread si sono ampliati».
| aggiornamenti del 2 luglio (milioni) | aggiornamenti del 1° luglio (milioni) | variazione percentuale giornaliera | aggiornamenti SPY del 2 luglio (milioni) | aggiornamenti QQQ del 2 luglio (milioni) | aggiornamenti MU del 2 luglio (milioni) |
|---|---|---|---|---|---|
| 597.22 | 449.15 | 33 | 5.42 | 7.56 | 1.01 |
L'esatto SQL dietro ogni numero
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-01')) / 1e6, 2) AS jul1_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / countIf(toDate(sip_timestamp) = toDate('2026-07-01')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'SPY') / 1e6, 2) AS jul2_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'QQQ') / 1e6, 2) AS jul2_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'MU') / 1e6, 2) AS jul2_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'Il national best bid and offer, cioè il miglior bid e la miglior offer dell’intero mercato consolidato, è stato aggiornato 597.22 milioni di volte il 2 luglio, contro 449.15 milioni il 1° luglio: un aumento di 33% in vista della chiusura. QQQ ha registrato 7.56 milioni di aggiornamenti, più dei 5.42 milioni di SPY; MU 1.01 milioni.
| ticker | spread mediano (bps) | spread mediano (centesimi) | multiplo dello spread SPY | aggiornamenti RTH (m) | quotazioni non valide scartate |
|---|---|---|---|---|---|
| SPY | 0.27 | 2 | 1 | 4.98 | 19064 |
| QQQ | 0.83 | 6 | 3.1 | 6.03 | 5934 |
| NVDA | 1.03 | 2 | 3.8 | 2.55 | 20398 |
| AAPL | 1.62 | 5 | 6 | 1.91 | 5193 |
| TSLA | 2.29 | 9 | 8.5 | 0.85 | 2699 |
| MU | 5.52 | 55 | 20.4 | 0.92 | 2442 |
| SNDK | 10.4 | 189 | 38.5 | 0.26 | 163 |
| WDC | 10.79 | 60 | 40 | 0.14 | 83 |
L'esatto SQL dietro ogni numero
SELECT
ticker,
round(med_bps, 2) AS median_spread_bps,
round(med_dollars * 100, 1) AS median_spread_cents,
round(med_bps / min(med_bps) OVER (), 1) AS times_the_spy_spread,
round(quote_updates / 1e6, 2) AS rth_updates_m,
invalid_quotes_dropped
FROM (
SELECT
ticker,
quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000,
toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_bps,
quantileExactIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price),
toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_dollars,
count() AS quote_updates,
countIf(NOT (toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price))) AS invalid_quotes_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'TSLA', 'NVDA', 'MU', 'SNDK', 'WDC')
AND sip_timestamp >= '2026-07-02 13:30:00' AND sip_timestamp < '2026-07-02 20:00:00'
GROUP BY ticker
)
ORDER BY median_spread_bps ASCLo spread mediano di SPY era pari a 0.27 basis point: circa 2 centesimi su un ETF da $744.8. QQQ si è attestato a 0.83 bps, NVDA a 1.03. I titoli che hanno registrato il calo maggiore erano anche i più costosi da negoziare: MU 5.52 bps, SanDisk 10.4, Western Digital 10.79, 40 volte lo spread di SPY. Attraversare il mercato su un paniere di titoli della memoria costava un multiplo rispetto all’esecuzione sull’indice, prima di qualsiasi price impact. Le quotazioni non valide, a un solo lato o crossed, vengono conteggiate per singolo titolo e non nascoste.
| spread mediano del 2 lug. (bps) | spread mediano precedente (bps) | 2 lug. meno precedente (bps) | posizione per spread più ampio | sessioni confrontate | sessione con spread più ampio (bps) |
|---|---|---|---|---|---|
| 0.27 | 0.27 | 0 | 11 | 22 | 0.409 |
L'esatto SQL dietro ogni numero
WITH per_day AS (
SELECT toDate(sip_timestamp) AS d,
quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000) AS med_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= '2026-06-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)
GROUP BY d
)
SELECT
round(anyIf(med_bps, d = toDate('2026-07-02')), 3) AS jul2_median_spread_bps,
round(quantileExact(0.5)(med_bps), 3) AS trailing_median_bps,
round(anyIf(med_bps, d = toDate('2026-07-02')) - quantileExact(0.5)(med_bps), 3) AS jul2_minus_trailing_bps,
arrayCount(x -> x > anyIf(med_bps, d = toDate('2026-07-02')), groupArrayIf(med_bps, d != toDate('2026-07-02'))) + 1 AS wider_rank,
count() AS sessions_compared,
round(max(med_bps), 3) AS widest_session_bps
FROM per_dayPer la liquidità era una seduta ordinaria, ed è proprio questo il risultato: lo spread mediano di SPY, pari a 0.27 bps, si colloca a 0 bps dalla mediana del mese precedente (0.27 bps), al 11 posto su 22 sedute per ampiezza, ben lontano dal massimo mensile di 0.409 bps. Una vendita concentrata in un contesto di mercato positivo non ha messo sotto pressione l’infrastruttura di negoziazione.
Tassi: pubblicato il dato del 2 luglio
| righe del 2 lug. | righe del 1 lug. |
|---|---|
| 1 | 1 |
L'esatto SQL dietro ogni numero
SELECT
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS jul2_rows,
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS jul1_rowsIl feed del Treasury è indietro di uno o due giorni rispetto al tape: alla prima pubblicazione, il dato di chiusura del 2 luglio non conteneva alcuna riga e questa pagina lo indicava senza fare supposizioni. Il dato è ora disponibile: 1 riga per il 2 luglio, 1 per il 1° luglio. Il pannello qui sotto mostra quindi la curva della seduta.
| punto della curva | rendimento del 2 lug. (%) | variazione giornaliera (bp) |
|---|---|---|
| 1 month | 3.7 | 3 |
| 3 month | 3.82 | -3 |
| 1 year | 3.96 | -4 |
| 2 year | 4.14 | -3 |
| 5 year | 4.23 | -1 |
| 10 year | 4.49 | 1 |
| 30 year | 4.98 | 1 |
| 2s10s spread | 0.35 | 4 |
L'esatto SQL dietro ogni numero
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jul2_yield_pct,
round((t.2 - t.3) * 100) AS one_day_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-02') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS p
)Alla chiusura, il Treasury decennale era a 4.49%, mentre il spread 2s10s era pari a 0.35 punti.
Il calendario dietro la seduta
| registrazioni ex-dividend | frazionamenti eseguiti | frazionamenti forward | frazionamenti reverse | registrazioni di frazionamento | IPO quotate | documenti SEC | documenti Form 4 degli insider | documenti 8-K | nomi delle IPO | articoli di notizie | editori di notizie | ticker più trattato | articoli sul ticker più trattato | CRWD frazionamento da | CRWD frazionamento a | CRWD chiusura precedente | CRWD chiusura giornaliera | CRWD ($ mln) | Nomi degli split con barre |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 322 | 8 | 5 | 3 | CRWD 4-for-1; FBIP 4-for-1; FNCSF 110-for-100; GMEX 1-for-9; GTCDF 1-for-5; SMTOY 8-for-1; UBYH 1-for-10; VLNT 10-for-1 | 2 | 5203 | 2109 | 258 | MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II | 201 | 3 | NVDA | 18 | 1 | 4 | 772.45 | 193.67 | 1473.51 | 2 |
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-02'
) 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-02'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news,
(
SELECT (count(), countIf(split_to > split_from), countIf(split_to < split_from),
arrayStringConcat(groupArray(concat(ticker, ' ', toString(split_to), '-for-', toString(split_from))), '; '))
FROM global_markets.stocks_splits
WHERE execution_date = '2026-07-02' AND ticker NOT IN ('SPCX')
) AS splits
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-02') AS ex_dividend_records,
splits.1 AS splits_executed,
splits.2 AS forward_splits,
splits.3 AS reverse_splits,
splits.4 AS split_records,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS filings_8k,
(SELECT arrayStringConcat(groupArray(concat(ticker, ' — ', issuer_name)), '; ') FROM (
SELECT ticker, issuer_name FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02' ORDER BY ticker
)) AS ipo_names,
news.1 AS news_articles,
news.2 AS news_publishers,
top_news.1 AS most_covered_ticker,
top_news.2 AS most_covered_articles,
(SELECT any(split_from) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_from,
(SELECT any(split_to) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_to,
(SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00') AS crwd_prev_close,
(SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_day_close,
(SELECT round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_dollar_m,
(SELECT count() FROM (
SELECT ticker FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-02')
AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY ticker
)) AS split_names_with_bars322 titoli hanno raggiunto la data ex-dividend, sono arrivate 2 nuove quotazioni (MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II) e l’indice SEC ha registrato 5203 filing durante la festività: 2109 Form 4, 258 Form 8-K. Il news feed ha raccolto 201 articoli pubblicati da 3 editori (NVDA più seguito, 18 dei quali).
Gli split possono trarre in inganno chi legge i prezzi di chiusura grezzi. CRWD ha effettuato uno split forward 4-per-1, quindi il tape non rettificato mostra $772.45 mercoledì e $193.67 giovedì: un falso calo che in realtà riflette l’assegnazione di quattro nuove azioni per ogni vecchia azione. Non è stato l’unico caso: sono stati eseguiti 8 split, 5 forward e 3 reverse (la colonna split_records li elenca). Un reverse split produce l’effetto opposto: un prezzo grezzo che balza da un giorno all’altro. Solo 2 di questi titoli sono stati scambiati sul nostro tape; il turnover di $1473.51 milioni di CRWD è l’unico abbastanza rilevante da contaminare uno screen, e tutti gli screen dei mover qui escludono il titolo.
In programma
Un dato di calendario, non una previsione, su ciò che le tabelle indicavano per le prossime sedute.
| Barre regolari SPY del 6 lug. | Record ex-dividend del 6 lug. | Ex-dividend household del 6 lug. | Split del 6 lug. | Prossima chiusura programmata | Nome della prossima chiusura | Stato della prossima chiusura | Ultimo settlement SI | Giorni dall'ultimo settlement SI |
|---|---|---|---|---|---|---|---|---|
| 390 | 119 | JPM | 15 | 2026-09-07 | Labor Day | closed | 2026-06-30 | 2 |
L'esatto SQL dietro ogni numero
SELECT
(SELECT count() 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 jul6_spy_regular_bars,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS exdiv_records_jul6,
(SELECT arrayStringConcat(groupArray(ticker), ', ') FROM global_markets.stocks_dividends
WHERE ex_dividend_date = '2026-07-06'
AND ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'XOM', 'KO', 'PG', 'WMT', 'CVX', 'HD')) AS household_exdivs_jul6,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_jul6,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02') AS next_scheduled_closure,
(SELECT any(name) FROM global_markets.stocks_market_holidays
WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_name,
(SELECT any(status) FROM global_markets.stocks_market_holidays
WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_status,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest
WHERE settlement_date <= '2026-07-02') AS latest_si_settlement,
(SELECT dateDiff('day', max(settlement_date), toDate('2026-07-02')) FROM global_markets.stocks_short_interest
WHERE settlement_date <= '2026-07-02') AS si_settlement_age_daysLunedì 6 luglio la seduta è ripartita con 390 barre complete, verificate sulle barre stesse. La giornata comprendeva 119 registrazioni ex-dividend, tra cui un nome noto su dieci titoli esaminati (JPM), e 15 esecuzioni frazionate. Prossima chiusura programmata: Labor Day, 2026-09-07 (closed). L’open interest era, come sempre, un dato già superato: l’ultimo settlement disponibile risaliva a 2026-06-30, cioè 2 giorni prima; la pubblicazione seguiva il settlement di circa due settimane (perché).
La seduta verificata e il venerdì che non c’è stato
| Prima barra SPY (ET) | Ultima barra SPY (ET) | Barre minute SPY | Barre della sessione regolare | Sessioni giornaliere | Barre SPY del 3 lug. |
|---|---|---|---|---|---|
| 04:00 | 19:59 | 886 | 390 | 1 | 0 |
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-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-02 00:00:00' AND window_start < '2026-07-03 00:00:00'Il 2 luglio è stata una seduta completa, non una chiusura anticipata: le barre di SPY vanno dalle 04:00 alle 19:59, ora di New York (barre pre-market e after-hours incluse), con esattamente 390 barre nella finestra regolare. Venerdì 3 luglio SPY ha registrato 0 barre, perché il mercato è rimasto completamente chiuso per l’Independence Day, con il 4 luglio caduto di sabato. La settimana di quattro sedute: il riepilogo della settimana.
FAQ
Perché il Dow è salito mentre il Nasdaq è sceso il 2 luglio 2026?
I due indici includono società diverse: DIA ha chiuso a 1.04%, QQQ a -1.71%. Anche la classifica settoriale mostra la stessa divergenza: health care, utilities e beni di prima necessità in testa, tecnologia all’ultimo posto con -2.71%, per un divario di 5.34 punti percentuali tra il migliore e il peggiore.
Il mercato azionario era aperto il venerdì della settimana dell’Independence Day?
No. L’Independence Day è caduto di sabato e le borse lo hanno osservato con una chiusura completa venerdì, il giorno successivo a questa seduta: il nostro tape mostra 0 barre a un minuto di SPY per quella giornata.
Che effetto ha uno stock split forward sul prezzo dell’azione?
Moltiplica per quattro il numero di azioni e divide per quattro il prezzo; il valore della posizione resta invariato. CRWD, 2 luglio: una chiusura non rettificata a $772.45 mercoledì e a $193.67 giovedì generano un calo fittizio su qualsiasi screener che non tenga conto dello split.
Quanto erano ampi gli spread denaro-lettera il 2 luglio 2026?
Lo spread quotato mediano di SPY era pari a 0.27 punti base del mid-price durante il normale orario di contrattazione, 11 su 22 sedute precedenti in termini di ampiezza: una giornata ordinaria. I singoli titoli mostravano spread più ampi: MU 5.52 punti base, WDC 10.79.
Note sui dati
- Il volume in dollari è una proxy per minuto: prezzo di chiusura × volume, sommato per barra.
- La mezz’ora finale del pannello dei volumi comprende gli eseguiti dell’asta di chiusura. Le barre a un minuto escludono ogni eseguito d’asta; per questo il pannello a mezz’ora aggiunge al suo intervallo finale ogni trade con la condizione di vendita dell’eseguito di chiusura, registrato dalle 16:00 alle 16:15 ET sul consolidated tape.
- L’eseguito Treasury del 2 luglio è arrivato dopo la prima pubblicazione; la nota originale ne segnalava l’assenza con una ricevuta del numero di righe. Questa revisione include l’eseguito e mostra la ricevuta.
- La variazione grezza della chiusura di CRWD è un effetto dello split ed è esclusa dalle schermate dei titoli con le maggiori variazioni.
Note complete sui dati
- Il quadro settoriale comprende gli undici fondi SPDR Select Sector (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY): un paniere fisso e dichiarato, non un campo settoriale fornito da un vendor.
- I conteggi del quote tape sono aggregati in base alla data UTC del timestamp SIP; una seduta estiva rientra in un solo giorno UTC.
- Una quotazione di giugno con ticker riutilizzato è esclusa dalle classifiche (ricevute); l’analisi forense dei tick è riportata negli approfondimenti.
Metodologia
- Il periodo è una sessione di trading (1 sessione, verificata sulle barre osservate). I timestamp sono archiviati in UTC e convertiti nell’orario di New York all’interno delle query; per “close” si intende l’ultima barra al minuto della sessione regolare, mentre le variazioni giornaliere confrontano il 2 luglio con il 1° luglio. La chiusura del 3 luglio è stata verificata sulle barre e non è mai stata presunta.
- Gli spread sono espressi (ask meno bid) in basis point del mid-price, come mediana degli aggiornamenti NBBO nelle ore regolari, su un quantile deterministico. I decimali vengono convertiti in float prima dei calcoli dei rapporti; le scadenze delle opzioni vengono analizzate nuovamente a partire dal ticker OCC. Ogni pannello viene letto una sola volta, al momento della stesura, tramite il percorso di sola lettura con accesso controllato.
Grafico, tabella e SQL costituiscono un unico oggetto. Incolla qualsiasi pannello nel terminale Strasmore e personalizzalo. Sessione precedente: 1° luglio. La settimana: la settimana festiva di quattro sessioni.