Strasmore Research
Marktoverzichten Matt ConnorDoor Matt Connor · Bijgewerkt 2026-08-02

Markt terugblik 30 juli 2026: de dag in cijfers

Marktterugblik van 30 juli 2026: indexscorebord, breadth, sector spread, options flow, quote tape, rates en kalender, volledig gebaseerd op opgeslagen query’s.

Deze marktterugblik voor donderdag 30 juli 2026 beschrijft de volledige sessie op basis van opgeslagen query’s: de verandering van SPY ten opzichte van de vorige slotkoers kwam uit op 1.68%, het aandeel stijgers in de liquide markt op 63.5% en op de optiemarkt werden 67.06 miljoen contracten uitgevoerd. Elk hieronder weergegeven tijdvenster is aan beide zijden gekoppeld aan expliciete datums. Als u de SQL van een paneel opnieuw uitvoert, krijgt u dezelfde cijfers.

Het scorebord

Elke verandering vergelijkt de laatste minuutbar van de reguliere sessie van 30 juli met die van woensdag 29 juli, dus opeenvolgende handelsessies. De rijen staan alfabetisch, zodat elke ETF een vaste positie behoudt.

QuerySPY / QQQ / DIA / IWM: 30 juli versus de slotkoers van 29 juli, reguliere handelsuren
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-29 13:30:00' AND window_start < '2026-07-29 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-30 13:30:00' AND window_start < '2026-07-30 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 ticker
Run this yourself

DIA bewoog 1.19%, IWM 1.37%, QQQ 3.34% en SPY 1.68% naar een slotkoers van $741.73. Elke rij splitst de beweging op in twee delen: SPY opende 0.9% ten opzichte van het slot van woensdag en bewoog van opening tot sluiting 0.77%. De overnight-beweging en de intraday-beweging hoeven niet overeen te komen. De verdeling daartussen is het eerste kenmerk van een sessie.

Was de dag ongebruikelijk?

Het cijfer van één sessie zegt weinig zonder de onderliggende verdeling. Daarom wordt de dag volgens dezelfde logica gerangschikt binnen de eigen voorafgaande maand.

QueryDagbeweging van SPY in voortschrijdende context (open-to-close, 30 juni tot en met 30 juli)
De exacte SQL achter elk getal
SELECT
    round(anyIf(oc_pct, d = toDate('2026-07-30')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-30'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-30'))) + 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-30 13:30:00')
      AND window_start < toDateTime('2026-07-31 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY d
)
Run this yourself

De beweging van SPY van opening tot sluiting van 0.77% stond op plaats 3 van 22 voorafgaande sessies, gerangschikt naar absolute omvang, binnen een periode die teruggaat tot 2026-06-30. De ranglijst telt hoeveel andere sessies binnen die periode een grotere beweging lieten zien, plus één. De eerste plaats staat dus voor de grootste beweging van de voorafgaande maand.

Marktbreedte

Een indexniveau is één getal. Marktbreedte telt hoeveel aandelen dezelfde richting volgden.

QueryBreedte van de liquide tape: slotkoers van 30 juli versus slotkoers van 29 juli, filter op $1M verhandeld
De exacte SQL achter elk getal
SELECT
    countIf(c30 > c29 AND liquid) AS advancers,
    countIf(c30 < c29 AND liquid) AS decliners,
    countIf(c30 = c29 AND liquid) AS unchanged,
    countIf(liquid) AS liquid_tickers,
    countIf(NOT liquid) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(c30 > c29 AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
    SELECT ticker, c29, c30, dv30 >= 1000000 AS liquid
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS c30,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-30 13:30:00') AS dv30
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-30 20:00:00'
        GROUP BY ticker
        HAVING c29 > 0 AND c30 > 0
    )
)
Run this yourself

Van de 5960 namen die tijdens de reguliere handelsuren een omzetdrempel van één miljoen dollar overschreden, sloten 3782 boven het slot van woensdag en 2122 eronder. Het aandeel stijgers kwam daarmee uit op 63.5%. De filter liet 5492 minder liquide namen 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 basket is het uitgangspunt: de lezer leert de rijen kennen en geen enkele winnaar wordt achteraf redactioneel geselecteerd.

