Strasmore Research
Podsumowania rynkowe Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-02

Podsumowanie rynku: 28 lipca 2026 w liczbach

Sesja 28 lipca 2026 r. w liczbach: indeksy, szerokość rynku, sektory, opcje, notowania, stopy i kalendarz. Sprawdź pełną tablicę wyników.

To podsumowanie sesji rynkowej z wtorku 28 lipca 2026 r. przedstawia cały przebieg sesji na podstawie zapisanych zapytań: zmiana kursu zamknięcia SPY względem poprzedniego zamknięcia wyniosła 0.24%, udział spółek zwyżkujących w płynnym segmencie rynku wyniósł 58.6%, a na rynku opcji zawarto 59.28 mln kontraktów. Każde z poniższych okien ma jednoznacznie określone daty początkową i końcową, dlatego ponowne uruchomienie zapytania SQL dla dowolnego panelu zwróci te same wartości.

Tablica wyników

Każda zmiana porównuje ostatni jednominutowy słupek regularnej sesji z 28 lipca ze słupkiem z poniedziałku, 27 lipca, czyli z dwóch kolejnych sesji giełdowych. Wiersze uporządkowano alfabetycznie, dlatego każdy ETF zachowuje stałą pozycję.

ZapytanieSPY / QQQ / DIA / IWM: 28 lipca względem zamknięcia 27 lipca, zwykłe godziny sesji
Dokładny kod SQL dla każdej liczby
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 ticker
Run this yourself

DIA zmienił się o 1.07%, IWM o 0.15%, QQQ o -0.96%, a SPY o 0.24%, zamykając sesję na poziomie 740.76 USD. W każdym wierszu zmianę podzielono na dwa etapy: SPY otworzył się 0.02% względem poniedziałkowego zamknięcia i zmienił się o 0.21% od otwarcia do zamknięcia. Zmiana overnight i zmiana śródsesyjna nie muszą być zgodne. Ich rozdzielenie stanowi pierwszy wyróżnik sesji.

Czy sesja była nietypowa?

Wynik jednej sesji niewiele znaczy bez znajomości jego rozkładu, dlatego sesję oceniono na tle własnego poprzedniego miesiąca według identycznej metodologii.

ZapytanieDzienna zmiana SPY w kontekście kroczącym (od otwarcia do zamknięcia, 29 czerwca–28 lipca)
Dokładny kod SQL dla każdej liczby
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
)
Run this yourself

Zmiana SPY od otwarcia do zamknięcia wyniosła 0.21% i uplasowała się na 14 miejscu wśród 21 poprzednich sesji pod względem wartości bezwzględnej, w okresie sięgającym do 2026-06-29. Pozycja odpowiada liczbie innych sesji w tym okresie, które odnotowały większą zmianę, powiększonej o jeden. Pierwsze miejsce oznaczałoby największą zmianę w poprzednim miesiącu.

Szerokość rynku

Poziom indeksu to jedna liczba. Szerokość rynku pokazuje, ile spółek poruszało się w tym samym kierunku.

ZapytanieSzerokość rynku na płynnym rynku: zamknięcie 28 lipca względem 27 lipca, filtr obrotu 1 mln USD
Dokładny kod SQL dla każdej liczby
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
    )
)
Run this yourself

Spośród 6008 spółek, których obrót w regularnych godzinach przekroczył próg miliona USD, 3519 zamknęło sesję powyżej poniedziałkowego zamknięcia, a 2423 poniżej. Udział spółek zwyżkujących wyniósł 58.6%. Filtr wykluczył 5346 spółek o niższej płynności, które ujęto w tym zestawieniu, zamiast po prostu pominąć.

Koszyk spółek mega-cap

Te same osiem spółek mega-cap pojawia się tutaj podczas każdej sesji, w kolejności alfabetycznej, aby każda zachowała swoje miejsce. Stały koszyk jest tu kluczowy: czytelnik zna układ wierszy, a po fakcie nie wybiera się arbitralnie zwycięzców.

