marktupdate week 20 juli 2026
De week na de maandelijkse optie-expiratie van juli: indexscorebord, sectorspreiding, wekelijkse breedte en waar het geld naartoe ging op de beursvloer.
De week van 20 juli 2026 was de eerste volledige week na de maandelijkse optie-expiratie van juli en telde 5 sessies zonder sluitingsdag. De slot-koers-verandering van SPY op weekbasis bedroeg -0.59%, en gemeten van openings- tot slotkoers ten opzichte van het voorgaande jaar van weken scoorde het 43 van 53. Elk onderstaand cijfer wordt uitgelezen uit een opgeslagen query en elk venster is vastgepind op expliciete data, zodat het opnieuw uitvoeren van de SQL dezezelfde uitkomsten oplevert.
De week op het bord
De wekelijkse veranderingen lopen van de reguliere slotkoers van vrijdag 17 juli tot die van vrijdag 24 juli. De laatste kolom toont de week ervoor, zodat de twee naast elkaar staan. De rijen zijn alfabetisch.
De exacte SQL achter elk getal
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 tickerOp de week: DIA bewoog -0.38%, IWM -0.98%, QQQ -1.59% en SPY -0.59% naar een slot van $738.85. De cijfers van de voorgaande week, in dezelfde alfabetische volgorde, waren -0.95%, -0.63%, -4.17% en -1.55%. Hoe ver de vier indexen uit elkaar liggen, is het eerste wat een scorebord meet, en dat is niet altijd gering.
De week ten opzichte van het voorgaande jaar
Het cijfer van één week zegt weinig zonder de onderliggende verdeling. Dit paneel berekent elke voorgaande week opnieuw met dezelfde logica, van opening tot sluiting gedurende de reguliere sessie, en rangschikt deze week daarbinnen.
De exacte SQL achter elk getal
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
)Op die manier gemeten behaalde SPY een rendement van -1.1% en stond het op de 43e plaats van de 53 weken teruggaand tot 2025-07-21. Let op het definitieverschil: dit cijfer begint bij de eerste opening van de reguliere sessie van de week, terwijl het scorebord hierboven begint bij de slotkoers van de voorgaande week. Beide worden overal waar ze voorkomen als zodanig aangeduid.
Vijf sessies, één lijn
De exacte SQL achter elk getal
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 dateSessie voor sessie bedroeg de verandering van SPY -0.15% maandag, 0.84% dinsdag, -0.12% woensdag, -1.22% donderdag en 0.08% vrijdag, met een slot op $738.85 bij 40.1 miljoen aandelen. Het cijfer van maandag is gemeten ten opzichte van de slotkoers van 17 juli, de sessie direct voorafgaand aan de periode.
Breedte, sessie voor sessie
Een indexniveau is één getal. Breedte telt hoeveel aandelen daarin meebewogen, en het is het getal dat bepaalt of een groene week breed of smal was.
De exacte SQL achter elk getal
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 dateOp maandag stegen 1268 van de 3945 gemeten namen en daalden 2632. Tegen vrijdag luidde de verdeling 2273 stijgers tegen 1635 dalers, van de 3950. Namen zonder een slotkoers aan beide zijden van een sessie worden uitgesloten, waardoor het gemeten aantal van dag tot dag iets afwijkt.
Dezelfde vraag, één keer gesteld over de hele week:
De exacte SQL achter elk getal
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
)
)Van de 6100 namen die de drempel van vijf miljoen dollar aan omzet tijdens de reguliere handelsuren overschreden, sloten 2437 boven hun slotkoers van 17 juli en 3630 sloten eronder, een aandeel stijgers van 40%. De liquiditeitsfilter zette nog eens 5099 namen apart die die week onder die drempel verhandelden. Zij worden hier meegeteld en niet stilzwijgend weggelaten.
De sector-scoreboard
De elf SPDR-sector-ETF's, van slot 17 juli tot slot 24 juli, gerangschikt van best naar slechtst.
De exacte SQL achter elk getal
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 stond bovenaan het bord op 3.33%. Consumer Discretionary stond onderaan op -5.2%, 8.53 procentpunt erachter. Dat verschil is de wekelijkse sector-dispersion, en het is op zichzelf al veelzeggend: een week waarin alle elf binnen één punt van elkaar liggen, is een heel andere markt dan een week waarin de spread in de dubbele cijfers oploopt.
Waar de dollars naartoe gingen
De exacte SQL achter elk getal
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 genereerde 158.1 miljard dollar aan omzet tijdens de reguliere handelsuren over de vijf sessies, vooruitlopend op SPY met 133.9 miljard en QQQ met 101.5 miljard. Op de achtste plaats, AAPL, verhandelde 34.5% van de dollars van de leider. Omzetrecords geven aan waar de markt zijn week besteedde aan discussie, en dat hoeft niet overeen te komen met de koers. De per-naam-versie van deze maatstaf is relatief volume.
De grootste stijgers en dalers van de week
Splits beïnvloeden de koersprint maar niet de waarde: een reverse split creëert een kunstmatige winst van vier cijfers, een forward split een even grote kunstmatige daling. De week kende 25 reverse splits en 11 forward splits. Beide tabellen hieronder sluiten elke naam uit waarvan de split tussen de slotkoersen van 17 juli en 24 juli is uitgevoerd, het exacte interval waarover de verandering wordt gemeten. Beide vereisen ook vijf miljoen dollar aan omzet in de reguliere handelsuren.
De exacte SQL achter elk getal
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) DESCOm in een van beide tabellen te komen, was een echte beweging nodig. De mildste stijger die wordt getoond, steeg 92.3%, en de mildste daler noteerde -47.8%. Aan de uitersten bewoog STAK 383.7% op 251.6 miljoen dollar verhandeld, en LBGJ bewoog -98.8% op 47.7 miljoen. Die daling ligt dicht bij de totale genoteerde waarde van de naam, dus de tabel bevat een eigen bewijsstuk: LBGJ noteerde balken tijdens reguliere handelsuren op 5 van de vijf sessies, en er werd geen split tegen haar uitgevoerd tussen de twee slotkoersen die de tabel meet.
De genoteerde spread, sessie per sessie
De prijs is de kop. De kosten om de transactie te laten plaatsvinden, zijn de genoteerde spread, hier gemeten op SPY per sessie, rechtstreeks van de ruwe NBBO-tape in plaats van een samenvatting.
De exacte SQL achter elk getal
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)De mediane genoteerde spread van SPY bedroeg 0.27 basispunten van de mid op maandag en 0.27 op vrijdag, op 3.89 miljoen en 4.4 miljoen NBBO-updates. De laatste twee kolommen zijn de openbaarmaking in plaats van de bevinding: 0 eenzijdige noteringen en 1084 gekruiste noteringen werden meegeteld in de mediaan van maandag in plaats van stilzwijgend te worden weggelaten. Een gekruiste notering, bied boven laat, is een normaal artefact van een geconsolideerde feed die uit vele handelsplatformen is samengesteld.
De optieweek na de maandelijkse vervaldag
De maandelijkse vervaldag van juli viel op de vrijdag voor het begin van deze week, dus elk contract dat in deze vijf sessies wordt verhandeld, heeft die overleefd. Timing van de vervaldag bepaalt het ritme waarop dezelfde-dag-handelaren inspelen.
De exacte SQL achter elk getal
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)Het contractvolume bedroeg 64 miljoen op maandag en 71.1 miljoen op vrijdag. Het aandeel van dezelfde dag, oftewel contracten die vervallen op de sessie waarin ze worden verhandeld, was 40.2% op maandag tegenover 49% op vrijdag, de vervalsessie van de week. Calls namen 53.5% van het contractvolume op vrijdag voor hun rekening. En de aantrekkingskracht van die vrijdag was al zichtbaar vanaf de openingssessie: 15.1% van het volume op maandag zat al in contracten met een vervaldatum op die dag.
Rentetarieven over de week
De exacte SQL achter elk getal
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 dateGemeten vanaf de notering van 17 juli bewoog de tienjaarsrente 16 basispunten naar 4.71% bij de laatste geregistreerde notering, met de tweejaarsrente op 4.37% en de dertigjaarsrente op 5.17%. De twee-tot-tienjaarsspread sloot de reeks af op 34 basispunten. Het bestand van Treasury loopt ongeveer één sessie achter op de tape, dus dit paneel bevat 5 noteringen, elk voorzien van een datum in de tabel.
De shortposities: de dagelijkse bestanden
FINRA publiceert een dagelijks bestand met short-verkoopvolumes. Short volume is een bruto dagelijkse stroom, geen positie, en deze bestanden komen soms afgekapt binnen, dus de dekking wordt gemeten voordat er een ratio uit wordt afgeleid.
De exacte SQL achter elk getal
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 dagelijkse bestanden zijn beschikbaar voor de week. Het eerste bevat 15098 tickers en 4.71 miljard als short gemarkeerde aandelen; het laatste bevat 15062 tickers, ofwel 99.7% van het tickeraantal van het meest volledige bestand. Elke bewering over shortvolume per naam uit een bestand dat aanzienlijk onder zijn buurbestanden zit, blijft onverifieerbaar totdat dat bestand opnieuw wordt aangeleverd.
De kalender achter de week
De exacte SQL achter elk getal
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 dateDe eerste sessie op bestand bevatte 3012 documenten, waarvan 632 insider Form 4-rapporten en 166 8-K's. De laatste sessie bevatte 3814 documenten, met 644 Form 4's en 223 8-K's. 5 van de sessies van de week hebben een EDGAR-dagindex op bestand; die index volgt een eigen schema, dat soms achterloopt op de tape.
De exacte SQL achter elk getal
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_weekDe rest van het papierwerk van de week: 17106 SEC-documenten over 5 geïndexeerde dagen, 592 ex-dividend-noteringen, 1 daarvan van de tien bekende namen die dit panel controleert, 25 reverse- en 11 forward-splits, 4 nieuwe noteringen, en 1704 artikelen van 2 uitgevers. Dat laatste paar meet de aandacht van één feed, niet de wereldwijde media.
De sessies, geverifieerd
De exacte SQL achter elk getal
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 sessies, 2026-07-20 tot en met 2026-07-24, met 0 feestdagenregels ergens in het venster. SPY heeft 1950 reguliere-sessie minuutbalken over deze sessies geprint. 2 sessies sloten boven de voorgaande slotkoers en 3 sloten eronder. De volgende geplande sluiting is Labor Day op 2026-09-07.
Op het programma
De volgende week, af te lezen uit onze eigen tabellen:
De exacte SQL achter elk getal
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_settlementDe feestdagkalender toont 0 sluitingen in de volgende week. 368 ex-dividend data vallen daarbinnen, 0 uit de huishoudensset, naast 15 geplande aandelensplitsingen. Van het optievolume op vrijdag zat 14.2% al in contracten die de volgende vrijdag aflopen. De meest recente short-interest-afsluitdatum in het bestand is 2026-07-15, een bestand dat met een voldoende lange vertraging wordt gepubliceerd om een eigen toelichting te hebben.
FAQ
Hoe presteerde de aandelenmarkt in de week van 20 juli 2026?
SPY veranderde -0.59% close-over-close van 17 juli tot 24 juli, met QQQ op -1.59%, DIA op -0.38% en IWM op -0.98%. Van de liquide namen steeg 2437 en daalde 3630.
Welke sector leidde de week van 20 juli 2026?
Energy, op 3.33%. De zwakste van de elf SPDR-sector-ETF's was Consumer Discretionary op -5.2%, 8.53 procentpunt achter.
Hoeveel handelssessies waren er in de week van 20 juli 2026?
5, van 2026-07-20 tot 2026-07-24, met 0 feestdag-rijen in het venster. De volgende geplande sluiting is Labor Day.
Welk ticker werd het meest verhandeld in dollars in de week van 20 juli 2026?
MU, op 158.1 miljard dollar aan omzet tijdens reguliere handelsuren, voor SPY met 133.9 miljard.
Data-opmerkingen
Alle opgeslagen tijdstempels zijn UTC; de reguliere handelsuren bedragen 13:30-20:00 UTC per sessie, en weekgrenzen lopen van de reguliere slotnotering van 17 juli tot die van 24 juli. Elk slot-op-slot-paneel hier leest de laatste reguliere minuutbar aan beide zijden van de vergelijking uit, zodat een notering buiten reguliere uren nooit een weeksluiting kan bepalen. De rangschikking over het afgelopen jaar gebruikt weekrendementen van opening tot slot, en komt dus niet overeen met het slot-op-slot-scorebord; beide definities zijn vermeld waar ze voorkomen. De wekelijkse breedte en de bewegerborden passen een filter toe op een omzet van vijf miljoen dollar tijdens reguliere uren, en het breedtebord publiceert het aantal namen dat dat filter buiten beschouwing laat. Bewegerborden sluiten elke naam uit waarvan de splitsing is uitgevoerd na de slotnotering van 17 juli en tot en met 24 juli, het exacte interval waarover de verandering wordt gemeten; dit vangt zowel een splitsing die op het tussenliggende weekend is gestempeld als een die op een sessie is gestempeld. Ze sluiten leveraged en inverse ETF's niet uit, die op een directionele week een bord kunnen domineren. De onderkant van het dalersbord kan dicht bij een totaal verlies van de genoteerde waarde voor de week liggen, en dat bord publiceert in hoeveel van de vijf sessies elke naam is verschenen. Het SPY-spreadpaneel telt eenzijdige en gekruiste quotes mee in plaats van ze stilzwijgend weg te laten, en de mediaan wordt genomen over de resterende geldige quotes. Het bestand van Treasury loopt ongeveer een sessie achter op de tape en de dagelijkse EDGAR-index verschijnt volgens een eigen schema, dus de panelen voor rentetarieven en documenten melden hoeveel dagen ze daadwerkelijk beslaan. Er verschijnt hier geen implied-volatility-index: die reeksen zijn niet in dit magazijn gelicentieerd, dus volatiliteit wordt van de tape afgelezen via ranges, het aandeel van opties met dezelfde looptijd en het quote-gedrag.
Methodologie
- Marktgegevensbron: consolidated tape.
delayed_stocks_minute_aggsvoor prijzen en volumes,cache_stocks_quotesvoor het NBBO-panel,options_tradesvoor de optieweek. - Slotkoers: de laatste minuutbar van de reguliere sessie, nooit een veronderstelde 16:00-print en nooit een print uit de verlengde handel.
- Sessies: geverifieerd aan de hand van de feestdagentabel plus waargenomen bars, nooit aangenomen op basis van de kalender.
- Tijdzoneafhandeling: WHERE-clausules gebruiken ruwe UTC-literalwaarden, en
toTimeZoneverschijnt alleen in SELECT-lijsten voor ET-labels. - Decimalen: prijs-, omvang- en volumekolommen worden omgezet naar Float64 vóór elke deling of vermenigvuldiging.
- Deterministische aggregaten: exacte kwantielen doorlopend, en elke ordening of tekenclaim in de tekst is gecodeerd als een sanity-bound.
- Warehouse-as-of-datum: 26 juli 2026.
Kruisverwijzingen: de vorige editie van deze wekelijkse serie, wat een bid-ask spread is, wanneer opties aflopen, short interest versus short volume, en de two-to-ten-year spread.
Elke bovenstaande query draait ongewijzigd op de Strasmore-terminal als u een venster op een andere week wilt richten.