QueryAcht mega-caps: verandering versus 29 juli en dollars in reguliere handelsuren, 30 juli
De exacte SQL achter elk getal
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-30 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-30 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-30 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00')
        OR (window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 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 ticker
Run this yourself

AAPL bewoog -1.24%, META -8.17%, MSFT 15.06% en NVDA 2.67% bij een omzet van 19.63 miljard dollar tijdens de reguliere handelsuren, terwijl TSLA op 3.53% uitkwam. De dollar­kolom laat zien welk deel van de tape deze acht namen zelfstandig vertegenwoordigen; het breadth-panel hierboven laat zien in hoeverre de rest van de markt met hen meeging.

De grootste koersbewegingen van de dag

Voor beide borden is een omzet van vijf miljoen dollar tijdens de reguliere handelsuren vereist. Namen waarvan de split tussen de twee gemeten slotkoersen werd uitgevoerd, worden uitgesloten. Ook wordt één opnieuw gebruikt symbool uitgesloten op basis van de ambiguïteitscontrole die in de notities wordt beschreven.

QueryGrootste stijgers en dalers: slotkoers van 30 juli versus slotkoers van 29 juli, $5M+ verhandeld, splits uitgesloten
De exacte SQL achter elk getal
SELECT ticker, board, day_pct, day_dollar_m
FROM (
    SELECT 'gainers' AS board, ticker, round((c30 / c29 - 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS c30,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-30 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-29' AND execution_date <= '2026-07-30')
          AND window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-30 20:00:00'
        GROUP BY ticker
        HAVING c29 > 0 AND c30 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct DESC
    LIMIT 8
    UNION ALL
    SELECT 'decliners' AS board, ticker, round((c30 / c29 - 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS c30,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-30 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-29' AND execution_date <= '2026-07-30')
          AND window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-30 20:00:00'
        GROUP BY ticker
        HAVING c29 > 0 AND c30 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct ASC
    LIMIT 8
)
ORDER BY board DESC, abs(day_pct) DESC
Run this yourself

De grootste stijger op het bord, CYCU, steeg met 489.5% bij een verhandelde waarde van 474.4 miljoen dollar. De sterkste daler, IREZ, noteerde -61.2% bij een omzet van 90.8 miljoen. Deze pagina registreert de omvang en de receipts, maar verbindt daar geen verklaring aan.

Sectorale spreiding

De elf SPDR-select-sectorfondsen, het slot van 30 juli ten opzichte van dat van 29 juli, gerangschikt van best naar slechtst. De samenstelling van de mand is vastgesteld en staat vast; het gaat niet om een classificatie van een dataleverancier.

QuerySector-ETF's, slotkoers van 30 juli versus slotkoers van 29 juli, gerangschikt
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((c30 / c29 - 1) * 100, 2) AS day_pct
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-30 00:00:00') AS c29,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-30 00:00:00') AS c30
        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-29 13:30:00' AND window_start < '2026-07-29 20:00:00')
            OR (window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00'))
        GROUP BY ticker
        HAVING c29 > 0 AND c30 > 0
    )
)
ORDER BY day_pct DESC
Run this yourself

Technology voerde de ranglijst aan met 5.52%, terwijl Communications onderaan stond op -2.69%, 8.21 procentpunt lager. Die spread vormt 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

QueryTop 6 naar verhandelde dollars, top 4 naar verhandelde aandelen: reguliere handelsuren op 30 juli
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-30 13:30:00' AND window_start < '2026-07-30 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-30 13:30:00' AND window_start < '2026-07-30 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) DESC
Run this yourself

MU voerde het dollaroverzicht aan met een omzet van 43.29 miljard tijdens de reguliere handelstijden. MSFT volgde met 42.56 miljard. Het aandelenoverzicht beantwoordt een andere vraag: CYCU stond bovenaan met 544 miljoen aandelen tegen een impliciete gemiddelde prijs van $0.86. Het dollarvolume laat zien waar de aandacht van de markt ligt. Het aandelenvolume laat zien hoe vaak er wordt gehandeld. De variant van deze maatstaf per naam is relatief volume.

De options tape

QueryOptions tape: contracten, call-aandeel, same-day-aandeel versus woensdag, drukst verhandelde SPY-contract
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) = '260730', 1, 0) AS is_0dte
            FROM global_markets.options_trades
            WHERE sip_timestamp >= '2026-07-30 00:00:00' AND sip_timestamp < '2026-07-31 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-30 13:30:00' AND window_start < '2026-07-30 20:00:00'
    ) AS spy_regular_close,
    (
        SELECT round(toFloat64(sum(size)) / 1e6, 2)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
    ) AS jul29_contracts_m,
    (
        SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260729') / sum(size), 1)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
    ) AS jul29_pct_0dte
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    jul29_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) = '260730') / sum(size), 1) AS pct_0dte,
    jul29_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-30 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00'