ZapytanieOsiem spółek mega-cap: zmiana względem 27 lipca i obrót w USD w zwykłych godzinach, 28 lipca
Dokładny kod SQL dla każdej liczby
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 ticker
Run this yourself

AAPL zmienił się o 0.97%, META o -0.05%, MSFT o 1.12%, a NVDA o 0.23% przy obrocie w regularnych godzinach wynoszącym 21.11 miliardów USD. TSLA osiągnęła -0.57%. Kolumna wartości w USD pokazuje, jaką część obrotu te osiem spółek generuje samodzielnie. Panel szerokości rynku powyżej pozwala sprawdzić, w jakim stopniu pozostała część rynku podążała za nimi.

Największe ruchy podczas sesji

Na obu tablicach wymagany jest obrót w regularnych godzinach handlu na poziomie pięciu milionów USD. Wykluczane są wszystkie walory, w przypadku których split został rozliczony między dwoma uwzględnianymi zamknięciami. Wykluczany jest również jeden powtórnie użyty symbol zgodnie z opisaną w uwagach zasadą dotyczącą niejednoznaczności.

ZapytanieNajwiększe wzrosty i spadki: zamknięcie 28 lipca względem 27 lipca, obrót co najmniej 5 mln USD, z wyłączeniem splitów
Dokładny kod SQL dla każdej liczby
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) DESC
Run this yourself

Największy wzrost na tablicy odnotował STKH, który zmienił się o 166.7% przy obrocie wynoszącym 113.2 milionów USD. Największy spadek odnotował YYAI, który zmienił się o -71% przy obrocie wynoszącym 18.3 milionów USD. Niniejsza strona przedstawia wielkość zmian i zawarte transakcje. Nie przypisuje im żadnej przyczyny.

Zróżnicowanie sektorów

Jedenaście funduszy SPDR Select Sector, według stosunku zamknięcia z 28 lipca do zamknięcia z 27 lipca, uszeregowano od najlepszego do najsłabszego wyniku. Koszyk jest zdefiniowany i stały, a nie oparty na klasyfikacji dostawcy.

ZapytanieETF-y sektorowe, zamknięcie 28 lipca względem 27 lipca, ranking
Dokładny kod SQL dla każdej liczby
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 DESC
Run this yourself

Health Care znalazł się na czele zestawienia z wynikiem 2.36%, a Technology zajęła ostatnie miejsce z wynikiem -1.9%, czyli o 4.26 punktów procentowych niższym. Ta różnica stanowi dzienne zróżnicowanie sektorów. Sesja, podczas której wszystkie jedenaście funduszy mieści się w przedziale jednego punktu procentowego, wygląda zupełnie inaczej niż sesja, podczas której wyniki są rozłożone na kilka punktów.

Gdzie handlowano dolarami

Zapytanie6 największych według obrotu w USD, 4 największe według liczby akcji: zwykłe godziny sesji 28 lipca
Dokładny kod SQL dla każdej liczby
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) DESC
Run this yourself

MU przewodził na rynku pod względem obrotów w regularnych godzinach sesji, które wyniosły 39.21 mld USD. Za nim uplasował się QQQ z obrotem na poziomie 29.98 mld USD. Zestawienie liczby akcji odpowiada na inne pytanie: pierwsze miejsce zajął ONFO z wynikiem 182.4 mln akcji i implikowaną średnią ceną na poziomie 0.16 USD. Wartość obrotu w dolarach wskazuje, na czym koncentruje się uwaga rynku, a liczba akcji — jaki jest poziom rotacji. W ujęciu dla poszczególnych spółek miarą tą jest wolumen względny.

Taśma opcyjna

ZapytanieRynek opcji: kontrakty, udział call, udział tego samego dnia względem poniedziałku, najaktywniejszy kontrakt SPY
Dokładny kod SQL dla każdej liczby
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'
Run this yourself

