Strasmore Research
Podsumowania rynkowe Matt ConnorAutor: Matt Connor

Podsumowanie rynku 29 lipca 2026: liczby dnia

Sesja z 29 lipca 2026 w liczbach: indeksy, szerokość rynku, sektory, opcje, notowania i stopy procentowe, oparte na zapisanych zapytaniach.

To podsumowanie rynku z środy, 29 lipca 2026 r. obejmuje całą sesję na podstawie zapisanych zapytań: zmiana wartości SPY względem poprzedniego zamknięcia wyniosła -1.52%, udział walorów rosnących na płynnym rynku wyniósł 27.2%, a na rynku opcji zawarto 66.84 mln kontraktów. Każdy z poniższych przedziałów ma jawnie określone daty początkową i końcową, dlatego ponowne uruchomienie zapytania SQL dla dowolnego panelu zwróci te same wartości.

Tabela wyników

Każda zmiana porównuje ostatni jednominutowy bar regularnej sesji z 29 lipca z barem z wtorku 28 lipca, czyli z kolejnymi sesjami giełdowymi. Wiersze uporządkowano alfabetycznie, dlatego każdy ETF zachowuje stałą pozycję.

ZapytanieSPY / QQQ / DIA / IWM: 29 lipca względem zamknięcia 28 lipca, regularne godziny
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-28 13:30:00' AND window_start < '2026-07-28 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-29 13:30:00' AND window_start < '2026-07-29 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 -2.19%, IWM o -1.63%, QQQ o -2.07%, a SPY o -1.52%, zamykając sesję na poziomie 729.51 USD. W każdym wierszu zmianę rozbito na dwa etapy: SPY otworzył się -0.11% względem wtorkowego zamknięcia i zmienił się o -1.41% od otwarcia do zamknięcia. Zmiana w okresie overnight i zmiana w trakcie sesji nie muszą być zgodne. Ich rozdzielenie stanowi pierwszy charakterystyczny obraz sesji.

Czy sesja była nietypowa?

Wynik jednej sesji niewiele znaczy bez analizy rozkładu, dlatego sesję sklasyfikowano w obrębie własnego poprzedzającego miesiąca według tej samej metodologii.

ZapytanieDzienna zmiana SPY w ujęciu kroczącym (od otwarcia do zamknięcia, 29 czerwca–29 lipca)
Dokładny kod SQL dla każdej liczby
SELECT
    round(anyIf(oc_pct, d = toDate('2026-07-29')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-29'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-29'))) + 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-30 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 wynosząca -1.41% zajęła 1 miejsce wśród 22 poprzedzających sesji pod względem wartości bezwzględnej, w okresie sięgającym 2026-06-29. Ranking uwzględnia liczbę innych sesji z tego okresu, w których zmiana była większa, powiększoną o jeden. Pierwsze miejsce oznaczałoby największą zmianę w poprzedzającym miesiącu.

Szerokość rynku

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

ZapytanieSzerokość rynku na płynnym rynku: zamknięcie 29 lipca względem zamknięcia 28 lipca, filtr obrotu $1M
Dokładny kod SQL dla każdej liczby
SELECT
    countIf(c29 > c28 AND liquid) AS advancers,
    countIf(c29 < c28 AND liquid) AS decliners,
    countIf(c29 = c28 AND liquid) AS unchanged,
    countIf(liquid) AS liquid_tickers,
    countIf(NOT liquid) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(c29 > c28 AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
    SELECT ticker, c28, c29, dv29 >= 1000000 AS liquid
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 13:30:00') AS dv29
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-29 20:00:00'
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0
    )
)
Run this yourself

Spośród 6066 walorów, dla których obrót w godzinach regularnej sesji przekroczył próg jednego miliona USD, 1652 zamknęło sesję powyżej wtorkowego zamknięcia, a 4342 poniżej. Udział spółek zwyżkujących wyniósł 27.2%. Filtr wyłączył 5363 walorów o niższej płynności, które uwzględniono w tym zestawieniu, zamiast pomijać.

Koszyk spółek mega-cap

Te same osiem spółek mega-cap pojawia się tutaj w każdej sesji, w kolejności alfabetycznej, aby każda zachowała swoje miejsce. Stały koszyk jest kluczowy: czytelnik zapamiętuje poszczególne wiersze, a redakcja nie wybiera zwycięzców po fakcie.

