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

Marktupdate 27 juli 2026: de dag in cijfers

Marktupdate van 27 juli 2026 met query-onderbouwde cijfers over het scorebord, breadth, sector spread, options flow, rates en de economische kalender.

Deze marktupdate voor maandag 27 juli 2026 beschrijft de volledige sessie aan de hand van opgeslagen queries: de verandering van SPY ten opzichte van de slotkoers van vrijdag kwam uit op 0.02%, het aandeel stijgers in de liquide markt op 65.4% en de options tape liet 64.69 miljoen contracten zien. Elk hieronder weergegeven tijdvenster is aan beide zijden gekoppeld aan expliciete datums. Bij het opnieuw uitvoeren van de SQL van een paneel komen dezelfde cijfers terug.

Het scorebord

Elke verandering vergelijkt de laatste minuutbar van de reguliere sessie op 27 juli met die van vrijdag 24 juli, twee opeenvolgende handelssessies met een weekend ertussen. De rijen staan alfabetisch, zodat elke ETF een vaste positie behoudt.

QuerySPY / QQQ / DIA / IWM: 27 juli versus slotkoers van 24 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-24 13:30:00' AND window_start < '2026-07-24 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-27 13:30:00' AND window_start < '2026-07-27 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 0.49%, IWM 0.59%, QQQ -0.32% en SPY 0.02% naar een slot op $739.02. Elke rij splitst de beweging op in twee delen: SPY opende 0.82% ten opzichte van het slot van vrijdag, een gap die het hele weekend omvat, en bewoog vervolgens -0.79% van opening naar slot. Op een maandag omvat het overnight-deel in feite twee dagen. De splitsing tussen dit deel en het intraday-deel is het eerste kenmerk van de sessie.

Was de dag uitzonderlijk?

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

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

De beweging van opening tot sluiting van SPY van -0.79% stond op plaats 1 van 21 voorafgaande sessies, gerangschikt naar absolute omvang, binnen een periode die teruggaat tot 2026-06-26. De rangschikking telt hoeveel andere sessies binnen die periode een grotere beweging lieten zien, plus één. De eerste plaats zou dus de grootste beweging van de voorafgaande maand zijn.

Marktbreedte

Een indexniveau is één getal. De marktbreedte telt hoeveel aandelen de beweging over het weekend heen volgden.

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

Van de 5935 aandelen met een omzet tijdens de reguliere handelsuren van meer dan één miljoen dollar, sloten 3880 boven de slotstand van vrijdag en 1972 eronder. Het aandeel stijgers kwam daarmee uit op 65.4%. De filter sloot 5336 aandelen met een lagere liquiditeit uit. Deze zijn hier wel meegeteld en niet stilzwijgend genegeerd.

De mega-cap watchlist

Dezelfde acht mega-cap namen verschijnen hier elke sessie, alfabetisch gerangschikt zodat elke naam zijn eigen rij behoudt. Een vaste basket is het uitgangspunt: de lezer leert de rijen kennen en achteraf worden geen winnaars geselecteerd.

