Strasmore Research
Podsumowania rynkowe Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-07-24

Podsumowanie rynku 8 lipca 2026

Odbicie sektora półprzewodników nie wpłynęło na indeksy. NVDA kontynuuje wzrosty, a MU dominuje w USD. Większość spółek odnotowała spadki.

Środa, 8 lipca 2026 roku, przyniosła jednodniowe odbicie sektora półprzewodników, które nie wpłynęło znacząco na indeksy. SNDK zamknął się na poziomie +6.8%, AVGO +4.82%, NVDA +3.66% — co stanowi gwałtowny odwrót względem wtorkowej wyprzedaży spółek półprzewodników — jednak fundusze ETF na indeksy pozostały bez zmian: SPY -0.31% oraz QQQ +0.25%. Ogólny rynek wykazał dwukrotnie większą przewagę spadków nad wzrostami w porównaniu do dnia poprzedniego: 1821 wzrostów względem 4260 spadków, co oznacza udział wzrostowych spółek na poziomie 29.6% po 33.8% sesji poprzedniej. Każda liczba poniżej pochodzi z zapytania bazodanowego — aby uzyskać dokładny kod SQL, należy rozwinąć dowolny panel.

Wyniki

Każda zmiana porównuje ostatnią minutową świecę z sesji regulacyjnej z 8 lipca z wtorkiem 7 lipca — są to kolejne sesje handlowe. Wiersze są ułożone alfabetycznie, dzięki czemu każdy ETF zajmuje stałe miejsce.

ZapytanieSPY / QQQ / DIA / IWM — 8 lipca względem zamknięcia z 7 lipca, sesja regulaminowa
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-07 13:30:00' AND window_start < '2026-07-07 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-08 13:30:00' AND window_start < '2026-07-08 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

Cztery fundusze ETF otworzyły się luką spadkową, a następnie ich kursy kształtowały się w różny sposób. DIA otworzył sesję na poziomie -0.97% względem poprzedniego zamknięcia i odnotował dalsze spadki, kończąc na poziomie -1.09%. IWM otworzył się na poziomie -0.73% i utrzymał spadki, zamykając się na poziomie -0.92%. SPY otworzył się na poziomie -0.6%, odrabiał straty w ciągu dnia, lecz zamknął się na poziomie -0.31% — odbicie od otwarcia było mniejsze niż luka. QQQ otworzył się na poziomie -0.64% i wzrósł do +0.25% na zamknięciu, będąc jedynym z czterech funduszy w dodatnich wartościach.

Czy dzień był nietypowy?

Zmiana kursu SPY od otwarcia do zamknięcia o 0.29% plasowała się w 16 rankingu 22 poprzednich sesji — był to dzień o średniej zmienności dla indeksu, a nie ekstremalny. Zmiana kursu QQQ na zamknięciu względem poprzedniego zamknięcia wyniosła +0.25%, co stanowi 21 rankingu 22 — była to jedna z najmniejszych miesięcznych zmian dla QQQ, co odpowiada słabym wynikom indeksu.

ZapytanieRuch dobowy SPY / QQQ w ujęciu historycznym (close-over-close, ok. 22 sesje)
Dokładny kod SQL dla każdej liczby
SELECT
    round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-08')), 2) AS qqq_close_over_close_pct,
    arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-08'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-08'))) + 1 AS qqq_abs_move_rank,
    countIf(ticker = 'QQQ') AS qqq_sessions_compared,
    round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-08')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-08'))), groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-08'))) + 1 AS spy_abs_move_rank,
    countIf(ticker = 'SPY') AS spy_sessions_compared,
    toString(min(d)) AS first_session