Na taśmie opcyjnej odnotowano 10.07 mln transakcji obejmujących 59.28 mln kontraktów, wobec 64.69 mln w poniedziałek. Opcje call stanowiły 55% wolumenu kontraktów. Kontrakty wygasające podczas tej samej sesji, czyli segment opcji z terminem wygaśnięcia tego samego dnia, odpowiadały za 29% wobec 39.3% w poniedziałek. Tempo to wyznacza termin wygaśnięcia. Najaktywniejszym kontraktem na SPY był 742 C, z wolumenem 0.72 mln kontraktów. Jego cena wykonania znajdowała się o 1.24 USD od regularnego kursu zamknięcia SPY wynoszącego $740.76, przy pomiarze według różnicy między ceną wykonania a kursem zamknięcia.

Taśma kwotowa

Dane kwotowań stanowią najrzadszy zasób danych tego zespołu i są mierzone podczas każdej sesji. Zwykłe dni również są rejestrowane.

ZapytanieLiczba aktualizacji NBBO dla akcji: 28 lipca względem 27 lipca, w tym aktualizacje wskazanych tickerów (mln)
Dokładny kod SQL dla każdej liczby
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'
Run this yourself

Taśma kwotowań akcji zawierała 536.07 mln aktualizacji NBBO wobec 553.53 mln w poniedziałek, co oznacza zmianę dzień do dnia o -3.2%. Dla SPY odnotowano 4.72 mln aktualizacji, dla QQQ 5.94 mln, a dla NVDA 3.01 mln.

ZapytanieSiedem spółek: mediana spreadu kwotowań RTH w punktach bazowych oraz liczba kwotowań według jakości, 28 lipca
Dokładny kod SQL dla każdej liczby
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 ticker
Run this yourself

Mediana spreadu kwotowań SPY w regularnych godzinach wyniosła 0.27 punktów bazowych względem wartości środkowej, dla QQQ było to 0.74, a dla NVDA 1.52. Dwie ostatnie kolumny zawierają informacje ujawniające: kwotowania jednostronne i krzyżowe są liczone dla każdego waloru i wyłączane z mediany, a nie po cichu pomijane. Kwotowanie krzyżowe, w którym cena bid przewyższa cenę ask, jest zwykłym artefaktem skonsolidowanego strumienia danych łączącego informacje z wielu miejsc obrotu z rozdzielczością nanosekundową.

ZapytanieMediana spreadu SPY na tle wszystkich sesji lipcowych, od najwęższego
Dokładny kod SQL dla każdej liczby
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
)
Run this yourself

W porównaniu ze wszystkimi sesjami lipcowymi, ocenianymi według identycznych zasad, mediana spreadu SPY tego dnia wyniosła 0.27 punktów bazowych, co dało 16 miejsce na 19, licząc od najwęższego spreadu, w oknie rozpoczynającym się 2026-07-01. Przy spokojnej taśmie właśnie na tym polega znaczenie panelu: zwykły dzień pod względem płynności stanowi ustalenie, które zostało opublikowane i opatrzone określonym zakresem.

ZapytanieNBBO na rynku opcji: łączna liczba aktualizacji względem rynku akcji oraz wycinek dla symbolu bazowego SPY, 28 lipca
Dokładny kod SQL dla każdej liczby
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_m
Run this yourself

Taśma NBBO dla opcji obejmowała 10.23 mld aktualizacji, czyli 19.1 razy więcej niż taśma kwotowań akcji. Sam symbol bazowy SPY odpowiadał za 382 mln aktualizacji w regularnych godzinach.

Rentowności

ZapytanieKwotowania krzywej rentowności obligacji skarbowych zarejestrowane od 23 do 28 lipca
Dokładny kod SQL dla każdej liczby
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 date
Run this yourself

Plik dotyczący obligacji skarbowych jest opóźniony względem bieżących notowań o około jedną sesję, dlatego panel przedstawia zapisane w nim transakcje: w oknie znajduje się 4 wierszy z datami. Najnowszy, z datą 2026-07-28, wskazuje rentowność obligacji dwuletnich na poziomie 4.26%, dziesięcioletnich na poziomie 4.61%, a trzydziestoletnich na poziomie 5.09%. Oznacza to spread między obligacjami dwuletnimi a dziesięcioletnimi w wysokości 35 punktów bazowych.