QueryAcht megacaps: verandering versus 24 juli en dollars in reguliere handelsuren, 27 juli
De exacte SQL achter elk getal
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-27 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-27 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-27 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-24 13:30:00' AND window_start < '2026-07-24 20:00:00')
        OR (window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 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.16%, META -0.21%, MSFT 1.94% en NVDA -5.04% bij een omzet tijdens de reguliere handelsuren van 25.42 miljard dollar, met TSLA op -1.2%. De kolom in dollars laat zien welk deel van de tape deze acht namen afzonderlijk voor hun rekening nemen. Het breadth-panel hierboven controleert in hoeverre de rest van de markt met hen meebewoog.

De grootste bewegingen van de dag

Voor beide borden is een omzet van vijf miljoen dollar tijdens de reguliere handelsuren vereist. Aandelen waarvan de split tussen de twee gemeten slotkoersen is uitgevoerd, worden uitgesloten. Ook wordt één hergebruikt symbool uitgesloten op grond van de in de notities beschreven interne ambiguïteitsregel.

QueryGrootste stijgers en dalers: slotkoers 27 juli versus slotkoers 24 juli, $5M+ traded, splits uitgesloten
De exacte SQL achter elk getal
SELECT ticker, board, day_pct, day_dollar_m
FROM (
    SELECT 'gainers' AS board, ticker, round((c27 / c24 - 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-24 13:30:00' AND window_start < '2026-07-24 20:00:00') AS c24,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-27 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-24' AND execution_date <= '2026-07-27')
          AND window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-27 20:00:00'
        GROUP BY ticker
        HAVING c24 > 0 AND c27 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct DESC
    LIMIT 8
    UNION ALL
    SELECT 'decliners' AS board, ticker, round((c27 / c24 - 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-24 13:30:00' AND window_start < '2026-07-24 20:00:00') AS c24,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-27 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-24' AND execution_date <= '2026-07-27')
          AND window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-27 20:00:00'
        GROUP BY ticker
        HAVING c24 > 0 AND c27 > 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, DFNS, steeg 214.9% bij een verhandelde waarde van 486.4 miljoen dollar. De sterkste daler, MPLT, noteerde -72.9% bij een verhandelde waarde van 83.3 miljoen dollar. Deze pagina registreert de omvang en de receipts, maar koppelt daar geen verklaring aan.

Sectorale dispersie

De elf SPDR Select Sector-fondsen, de slotstand van 27 juli ten opzichte van die van 24 juli, gerangschikt van best naar slechtst. De samenstelling is vooraf vastgesteld en blijft ongewijzigd; het gaat niet om een classificatie van een dataleverancier.

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

Staples stond bovenaan met 1.5% en Energy onderaan met -2.06%, 3.56 procentpunt lager. Dat spread is de sectorale dispersie van de dag. Een markt waarin alle elf fondsen binnen één procentpunt eindigen, ziet er heel anders uit dan een markt waarin de verschillen meerdere procentpunten bedragen.

Waar de dollars werden verhandeld

QueryTop 6 naar verhandelde dollars, top 4 naar verhandelde aandelen: reguliere handelsuren 27 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-27 13:30:00' AND window_start < '2026-07-27 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-27 13:30:00' AND window_start < '2026-07-27 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 35.71 miljard aan omzet tijdens reguliere handelsuren, gevolgd door SPY met 27.03 miljard. Het aandelenoverzicht beantwoordt een andere vraag: KIDZ stond bovenaan met 198.3 miljoen aandelen tegen een impliciete gemiddelde prijs van $0.66. Het dollarvolume laat zien waar de aandacht van de markt ligt, terwijl het aandelenvolume de handelsfrequentie weerspiegelt. De variant van deze maatstaf per naam is relatief volume.

De optiestroom

QueryOptions tape: contracten, call share, same-day share versus vrijdag, 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) = '260727', 1, 0) AS is_0dte
            FROM global_markets.options_trades
            WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 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-27 13:30:00' AND window_start < '2026-07-27 20:00:00'
    ) AS spy_regular_close,
    (
        SELECT round(toFloat64(sum(size)) / 1e6, 2)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-24 00:00:00' AND sip_timestamp < '2026-07-25 00:00:00'
    ) AS jul24_contracts_m,
    (
        SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260724') / 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 jul24_pct_0dte
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    jul24_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) = '260727') / sum(size), 1) AS pct_0dte,
    jul24_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-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00'
Run this yourself

De optiestroom registreerde 11.07 miljoen transacties voor 64.69 miljoen contracten, tegenover 71.14 miljoen op vrijdag. Calls waren goed voor 55.1% van het contractvolume. Contracten die tijdens dezelfde sessie aflopen, de groep zero-days-to-expiry, waren goed voor 39.3% tegenover 49% op vrijdag. Dit ritme wordt bepaald door de timing van expiraties. Het drukst verhandelde SPY-contract was de 740 C, met 0.59 miljoen contracten. De strike lag 0.98 dollar van de reguliere slotkoers van SPY op $739.02, gemeten als strike minus slotkoers.

De quote tape

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

QueryAantal NBBO-updates voor aandelen: 27 juli versus 24 juli, met updates voor genoemde tickers (miljoenen)
De exacte SQL achter elk getal
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-27')) / 1e6, 2) AS jul27_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-24')) / 1e6, 2) AS jul24_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-27')) / countIf(toDate(sip_timestamp) = toDate('2026-07-24')) - 1) * 100, 1) AS session_over_session_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-27') AND ticker = 'SPY') / 1e6, 2) AS jul27_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-27') AND ticker = 'QQQ') / 1e6, 2) AS jul27_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-27') AND ticker = 'NVDA') / 1e6, 2) AS jul27_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-24 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00'
Run this yourself

De stock-quote tape bevatte 553.53 miljoen NBBO-updates, tegenover 500.88 miljoen op vrijdag. Dat is een sessie-op-sessie verandering van 10.5%. SPY noteerde 4.84 miljoen updates, QQQ 6.78 miljoen en NVDA 2.93 miljoen.