ZapytanieOsiem spółek mega-cap: zmiana względem 28 lipca i obrót w USD w regularnych godzinach, 29 lipca
Dokładny kod SQL dla każdej liczby
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-29 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-29 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 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-28 13:30:00' AND window_start < '2026-07-28 20:00:00')
        OR (window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 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.63%, META o -1.12%, MSFT o -0.27%, a NVDA o -3.51% przy obrocie w regularnych godzinach wynoszącym 22.26 miliardów USD. TSLA odnotowała -2.97%. Kolumna wartości w USD pokazuje, jaką część obrotu te osiem spółek generuje samodzielnie. Panel szerokości rynku powyżej pokazuje natomiast, w jakim stopniu pozostała część rynku podążała za tymi spółkami.

Największe ruchy podczas sesji

Na obu tablicach wymagany jest obrót w regularnych godzinach handlu na poziomie pięciu milionów dolarów. Wykluczane są wszystkie walory, w przypadku których split został wykonany między dwiema uwzględnianymi cenami zamknięcia. Wykluczany jest również jeden ponownie wykorzystany symbol zgodnie z opisaną w uwagach zasadą ochrony przed niejednoznacznością.

ZapytanieNajwiększe wzrosty i spadki: zamknięcie 29 lipca względem zamknięcia 28 lipca, obrót $5M+, 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((c29 / c28 - 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-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 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-28' AND execution_date <= '2026-07-29')
          AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-29 20:00:00'
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct DESC
    LIMIT 8
    UNION ALL
    SELECT 'decliners' AS board, ticker, round((c29 / c28 - 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-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 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-28' AND execution_date <= '2026-07-29')
          AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-29 20:00:00'
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 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ł DFNS, który zmienił się o 119.8% przy obrocie na poziomie 544.9 milionów dolarów. Największy spadek odnotował YYAI, który zanotował -68.1% przy obrocie na poziomie 8.5 milionów. Niniejsza strona przedstawia wielkości zmian i potwierdzenia transakcji; nie przypisuje im żadnej przyczyny.

Zróżnicowanie sektorów

Jedenaście funduszy SPDR select-sector, według zmiany między zamknięciem z 29 lipca a zamknięciem z 28 lipca, uszeregowano od najlepszego do najsłabszego wyniku. Koszyk jest określony i stały, a nie oparty na klasyfikacji dostawcy.

ZapytanieSektorowe ETF, zamknięcie 29 lipca względem zamknięcia 28 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((c29 / c28 - 1) * 100, 2) AS day_pct
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-29 00:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 00:00:00') AS c29
        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-28 13:30:00' AND window_start < '2026-07-28 20:00:00')
            OR (window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00'))
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0
    )
)
ORDER BY day_pct DESC
Run this yourself

Energy znalazł się na czele zestawienia z wynikiem 1.89%, natomiast Industrials zamknął zestawienie z wynikiem -3.21%, czyli o 5.1 punktów procentowych niżej. Ta różnica stanowi dzienne zróżnicowanie sektorów. Sesja, podczas której wszystkie jedenaście funduszy mieści się w przedziale jednego punktu, wygląda zupełnie inaczej niż sesja z rozpiętością obejmującą kilka punktów.

Gdzie obracano dolarami

Zapytanie6 największych według obrotu w USD, 4 największe według liczby akcji: regularne godziny 29 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-29 13:30:00' AND window_start < '2026-07-29 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-29 13:30:00' AND window_start < '2026-07-29 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 zajęła pierwsze miejsce pod względem obrotów w dolarach na poziomie 44.99 miliardów USD w regularnych godzinach handlu. Za nią uplasowała się SPY z obrotami wynoszącymi 42.29 miliardów USD. Zestawienie liczby akcji odpowiada na inne pytanie: na pierwszym miejscu znalazła się SNXX z wynikiem 173.4 milionów akcji przy implikowanej średniej cenie 7.32 USD. Obroty w dolarach pokazują, na czym koncentruje się rynek, a liczba akcji wskazuje skalę rotacji. Odpowiednikiem tego miernika dla poszczególnych spółek jest wolumen względny.

Taśma transakcji opcyjnych

ZapytanieRynek opcji: kontrakty, udział call, udział transakcji tego samego dnia względem wtorku, 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) = '260729', 1, 0) AS is_0dte
            FROM global_markets.options_trades
            WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00'
    ) AS spy_regular_close,
    (
        SELECT round(toFloat64(sum(size)) / 1e6, 2)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
    ) AS jul28_contracts_m,
    (
        SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260728') / sum(size), 1)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
    ) AS jul28_pct_0dte
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    jul28_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) = '260729') / sum(size), 1) AS pct_0dte,
    jul28_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-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