Kalendarz stojący za danym dniem

ZapytanieDni bez dywidendy, splity, debiuty giełdowe, wiadomości oraz struktura zgłoszeń SEC z 28 lipca
Dokładny kod SQL dla każdej liczby
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_10q
Run this yourself

Dywidendy 147 spółek przeszły na dzień bez prawa do dywidendy 28 lipca, wykonano 3 odwrotnych i 0 zwykłych splitów, a na rynku zadebiutowało 2 nowych spółek. Kanał informacyjny zawierał 161 artykułów opublikowanych przez 2 wydawców, przy czym ticker o największej liczbie publikacji w oknie tego kanału miał 9 artykułów (MSFT). Dzienny indeks EDGAR obejmuje 5915 zgłoszeń z tego dnia, złożonych przez 2898 różnych składających: 856 raportów insiderów Form 4, 315 bieżących raportów 8-K, 900 uzupełnień cenowych 424B2 oraz 100 kwartalnych raportów 10-Q. Indeks ten jest publikowany według własnego harmonogramu, a panel przedstawia dane dostępne w momencie generowania.

W planie

W pozostałej części tygodnia należy korzystać z tych samych tabel, celowo pomijając analizowany okres.

ZapytanieKalendarz na 29–31 lipca: zamknięcia rynku, dni bez dywidendy, splity, piątkowe wygaśnięcie i opóźnienie danych o krótkiej sprzedaży
Dokładny kod SQL dla każdej liczby
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'
Run this yourself

Tabela dni świątecznych wskazuje 0 zamknięcia rynku w środę 29 lipca, czwartek 30 lipca i piątek 31 lipca. W ciągu tych trzech sesji 696 rekordów dywidendowych przejdzie przez ex-dividend date, w tym 0 spośród dziesięciu sprawdzonych spółek konsumenckich. Zaplanowano również wykonanie 15 splitów. We wtorek 17.5% wolumenu obrotu opcjami przypadało już na kontrakty z terminem wygaśnięcia w piątek 31 lipca. Najnowsze dostępne rozliczenie pozycji krótkich to 2026-07-15 — plik publikowany z opóźnieniem na tyle dużym, że doczekał się osobnego wyjaśnienia.

Sesja, zweryfikowana

ZapytanieWeryfikacja sesji: pierwsza/ostatnia świeca SPY w ET, liczba świec w zwykłych godzinach, potwierdzenia dni wolnych, kolejne zamknięcie
Dokładny kod SQL dla każdej liczby
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'
Run this yourself

Pełna sesja regularna: pierwsza świeca SPY o 04:00 ET, ostatnia o 19:59 ET, 390 świec w godzinach regularnych, 1 sesja w analizowanym przedziale oraz 0 wierszy dotyczących dni świątecznych dla tej daty. Najbliższe zaplanowane zamknięcie rynku przypada na Labor Day o 2026-09-07.

Najczęściej zadawane pytania

Jak zachował się rynek akcji we wtorek, 28 lipca 2026 r.?

SPY zmienił się o 0.24% względem poprzedniego zamknięcia i wyniósł 740.76 USD, natomiast QQQ osiągnął -0.96%, DIA 1.07%, a IWM 0.15%. Wśród płynnych walorów 3519 wzrósł, a 2423 spadł.

Który sektor zajął pierwsze miejsce 28 lipca 2026 r.?

Health Care, z wynikiem 2.36%, w ujęciu obejmującym jedenaście funduszy SPDR Select Sector. Najsłabszy z jedenastu, Technology, odnotował -1.9%.

Jak aktywny był rynek opcji 28 lipca 2026 r.?

Przedmiotem obrotu było 59.28 mln kontraktów, wobec 64.69 mln podczas poprzedniej sesji. Kontrakty wygasające tego samego dnia stanowiły 29% wolumenu, a opcje call 55%.

Która spółka odnotowała największą wartość obrotu 28 lipca 2026 r.?

MU, z obrotem w regularnych godzinach sesji na poziomie 39.21 mld USD, przed QQQ z wynikiem 29.98 mld USD.