FROM (
    SELECT ticker, d,
           (close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct,
           oc_pct
    FROM (
        SELECT ticker, toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMax(toFloat64(close), window_start) AS close_px,
               (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('SPY', 'QQQ')
          AND window_start >= toDateTime('2026-06-05 13:30:00')
          AND window_start < toDateTime('2026-07-09 00:00:00')
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker, d
    )
)

Szerokość rynku: jeszcze większa przewaga spadających spółek względem rosnących niż poprzedniego dnia

ZapytanieSzerokość płynnego rynku: udział aprecjujących 8 lipca względem 7 lipca, filtr $1M obrotu
Dokładny kod SQL dla każdej liczby
SELECT
    countIf(close_8 > close_7 AND close_7 > 0 AND dv_8 >= 1000000) AS advancers,
    countIf(close_8 < close_7 AND close_7 > 0 AND dv_8 >= 1000000) AS decliners,
    countIf(close_8 = close_7 AND close_7 > 0 AND dv_8 >= 1000000) AS unchanged,
    countIf(close_7 > 0 AND close_8 > 0 AND dv_8 >= 1000000) AS liquid_tickers,
    countIf(close_7 > 0 AND close_8 > 0) AS traded_both_sessions,
    countIf(close_7 > 0 AND close_8 > 0) - countIf(close_7 > 0 AND close_8 > 0 AND dv_8 >= 1000000) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(close_8 > close_7 AND close_7 > 0 AND dv_8 >= 1000000) / countIf(close_7 > 0 AND close_8 > 0 AND dv_8 >= 1000000), 1) AS advancer_pct,
    round(100.0 * countIf(close_7 > close_6 AND close_6 > 0 AND dv_7 >= 1000000) / countIf(close_7 > 0 AND close_6 > 0 AND dv_7 >= 1000000), 1) AS jul7_advancer_pct
FROM (
    SELECT ticker,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')) AS close_6,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')) AS close_7,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS close_8,
           sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS dv_8,
           sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00') AS dv_7
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-08 20:00:00'
    GROUP BY ticker
)

Różnica między spółkami rosnącymi (1821) a spadającymi (4260) sprawiła, że udział rosnących wyniósł 29.6%, podczas gdy w poprzedniej sesji wynosił 33.8% — oba wyniki obliczono przy użyciu tego samego filtra płynności. Z 11439 spółek, które zamknęły się na obu sesjach, 5284 spadło poniżej progu obrotów wynoszącego 1 mln USD i zostało wyłączonych z zestawienia. Odbicie napędzane przez sektory technologiczne oraz mieszany wynik indeksu przy zamknięciu maskowały jeszcze bardziej jednolicie negatywny obraz szerokiego rynku.

Sektor półprzewodników odnotował silne odbicie przy wysokim wolumenie

Wiersze są ułożone alfabetycznie, więc każda nazwa zachowuje stałą pozycję; porównanie do wtorku jest obliczane na podstawie zamknięć z 7 lipca i 6 lipca w bloku zestawień poniżej tabeli.