Run this yourself

Na taśmie opcyjnej odnotowano 11.03 mln transakcji obejmujących 66.84 mln kontraktów, wobec 59.28 mln we wtorek. Opcje call stanowiły 53.6% wolumenu kontraktów. Kontrakty wygasające podczas tej samej sesji, czyli segment opcji z zerowym terminem do wygaśnięcia, odpowiadały za 33.1%, wobec 29% we wtorek. Rytm ten wyznacza termin wygasania. Najaktywniej handlowanym kontraktem na SPY był 735 P, z wolumenem 0.36 mln kontraktów. Jego cena wykonania znajdowała się 5.49 USD od regularnego zamknięcia SPY na poziomie $729.51. Odległość obliczono jako cenę wykonania pomniejszoną o cenę zamknięcia.

Taśma kwotowa

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

ZapytanieLiczba aktualizacji NBBO akcji: 29 lipca względem 28 lipca, z aktualizacjami wskazanych tickerów (mln)
Dokładny kod SQL dla każdej liczby
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29')) / 1e6, 2) AS jul29_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-28')) / 1e6, 2) AS jul28_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-29')) / countIf(toDate(sip_timestamp) = toDate('2026-07-28')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29') AND ticker = 'SPY') / 1e6, 2) AS jul29_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29') AND ticker = 'QQQ') / 1e6, 2) AS jul29_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29') AND ticker = 'NVDA') / 1e6, 2) AS jul29_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
Run this yourself

Taśma kwotowa akcji zawierała 722.65 mln aktualizacji NBBO wobec 536.07 mln we wtorek, co oznacza zmianę dzień do dnia o 34.8%. Dla SPY odnotowano 7.32 mln aktualizacji, dla QQQ 8.72 mln, a dla NVDA 4.41 mln.

ZapytanieSiedem spółek: mediana spreadu kwotowań w RTH w punktach bazowych, wraz z licznością kwotowań według jakości, 29 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-29 13:30:00' AND sip_timestamp < '2026-07-29 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 kwotowanego dla SPY w regularnych godzinach wyniosła 0.27 punktów bazowych względem wartości środkowej, dla QQQ 0.75, a dla NVDA 1.55. Dwie ostatnie kolumny dotyczą ujawniania danych: kwotowania jednostronne i krzyżowe są zliczane osobno dla każdego waloru i wyłączane z mediany, a nie pomijane bez informacji. Kwotowanie krzyżowe, przy którym bid przewyższa ask, jest zwykłym artefaktem skonsolidowanego feedu zestawionego 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-29')), 2) AS jul29_median_spread_bps,
       arrayCount(x -> x < anyIf(spread_bps, d = toDate('2026-07-29')), groupArrayIf(spread_bps, d != toDate('2026-07-29'))) + 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-29 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 w lipcu, ocenianymi według identycznej metodologii, dzienna mediana spreadu SPY na poziomie 0.27 punktów bazowych uplasowała się na 20 miejscu spośród 20, licząc od najwęższego spreadu, w okresie rozpoczynającym się 2026-07-01. Przy spokojnej taśmie to właśnie stanowi cel panelu: zwykły dzień pod względem płynności jest obserwacją opublikowaną i ujętą w określonych granicach.