Run this yourself

De options tape registreerde 10.93 miljoen transacties voor 67.06 miljoen contracten, tegenover 66.84 miljoen op woensdag. Calls waren goed voor 54.6% van het contractvolume. Contracten die in dezelfde sessie afliepen, de groep met nul dagen tot expiratie, waren goed voor 25.3%, tegenover 33.1% op woensdag. Dat ritme wordt bepaald door het tijdstip van expiratie. Het drukst verhandelde SPY-contract was de 740 C, met 0.56 miljoen contracten. De strike lag -1.73 dollar van de reguliere slotkoers van SPY op $741.73. Dit is gemeten als strike minus slotkoers.

De quote-tape

De quotegegevens zijn de schaars­te dataset van deze desk en worden elke sessie gemeten. Ook gewone dagen worden geregistreerd.

QueryAantal NBBO-updates voor aandelen: 30 juli versus 29 juli, met updates van genoemde tickers (miljoenen)
De exacte SQL achter elk getal
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-30')) / 1e6, 2) AS jul30_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29')) / 1e6, 2) AS jul29_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-30')) / countIf(toDate(sip_timestamp) = toDate('2026-07-29')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-30') AND ticker = 'SPY') / 1e6, 2) AS jul30_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-30') AND ticker = 'QQQ') / 1e6, 2) AS jul30_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-30') AND ticker = 'NVDA') / 1e6, 2) AS jul30_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00'
Run this yourself

De stock-quote-tape bevatte 560.75 miljoen NBBO-updates, tegenover 722.65 miljoen op woensdag. Dat is een verandering van -22.4% op dagbasis. SPY noteerde 5.55 miljoen updates, QQQ 6.75 miljoen en NVDA 2.39 miljoen.

QueryZeven namen: mediane RTH quoted spread in basis points, met aantallen voor quote-kwaliteit, 30 juli
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-30 13:30:00' AND sip_timestamp < '2026-07-30 20:00:00'
GROUP BY ticker
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
ORDER BY ticker
Run this yourself

De mediane quoted spread van SPY tijdens reguliere handelsuren bedroeg 0.27 basis points van de mid. Voor QQQ was dat 0.59 en voor NVDA 1.03. De laatste twee kolommen vormen de disclosure: one-sided en crossed quotes worden per naam geteld en afzonderlijk gehouden van de mediaan, in plaats van stilzwijgend te worden verwijderd. Een crossed quote, waarbij de bid boven de ask ligt, is een normaal artefact van een geconsolideerde feed die op nanoseconde-niveau uit vele handelsplatformen wordt samengesteld.

QueryMediane spread van SPY gerangschikt ten opzichte van elke juli-sessie, krapste eerst
De exacte SQL achter elk getal
SELECT round(anyIf(spread_bps, d = toDate('2026-07-30')), 2) AS jul30_median_spread_bps,
       arrayCount(x -> x < anyIf(spread_bps, d = toDate('2026-07-30')), groupArrayIf(spread_bps, d != toDate('2026-07-30'))) + 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-30 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
)
Run this yourself

Vergeleken met elke sessie in juli volgens identieke logica kwam de mediane spread van SPY van 0.27 basis points uit op 19 van 21, geteld vanaf de krapste spread, binnen een periode die begon op 2026-07-01. Op een rustige tape is dat precies het doel van dit panel: een gewone liquiditeitsdag is een bevinding die wordt gepubliceerd en afgebakend.