ZapytanieCzternaście spółek półprzewodników: zamknięcie poprzednie, zamknięcie dzienne, zakres dzienny, wolumen USD, low/high minute ET
Dokładny kod SQL dla każdej liczby
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-08 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-08 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-08 00:00:00') AS day_low,
        argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-08 00:00:00') AS low_bar,
        argMaxIf(window_start, (toFloat64(high), -toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-08 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AMD', 'AVGO', 'INTC', 'KLAC', 'LRCX', 'MRVL', 'MU', 'NVDA', 'SNDK', 'SOXL', 'SOXS', 'STX', 'TER', 'WDC')
      AND ((window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')
        OR (window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 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,
    round(((day_high - day_low) / prior_close) * 100, 2) AS range_pct,
    round(toFloat64(day_low), 2) AS day_low,
    round(toFloat64(day_high), 2) AS day_high,
    toUInt32(toHour(toTimeZone(low_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(low_bar, 'America/New_York'))) AS low_minute_et,
    toUInt32(toHour(toTimeZone(high_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(high_bar, 'America/New_York'))) AS high_minute_et,
    day_dollar_bn
FROM per_name
ORDER BY ticker

12 z czternastu spółek z sektora półprzewodników zamknęło się na wzrostach — jest to odwrotność wtorkowej sesji, kiedy 12 z czternastu spółek odnotowało spadki. SNDK poprowadziło sektor ze wzrostem +6.8% przy obrocie rzędu 16.82B USD, a tuż za nim uplasowało się AVGO z wynikiem +4.82%; kolejne spółki z sektora pamięci odnotowały wzrosty — STX +3.9%, WDC +3.45%. Instrument typu 3x wrapper SOXL wzrósł o +5.79%, natomiast instrument typu inverse SOXS spadł o -6.22% — co jest zgodne z jednodniowym odbiciem indeksu bazowego. MU wzrosło o bardziej umiarkowane +1.11%, ale wygenerowało obrót na poziomie 32.02B USD — był to największy obrót w USD w całym zestawieniu. NVDA zamknęło się na poziomie +3.66% po raz drugi z rzędu: była to jedna z tylko 2 spółek w tym zestawieniu, które odnotowały wzrosty mimo wtorkowej wyprzedaży (+0.67% tego dnia).

ZapytanieWyniki: liczba wzrostów/spadków 8 lipca i 7 lipca dla tych samych czternastu spółek
Dokładny kod SQL dla każdej liczby
SELECT
    countIf(close_8 > close_7) AS jul8_green,
    countIf(close_8 < close_7) AS jul8_red,
    countIf(close_7 > close_6) AS jul7_green,
    countIf(close_7 < close_6) AS jul7_red,
    round(anyIf((close_7 / close_6 - 1) * 100, ticker = 'NVDA'), 2) AS nvda_jul7_pct,
    count() AS names_counted
FROM (
    SELECT ticker,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')) AS close_6,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')) AS close_7,
           toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS close_8
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AMD', 'AVGO', 'INTC', 'KLAC', 'LRCX', 'MRVL', 'MU', 'NVDA', 'SNDK', 'SOXL', 'SOXS', 'STX', 'TER', 'WDC')
      AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-08 20:00:00'
    GROUP BY ticker
)

Druga strona: spółki defensywne i wzrostowe mega-caps nie podążyły za trendem

ZapytanieAnaliza rotacji: osiem spółek — defensywne, mega-caps, biotech
Dokładny kod SQL dla każdej liczby
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-08 00:00:00')) AS prior_close_raw,
        toFloat64(argMinIf(open, window_start, window_start >= '2026-07-08 00:00:00')) AS day_open_raw,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 00:00:00')) AS day_close_raw,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('CRNX', 'CVX', 'JNJ', 'LLY', 'META', 'TSLA', 'UNH', 'XOM')
      AND ((window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')
        OR (window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'))
    GROUP BY ticker
)
SELECT
    ticker,
    round(prior_close_raw, 2) AS prior_close,
    round(day_open_raw, 2) AS day_open,
    round(day_close_raw, 2) AS day_close,
    round((day_open_raw / prior_close_raw - 1) * 100, 2) AS gap_pct,
    round((day_close_raw / day_open_raw - 1) * 100, 2) AS intraday_pct,
    round((day_close_raw / prior_close_raw - 1) * 100, 2) AS pct_chg,
    day_dollar_bn
FROM per_name
ORDER BY ticker

Spółki wzrostowe mega-caps poruszały się w przeciwnym kierunku niż sektor półprzewodników: TSLA -2.22%, META -2.04%, LLY -1.6%. CVX odnotowała jedyne wzrosty w zestawieniu, rosnąc o +1.12% po wczesnym luki, podczas gdy XOM otworzyła się na poziomie +1.26%, lecz spadła do -0.49% przed zamknięciem. W efekcie środowe notowania uległy podziałowi — spółki z sektora półprzewodników zyskały, natomiast spółki wzrostowe i defensywne straciły, a indeksy pozostały w stagnacji pomiędzy nimi. (Wiersze są ułożone alfabetycznie: CRNX, CVX, JNJ, LLY, META, TSLA, UNH, XOM.)

Gdzie handlowano kapitałem

ZapytanieTop 6 wg obrotu USD, top 4 wg liczby akcji — 8 lipca sesja regulaminowa
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,
    round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
        / max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
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-08 13:30:00' AND window_start < '2026-07-08 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-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    ORDER BY shares_m DESC
    LIMIT 4
)
ORDER BY leaderboard, pct_of_board_leader DESC

MU wygenerowało 32.02B USD — był to największy podmiot na rynku i jedyny przekraczający próg 30 mld USD. Kolejne miejsca zajęły SPY (26.49B), NVDA (24.17B) oraz QQQ (20.9B), natomiast zestawienie zamykały SNDK przy 16.82B oraz TSLA przy 11.71B. Na rynku akcji sytuacja wyglądała inaczej: 3-krotny odwrotny ETF na półprzewodniki SOXS osiągnął obrót na poziomie 636.5M akcji przy sugerowanej średniej cenie $4.67 — wynika to z mechaniki nisko wycenianego, 3-krotnego instrumentu pochodnego w dniu silnych wzrostów sektora chipów.

Przebieg sesji

ZapytanieLiczba akcji w 30-minutowych przedziałach ET, sesja regulaminowa, % największego przedziału dnia
Dokładny kod SQL dla każdej liczby
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
    round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
    round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
GROUP BY et_time
ORDER BY et_time

Wolumen przyjął klasyczny kształt litery U: otwarcie wyniosło 89.9% największego przedziału dobowego i spadało w trakcie poranka, osiągając minimum na poziomie 34.1% w przedziale czasowym 13:00–13:30 ET. Ostatnia półgodzina (15:30 ET) była największym przedziałem dnia, wynoszącym 2.2B akcji — więcej niż 1.98B odnotowane przy otwarciu, co stanowi standardowy wzorzec dla regularnej sesji.

Rynek opcji

ZapytaniePrzepływ opcji: transakcje, kontrakty, % call, udział 0DTE względem wtorku, top kontrakt
Dokładny kod SQL dla każdej liczby
WITH
    (
        SELECT (groupArray(und), groupArray(strike), groupArray(typ), groupArray(vol), groupArray(avg_px), groupArray(is_0dte))
        FROM (
            SELECT any(underlying_symbol) AS und, any(toFloat64(strike_price)) AS strike, any(option_type) AS typ,
                   sum(size) AS vol, round(avg(toFloat64(price)), 3) AS avg_px,
                   if(substring(ticker, length(ticker) - 14, 6) = '260708', 1, 0) AS is_0dte
            FROM global_markets.options_trades
            WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'
            GROUP BY ticker
            ORDER BY vol DESC
            LIMIT 2
        )
    ) AS top2,
    (
        SELECT round(toFloat64(argMax(close, window_start)), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
    ) AS spy_regular_close,
    (
        SELECT round(toFloat64(sum(size)) / 1e6, 2)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'
    ) AS jul7_contracts_m,
    (
        SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260707') / sum(size), 1)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'
    ) AS jul7_pct_0dte
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    jul7_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) = '260708') / sum(size), 1) AS pct_0dte,
    jul7_pct_0dte,
    spy_regular_close,
    top2.1[1] AS top1_und, top2.2[1] AS top1_strike, top2.3[1] AS top1_type, top2.4[1] AS top1_contracts, top2.5[1] AS top1_avg_px, top2.6[1] AS top1_is_0dte,
    round(toFloat64(top2.2[1]) - spy_regular_close, 2) AS top1_moneyness
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'

Skonsolidowany rejestr transakcji na opcjach odnotował 10.44M transakcji oraz 63.26M kontraktów — powyżej poziomu 61.13M z wtorku, obliczonego na podstawie tego samego rejestru w analogicznym przedziale czasowym. Opcje typu Call stanowiły 55.4% całkowitego wolumenu, co wskazuje na umiarkowaną przewagę opcji typu Call. Kontrakty 0DTE (wygaśnięcie tego samego dnia, 260708) stanowiły 38.7% wolumenu kontraktów, co stanowi wzrost w porównaniu do 31.2% we wtorek. Najbardziej aktywnym pojedynczym kontraktem był SPY 745C677981 kontraktów przy średniej cenie $0.875, co oznacza opcję typu at-the-money z wygaśnięciem tego samego dnia względem regularnego zamknięcia SPY na poziomie $745.31.

Rejestr notowań

ZapytanieLiczba aktualizacji NBBO dla akcji: 8 lipca vs 7 lipca, z aktualizacjami poszczególnych tickerów (miliony)
Dokładny kod SQL dla każdej liczby
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-08')) / 1e6, 2) AS jul8_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-07')) / 1e6, 2) AS jul7_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-08')) / countIf(toDate(sip_timestamp) = toDate('2026-07-07')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'SPY') / 1e6, 2) AS jul8_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'QQQ') / 1e6, 2) AS jul8_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'NVDA') / 1e6, 2) AS jul8_nvda_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'TSLA') / 1e6, 2) AS jul8_tsla_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'MU') / 1e6, 2) AS jul8_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'

Rejestr notowań akcji zawierał 530.55M aktualizacji NBBO dnia 8 lipca — +7.7% względem poprzedniej sesji. Wśród wymienionych symboli najwięcej aktualizacji odnotował QQQ (6.53M), wyprzedzając SPY (4.93M). Pozostałe wymienione spółki to NVDA (1.8M), TSLA (0.72M) oraz MU (0.6M).

ZapytanieSPY / QQQ / NVDA / TSLA / MU / SNDK / AVGO: mediana spreadu kwotowanego RTH w punktach bazowych
Dokładny kod SQL dla każdej liczby
SELECT
    ticker,
    round(quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000), 2) AS median_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'NVDA', 'TSLA', 'MU', 'SNDK', 'AVGO')
  AND sip_timestamp >= '2026-07-08 13:30:00' AND sip_timestamp < '2026-07-08 20:00:00'
  AND bid_price > 0 AND ask_price > 0 AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps ASC