QueryZeven namen: mediane quoted spread in basis points tijdens RTH, met aantallen voor quote quality, 27 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-27 13:30:00' AND sip_timestamp < '2026-07-27 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 spread van de SPY-quote tijdens reguliere handelsuren bedroeg 0.27 basis points van de mid. Voor QQQ was dat 0.59 en voor NVDA 1.02. De laatste twee kolommen vormen de disclosure: eenzijdige en gekruiste quotes worden per naam geteld en apart gehouden van de mediaan, in plaats van stilzwijgend te worden verwijderd. Een gekruiste quote, waarbij de bid boven de ask ligt, is een normaal artefact van een geconsolideerde feed die op nanoseconde-resolutie uit meerdere handelsplaatsen wordt samengesteld.

QueryMediane spread van SPY gerangschikt tegen elke julisessie tot en met de 27e, krapste eerst
De exacte SQL achter elk getal
SELECT round(anyIf(spread_bps, d = toDate('2026-07-27')), 2) AS jul27_median_spread_bps,
       arrayCount(x -> x < anyIf(spread_bps, d = toDate('2026-07-27')), groupArrayIf(spread_bps, d != toDate('2026-07-27'))) + 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-27 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 julisessie op basis van dezelfde logica viel de mediane spread van SPY die dag, 0.27 basis points, op 18 van 18, geteld vanaf de krapste spread, binnen een periode die begon op 2026-07-01. Op een rustige tape is dat precies het doel van het panel: een normale liquiditeitsdag is een bevinding die wordt gepubliceerd en afgebakend.