ZapytanieRynek NBBO opcji: łączna liczba aktualizacji względem rynku akcji oraz wycinek dla instrumentów z root SPY, 29 lipca
Dokładny kod SQL dla każdej liczby
WITH
    (SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00') AS jul29_options_rows,
    (SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00') AS jul29_stock_quote_rows
SELECT
    round(jul29_options_rows / 1e9, 2) AS jul29_options_bn,
    round(jul29_options_rows / jul29_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-29 13:30:00' AND sip_timestamp < '2026-07-29 20:00:00') / 1e6, 0) AS jul29_spy_options_m
Run this yourself

Taśma NBBO dla opcji obejmowała 13.55 mld aktualizacji, czyli 18.8 razy więcej niż taśma kwotowa akcji, przy czym sam root SPY odpowiadał za 600 mln aktualizacji w regularnych godzinach.

Rentowności

ZapytanieNotowania krzywej rentowności obligacji skarbowych, 24–29 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-24' AND date <= '2026-07-29'
ORDER BY date
Run this yourself

Dane dotyczące obligacji skarbowych są opóźnione względem rynku o około jedną sesję. Panel przedstawia zatem zawarte transakcje dostępne w tym źródle: 4 wierszy z datami w wybranym przedziale. W najnowszym wierszu, datowanym na 2026-07-29, rentowność obligacji dwuletnich wyniosła 4.22%, dziesięcioletnich 4.67%, a trzydziestoletnich 5.2%. Oznacza to spread między rentownością obligacji dwuletnich i dziesięcioletnich na poziomie 45 punktów bazowych.

Kalendarz stojący za danym dniem

ZapytanieDni bez dywidendy, splity, debiuty giełdowe, wiadomości oraz zestawienie zgłoszeń SEC z 29 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-29 04:00:00' AND published_utc < '2026-07-30 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-29'
    ) AS fil
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-29') AS ex_dividend_records,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-29') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-29') AS forward_splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-29') AS listings,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-29 04:00:00' AND published_utc < '2026-07-30 04:00:00') AS news_articles,
    (SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-29 04:00:00' AND published_utc < '2026-07-30 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

85 rekordów dywidendowych przeszło w dniu 29 lipca w fazę bez dywidendy, wykonano 2 odwrotnych i 1 zwykłych splitów, a na taśmie pojawiło się 1 nowych emisji. Kanał informacyjny zawierał 190 artykułów od 2 wydawców, z czego NVDA był najczęściej opisywanym tickerem w oknie czasowym tego kanału i pojawił się w 13 artykułach. Dzienny indeks EDGAR obejmuje 5742 zgłoszeń z tego dnia od 3064 odrębnych składających: 712 zgłoszeń insiderów na Formularzu 4, 440 bieżących raportów 8-K, 884 suplementów cenowych 424B2 oraz 174 kwartalnych raportów 10-Q. Indeks jest publikowany zgodnie z własnym harmonogramem, a panel przedstawia dane dostępne w nim w momencie generowania.

W planie

Pozostała część tygodnia, odczytana z tych samych tabel, z celowym wyjściem poza analizowany okres.

Zapytanie30 i 31 lipca w kalendarzu: zamknięcia rynku, dni bez dywidendy, splity, piątkowe wygaśnięcie oraz 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-30' 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-30' 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-30' AND ex_dividend_date <= '2026-07-31') AS household_exdivs,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-30' 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_wed_volume,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-29') AS latest_short_interest_settlement
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
Run this yourself

Tabela dni świątecznych pokazuje 0 zamknięć w czwartek 30 lipca i piątek 31 lipca. W tych dwóch sesjach 611 rekordów dywidend przechodzi na ex-dividend, w tym 0 wśród dziesięciu sprawdzonych powszechnie znanych spółek, a wykonanie zaplanowano dla 12 podziałów akcji. Spośród środowego wolumenu opcji 19.7% przypadało już na kontrakty z terminem wygaśnięcia w piątek 31 lipca. Najnowsze dostępne rozliczenie krótkiej pozycji to 2026-07-15 — dane publikowane z opóźnieniem na tyle dużym, że doczekały się osobnego wyjaśnienia.

Sesja, zweryfikowana

ZapytanieWeryfikacja sesji: pierwsza/ostatnia świeca SPY czasu ET, liczba świec regularnych, potwierdzenia dni świątecznych, następne 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-29') AS jul29_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-29' 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-29' 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-29 00:00:00' AND window_start < '2026-07-30 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 świąt 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 w środę 29 lipca 2026 roku?

SPY zmienił się o -1.52% między zamknięciami, do poziomu 729.51 USD. QQQ wyniósł -2.07%, DIA -2.19%, a IWM -1.63%. Wśród płynnych walorów 1652 wzrósł, a 4342 spadł.

Który sektor zajął pierwsze miejsce 29 lipca 2026 roku?

Energy, na poziomie 1.89%, w ujęciu jedenastu funduszy SPDR select-sector. Najsłabszy z jedenastu, Industrials, odnotował -3.21%.

Jak aktywny był rynek opcji 29 lipca 2026 roku?

Obrót wyniósł 66.84 mln kontraktów wobec 59.28 mln podczas poprzedniej sesji. Kontrakty wygasające tego samego dnia stanowiły 33.1% obrotu, a opcje call 53.6%.

Która spółka miała największy obrót wartościowy 29 lipca 2026 roku?

MU, z obrotem w standardowych godzinach sesji na poziomie 44.99 mld USD, wyprzedziła SPY z wynikiem 42.29 mld USD.

Uwagi dotyczące danych

To wydanie wznawia serię dzienną. Poprzednie wydanie dzienne to 10 lipca 2026 r., a tygodniowe podsumowanie obejmuje tydzień poprzedzający bieżący. Panele nazwane według tickerów uporządkowano alfabetycznie, aby odwołania w tekście wskazywały stałe wiersze. Rankingi liderów i zestawienia największych zmian uporządkowano według wartości, a każde zawarte w nich twierdzenie dotyczące pozycji zakodowano jako warunek kontrolny. Koszyk spółek o największej kapitalizacji oraz sektorowy koszyk jedenastu funduszy to zdefiniowane, stałe zbiory, a nie klasyfikacje dostawców danych. Zestawienia największych zmian uwzględniają próg obrotu w regularnych godzinach sesji wynoszący pięć milionów USD. Wykluczają również każdą spółkę, której split został wykonany między dwoma analizowanymi zamknięciami, oraz jeden ponownie wykorzystany symbol objęty wewnętrzną regułą dotyczącą niejednoznaczności. Dzięki temu każde wyróżnienie dotyczy nazwy możliwej do zweryfikowania. Panele kwotowań zliczają jednostronne i krzyżowe kwotowania dla każdej nazwy, zamiast pomijać je bez informacji. Plik dotyczący obligacji skarbowych oraz dzienny indeks EDGAR są publikowane według własnych harmonogramów. Dlatego panele przedstawiają dostępne w nich dane, bez założenia, że pliki pojawią się w tym samym czasie. Nie uwzględniono tu żadnego indeksu implikowanej zmienności. Serie te nie są objęte licencją w tym magazynie danych, dlatego zmienność jest oceniana na podstawie notowań, zakresów zmian, udziału opcji o terminie wygaśnięcia w tym samym dniu oraz zachowania kwotowań.

Metodyka

  • Źródło danych rynkowych: skonsolidowana taśma transakcyjna. delayed_stocks_minute_aggs dla cen i wolumenów, options_trades dla taśmy opcyjnej, cache_stocks_quotes i cache_options_quotes dla paneli NBBO.
  • Kurs zamknięcia: ostatni minutowy słupek regularnej sesji; nigdy nie jest to założony wydruk z godziny 16:00 ani wydruk z handlu poza regularnymi godzinami.
  • Obsługa stref czasowych: wszystkie zapisane znaczniki czasu są w UTC; klauzule WHERE używają surowych literałów UTC, a toTimeZone pojawia się wyłącznie na listach SELECT dla etykiet ET.
  • Weryfikacja sesji: na podstawie tabeli świąt oraz zaobserwowanych słupków, nigdy wyłącznie na podstawie kalendarza.
  • Porównania z poprzednią sesją: obliczane w zapytaniu na podstawie danych z 28 lipca, a nie przenoszone z poprzedniej publikacji.
  • Miejsca dziesiętne: kolumny cen, wielkości pozycji i wolumenu są rzutowane na Float64 przed wykonaniem jakiegokolwiek dzielenia lub mnożenia.
  • Deterministyczne agregaty: w całym zapytaniu stosowane są dokładne kwantyle oraz rozstrzyganie remisów oparte na kluczach 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., trzy dni po sesji, czyli po typowym dla taśmy opóźnieniu ingestu wynoszącym od jednego do dwóch dni; powyższe ograniczone potwierdzenia utrzymują publikację, jeśli podczas generowania zostanie stwierdzony brak zbioru danych.

Linki: poprzednie dzienne podsumowanie, tygodniowe podsumowanie, kiedy wygasają opcje, czym jest spread bid-ask oraz spread między obligacjami skarbowymi o terminie od dwóch do dziesięciu lat.

Każde z powyższych zapytań działa bez zmian na terminalu Strasmore, jeśli konieczne jest wskazanie innego okna czasowego dla odmiennej sesji.