Wśród siedmiu wymienionych symboli mediana spreadu kwotowanego dla SPY w godzinach RTH wyniosła 0.27 bps — co stanowi dolną granicę normy dla najbardziej płynnego amerykańskiego ETF. QQQ notowano z spreadem 0.71 bps, a NVDA przy 1.52 bps. Najszersze wartości w zestawieniu dotyczą spółek o mniejszej płynności kwotowań: MU przy 5.66 bps oraz SNDK przy 12.21 bps.

ZapytanieŚredni spread kwotowany RTH dla SPY w ujęciu miesięcznym
Dokładny kod SQL dla każdej liczby
SELECT
    round(anyIf(avg_spread_cents, d = toDate('2026-07-08')), 3) AS jul8_avg_spread_cents,
    arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-08')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-08'))) + 1 AS tightness_rank,
    count() AS sessions_compared,
    round(min(avg_spread_cents), 3) AS tightest_session_cents,
    round(max(avg_spread_cents), 3) AS widest_session_cents,
    toString(min(d)) AS first_session,
    sum(dropped_invalid) AS dropped_invalid_quotes
FROM (
    SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
           avgIf(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100 AS avg_spread_cents,
           countIf(NOT (bid_price > 0 AND ask_price >= bid_price)) AS dropped_invalid
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'SPY'
      AND sip_timestamp >= toDateTime('2026-06-05 00:00:00')
      AND sip_timestamp < toDateTime('2026-07-09 00:00:00')
      AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
    GROUP BY d
)

Średni spread kwotowany dla SPY w godzinach RTH wyniósł 2.202 cents, co plasuje go w 11 na 22 poprzednich sesji. Był to dzień o średniej ciasności spreadu, przy czym zakres z ostatniego miesiąca wynosił od 1.809 cents (najwęższy) do 2.865 cents (najszerszy). Brak nagłych spadków płynności lub zdarzeń rynkowych — sesja ze spreadem kwotowanym dla SPY przebiegła w sposób typowy.

ZapytanieTape NBBO dla opcji: całkowita liczba aktualizacji względem akcji, plus segment SPY
Dokładny kod SQL dla każdej liczby
WITH
    (SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00') AS jul8_options_rows,
    (SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00') AS jul8_stock_quote_rows
SELECT
    round(jul8_options_rows / 1e9, 2) AS jul8_options_bn,
    round(jul8_options_rows / jul8_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-08 13:30:00' AND sip_timestamp < '2026-07-08 20:00:00') / 1e6, 0) AS jul8_spy_options_m

Rejestr opcji zawierał 9.62 miliarda aktualizacji NBBO — co stanowi 18.1× liczby aktualizacji w rejestrze notowań akcji. Sam segment opcji na SPY wygenerował 422 milionów aktualizacji w godzinach sesji regularnej.

Stopy procentowe: krzywa niemal się nie zmieniła

ZapytanieRentowność obligacji skarbowych: 8 lipca vs 7 lipca — zestawienie terminów + 2s10s
Dokładny kod SQL dla każdej liczby
SELECT
    t.1 AS curve_point,
    round(t.2, 2) AS jul8_yield_pct,
    round((t.2 - t.3) * 100) AS session_change_bp
FROM (
    SELECT arrayJoin([
        ('1 month',  toFloat64(d.yield_1_month),  toFloat64(p.yield_1_month)),
        ('3 month',  toFloat64(d.yield_3_month),  toFloat64(p.yield_3_month)),
        ('1 year',   toFloat64(d.yield_1_year),   toFloat64(p.yield_1_year)),
        ('2 year',   toFloat64(d.yield_2_year),   toFloat64(p.yield_2_year)),
        ('5 year',   toFloat64(d.yield_5_year),   toFloat64(p.yield_5_year)),
        ('10 year',  toFloat64(d.yield_10_year),  toFloat64(p.yield_10_year)),
        ('30 year',  toFloat64(d.yield_30_year),  toFloat64(p.yield_30_year)),
        ('2s10s spread', toFloat64(d.yield_10_year - d.yield_2_year), toFloat64(p.yield_10_year - p.yield_2_year))
    ]) AS t
    FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-08') AS d,
         (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-07') AS p
)

Liderem zmian w sesji była obligacja 5-letnia o +4 bp; obligacja 2-letnia zamknęła się o +2 bp wyżej, a żadna inna stopa zapadalności nie zmieniła się o więcej niż 2 bp w żadnym kierunku. W rezultacie spread 2s10s wyniósł 0.35% (zmiana o -1 bp w sesji), pozostając w granicach niedawnego zakresu. Niewielkie zmiany stóp procentowych wystąpiły równolegle do niewielkich zmian indeksów.

Kalendarz rynkowy

ZapytanieEx-divs, splits, raporty SEC, uwaga medialna
Dokładny kod SQL dla każdej liczby
WITH
    (
        SELECT (count(), uniqExact(publisher))
        FROM global_markets.stocks_news
        WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-08'
    ) AS news,
    (
        SELECT (argMax(t, (n, t)), max(n), max(n) - arraySort(x -> -x, groupArray(n))[2])
        FROM (
            SELECT t, count() AS n
            FROM (
                SELECT arrayJoin(tickers) AS t
                FROM global_markets.stocks_news
                WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-08'
            )
            WHERE t != 'SPCX'
            GROUP BY t
        )
    ) AS top_news
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-08') AS ex_dividend_records,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-08') AS splits_executed,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-08') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-08') AS forward_splits,
    (SELECT countIf(form_type = '424B2') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_424b2,
    (SELECT countIf(form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_form4,
    (SELECT countIf(form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_8k,
    (SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_total,
    news.1 AS news_articles, news.2 AS news_publishers,
    top_news.1 AS top_news_ticker, top_news.2 AS top_news_n, top_news.3 AS top_news_lead_over_next

W kalendarzu odnotowano ograniczoną aktywność: 81 spółek po dacie dywidendy, 1 przeprowadzonych podziałów akcji oraz 3722 zgłoszeń do SEC (w tym 775 transakcji insiderów na formularzu Form 4, 527 prospektów 424B2 oraz 163 raportów bieżących 8-K). Relacje informacyjne obejmowały 192 artykułów w 3 serwisach, przy czym MU znalazło się wśród najczęściej wymienianych tickerów w 17 artykułach. W bieżących wydarach nie wyróżniły się żadne znaczące operacje korporacyjne znanych spółek — głównym tematem rynkowym był sektor półprzewodników.

Sesja, zweryfikowana

ZapytanieWeryfikacja sesji: pierwszy/ostatni słupek SPY ET, liczba słupków regulaminowych, wyniki świąteczne, najbliższe 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,
    count() AS spy_minute_bars,
    countIf(window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-08') AS jul8_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-08' AND status = 'closed') AS next_closure_date,
    (SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-08' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-08 00:00:00' AND window_start < '2026-07-09 00:00:00'

Sesja obejmowała pełne godziny rozszerzone — pierwsza świeca SPY o 04:00 ET, ostatnia o 19:59 ET — przy czym odnotowano 390 minutowych świec w godzinach regulowanych oraz 1 sesji handlowych w tym oknie (brak skróconego dnia; tabela świąt nie zawiera tego dnia). Następne planowane zamknięcie nastąpi Labor Day dnia 2026-09-07.

Uwagi do danych

Wszystkie znaczniki czasu są zapisane w formacie UTC; sesje regulaminowe z dnia 8 lipca 2026 r. są filtrowane jako sip_timestamp / window_start między 2026-07-08 13:30:00 a 2026-07-08 20:00:00, co odpowiada godzinom 9:30–16:00 czasu nowojorskiego. Ceny dziesiętne są konwertowane na Float64 przed jakimkolwiek dzieleniem. Panele dedykowane dla poszczególnych tickerów (scoreboard, chip complex, rotation) są uporządkowane alfabetycznie według tickera, aby każde odniesienie w tekście wskazywało na stały wiersz; listy liderów (volume, quote snapshot) są uporządkowane według wartości, a każde stwierdzenie dotyczące pozycji jest kodowane jako granica kontrolna dla danej pozycji. Każde porównanie wtorkowe na tej stronie — udział szerokości rynku, liczba zielonych/czerwonych chipów, liczba kontraktów opcyjnych oraz udział 0DTE, liczba aktualizacji kwotowań — jest obliczane na nowo od 7 lipca (oraz 6 lipca, gdy wymagana jest cena zamknięcia z dnia poprzedniego) w tym samym bloku zapytania, a nie cytowane z wcześniejszych wpisów.

Pełne uwagi do danych

Panel szerokości rynku liczy spółki, które zamknęły się w godzinach regulaminowych w obu sesjach i których obrót wyniósł co najmniej 1 mln USD w badanym dniu; liczba pominiętych podmiotów (5284 z 11439) umożliwia wgląd w wykluczoną końcówkę zestawienia. Kolumny czasu day_low/day_high w chip complex wykorzystują wzorzec argMin/argMaxIf(..., (value, timestamp)), co zapewnia deterministyczne rozstrzyganie remisów. Etykiety koszyków volume-smile dotyczą czasu ET (%H:%i) i są obliczane wyłącznie z użyciem toTimeZone w liście SELECT. Panel options-tape wykrywa wygaśnięcie w tym samym dniu poprzez dopasowanie podciągu znaków tickera OCC (substring(ticker, length(ticker) - 14, 6)), a nie przez options_trades.expiration_date (kolumna ta jest błędna, zgodnie z obowiązującą notatką wstępną). Symbole w KNOWN_AMBIGUOUS_TICKERS są wykluczane w zapytaniach SQL dla volume-leaders oraz news-attention, dzięki czemu wzmianki typu „najwięcej X” odnoszą się do zweryfikowanych nazw. Ticker w top-news wykorzystuje deterministyczne rozstrzyganie remisów (argMax(t, (n, t))); wartość top_news_lead_over_next = 0 oznacza remis, dlatego w tekście używa się sformułowania „spośród najczęściej wspominanych”. Panel obligacji skarbowych łączy dwa wiersze z dziennym snapshotem; brak snapshotu dla którejkolwiek daty skutkuje zerową liczbą wierszy, co jest zachowane przez granicę row_count. Liczby stocks-quote oraz options-quote to wyniki pełnych skanów taśmy w podziałach dziennych; liczby dla konkretnych tickerów są raportowane w milionach, aby pasowały do jednostek w kolumnach. Mediany spreadu wykorzystują quantileExact (deterministycznie); panel trailing spread to średnia (avgIf), oznaczona w ten sposób.

Metodologia

  • Źródło danych rynkowych: skonsolidowany taśma (consolidated tape) — delayed_stocks_minute_aggs dla cen i wolumenów indeksów oraz poszczególnych instrumentów, cache_stocks_quotes dla liczebności NBBO i kwotowanych spreadów, cache_options_quotes oraz options_trades dla taśmy opcyjnej.
  • Obsługa stref czasowych: wszystkie zapisane znaczniki czasu są w formacie UTC; etykiety czasu ET są obliczane przy użyciu toTimeZone(..., 'America/New_York') wyłącznie w listach SELECT; klauzule WHERE wykorzystują surowe wartości UTC.
  • Okno sesji regulaminowej: 13:30–20:00 UTC, weryfikowane na podstawie obserwowanych minutowych słupków SPY (panel weryfikacji sesji), a nie na podstawie obliczeń kalendarzowych.
  • Definicja spreadu: (ask - bid) / midpoint × 10,000 w punktach bazowych dla ważnych ofert dwustronnych w migawce; panel z ostatniego miesiąca przedstawia średnią szerokość w centach, oznaczoną jako średnia.
  • Porównania z poprzednią sesją: obliczane w zapytaniu od 7 lipca (oraz 6 lipca dla porównań dzień do dnia w przypadku wtorku) — dane nigdy nie są przenoszone z poprzednich wpisów.
  • Agregaty deterministyczne: quantileExact, argMin/argMax oparte na kluczach krotki (tuple-keyed) oraz deterministyczne rozstrzyganie konfliktów informacyjnych dla zapewnienia stabilnej regeneracji danych.
  • Data aktualności magazynu danych: 10 lipca 2026 (T+2 dla danego okresu); taśmy z obu sesji zostały w pełni zindeksowane na tym poziomie.

Odnośniki: podsumowanie z 7 lipca 2026, koszty handlu opcjami, podstawy spreadu bid-ask, opcje 0DTE oraz wolumen względny.