riepilogo mercato settimana 20 luglio 2026
La prima settimana intera dopo la scadenza mensile delle opzioni di luglio: punteggio indici, dispersione settoriale, ampiezza settimanale e flussi di capitale.
La settimana del 20 luglio 2026 è stata la prima settimana intera dopo la scadenza mensile delle opzioni di luglio, e ha registrato 5 sedute senza chiusure al suo interno. La variazione close-over-close settimanale dello SPY è stata pari a -0.59%, e misurata open-to-close rispetto all'anno mobile di settimane si è classificata 43 su 53. Ogni dato che segue è letto da una query memorizzata, e ogni finestra è ancorata a date esplicite, quindi rieseguendo la SQL si ottengono gli stessi valori.
La settimana in borsa
Le variazioni settimanali vanno dalla chiusura regolare di venerdì 17 luglio a quella di venerdì 24 luglio. L'ultima colonna riporta la settimana precedente, così le due sono affiancate. Le righe sono in ordine alfabetico.
L'esatto SQL dietro ogni numero
SELECT ticker,
round(argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00'), 2) AS prior_week_close,
round(argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'), 2) AS week_close,
round((argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00')
/ argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00') - 1) * 100, 2) AS week_change_pct,
round((argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
/ argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00') - 1) * 100, 2) AS prior_week_change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND ((window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')
OR (window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'))
GROUP BY ticker
ORDER BY tickerNella settimana: DIA si è mossa di -0.38%, IWM di -0.98%, QQQ di -1.59% e SPY di -0.59%, per una chiusura a $738.85. I valori della settimana precedente, nello stesso ordine alfabetico, erano -0.95%, -0.63%, -4.17% e -1.55%. Quanto siano distanti tra loro i quattro indici è la prima cosa che un tabellone misura, e non sempre è una distanza piccola.
La settimana rispetto all'anno mobile
Il dato di una singola settimana dice poco senza la distribuzione sottostante. Questo pannello ricalcola ogni settimana mobile con la stessa logica, da apertura a chiusura della sessione regolare, e classifica quella corrente al suo interno.
L'esatto SQL dietro ogni numero
SELECT round(anyIf(ret, wk = toDate('2026-07-20')), 2) AS week_open_to_close_pct,
arrayCount(x -> x > anyIf(ret, wk = toDate('2026-07-20')), groupArrayIf(ret, wk != toDate('2026-07-20'))) + 1 AS rank_best,
count() AS weeks_compared,
toString(min(wk)) AS first_week,
anyIf(sessions_measured, wk = toDate('2026-07-20')) 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_measured,
(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-07-21 00:00:00')
AND window_start < toDateTime('2026-07-25 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_measured >= 3
)Misurata in questo modo, SPY ha reso -1.1% e si è classificata 43 su 53 settimane a ritroso fino a 2025-07-21. Nota il divario di definizione: questo dato parte dalla prima apertura della sessione regolare della settimana, mentre il tabellone sopra parte dalla chiusura della settimana precedente. Entrambi sono etichettati ovunque compaiano.
Cinque sedute, un unico arco
L'esatto SQL dietro ogni numero
SELECT toString(d) AS date,
round(c, 2) AS spy_close,
round((c / prev_c - 1) * 100, 2) AS change_pct,
round(shares_m, 1) AS spy_shares_m
FROM (
SELECT d, c, shares_m,
lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS c,
toFloat64(sum(volume)) / 1e6 AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)
)
WHERE d >= '2026-07-20'
ORDER BY dateSeduta per seduta, la variazione di SPY è stata -0.15% lunedì, 0.84% martedì, -0.12% mercoledì, -1.22% giovedì e 0.08% venerdì, chiudendo a $738.85 su 40.1 milioni di azioni. Il dato di lunedì è calcolato rispetto alla chiusura del 17 luglio, la seduta immediatamente precedente il periodo.
Ampiezza, sessione per sessione
Un livello di indice è un singolo numero. L'ampiezza conta quante azioni si sono mosse insieme ad esso, ed è il numero che decide se una settimana positiva è stata ampia o ristretta.
L'esatto SQL dietro ogni numero
SELECT toString(d) AS date, advancers, decliners, unchanged, measured_names
FROM (
SELECT d,
countIf(c > prev_c) AS advancers,
countIf(c < prev_c) AS decliners,
countIf(c = prev_c) AS unchanged,
count() AS measured_names
FROM (
SELECT d, c, dv,
lagInFrame(c) OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
)
)
WHERE d >= '2026-07-20' AND prev_c > 0 AND dv >= 5000000
GROUP BY d
)
ORDER BY dateLunedì, 1268 dei 3945 titoli misurati sono saliti e 2632 sono scesi. Venerdì la suddivisione era di 2273 in rialzo contro 1635 in ribasso, su 3950 titoli. I titoli senza una chiusura in entrambe le direzioni di una sessione sono esclusi, motivo per cui il conteggio misurato oscilla leggermente di giorno in giorno.
La stessa domanda posta una volta, sull'intera settimana:
L'esatto SQL dietro ogni numero
SELECT
countIf(cw > cp AND liquid) AS advancers,
countIf(cw < cp AND liquid) AS decliners,
countIf(cw = cp AND liquid) AS unchanged,
countIf(liquid) AS measured_names,
countIf(NOT liquid) AS dropped_by_liquidity_filter,
round(100.0 * countIf(cw > cp AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
SELECT ticker, cp, cw, dv >= 5000000 AS liquid
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker
HAVING cp > 0 AND cw > 0
)
)Su 6100 titoli che superano la soglia di fatturato di cinque milioni di dollari nelle ore regolari, 2437 hanno chiuso sopra la chiusura del 17 luglio e 3630 hanno chiuso sotto, con una quota di rialzisti del 40%. Il filtro di liquidità ha accantonato ulteriori 5099 titoli che hanno scambiato al di sotto di tale soglia durante la settimana. Essi vengono conteggiati qui, anziché essere scartati silenziosamente.
Il tabellone settoriale
Gli undici ETF settoriali SPDR, dal 17 al 24 luglio, ordinati dal migliore al peggiore.
L'esatto SQL dietro ogni numero
SELECT sector, week_pct, round(max(week_pct) OVER () - week_pct, 2) AS points_behind_best
FROM (
SELECT multiIf(ticker = 'XLK', 'Technology', ticker = 'XLC', 'Communications', ticker = 'XLE', 'Energy',
ticker = 'XLF', 'Financials', ticker = 'XLI', 'Industrials', ticker = 'XLB', 'Materials',
ticker = 'XLP', 'Staples', ticker = 'XLRE', 'Real Estate', ticker = 'XLU', 'Utilities',
ticker = 'XLV', 'Health Care', 'Consumer Discretionary') AS sector,
round((cw / cp - 1) * 100, 2) AS week_pct
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw
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-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'))
GROUP BY ticker
HAVING cp > 0 AND cw > 0
)
)
ORDER BY week_pct DESCEnergy si è piazzato in cima alla classifica con 3.33%. Consumer Discretionary si è piazzato in fondo con -5.2%, 8.53 punti percentuali dietro. Questo divario è la dispersione settoriale della settimana, e vale la pena leggerlo da solo: una settimana in cui tutti gli undici si trovano entro un punto l'uno dall'altro è un mercato molto diverso da uno in cui lo spread arriva a due cifre.
Dove sono finiti i dollari
L'esatto SQL dietro ogni numero
SELECT ticker, week_dollar_bn, round(100 * week_dollar_bn / max(week_dollar_bn) OVER (), 1) AS pct_of_leader
FROM (
SELECT ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS week_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY week_dollar_bn DESC
LIMIT 8
)
ORDER BY week_dollar_bn DESCMU ha registrato 158.1 miliardi di dollari di scambi in orario regolare nelle cinque sedute, superando SPY con 133.9 miliardi e QQQ con 101.5 miliardi. Ottava in classifica, AAPL, ha scambiato 34.5% dei dollari del leader. I record di scambi mostrano dove il mercato ha speso la settimana a discutere, e non devono necessariamente coincidere con il prezzo. La versione per singolo titolo di questa misura è il volume relativo.
I maggiori movimenti della settimana
I frazionamenti modificano il prezzo senza alterare il valore: un reverse split produce un falso guadagno a quattro cifre, un forward split un falso crollo della stessa entità. La settimana ha registrato 25 reverse split e 11 forward split, ed entrambe le tabelle sottostanti escludono qualsiasi titolo il cui frazionamento sia stato eseguito tra la chiusura del 17 luglio e quella del 24 luglio, l'esatto intervallo in cui viene misurata la variazione. Entrambe richiedono inoltre un turnover di cinque milioni di dollari nelle ore regolari.
L'esatto SQL dietro ogni numero
SELECT ticker, board, week_pct, week_dollar_m, sessions_traded,
round(100 * week_dollar_m / max(week_dollar_m) OVER (), 1) AS pct_of_dollar_max
FROM (
SELECT 'gainers' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct,
round(dv / 1e6, 1) AS week_dollar_m, sessions_traded
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-20 13:30:00') AS sessions_traded
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker NOT IN ('SPCX')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-17' AND execution_date <= '2026-07-24')
AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker
HAVING cp > 0 AND cw > 0 AND dv >= 5000000
)
ORDER BY week_pct DESC
LIMIT 10
UNION ALL
SELECT 'decliners' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct,
round(dv / 1e6, 1) AS week_dollar_m, sessions_traded
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-20 13:30:00') AS sessions_traded
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker NOT IN ('SPCX')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-17' AND execution_date <= '2026-07-24')
AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker
HAVING cp > 0 AND cw > 0 AND dv >= 5000000
)
ORDER BY week_pct ASC
LIMIT 10
)
ORDER BY board DESC, abs(week_pct) DESCEssere presenti in una delle due tabelle ha richiesto un movimento reale. Il guadagno più contenuto mostrato è salito del 92.3%, e il calo più contenuto ha registrato -47.8%. Agli estremi, STAK si è mosso del 383.7% su 251.6 milioni di dollari scambiati, e LBGJ si è mosso del -98.8% su 47.7 milioni. Quel calo si avvicina all'intero valore quotato del titolo, quindi la tabella include la propria ricevuta: LBGJ ha stampato barre nelle ore regolari in 5 delle cinque sedute, e nessun frazionamento è stato eseguito contro di esso tra le due chiusure.
Lo spread quotato, sessione per sessione
Il prezzo è il titolo principale. Il costo per eseguire l'operazione è lo spread quotato, misurato qui su SPY una sessione alla volta, direttamente dal nastro NBBO grezzo e non da alcun riepilogo.
L'esatto SQL dietro ogni numero
SELECT toString(toDate(sip_timestamp)) AS date,
round(quantileExactIf(0.5)(
10000 * (toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),
bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price), 2) AS median_spread_bps,
round(count() / 1e6, 2) AS quote_updates_m,
countIf(bid_price <= 0 OR ask_price <= 0) AS one_sided_quote_count,
countIf(bid_price > ask_price AND bid_price > 0 AND ask_price > 0) AS crossed_quote_count
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= '2026-07-20 13:30:00'
AND sip_timestamp < '2026-07-24 20:00:00'
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY toDate(sip_timestamp)
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
ORDER BY toDate(sip_timestamp)Lo spread quotato mediano di SPY è stato di 0.27 punti base del prezzo medio lunedì e di 0.27 venerdì, su 3.89 milioni e 4.4 milioni di aggiornamenti NBBO. Le ultime due colonne sono la trasparenza, non il risultato: 0 quotazioni unilaterali e 1084 quotazioni incrociate sono state conteggiate nella mediana di lunedì, anziché essere scartate silenziosamente. Una quotazione incrociata, con denaro sopra lettera, è un normale artefatto di un feed consolidato assemblato da molteplici piazze in tempo reale.
La settimana delle opzioni dopo la scadenza mensile
La scadenza mensile di luglio è caduta il venerdì prima dell'inizio di questa settimana, quindi ogni contratto scambiato in queste cinque sessioni ne è sopravvissuto. Tempismo della scadenza imposta il ritmo su cui opera la folla della stessa giornata.
L'esatto SQL dietro ogni numero
SELECT toString(toDate(sip_timestamp)) AS date,
round(toFloat64(sum(size)) / 1e6, 1) AS contracts_m,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = formatDateTime(toDate(sip_timestamp), '%y%m%d')) / sum(size), 1) AS pct_0dte,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'C') / sum(size), 1) AS pct_call,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260724') / sum(size), 1) AS pct_expiring_jul24
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-20 00:00:00' AND sip_timestamp < '2026-07-25 00:00:00'
GROUP BY toDate(sip_timestamp)
ORDER BY toDate(sip_timestamp)Il volume dei contratti è stato di 64 milioni lunedì e 71.1 milioni venerdì. La quota della stessa giornata, ovvero i contratti in scadenza nella sessione in cui vengono scambiati, è stata di 40.2% lunedì contro 49% venerdì, la sessione di scadenza della settimana. Le call hanno rappresentato 53.5% del volume dei contratti di venerdì. E l'attrazione di quel venerdì era visibile già dalla sessione di apertura: 15.1% del volume di lunedì era già su contratti con scadenza fissata a quel giorno.
Tassi della settimana
L'esatto SQL dietro ogni numero
SELECT toString(date) AS date,
round(toFloat64(yield_2_year), 2) AS yield_2y_pct,
round(toFloat64(yield_10_year), 2) AS yield_10y_pct,
round(toFloat64(yield_30_year), 2) AS yield_30y_pct,
round((toFloat64(yield_10_year) - toFloat64(yield_2_year)) * 100) AS spread_2s10s_bp,
round((toFloat64(yield_10_year) - (SELECT toFloat64(any(yield_10_year)) FROM global_markets.treasury_yields WHERE date = '2026-07-17')) * 100) AS chg_10y_from_prior_close_bp
FROM global_markets.treasury_yields
WHERE date >= '2026-07-17' AND date <= '2026-07-24'
ORDER BY dateMisurato a partire dal dato del 17 luglio, il decennale si è mosso di 16 punti base a 4.71% all'ultimo dato disponibile, con il biennale a 4.37% e il trentennale a 5.17%. Lo spread biennale-decennale ha chiuso la serie a 34 punti base. Il file del Tesoro è in ritardo di circa una seduta rispetto ai prezzi correnti, pertanto questo pannello contiene 5 dati, ciascuno datato nella tabella.
Gli short: i file giornalieri
La FINRA pubblica un file giornaliero sul volume delle vendite allo scoperto. Il short-interest-vs-short-volume è un flusso giornaliero lordo, non una posizione, e talvolta questi file arrivano troncati, quindi la copertura viene misurata prima di citare qualsiasi rapporto da essi.
L'esatto SQL dietro ogni numero
SELECT date, tickers_on_file, short_shares_bn,
round(100.0 * tickers_on_file / max(tickers_on_file) OVER (), 1) AS pct_of_fullest_file
FROM (
SELECT toString(date) AS date,
uniqExact(ticker) AS tickers_on_file,
round(sum(short_shares) / 1e9, 2) AS short_shares_bn
FROM (
SELECT date, ticker, max(short_volume) AS short_shares
FROM global_markets.stocks_short_volume
WHERE date >= '2026-07-20' AND date <= '2026-07-24'
GROUP BY date, ticker
)
GROUP BY date
)
ORDER BY date5 file giornalieri sono disponibili per la settimana. Il primo contiene 15098 ticker e 4.71 miliardi di azioni con marcatura short; l'ultimo contiene 15062 ticker, ovvero 99.7% del conteggio ticker del file più completo. Qualunque affermazione sul volume short per singolo nome, tratta da un file che si colloca ben al di sotto dei suoi vicini, rimane non verificabile finché quel file non viene ripresentato.
Il calendario dietro la settimana
L'esatto SQL dietro ogni numero
SELECT toString(filing_date) AS date,
count() AS filings,
countIf(form_type = '4') AS form4,
countIf(form_type = '8-K') AS form8k,
countIf(form_type = '424B2') AS f424b2
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24'
GROUP BY filing_date
ORDER BY dateLa prima sessione archiviata conteneva 3012 documenti, di cui 632 erano rapporti insider Modulo 4 e 166 erano 8-K. L'ultima ne conteneva 3814, con 644 Moduli 4 e 223 8-K. 5 delle sessioni della settimana hanno un indice EDGAR giornaliero archiviato; tale indice arriva secondo la propria tempistica, che occasionalmente è in ritardo rispetto al nastro.
L'esatto SQL dietro ogni numero
SELECT
(SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24') AS filings_week,
(SELECT uniqExact(filing_date) FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24') AS filing_days_on_file,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-20' AND ex_dividend_date <= '2026-07-24') AS ex_dividends_week,
(SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-20' AND ex_dividend_date <= '2026-07-24') AS household_ex_dividends_week,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-20' AND execution_date <= '2026-07-24') AS reverse_splits_week,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-20' AND execution_date <= '2026-07-24') AS forward_splits_week,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= '2026-07-20' AND listing_date <= '2026-07-24') AS listings_week,
(SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-20 04:00:00' AND published_utc < '2026-07-25 04:00:00') AS news_week,
(SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-20 04:00:00' AND published_utc < '2026-07-25 04:00:00') AS news_publishers_weekIl resto della documentazione settimanale: 17106 depositi SEC in 5 giorni indicizzati, 592 record ex-dividendo, 1 dei quali provenienti dai dieci nomi noti controllati da questo pannello, 25 frazionamenti inversi e 11 frazionamenti diretti, 4 nuove quotazioni e 1704 articoli da 2 editori. Quest'ultima coppia misura l'attenzione di un singolo feed, non quella dei media globali.
Le sessioni, verificate
L'esatto SQL dietro ogni numero
WITH spy AS (
SELECT d, c, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS p
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)
)
SELECT
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions_in_week,
toString(min(toDate(toTimeZone(window_start, 'America/New_York')))) AS first_session,
toString(max(toDate(toTimeZone(window_start, 'America/New_York')))) AS last_session,
count() AS regular_bars_in_week,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-20' AND date <= '2026-07-24') AS holiday_rows_in_week,
(SELECT countIf(c > p) FROM spy WHERE d >= '2026-07-20') AS up_sessions,
(SELECT countIf(c < p) FROM spy WHERE d >= '2026-07-20') AS down_sessions,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 11995 sessioni, da 2026-07-20 a 2026-07-24, con 0 righe di festività in qualsiasi punto della finestra. SPY ha stampato 1950 barre minute di sessione regolare su di esse. 2 sessioni hanno chiuso sopra la chiusura precedente e 3 hanno chiuso sotto. La prossima chiusura programmata è Labor Day il 2026-09-07.
In arrivo
La settimana successiva, dai nostri prospetti:
L'esatto SQL dietro ogni numero
SELECT
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-27' AND date <= '2026-07-31' AND status != 'open') AS closures_next_week,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-27' AND ex_dividend_date <= '2026-07-31') AS ex_dividends_next_week,
(SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-27' AND ex_dividend_date <= '2026-07-31') AS household_ex_div_next_week,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-27' AND execution_date <= '2026-07-31') AS splits_next_week,
(SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260731') / sum(size), 1) FROM global_markets.options_trades WHERE sip_timestamp >= '2026-07-24 00:00:00' AND sip_timestamp < '2026-07-25 00:00:00') AS jul31_expiry_pct_of_friday_volume,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-24') AS latest_short_interest_settlementLa tabella festiva mostra 0 chiusure nella settimana successiva. 368 record di stacco cedola cadono al suo interno, 0 del set domestico, insieme a 15 frazionamenti programmati. Del volume di opzioni di venerdì, 14.2% era già in contratti in scadenza il venerdì successivo. La data di regolamento delle vendite allo scoperto più recente archiviata è 2026-07-15, un file pubblicato con un ritardo sufficiente ad avere una propria spiegazione.
FAQ
Come si è comportato il mercato azionario nella settimana del 20 luglio 2026?
SPY è variato del -0.59% da chiusura a chiusura dal 17 al 24 luglio, con QQQ al -1.59%, DIA al -0.38% e IWM al -0.98%. Tra i titoli liquidi, 2437 è salito e 3630 è sceso.
Quale settore ha guidato la settimana del 20 luglio 2026?
Energy, al 3.33%. Il più debole degli undici ETF settoriali SPDR è stato Consumer Discretionary al -5.2%, 8.53 punti percentuali indietro.
Quante sedute di trading ci sono state nella settimana del 20 luglio 2026?
5, da 2026-07-20 a 2026-07-24, con 0 righe di festività nella finestra. La prossima chiusura prevista è Labor Day.
Quale ticker ha scambiato il maggior volume in dollari nella settimana del 20 luglio 2026?
MU, con 158.1 miliardi di dollari di turnover in orario regolare, davanti a SPY con 133.9 miliardi.
Note sui dati
Tutti i timestamp memorizzati sono in UTC; le ore regolari sono 13:30-20:00 UTC per sessione, e i confini settimanali vanno dalla chiusura regolare del 17 luglio a quella del 24 luglio. Ogni pannello close-over-close qui riportato legge l'ultimo barra dei minuti delle ore regolari su ciascun lato del confronto, quindi una stampa in orario prolungato non può mai fissare una chiusura settimanale. Il ranking su anno mobile utilizza i rendimenti settimanali open-to-close, quindi non corrisponderà al tabellone close-over-close; entrambe le definizioni sono etichettate dove appaiono. La breadth settimanale e le bacheche dei movimenti applicano un filtro di turnover di cinque milioni di dollari in ore regolari, e la breadth pubblica il conteggio dei nomi che il filtro ha escluso. Le bacheche dei movimenti escludono qualsiasi nome il cui split sia stato eseguito dopo la chiusura del 17 luglio e fino al 24 luglio, l'esatto intervallo su cui viene misurata la variazione, il che cattura sia uno split timbrato nel fine settimana intermedio sia uno timbrato in una sessione; non escludono gli ETF con leva e inversi, che possono dominare una bacheca in una settimana direzionale. La parte inferiore della bacheca dei ribassisti può attestarsi vicino a una perdita totale del valore quotato per la settimana, e quella bacheca pubblica in quante delle cinque sessioni ciascun nome è stato stampato. Il pannello dello spread di SPY conta le quotazioni unilaterali e incrociate anziché eliminarle silenziosamente, e la mediana viene calcolata sulle quotazioni valide rimanenti. Il file del Tesoro è in ritardo di circa una sessione rispetto al nastro e l'indice giornaliero EDGAR arriva secondo il proprio programma, quindi i pannelli dei tassi e delle comunicazioni riportano quanti giorni contengono effettivamente. Nessun indice di volatilità implicita appare qui: quelle serie non sono concesse in licenza per questo magazzino, quindi la volatilità viene letta dal nastro tramite intervalli, quota delle opzioni same-day e comportamento delle quotazioni.
Metodologia
- Fonte dei dati di mercato: nastro consolidato.
delayed_stocks_minute_aggsper prezzi e volumi,cache_stocks_quotesper il pannello NBBO,options_tradesper la settimana delle opzioni. - Chiusura: l'ultima barra del minuto della sessione regolare, mai una stampa presunta delle 16:00 né una stampa dell'after-hours.
- Sessioni: verificate dalla tabella delle festività più le barre osservate, mai presunte dal calendario.
- Gestione dei fusi orari: le clausole WHERE usano letterali UTC grezzi, e
toTimeZonecompare solo nelle liste SELECT per le etichette ET. - Decimali: le colonne di prezzo, dimensione e volume sono convertite in Float64 prima di qualsiasi divisione o prodotto.
- Aggregati deterministici: quantili esatti in tutto, e ogni affermazione su ordinamento o segno nel testo è codificata come un vincolo di coerenza.
- Data del warehouse: 26 luglio 2026.
Collegamenti incrociati: l'edizione precedente di questa serie settimanale, cos'è uno spread denaro-lettera, quando scadono le opzioni, interessi short contro volume short, e lo spread tra il biennale e il decennale.
Ogni query sopra viene eseguita invariata sul terminale Strasmore se si desidera riposizionare una finestra su una settimana diversa.