QueryOptions NBBO tape: totale updates versus de stock tape, plus het SPY root-segment, 30 juli
De exacte SQL achter elk getal
WITH
    (SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-30 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00') AS jul30_options_rows,
    (SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-30 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00') AS jul30_stock_quote_rows
SELECT
    round(jul30_options_rows / 1e9, 2) AS jul30_options_bn,
    round(jul30_options_rows / jul30_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-30 13:30:00' AND sip_timestamp < '2026-07-30 20:00:00') / 1e6, 0) AS jul30_spy_options_m
Run this yourself

De options-NBBO-tape omvatte 10.32 miljard updates, 18.4 keer zoveel als de stock-quote-tape. Alleen al de SPY-root kwam tijdens reguliere handelsuren uit op 441 miljoen updates.

Rentes

QueryTreasury curve-prints geregistreerd, 27 juli tot en met 30 juli
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-27' AND date <= '2026-07-30'
ORDER BY date
Run this yourself

Het bestand van Treasury loopt ongeveer één sessie achter op de markt. Dit paneel toont daarom de uitgevoerde trades die het bevat: 4 gedateerde rijen in het venster. De meest recente rij, gedateerd 2026-07-30, zette de tweejaarsrente op 4.23%, de tienjaarsrente op 4.68% en de dertigjaarsrente op 5.21%. De spread tussen de tweejaars- en tienjaarsrente bedroeg 45 basis points.

De kalender achter de handelsdag

QueryEx-dividenden, splits, listings, nieuws en de samenstelling van SEC-filings op 30 juli
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-30 04:00:00' AND published_utc < '2026-07-31 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-30'
    ) AS fil
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-30') AS ex_dividend_records,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-30') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-30') AS forward_splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-30') AS listings,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-30 04:00:00' AND published_utc < '2026-07-31 04:00:00') AS news_articles,
    (SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-30 04:00:00' AND published_utc < '2026-07-31 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_10q
Run this yourself

200 dividendregistraties gingen op 30 juli ex-dividend, 3 omgekeerde en 3 reguliere splits werden uitgevoerd en 3 nieuwe listings kwamen op de tape. De nieuwsfeed bevatte 173 artikelen van 2 uitgevers. Daarvan was NVDA de meest besproken ticker in het venster van deze feed, met 11 artikelen. De dagelijkse EDGAR-index bevat voor deze datum 5544 filings van 2743 verschillende indieners: 745 insider-rapporten in Form 4, 460 actuele 8-K-rapporten, 1426 prijsbijlagen bij 424B2-documenten en 252 kwartaalrapporten op Form 10-Q. Deze index wordt volgens een eigen schema bijgewerkt. Dit paneel toont wat de index op het moment van genereren bevat.

Op de agenda

Lees de komende twee sessies vanuit dezelfde tabellen en kijk daarbij bewust voorbij de periode. Vrijdag 31 juli is volgens de kalender de laatste handelsdatum van de maand.

Query31 juli en 3 augustus op de kalender: sluitingen, ex-dividenden, splits, de Friday expiry en de vertraging in short interest
De exacte SQL achter elk getal
SELECT
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-31' AND date <= '2026-08-03' AND status != 'open') AS closures_next_two_sessions,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-31' AND ex_dividend_date <= '2026-08-03') AS exdiv_records_next_two_sessions,
    (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-31' AND ex_dividend_date <= '2026-08-03') AS household_exdivs,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-31' AND execution_date <= '2026-08-03') AS splits_next_two_sessions,
    round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260731') / sum(size), 1) AS jul31_expiry_pct_of_thu_volume,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-30') AS latest_short_interest_settlement
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-30 00:00:00' AND sip_timestamp < '2026-07-31 00:00:00'
Run this yourself

De feestdagentabel toont 0 sluitingsdagen op vrijdag 31 juli en maandag 3 augustus. 544 dividendrecords gaan op die twee sessies ex-dividend, waarvan 0 betrekking hebben op tien gecontroleerde bekende huishoudnamen. Daarnaast staan 14 splits gepland voor uitvoering. Van het optievolume van donderdag had 26.7% al betrekking op contracten die vrijdag 31 juli expireren. De meest recente beschikbare settlement van short interest is 2026-07-15. Dit bestand wordt met voldoende vertraging gepubliceerd om een eigen toelichting te rechtvaardigen.

De sessie, geverifieerd

