Marktrecap 28 juli 2026: de dag in cijfers
28 juli 2026 uit de tape: indexscorebord, breadth, sector spread, options flow, quote tape, rates en kalender, met elke figure uit opgeslagen queries.
De marktrecapitulatie voor dinsdag 28 juli 2026 leest de volledige sessie uit opgeslagen queries: de close-over-close-verandering van SPY kwam uit op 0.24%, het aandeel stijgers in de liquide tape op 58.6% en de opties-tape registreerde 59.28 miljoen contracten. Elk venster hieronder is aan beide uiteinden aan expliciete datums gekoppeld. Als u de SQL-query van een paneel opnieuw uitvoert, krijgt u dezelfde cijfers terug.
Het scorebord
Elke verandering vergelijkt de laatste minuutbar van de reguliere sessie op 28 juli met die van maandag 27 juli, dus met opeenvolgende handelssessies. De rijen staan alfabetisch, zodat elke ETF een vaste positie behoudt.
De exacte SQL achter elk getal
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-27 13:30:00' AND window_start < '2026-07-27 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-28 13:30:00' AND window_start < '2026-07-28 20:00:00'
GROUP BY ticker
)
SELECT
s.ticker AS ticker,
round(toFloat64(p.prior_close), 2) AS prior_close,
round(toFloat64(s.day_open), 2) AS day_open,
round(toFloat64(s.day_close), 2) AS day_close,
round((toFloat64(s.day_open) / toFloat64(p.prior_close) - 1) * 100, 2) AS gap_pct,
round((toFloat64(s.day_close) / toFloat64(s.day_open) - 1) * 100, 2) AS intraday_pct,
round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
round(toFloat64(s.day_high), 2) AS day_high,
round(toFloat64(s.day_low), 2) AS day_low,
s.shares_traded_m
FROM sess s LEFT JOIN prior p ON s.ticker = p.ticker
ORDER BY tickerDIA bewoog 1.07%, IWM 0.15%, QQQ -0.96% en SPY 0.24% naar een slot op $740.76. Elke rij splitst de beweging op in twee legs: SPY opende 0.02% ten opzichte van het slot van maandag en bewoog van opening tot slot 0.21%. De overnight-leg en de intraday-leg hoeven niet overeen te komen. De verdeling ertussen is de eerste vingerafdruk van een sessie.
Was de dag ongebruikelijk?
Het getal van één sessie zegt weinig zonder de onderliggende verdeling. Daarom wordt de dag volgens dezelfde methode gerangschikt binnen de eigen voorgaande maand.
De exacte SQL achter elk getal
SELECT
round(anyIf(oc_pct, d = toDate('2026-07-28')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-28'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-28'))) + 1 AS spy_abs_move_rank,
count() AS spy_sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-29 13:30:00')
AND window_start < toDateTime('2026-07-29 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)De beweging van open naar close van SPY van 0.21% stond op plaats 14 van 21 voorgaande sessies, gerangschikt naar absolute omvang, binnen een periode die teruggaat tot 2026-06-29. De rangschikking telt hoeveel andere sessies binnen de periode een grotere beweging lieten zien, plus één. De eerste plaats zou dus de grootste beweging van de voorgaande maand zijn.
Marktbreedte
Een indexniveau is één getal. Marktbreedte telt hoeveel aandelen dezelfde richting opgingen.
De exacte SQL achter elk getal
SELECT
countIf(c28 > c27 AND liquid) AS advancers,
countIf(c28 < c27 AND liquid) AS decliners,
countIf(c28 = c27 AND liquid) AS unchanged,
countIf(liquid) AS liquid_tickers,
countIf(NOT liquid) AS dropped_by_liquidity_filter,
round(100.0 * countIf(c28 > c27 AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
SELECT ticker, c27, c28, dv28 >= 1000000 AS liquid
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 13:30:00') AS dv28
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-28 20:00:00'
GROUP BY ticker
HAVING c27 > 0 AND c28 > 0
)
)Van de 6008 aandelen die tijdens de reguliere handel een omzetdrempel van één miljoen dollar overschreden, sloten 3519 boven de slotstand van maandag en 2423 eronder. Het aandeel stijgers bedroeg 58.6%. De filter liet 5346 minder liquide aandelen buiten beschouwing; die zijn hier meegeteld en niet stilzwijgend verwijderd.
De mega-caplijst
Dezelfde acht mega-capnamen verschijnen in elke sessie, alfabetisch gerangschikt zodat elke naam zijn eigen rij behoudt. Een vaste mand is het uitgangspunt: de lezer leert de rijen kennen en achteraf worden niet selectief winnaars gekozen.
De exacte SQL achter elk getal
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-28 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-28 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'AMZN', 'AVGO', 'GOOGL', 'META', 'MSFT', 'NVDA', 'TSLA')
AND ((window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00')
OR (window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 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,
day_dollar_bn
FROM per_name
ORDER BY tickerAAPL bewoog 0.97%, META -0.05%, MSFT 1.12% en NVDA 0.23% bij een omzet van 21.11 miljard dollar tijdens de reguliere handelsuren, met TSLA op -0.57%. De dollarkolom laat zien welk deel van de tape deze acht namen zelfstandig voor hun rekening nemen; het breadth-panel hierboven laat zien in hoeverre de rest van de markt met hen meebewoog.
De movers van de dag
Voor beide boards is een omzet van vijf miljoen dollar tijdens de reguliere handelsuren vereist. Beide sluiten namen uit waarvan de split tussen de twee gemeten slotkoersen is uitgevoerd. Ook wordt één hergebruikt symbool uitgesloten op grond van de ambiguïteitscontrole van het huis, zoals beschreven in de notities.
De exacte SQL achter elk getal
SELECT ticker, board, day_pct, day_dollar_m
FROM (
SELECT 'gainers' AS board, ticker, round((c28 / c27 - 1) * 100, 1) AS day_pct, round(dv / 1e6, 1) AS day_dollar_m
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 13:30:00') AS dv
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-27' AND execution_date <= '2026-07-28')
AND window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-28 20:00:00'
GROUP BY ticker
HAVING c27 > 0 AND c28 > 0 AND dv >= 5000000
)
ORDER BY day_pct DESC
LIMIT 8
UNION ALL
SELECT 'decliners' AS board, ticker, round((c28 / c27 - 1) * 100, 1) AS day_pct, round(dv / 1e6, 1) AS day_dollar_m
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 13:30:00') AS dv
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-27' AND execution_date <= '2026-07-28')
AND window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-28 20:00:00'
GROUP BY ticker
HAVING c27 > 0 AND c28 > 0 AND dv >= 5000000
)
ORDER BY day_pct ASC
LIMIT 8
)
ORDER BY board DESC, abs(day_pct) DESCDe grootste stijger op het board, STKH, bewoog 166.7% bij een handelsvolume van 113.2 miljoen dollar. De sterkste daler, YYAI, noteerde -71% bij een handelsvolume van 18.3 miljoen dollar. Deze pagina registreert de omvang en de receipts, maar verbindt daar geen verklaring aan.
Sectorale spreiding
De elf SPDR Select Sector-fondsen, de slotkoers van 28 juli ten opzichte van die van 27 juli, gerangschikt van best naar slechtst. De samenstelling van de korf staat vast en is geen classificatie van een dataleverancier.
De exacte SQL achter elk getal
SELECT sector, day_pct, round(max(day_pct) OVER () - day_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((c28 / c27 - 1) * 100, 2) AS day_pct
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-28 00:00:00') AS c27,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 00:00:00') AS c28
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-27 13:30:00' AND window_start < '2026-07-27 20:00:00')
OR (window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'))
GROUP BY ticker
HAVING c27 > 0 AND c28 > 0
)
)
ORDER BY day_pct DESCHealth Care voerde de ranglijst aan met 2.36%. Technology stond onderaan met -1.9%, 4.26 procentpunt lager. Die spread is de sectorale spreiding van de dag. Een markt waarin alle elf fondsen binnen één punt eindigen, ziet er heel anders uit dan een markt waarin de uitslagen over meerdere punten uiteenlopen.
Waar de dollars werden verhandeld
De exacte SQL achter elk getal
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
round(1000 * dollar_volume_bn / shares_m, 2) AS implied_avg_price
FROM (
SELECT
'by dollars traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_volume_bn DESC
LIMIT 6
UNION ALL
SELECT
'by shares traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard, if(leaderboard = 'by shares traded', shares_m, dollar_volume_bn) DESCMU stond bovenaan het dollaroverzicht met een omzet van 39.21 miljard tijdens de reguliere handelsuren, gevolgd door QQQ met 29.98 miljard. Het aandelenoverzicht beantwoordt een andere vraag: ONFO stond daar bovenaan met 182.4 miljoen aandelen tegen een impliciete gemiddelde prijs van $0.16. Het dollarvolume laat zien waar de aandacht van de markt ligt, terwijl het aandelenvolume de handelsactiviteit weergeeft. De maatstaf per naam is relatief volume.
De optietape
De exacte SQL achter elk getal
WITH
(
SELECT (strike, typ, vol_m, is_0dte)
FROM (
SELECT toFloat64(any(strike_price)) AS strike, any(option_type) AS typ,
round(toFloat64(sum(size)) / 1e6, 2) AS vol_m,
if(substring(ticker, length(ticker) - 14, 6) = '260728', 1, 0) AS is_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
AND underlying_symbol = 'SPY'
GROUP BY ticker
ORDER BY vol_m DESC, strike ASC
LIMIT 1
)
) AS top_spy,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'
) AS spy_regular_close,
(
SELECT round(toFloat64(sum(size)) / 1e6, 2)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00'
) AS jul27_contracts_m,
(
SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260727') / sum(size), 1)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00'
) AS jul27_pct_0dte
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
jul27_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) = '260728') / sum(size), 1) AS pct_0dte,
jul27_pct_0dte,
spy_regular_close,
top_spy.1 AS top_spy_strike,
top_spy.2 AS top_spy_type,
top_spy.3 AS top_spy_contracts_m,
top_spy.4 AS top_spy_is_0dte,
round(top_spy.1 - spy_regular_close, 2) AS top_spy_strike_minus_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'De optietape registreerde 10.07 miljoen trades in 59.28 miljoen contracten, tegenover 64.69 miljoen op maandag. Calls waren goed voor 55% van het contractvolume. Contracten die tijdens dezelfde sessie expireerden, de groep van zero-days-to-expiry, waren goed voor 29% tegenover 39.3% op maandag. Dit ritme wordt bepaald door het tijdstip van expiratie. Het drukst verhandelde SPY-contract was de 742 C met 0.72 miljoen contracten. De strike lag 1.24 dollar van SPY's reguliere slotkoers van $740.76, berekend als strike minus slotkoers.
De quote-tape
De quote-data is de schaarste dataset van deze desk en wordt elke sessie gemeten. Ook gewone dagen worden geregistreerd.
De exacte SQL achter elk getal
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-28')) / 1e6, 2) AS jul28_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-27')) / 1e6, 2) AS jul27_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-28')) / countIf(toDate(sip_timestamp) = toDate('2026-07-27')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-28') AND ticker = 'SPY') / 1e6, 2) AS jul28_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-28') AND ticker = 'QQQ') / 1e6, 2) AS jul28_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-28') AND ticker = 'NVDA') / 1e6, 2) AS jul28_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'De tape met stock quotes bevatte 536.07 miljoen NBBO-updates, tegenover 553.53 miljoen op maandag. Dat is een verandering van -3.2% op dagbasis. SPY noteerde 4.72 miljoen updates, QQQ 5.94 miljoen en NVDA 3.01 miljoen.
De exacte SQL achter elk getal
SELECT ticker,
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 IN ('AAPL', 'DIA', 'IWM', 'NVDA', 'QQQ', 'SPY', 'TSLA')
AND sip_timestamp >= '2026-07-28 13:30:00' AND sip_timestamp < '2026-07-28 20:00:00'
GROUP BY ticker
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
ORDER BY tickerDe mediane spread van SPY tijdens de reguliere handelsuren bedroeg 0.27 basis points van de mid. Voor QQQ was dat 0.74 en voor NVDA 1.52. De laatste twee kolommen vormen de disclosure: one-sided en crossed quotes worden per naam geteld en apart gehouden van de mediaan, in plaats van stilzwijgend te worden verwijderd. Een crossed quote, waarbij de bid boven de ask ligt, is een normaal resultaat van een geconsolideerde feed die op nanoseconde-resolutie uit veel handelsplatforms wordt samengesteld.
De exacte SQL achter elk getal
SELECT round(anyIf(spread_bps, d = toDate('2026-07-28')), 2) AS jul28_median_spread_bps,
arrayCount(x -> x < anyIf(spread_bps, d = toDate('2026-07-28')), groupArrayIf(spread_bps, d != toDate('2026-07-28'))) + 1 AS rank_tightest,
count() AS sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT toDate(sip_timestamp) AS d,
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) AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= '2026-07-01 13:30:00' AND sip_timestamp < '2026-07-28 20:00:00'
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
)Vergeleken met elke julisessie op basis van dezelfde methode kwam de mediane spread van SPY van 0.27 basis points uit op 16 van 19, gerekend vanaf de smalste spread, binnen een periode die begint op 2026-07-01. Op een rustige tape is dat de kern van het panel: een gewone liquiditeitsdag is een bevinding die wordt gepubliceerd en afgebakend.
De exacte SQL achter elk getal
WITH
(SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00') AS jul28_options_rows,
(SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00') AS jul28_stock_quote_rows
SELECT
round(jul28_options_rows / 1e9, 2) AS jul28_options_bn,
round(jul28_options_rows / jul28_stock_quote_rows, 1) AS options_to_stock_ratio,
round((SELECT count() FROM global_markets.cache_options_quotes WHERE ticker >= 'O:SPY26' AND ticker < 'O:SPY27' AND sip_timestamp >= '2026-07-28 13:30:00' AND sip_timestamp < '2026-07-28 20:00:00') / 1e6, 0) AS jul28_spy_options_mDe options-NBBO-tape bevatte 10.23 miljard updates, 19.1 keer zoveel als de stock-quote-tape. Alleen al de SPY-root was goed voor 382 miljoen updates tijdens de reguliere handelsuren.
Rentes
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
FROM global_markets.treasury_yields
WHERE date >= '2026-07-23' AND date <= '2026-07-28'
ORDER BY dateHet bestand van Treasury loopt ongeveer één sessie achter op de markt. Dit paneel toont daarom de uitgevoerde trades die het bestand bevat: 4 gedateerde rijen in het venster. De meest recente rij, gedateerd 2026-07-28, noteerde de tweejarige Treasury op 4.26%, de tienjarige op 4.61% en de dertigjarige op 5.09%. De spread tussen de tweejarige en de tienjarige Treasury bedroeg 35 basis points.
De kalender achter de handelsdag
De exacte SQL achter elk getal
WITH
(
SELECT (argMax(t, (n, t)), max(n))
FROM (
SELECT t, count() AS n
FROM (
SELECT arrayJoin(tickers) AS t
FROM global_markets.stocks_news
WHERE published_utc >= '2026-07-28 04:00:00' AND published_utc < '2026-07-29 04:00:00'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news,
(
SELECT (count(), uniqExact(cik), countIf(form_type = '4'), countIf(form_type = '8-K'), countIf(form_type = '424B2'), countIf(form_type = '10-Q'))
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date = '2026-07-28'
) AS fil
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-28') AS ex_dividend_records,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-28') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-28') AS forward_splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-28') AS listings,
(SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-28 04:00:00' AND published_utc < '2026-07-29 04:00:00') AS news_articles,
(SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-28 04:00:00' AND published_utc < '2026-07-29 04:00:00') AS news_publishers,
top_news.1 AS top_news_ticker,
top_news.2 AS top_news_n,
fil.1 AS fil_total,
fil.2 AS fil_filers,
fil.3 AS fil_form4,
fil.4 AS fil_8k,
fil.5 AS fil_424b2,
fil.6 AS fil_10q147 dividendregistraties gingen op 28 juli ex-dividend, 3 reverse splits en 0 forward splits werden uitgevoerd en 2 nieuwe listings kwamen op de tape. De nieuwsfeed bevatte 161 artikelen van 2 uitgevers. Daarvan was MSFT de ticker waarover in het venster van deze feed het meest werd bericht, met 9 artikelen. De dagelijkse EDGAR-index bevat voor deze datum 5915 filings van 2898 verschillende indieners: 856 insider-Form 4-rapporten, 315 actuele 8-K-rapporten, 900 424B2-prijssupplementen en 100 kwartaalrapporten op Form 10-Q. Deze index verschijnt volgens een eigen schema. Dit panel geeft weer wat de index op het moment van genereren bevat.
Op de agenda
Lees de rest van de week uit dezelfde tabellen en kijk daarbij bewust voorbij de periode.
De exacte SQL achter elk getal
SELECT
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-29' AND date <= '2026-07-31' AND status != 'open') AS closures_rest_of_week,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-29' AND ex_dividend_date <= '2026-07-31') AS exdiv_records_rest_of_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-29' AND ex_dividend_date <= '2026-07-31') AS household_exdivs,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-29' AND execution_date <= '2026-07-31') AS splits_rest_of_week,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260731') / sum(size), 1) AS jul31_expiry_pct_of_tue_volume,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-28') AS latest_short_interest_settlement
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'De vakantietabel toont 0 sluitingsdagen op woensdag 29 juli, donderdag 30 juli en vrijdag 31 juli. Voor 696 dividendregistraties valt op die drie sessies de ex-dividend date, waaronder 0 van de tien gecontroleerde bekende namen. Daarnaast staan 15 splits gepland voor uitvoering. Van het optievolume van dinsdag zat 17.5% al in contracten met expiratie op vrijdag 31 juli. De meest recente beschikbare settlement voor short interest is 2026-07-15. Dit bestand wordt met voldoende vertraging gepubliceerd om een eigen toelichting te rechtvaardigen.
De sessie, geverifieerd
De exacte SQL achter elk getal
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,
countIf(window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-28') AS jul28_holiday_rows,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-28' 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-28' 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-28 00:00:00' AND window_start < '2026-07-29 00:00:00'Een volledige reguliere sessie: de eerste SPY-bar om 04:00 ET, de laatste om 19:59 ET, 390 bars tijdens reguliere handelsuren, 1 sessie in het venster en 0 feestdagregels voor de datum. De eerstvolgende geplande sluiting is Labor Day op 2026-09-07.
FAQ
Hoe presteerde de aandelenmarkt op dinsdag 28 juli 2026?
SPY veranderde 0.24% van slotkoers tot slotkoers naar $740.76, met QQQ op -0.96%, DIA op 1.07% en IWM op 0.15%. Onder liquide namen steeg 3519 en daalde 2423.
Welke sector stond op 28 juli 2026 bovenaan?
Health Care, op 2.36%, gemeten over de elf SPDR-select-sectorfondsen. Het zwakste van de elf, Technology, printte -1.9%.
Hoe actief was de optiemarkt op 28 juli 2026?
Er werden 59.28 miljoen contracten verhandeld, tegenover 64.69 miljoen in de vorige sessie. Contracten met dezelfde expiratiedag waren goed voor 29% van het volume en calls voor 55%.
Welk aandeel had op 28 juli 2026 het hoogste dollarhandelsvolume?
MU, met 39.21 miljard aan dollarvolume tijdens reguliere handelsuren, vóór QQQ met 29.98 miljard.
Gegevensnotities
Deze editie vult het ontbrekende deel van 28 juli in de dagelijkse reeks aan: de dagelijkse editie van 27 juli behandelt de voorafgaande sessie, de dagelijkse editie van 29 juli de daaropvolgende sessie, en de wekelijkse terugblik behandelt de week waarin beide vallen. Panelen met genoemde tickers zijn alfabetisch gerangschikt, zodat verwijzingen in de tekst naar vaste rijen wijzen. Ranglijsten en lijsten met movers zijn op waarde gerangschikt. Elke positionele bewering daarin is vastgelegd als een sanity bound. De mega-cap-basket en de sectorbasket met elf fondsen zijn vastgelegde, vooraf bepaalde sets en geen classificaties van een dataleverancier. Voor de lijsten met movers geldt een omzetdrempel van vijf miljoen dollar tijdens reguliere handelsuren. Namen waarvan de split is uitgevoerd tussen de twee gemeten slotstanden worden uitgesloten. Ook één hergebruikt symbool wordt op grond van de interne ambiguïteitsregel uitgesloten, zodat een vermelding altijd naar een verifieerbare naam verwijst. De quote-panels tellen eenzijdige en crossed quotes per naam, in plaats van deze stilzwijgend te verwijderen. Het bestand van Treasury en de dagelijkse EDGAR-index komen volgens hun eigen schema's binnen. Daarom rapporteren deze panelen wat zij bevatten, zonder uit te gaan van tijdige binnenkomst. Er is hier geen implied-volatility-index opgenomen. Deze reeksen zijn niet voor dit warehouse gelicentieerd. Volatility wordt daarom rechtstreeks uit de tape afgeleid aan de hand van ranges, het aandeel opties op dezelfde dag en het quote-gedrag.
Methodologie
- Bron van marktdata: consolidated tape.
delayed_stocks_minute_aggsvoor prijzen en volumes,options_tradesvoor de options tape,cache_stocks_quotesencache_options_quotesvoor de NBBO-panelen. - Slotkoers: de laatste minuutbar van de reguliere sessie, nooit een veronderstelde print om 16:00 en nooit een print buiten de reguliere handelstijden.
- Tijdzoneverwerking: alle opgeslagen timestamps zijn UTC; WHERE-clausules gebruiken onbewerkte UTC-literals en
toTimeZoneverschijnt uitsluitend in SELECT-lijsten voor ET-labels. - Sessiecontrole: op basis van de feestdagentabel en geobserveerde bars, nooit uitsluitend op basis van de kalender.
- Vergelijkingen met de vorige sessie: in de query berekend vanaf 27 juli, nooit overgenomen uit een eerder bericht.
- Decimalen: prijs-, size- en volumekolommen worden vóór elke deling of vermenigvuldiging naar Float64 gecast.
- Deterministische aggregaties: overal exacte quantiles en tie-breaks op basis van tuple-sleutels; elke rangorde- of tekenclaim in de tekst is gecodeerd als sanity bound.
- As-of-datum van het datawarehouse: 1 augustus 2026, vier dagen na de sessie en voorbij de gebruikelijke ingest-lag van één tot twee dagen voor de tape; de hierboven genoemde begrensde receipts houden het bericht in stand als bij het genereren blijkt dat een dataset ontbreekt.
Kruisverwijzingen: de dagelijkse recap van 27 juli, de dagelijkse recap van 29 juli, wanneer options expireren, wat een bid-ask spread is en de two-to-ten-year spread.
Elke bovenstaande query draait ongewijzigd op de Strasmore-terminal als u een window naar een andere sessie wilt verplaatsen.