QueryOptions NBBO tape: totale updates versus de stock tape, plus het SPY-rootsegment, 27 juli
De exacte SQL achter elk getal
WITH
    (SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00') AS jul27_options_rows,
    (SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00') AS jul27_stock_quote_rows
SELECT
    round(jul27_options_rows / 1e9, 2) AS jul27_options_bn,
    round(jul27_options_rows / jul27_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-27 13:30:00' AND sip_timestamp < '2026-07-27 20:00:00') / 1e6, 0) AS jul27_spy_options_m
Run this yourself

De options-NBBO-tape omvatte 10.38 miljard updates, 18.8 keer zoveel als de stock-quote tape. Alleen al de SPY-root was goed voor 440 miljoen updates tijdens reguliere handelsuren.

Rentes

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

Het bestand van Treasury loopt ongeveer een sessie achter op de markt. Dit paneel rapporteert daarom de uitgevoerde trades die het bevat: 4 gedateerde rijen in de periode van 22 juli tot en met 27 juli. De meest recente rij, gedateerd 2026-07-27, zette de tweejaarsrente op 4.31%, de tienjaarsrente op 4.65% en de dertigjaarsrente op 5.12%. Dat komt neer op een spread tussen de twee- en tienjaarsrente van 34 basis points.

De kalender achter de handelsdag

QueryEx-dividends, splits, listings, nieuws en de SEC-filingmix van 27 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-27 04:00:00' AND published_utc < '2026-07-28 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-27'
    ) AS fil
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-27') AS ex_dividend_records,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-27') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-27') AS forward_splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-27') AS listings,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-27 04:00:00' AND published_utc < '2026-07-28 04:00:00') AS news_articles,
    (SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-27 04:00:00' AND published_utc < '2026-07-28 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

91 dividendrecords gingen op 27 juli ex-dividend, 7 omgekeerde en 1 reguliere splits werden uitgevoerd en 0 nieuwe beursnoteringen kwamen op de tape. De nieuwsfeed bevatte 166 artikelen van 2 uitgevers. Daarvan was MSFT de meest besproken ticker in het venster van deze feed, met 12 artikelen. De dagelijkse EDGAR-index bevat voor deze datum 3997 filings van 2163 verschillende indieners: 587 insider-rapporten volgens Form 4, 226 actuele 8-K-rapporten, 555 424B2-prijssupplementen en 23 kwartaalrapporten volgens Form 10-Q. Die index wordt volgens een eigen schema bijgewerkt. Dit paneel toont wat de index op het moment van genereren bevat.

Op de agenda

De rest van de week, van dinsdag 28 juli tot en met vrijdag 31 juli, kan aan de hand van dezelfde tabellen worden gelezen, waarbij bewust verder wordt gekeken dan deze periode.

Query28 tot en met 31 juli op de kalender: sluitingen, ex-dividends, splits, de expiratie op vrijdag 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-28' 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-28' 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-28' AND ex_dividend_date <= '2026-07-31') AS household_exdivs,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-28' 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_mon_volume,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-27') AS latest_short_interest_settlement
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00'
Run this yourself

De feestdagentabel toont 0 sluitingen tijdens de vier resterende sessies van de week. Tijdens die sessies gaan 843 dividendrecords ex-dividend, waaronder 0 van de tien gecontroleerde bekende namen, en 18 splits zijn gepland om te worden uitgevoerd. Van het optievolume van maandag had 17.1% al betrekking op contracten met expiratie op vrijdag 31 juli. De meest recente beschikbare settlement van de short interest is 2026-07-15, een bestand dat met voldoende vertraging wordt 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-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-27') AS jul27_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-27' 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-27' 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-27 00:00:00' AND window_start < '2026-07-28 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 de 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 maandag 27 juli 2026?

SPY veranderde 0.02% ten opzichte van het slot van vrijdag naar $739.02. QQQ stond op -0.32%, DIA op 0.49% en IWM op 0.59%. Onder liquide aandelen steeg 3880 en daalde 1972.

Welke sector stond op 27 juli 2026 bovenaan?

Staples, op 1.5%, gemeten over de elf SPDR-select-sectorfondsen. Energy was de zwakste van de elf en printte -2.06%.

Hoe actief was de optionsmarkt op 27 juli 2026?

Er werden 64.69 miljoen contracten verhandeld, tegenover 71.14 miljoen in de voorgaande sessie. Contracten met afloop op dezelfde dag waren goed voor 39.3% van het volume en calls voor 55.1%.

Welk aandeel kende op 27 juli 2026 het hoogste dollarvolume?

MU, met een dollarvolume van 35.71 miljard tijdens de reguliere handelsuren, vóór SPY met 27.03 miljard.

Gegevensnotities

Deze editie vult een maandagsessie aan in de hervatte dagelijkse reeks, die op 1 augustus is gepubliceerd. De voorafgaande dagelijkse editie op basis van sessiedatum is 10 juli 2026, de editie van 29 juli behandelt de woensdag van diezelfde week en de wekelijkse terugblik betreft de week die eindigde op vrijdag 24 juli, de sessie waarop elke vergelijking op deze pagina is gebaseerd. Panelen met namen per ticker zijn alfabetisch gerangschikt, zodat verwijzingen in de tekst naar vaste rijen wijzen. Ranglijsten en mover-overzichten zijn op waarde gerangschikt en elke positionele bewering daarin is vastgelegd als een sanity bound. De mega-capmand en de sector-mand met elf fondsen zijn vooraf bepaalde, vaste sets en geen classificaties van een leverancier. Voor de mover-overzichten geldt een omzetdrempel van vijf miljoen dollar tijdens reguliere handelsuren. Ze sluiten elke naam uit waarvan de splitsing is uitgevoerd tussen de twee slotkoersen die zij meten. Ook sluiten ze één hergebruikt symbool uit op grond van de interne ambiguïteitscontrole, zodat een callout altijd verwijst naar een verifieerbare naam. Elke slotkoers-op-slotkoerswaarde hier bestrijkt het weekend, van vrijdag 24 juli tot maandag 27 juli, en de gap-kolom van het scorebord omvat die volledige periode. De quote-panelen tellen eenzijdige en crossed quotes per naam, in plaats van deze stilzwijgend te verwijderen. Het bestand van Treasury en de dagelijkse EDGAR-index worden volgens hun eigen schema's aangeleverd. Daarom rapporteren die panelen wat zij bevatten, zonder ervan uit te gaan dat de gegevens al zijn binnengekomen. Er staat hier geen implied-volatility-index: deze reeksen zijn niet gelicentieerd voor dit warehouse. Volatility wordt daarom uit de tape afgeleid aan de hand van ranges, het aandeel same-day opties en het quote-gedrag.

Methodologie

  • Bron van marktdata: geconsolideerde tape. delayed_stocks_minute_aggs voor prijzen en volumes, options_trades voor de optionstape, 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 uit de extended hours.
  • Tijdzoneverwerking: alle opgeslagen timestamps zijn UTC; WHERE-clausules gebruiken onbewerkte UTC-literals en toTimeZone verschijnt 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 voorgaande sessie: in de query berekend vanaf vrijdag 24 juli, de voorgaande handelssessie over het weekend heen, en nooit overgenomen uit een eerder bericht.
  • Decimalen: prijs-, size- en volumekolommen worden vóór elke deling of elk product naar Float64 gecast.
  • Deterministische aggregaties: overal exacte kwantielen en tie-breaks op basis van tuple-sleutels; elke bewering over een volgorde of teken in de tekst is gecodeerd als een sanity bound.
  • As-of-datum van het warehouse: 1 augustus 2026, vijf dagen na de sessie, dus na de gebruikelijke ingest-lag van één tot twee dagen voor de tape; de hierboven afgebakende receipts houden het bericht in stand als bij het genereren een dataset ontbreekt.

Kruisverwijzingen: de vorige dagelijkse recap, de editie van 29 juli, de weekly recap, wanneer opties 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 verleggen.