QuerySessiecontrole: eerste/laatste SPY-bar ET, aantal reguliere bars, holiday receipts, volgende sluiting
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-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-30 13:30:00' AND window_start < '2026-07-30 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-30') AS jul30_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-30' 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-30' 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-30 00:00:00' AND window_start < '2026-07-31 00:00:00'
Run this yourself

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.

Veelgestelde vragen

Hoe presteerde de aandelenmarkt op donderdag 30 juli 2026?

SPY veranderde 1.68% van slotkoers tot slotkoers naar $741.73, met QQQ op 3.34%, DIA op 1.19% en IWM op 1.37%. Onder de liquide namen steeg 3782 en daalde 2122.

Welke sector voerde op 30 juli 2026 de ranglijst aan?

Technology, op 5.52%, gemeten over de elf SPDR-select-sectorfondsen. De zwakste van de elf, Communications, noteerde -2.69%.

Hoe actief was de optiemarkt op 30 juli 2026?

67.06 miljoen contracten werden verhandeld, tegenover 66.84 miljoen in de vorige sessie. Contracten met afloop op dezelfde dag waren goed voor 25.3% van het volume en calls voor 54.6%.

Welk aandeel vertegenwoordigde op 30 juli 2026 het grootste dollarvolume?

MU, met een dollarvolume van 43.29 miljard tijdens de reguliere handelsuren, vóór MSFT met 42.56 miljard.

Datatoelichting

De vorige dagelijkse editie is 29 juli 2026, en het wekelijkse overzicht behandelt de week daarvoor. Benoemde panels per ticker zijn alfabetisch gerangschikt, zodat verwijzingen in de tekst naar vaste rijen wijzen. Ranglijsten en mover-borden zijn op waarde gerangschikt; elke positionele bewering daarin is vastgelegd als een sanity bound. De mega-cap-basket en de sectorbasket met elf funds zijn vastgelegde sets en geen classificaties van een vendor. Voor de mover-borden geldt een turnover-drempel van vijf miljoen dollar tijdens reguliere handelsuren. Namen waarvan de split tussen de twee gemeten slotstanden is uitgevoerd, worden uitgesloten. Ook wordt één hergebruikt symbool uitgesloten op grond van de interne ambiguïteitsregel, zodat een callout altijd naar een verifieerbare naam verwijst. De quote-panels tellen per naam eenzijdige en crossed quotes, in plaats van deze stilzwijgend te verwijderen. Het bestand van Treasury en de dagelijkse EDGAR-index worden volgens hun eigen schema aangeleverd. Daarom rapporteren die panels wat zij bevatten, zonder uit te gaan van tijdige aanlevering. Hier verschijnt geen implied-volatility-index. Deze series zijn niet voor deze warehouse gelicentieerd. Volatility wordt daarom rechtstreeks uit de tape afgeleid aan de hand van ranges, het aandeel van same-day options en het quote-gedrag.

Methodologie

  • Bron van marktdata: geconsolideerde tape. delayed_stocks_minute_aggs voor prijzen en volumes, options_trades voor de options tape, cache_stocks_quotes en cache_options_quotes voor 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 handelsuren.
  • Tijdzoneverwerking: alle opgeslagen timestamps staan in UTC; WHERE-clausules gebruiken onbewerkte UTC-literals en toTimeZone verschijnt alleen 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 29 juli, nooit overgenomen uit een eerder bericht.
  • Decimalen: prijs-, size- en volumekolommen worden vóór elke deling of vermenigvuldiging naar Float64 geconverteerd.
  • Deterministische aggregaties: overal exacte quantielen en tie-breaks op basis van tuple-sleutels; elke bewering over volgorde of teken in de tekst is vastgelegd als sanity bound.
  • As-of-datum van het warehouse: 1 augustus 2026, twee dagen na de sessie, aan de rand van de gebruikelijke ingest-lag van één tot twee dagen van de tape; de bovenstaande begrensde receipts houden het bericht in stand als bij het genereren een dataset ontbreekt.

Kruisverwijzingen: de vorige dagelijkse recap, de wekelijkse recap, wanneer options expireren, wat een bid-ask spread is en de spread tussen twee- en tienjarige Treasuries.

Elke bovenstaande query draait ongewijzigd op de Strasmore-terminal als u een window naar een andere sessie wilt verplaatsen.