Uwagi dotyczące danych

To wydanie uzupełnia lukę z 28 lipca w dziennej serii: dzienny raport z 27 lipca obejmuje poprzednią sesję, dzienny raport z 29 lipca — następną, a tygodniowe podsumowanie obejmuje tydzień poprzedzający obie te sesje. Panele nazwane według tickerów uporządkowano alfabetycznie, aby odwołania w tekście wskazywały stałe wiersze. Rankingi i zestawienia największych zmian uporządkowano według wartości, a każde zawarte w nich twierdzenie dotyczące pozycji zakodowano jako ograniczenie kontrolne. Koszyk spółek mega-cap oraz koszyk sektorowy obejmujący jedenaście funduszy są określonymi, stałymi zbiorami, a nie klasyfikacjami dostawcy danych. Zestawienia największych zmian stosują próg obrotu w regularnych godzinach sesji wynoszący pięć milionów USD, wykluczają każdy instrument, dla którego split został wykonany między dwiema analizowanymi cenami zamknięcia, oraz wykluczają jeden powtórnie użyty symbol zgodnie z wewnętrzną regułą dotyczącą niejednoznaczności. Dzięki temu każde wyróżnienie prowadzi do możliwej do zweryfikowania nazwy. Panele kwotowań zliczają dla każdego instrumentu kwotowania jednostronne i krzyżowe, zamiast po cichu je pomijać. Plik Treasury oraz dzienny indeks EDGAR są publikowane według własnych harmonogramów, dlatego panele przedstawiają zawarte w nich dane, bez zakładania, że pliki wpłynęły. W tym wydaniu nie występuje żaden indeks implikowanej zmienności. Serie te nie są objęte licencją w tym magazynie danych, dlatego zmienność jest oceniana na podstawie przebiegu notowań, zakresów zmian, udziału opcji w transakcjach tego samego dnia oraz zachowania kwotowań.

Metodyka

  • Źródło danych rynkowych: skonsolidowany strumień transakcji. delayed_stocks_minute_aggs dla cen i wolumenów, options_trades dla strumienia danych opcyjnych, cache_stocks_quotes i cache_options_quotes dla paneli NBBO.
  • Kurs zamknięcia: ostatni jednominutowy bar regularnej sesji; nigdy nie jest to założona transakcja z godziny 16:00 ani transakcja z sesji wydłużonej.
  • Obsługa stref czasowych: wszystkie zapisane znaczniki czasu są w UTC; klauzule WHERE używają surowych literałów UTC, a toTimeZone występuje wyłącznie na listach SELECT dla oznaczeń ET.
  • Weryfikacja sesji: na podstawie tabeli dni świątecznych oraz zaobserwowanych barów, a nie na podstawie samego kalendarza.
  • Porównania z poprzednią sesją: obliczane w zapytaniu na podstawie danych z 27 lipca, a nie przenoszone z wcześniejszej publikacji.
  • Liczby dziesiętne: kolumny cen, wielkości pozycji i wolumenów są konwertowane do Float64 przed wykonaniem jakiegokolwiek dzielenia lub mnożenia.
  • Deterministyczne agregaty: w całym opracowaniu stosowane są dokładne kwantyle oraz rozstrzyganie remisów na podstawie kluczy krotek; każde twierdzenie dotyczące kolejności lub znaku w tekście jest zakodowane jako warunek kontrolny.
  • Data stanu magazynu danych: 1 sierpnia 2026 r., cztery dni po sesji, czyli po typowym dla strumienia danych opóźnieniu ingestii wynoszącym one-to-two days; powyższe ograniczone potwierdzenia zabezpieczają publikację na wypadek braku któregoś zbioru danych w momencie generowania.

Linki wewnętrzne: dzienny raport z 27 lipca, dzienny raport z 29 lipca, kiedy wygasają opcje, czym jest spread bid-ask oraz spread między obligacjami dwuletnimi a dziesięcioletnimi.

Każde z powyższych zapytań działa bez zmian na terminalu Strasmore, jeśli konieczne jest przekierowanie okna na inną sesję.