L'ultima settimana di giugno è stata composta da quattro sessioni: il mercato è rimasto aperto da lunedì 29 giugno a giovedì 2 luglio, per poi chiudere venerdì 3 luglio per l'Independence Day — il 4 luglio era sabato, quindi la festività è stata osservata il venerdì precedente. I dati relativi a tale chiusura, e per tutto il resto, sono riportati nei pannelli. Il dato più rilevante della settimana si trova nella tabella dei volumi: un produttore di chip per memorie ha scambiato $190.2 miliardi in quattro giorni — il 50% in più rispetto al volume di SPY. Ogni numero presente in questa pagina è il risultato di una query salvata; espandendo qualsiasi pannello è possibile visualizzare la SQL esatta.
La settimana in borsa
Il mercato ha recuperato il calo della settimana precedente o lo ha accentuato? Il tabellone indica un recupero: questo pannello calcola la variazione settimanale di ogni ETF indicizzato e, per confronto, quella della settimana precedente — entrambi i dati derivano dalla stessa query.
L'esatto SQL dietro ogni numero
SELECT ticker,
round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS prior_friday_close,
round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS week_close,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
/ argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS week_change_pct,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
/ argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-18') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS prior_week_change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= toDateTime('2026-06-15 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY ticker
ORDER BY tickerSPY ha chiuso la settimana a $744.8, con un aumento del 2.2% rispetto al venerdì precedente — dopo una settimana di -2.3%. QQQ è salito del 1% dopo una settimana precedente di -4.6%, DIA ha guadagnato il 2% e IWM ha chiuso a 297.53 — 0% sulla settimana, invariato mentre gli indici large-cap sono cresciuti.
La settimana contro l'ultimo anno
L'esatto SQL dietro ogni numero
SELECT round(anyIf(ret, wk = toDate('2026-06-29')), 2) AS week_2026_pct,
arrayCount(x -> x > anyIf(ret, wk = toDate('2026-06-29')), groupArrayIf(ret, wk != toDate('2026-06-29'))) + 1 AS rank_best,
count() AS weeks_compared,
toString(min(wk)) AS first_week,
anyIf(sessions, wk = toDate('2026-06-29')) AS sessions_this_week
FROM (
SELECT toStartOfWeek(toDate(toTimeZone(window_start, 'America/New_York')), 1) AS wk,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2025-06-29 00:00:00')
AND window_start < toDateTime('2026-07-03 00:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY wk
HAVING sessions >= 3
)La variazione misurata dall'apertura alla chiusura durante la settimana — dalla prima barra in sessione regolare di lunedì all'ultima di giovedì — offre una prospettiva leggermente diversa rispetto al punteggio di chiusura di venerdì riportato sopra. Il risultato indica che la settimana di SPY si posiziona al 14 posto rispetto alle ultime 53 settimane (il rango 1 è il migliore): una posizione mediana, in un anno di riferimento che ha incluso sia il selloff che la successiva ripresa. Le settimane con meno di tre sessioni sono escluse da un filtro di sicurezza; questa settimana ne ha contate 4. Il contesto storico varia in base alla finestra temporale — i riepiloghi per mese, trimestre e semestre confrontano i rispettivi periodi con ogni anno della serie storica.
Quattro sessioni, poi un giorno di festa
Una settimana di trading di cinque giorni è un'ipotesi, non un fatto — questa settimana ha avuto quattro sessioni. Il pannello dei dati conferma la chiusura tramite il tape: zero barre SPY registrate il 3 luglio rispetto a 1560 barre della sessione regolare durante i quattro giorni di trading.
L'esatto SQL dietro ogni numero
SELECT
(SELECT uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')) AS sessions_in_week,
(SELECT countIf((toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')) AS regular_bars_week,
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-03 00:00:00') AND window_start < toDateTime('2026-07-04 00:00:00')) AS jul3_spy_barsL'esatto SQL dietro ogni numero
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS spy_close,
round((argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / any(prev) - 1) * 100, 1) AS change_pct,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
INNER JOIN (
SELECT d, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-26 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY d
)
) AS p ON toDate(toTimeZone(window_start, 'America/New_York')) = p.d
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY et_date
ORDER BY et_dateTutte e quattro le sessioni hanno seguito il normale orario — le 1560 barre della sessione regolare corrispondono esattamente a quattro sessioni da 390 minuti. La settimana si è chiusa sostanzialmente piatta (-0.1%) il 2026-07-02, in vista della festività — i guadagni settimanali sono stati accumulati nelle prime tre sessioni.
Breadth: quanto è cresciuto il mercato
La crescita di un singolo indice può nascondere un calo del mercato. Questo pannello conta ogni ticker con una chiusura su entrambi i lati della settimana; l'elenco degli esclusi viene esposto invece di essere rimosso silenziosamente.
L'esatto SQL dietro ogni numero
SELECT
countIf(chg > 0 AND NOT dropped) AS advancers,
countIf(chg < 0 AND NOT dropped) AS decliners,
countIf(chg = 0 AND NOT dropped) AS unchanged,
countIf(dropped) AS dropped_by_liquidity_filter,
count() AS tickers_with_both_closes
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
- argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS chg,
sumIf(toFloat64(close) * toFloat64(volume), toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29')) < 1e6 AS dropped
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-06-26 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY ticker
HAVING countIf(toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) > 0
AND countIf(toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) > 0
)5047 ticker sono cresciuti durante la settimana rispetto a 3525 in calo (39 invariati) — il rialzo è stato diffuso e non limitato al solo livello dell'indice. Il filtro sulla liquidità ha escluso 3163 ticker con scambi inferiori a un milione di dollari per tutta la settimana; questi sono conteggiati qui, non nascosti.
I leader del mercato: un titolo supera gli ETF
L'esatto SQL dietro ogni numero
SELECT ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS dollar_bn,
round(100 * sum(toFloat64(close) * toFloat64(volume)) / max(sum(toFloat64(close) * toFloat64(volume))) OVER (), 1) AS pct_of_leader
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-06-29 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
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_bn DESC
LIMIT 8MU ha guidato l'intero mercato con un volume scambiato in dollari di 190.2 miliardi durante l'orario regolare — SPY, il più grande ETF, ha registrato 66.4% di tale volume. Il fatto rilevante della settimana è che una singola società ha scambiato più del fondo indicizzato di default del mercato per un'intera settimana; questa pagina riporta l'entità del flusso, non la sua causa. Base: 29 giugno–3 luglio durante l'orario regolare; è stata esclusa una quotazione di giugno con simbolo riutilizzato in attesa di verifica dell'entità — i relativi dati si trovano in un approfondimento dedicato.
La festività ha spostato le scadenze settimanali
Cosa succede alla scadenza settimanale di venerdì quando il venerdì è festivo? Il tape delle opzioni fornisce una risposta diretta: questo pannello estrae la data di scadenza da ogni contratto scambiato durante la settimana e le ordina.
L'esatto SQL dietro ogni numero
SELECT concat('20', substring(expiry_raw, 1, 2), '-', substring(expiry_raw, 3, 2), '-', substring(expiry_raw, 5, 2)) AS expiry,
round(sum(size) / 1e6, 1) AS contracts_m,
round(100 * sum(size) / max(sum(size)) OVER (), 1) AS pct_of_biggest
FROM (
SELECT substring(ticker, length(ticker) - 14, 6) AS expiry_raw, size
FROM global_markets.options_trades
WHERE sip_timestamp >= toDateTime64('2026-06-29 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-03 00:00:00', 9)
)
GROUP BY expiry
ORDER BY contracts_m DESC
LIMIT 6La scadenza più intensa della settimana è stata quella di 2026-07-02 — un giovedì — con 74.1 milioni di contratti, 42.2% in più rispetto alla data successiva. Con la chiusura del 3 luglio, la scadenza "di venerdì" della settimana si è spostata a giovedì; le scadenze giornaliere da lunedì a mercoledì e quella mensile del 17 luglio completano la tabella. Le date di scadenza vengono estratte nuovamente dal simbolo OCC di ogni contratto (la colonna delle scadenze del tape non è affidabile); i meccanismi delle settimane di scadenza come questa sono spiegati in la spiegazione sulle festività.
Tassi: il decennale in rialzo
L'esatto SQL dietro ogni numero
SELECT toString(date) AS d,
round(yield_10_year, 2) AS y10,
round(yield_2_year, 2) AS y2,
round((yield_10_year - yield_2_year) * 100, 0) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-06-26') AND date <= toDate('2026-07-02')
ORDER BY dateIl decennale è passato da 4.38% dello scorso venerdì a 4.48% entro le 2026-07-01, mentre lo 2s10s spread è rimasto vicino ai 31 punti base. Una precisazione: il dato sul rendimento a due anni di luglio non era ancora stato elaborato al momento della generazione di questa pagina (4 righe fino al 1° luglio) — il pannello lo includerà alla prossima generazione.
Il calendario: fine trimestre e un giorno di deposito mancante
L'esatto SQL dietro ogni numero
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= toDate('2026-06-29') AND ex_dividend_date <= toDate('2026-07-02')) AS ex_div_events,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= toDate('2026-06-29') AND execution_date <= toDate('2026-07-02')) AS splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= toDate('2026-06-29') AND listing_date <= toDate('2026-07-02')) AS ipos,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-29')) AS filings_jun29,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS filings_jun30,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-07-01')) AS filings_jul1,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-07-02')) AS filings_jul2,
(SELECT count() FROM global_markets.stocks_news WHERE published_utc >= toDateTime('2026-06-29 00:00:00') AND published_utc < toDateTime('2026-07-03 00:00:00')) AS news_articlesLa settimana ha registrato eventi ex-dividend 2217, split 48 e nuove quotazioni 7 all'inizio del trimestre. Le colonne dei depositi mostrano un'anomalia nella qualità dei dati: l'indice dei filing SEC riporta 4439 depositi il 29 giugno e 4282 il 1° luglio, ma solo 31 il 30 giugno — l'ultimo giorno del trimestre. I giorni di fine trimestre dell'anno precedente contano migliaia di unità. La lacuna riguarda il feed dei dati e non i depositi effettivi delle società; qualsiasi conteggio di filing di giugno o del Q2 che includa il 30 giugno risulterà sottostimato finché l'indice non effettuerà il backfill. Si tratta di un pattern di fine mese relativo al 2026 — la nota diagnostica ne fornisce le prove — riportato qui e nei riepiloghi di giugno e Q2.
Le posizioni short: un file troncato e tre completi
L'esatto SQL dietro ogni numero
SELECT toString(date) AS d,
uniqExact(ticker) AS tickers_on_file,
max(ticker) AS alphabetical_end,
round(100 * sum(toFloat64(short_volume)) / sum(toFloat64(total_volume)), 1) AS marked_short_pct
FROM (
SELECT date, ticker, any(short_volume) AS short_volume, any(total_volume) AS total_volume
FROM global_markets.stocks_short_volume
WHERE date >= toDate('2026-06-29') AND date <= toDate('2026-07-02')
GROUP BY date, ticker
)
GROUP BY date
ORDER BY dateIl volume off-exchange è risultato basso, circa 48.8% a metà settimana: si tratta di normale market-maker plumbing, non di un segnale di squeeze. Le colonne sulla copertura riportano l'avvertenza: il file del 29 giugno è troncato per l'intero mercato (5489 ticker che terminano con "SSUS" rispetto a circa 15.000 che terminano con "ZYME" nei giorni completi), pertanto il 45.8% del 29 giugno è calcolato su un file parziale. L'analisi approfondita del 29 giugno contiene l'esame completo dell'intero mercato.
Note sui dati
Note complete sui dati
- Il 3 luglio è stata una chiusura TOTALE, non una chiusura anticipata. Il 4 luglio 2026 è caduto di sabato; NYSE e Nasdaq hanno osservato la festività venerdì 3 luglio — 0 SPY ha registrato barre quel giorno. Una nota sui dataset emersa durante il ricaricamento di questa pagina: la tabella exchange-calendar è un feed rotante delle prossime festività, e la riga del 3 luglio è stata rimossa una volta passata la festività (era presente nella prima edizione di questa pagina), pertanto il dato di chiusura corrisponde al giorno con zero barre nel tape; i dettagli tecnici sono in la spiegazione sulle festività.
- Lo short interest termina con il settlement del 15 giugno. Il settlement bisettimanale di fine giugno non era ancora stato pubblicato al momento della generazione di questa pagina; nessun dato qui presente lo utilizza, e il riepilogo di giugno contiene la disclosure completa. Questo post verrà rigenerato non appena i dati saranno disponibili.
- Il gap dell'indice di filing del 30 giugno è indicato inline sopra; il print Treasury del 2 luglio è in attesa di ingestione.
- Il file FINRA short-volume del 29 giugno è troncato su tutto il mercato; il relativo rapporto è mostrato con la sua copertura inline.
- Esclusione del volume-leader: un listing di giugno scambia sotto un simbolo riutilizzato ed è escluso dalla leaderboard in attesa della verifica dell'entità (il relativo post contiene le prove).
Metodologia
- Il periodo va dal 29 giugno al 2 luglio 2026 — le quattro sessioni di trading della settimana; il 3 luglio è stata una festività di mercato. I limiti delle sessioni sono verificati tramite le candele osservate e non sono mai assunti (il dataset del calendario della borsa riporta solo le festività imminenti — consultare la nota sui dati).
- I timestamp sono memorizzati in UTC e filtrati con limiti UTC grezzi; gli orari regolari in questa settimana (EDT) sono 13:30–20:00 UTC. Le chiusure corrispondono all'ultima candela al minuto dell'orario regolare; il volume in dollari è il prodotto tra il prezzo di chiusura al minuto e il volume al minuto, sommato durante l'orario regolare.
- I dati settimanali sono confrontati con la chiusura del venerdì precedente, calcolata ex novo nella stessa query di questa settimana — mai letti da un valore memorizzato. Il ranking dell'ultimo anno viene ricalcolato ogni settimana in modo identico (orari regolari secondo l'orario Eastern, guardia alla sessione minima, limite superiore fissato alla fine di questa settimana).
- La generazione avviene tramite il percorso di sola lettura protetto; la pagina pubblica non interroga mai i dati live. Stato del warehouse al 5 luglio 2026.
Questa è la prima edizione del recap settimanale fisso — l'edizione della prossima settimana coprirà il periodo 6–10 luglio e rimanderà a questa pagina. Il recap giornaliero del 29 giugno analizza il lunedì con dettagli a livello giornaliero.