Podsumowanie rynku 7 lipca 2026
Spadek sektora półprzewodników przewyższył zmiany indeksów przy zielonym kursie NVDA. Przewaga podmiotów tracących nad zyskującymi oraz niski spread SPY.
Wtorek, 7 lipca 2026 roku, wycofał wzrosty z poniedziałkowego otwarcia — i to z nawiązką: QQQ zamknął się na poziomie -1.82%, co niemal całkowicie wymazało poniedziałkowe zyski, w przeciwieństwie do DIA na poziomie -0.29%. Na rynku odnotowano przewagę spadków w stosunku dwóch do jednego: 4034 podmiotów tracących względem 2091 podmiotów zyskujących. Kluczowym wydarzeniem dnia był spadek w sektorze półprzewodników, wielokrotnie przewyższający skalę indeksu — w tym zjawisku nie uczestzył jeden z gigantów sektora. Wszystkie poniższe dane pochodzą z zapytania bazodanowego — aby uzyskać dokładny kod SQL, należy rozwinąć dowolny panel.
Wyniki rynkowe
Każda zmiana stanowi porównanie ostatniej minuty sesji regulaminowej z 7 lipca z poniedziałkiem 6 lipca — są to kolejne sesje handlowe.
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-06 13:30:00' AND window_start < '2026-07-06 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-07 13:30:00' AND window_start < '2026-07-07 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 AS shares_traded_m
FROM sess s
JOIN prior p ON s.ticker = p.ticker
ORDER BY s.tickerWskaźnik -1.82% funduszu QQQ wyznaczył kierunek spadkowy dla czterech indeksowych ETF; SPY zamknął się na poziomie -0.48%, IWM na -0.9%, natomiast najmniejszą zmianę odnotował DIA na poziomie -0.29%. Rozbieżność między lukami a trendem wewnątrzsesyjnym wskazuje na brak zgody rynków na otwarciu: luka nocna QQQ wyniosła -1.17%, a zmiana od otwarcia do zamknięcia wyniosła -0.65% — to luka spowodowała większość spadków — podczas gdy DIA otworzył się wyżej o 0.47%, lecz mimo to zakończył sesję na czerwono, osiągając zmianę od otwarcia do zamknięcia na poziomie -0.76%. Liderzy rynkowi zmieniali się na każdej sesji od czwartku: w czwartek przewodził DIA, w poniedziałek QQQ, a we wtorek ponownie DIA.
Czy dzień był nietypowy?
Dokładny kod SQL dla każdej liczby
SELECT
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-07')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-07'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-07'))) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ') AS qqq_sessions_compared,
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-07')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-07'))), groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-07'))) + 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-04 00:00:00')
AND window_start < toDateTime('2026-07-08 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
)
)
WHERE isFinite(cc_pct)Na poziomie indeksów nie było nic nadzwyczajnego. Zmiana kursu zamknięcia QQQ w -1.82% plasuje się w 9 z 21 poprzednich sesji pod względem wartości bezwzględnej. Zmiana kursu SPY od otwarcia do zamknięcia wynosząca -0.34% plasuje się w 15 z 21 — wysoki próg wyznacza ostatni miesiąc, obejmujący zmienność z końca czerwca. Wyjątkowa była natomiast dywergencja wewnątrz rynku w dniu 7 lipca.
Szerokość rynku: dwa spadki na jeden wzrost
Dokładny kod SQL dla każdej liczby
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-07 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 00:00:00') AS day_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
OR (window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')
GROUP BY ticker
)
SELECT
countIf(day_close > prior_close AND day_dollar_volume >= 1000000) AS advancers,
countIf(day_close < prior_close AND day_dollar_volume >= 1000000) AS decliners,
countIf(day_close = prior_close AND day_dollar_volume >= 1000000) AS unchanged,
countIf(day_dollar_volume >= 1000000) AS liquid_tickers,
count() AS tickers_traded_both_sessions,
count() - countIf(day_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
/ countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct
FROM per_ticker
WHERE prior_close > 0 AND day_close > 02091 wzrostów, 4034 spadków, 59 bez zmian — 33.8% płynnych instrumentów odnotowało wzrosty, co odwróciło poniedziałnią hossę. Filtr pomija 5276 z 11460 tickerów o wartości poniżej 1 million USD, które były przedmiotem obrotu w ciągu dwóch sesji.
Sektor półprzewodników odnotował spadki — z wyjątkiem największych podmiotów
Wyprzedaż skoncentrowała się w sektorze półprzewodników: producenci układów, dostawcy sprzętu, podmioty z sektora pamięci oraz lewarowane fundusze ETF. Poniżej przedstawiono korelację i skalę spadków; dane nie wskazują na przyczyny.
Dokładny kod SQL dla każdej liczby
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-07 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-07 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-07 00:00:00') AS day_low,
argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-07 00:00:00') AS low_bar,
argMaxIf(window_start, (toFloat64(high), -toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-07 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 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-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
OR (window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 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,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
toHour(toTimeZone(high_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(high_bar, 'America/New_York')) AS high_minute_et,
toHour(toTimeZone(low_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(low_bar, 'America/New_York')) AS low_minute_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerTeradyne (-9.63%) i Intel (-9.59%) straciły niemal jedną dziesiątą wartości, a Marvell (-7.41%), KLA (-7.23%), Lam Research (-6.8%) oraz AMD (-6.41%) odnotowały zbliżone spadki. Spółki z sektora pamięci i magazynowania danych, które odnotowały częściowe odbicie w poniedziałek, ponownie spadły: SanDisk -7.1% w zakresie 10.36%, Western Digital -7.81%, Seagate -4.84% oraz MU -4.61% — w przypadku MU obrót akcjami wyniósł $41.6 miliarda, czyli więcej niż suma obrotów trzech pozostałych spółek pamięciowych (analiza MU zawiera szczegółowe wyjaśnienie]).
Dwaj giganci sektora nie uczestniczyli w spadkach: NVDA zamknęła się na wzrostowym poziomie 0.67%, a Broadcom zakończył sesję niemal bez zmian na poziomie -0.83% — był to dzień spadkowy dla całego sektora, z wyłączeniem jego największych członków (analiza NVDA z czerwca).
Spadki wystąpiły jednocześnie — nagły załamanie kursów: TER, LRCX i MU osiągnęły sesyjne minima o godzinach 10:41, 10:41 i 10:41 ET, natomiast SanDisk, Marvell, KLA, AVGO i SOXL odnotowały spadki w tych samych minutach (zestawienie zawiera dokładne godziny), a SOXS, lewarowany ETF typu inverse 3x na półprzewodniki, osiągnął sesyjne maksimum na poziomie 10:42 — trend był odwrotny. Intel kontynuował spadki długo po ustabilizowaniu się pozostałych spółek, osiągając minimum na poziomie 15:18. Skala spadków jest widoczna w instrumentach lewarowanych: SOXL -15.15% wobec SOXS +15.87%.
Druga strona wykresu
W stosunku dwa do jednego przeważają spadki, jednak trzecia część rynku odnotowała wzrosty. Co zyskało, podczas gdy sektory półprzewodników traciły:
Dokładny kod SQL dla każdej liczby
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-07 00:00:00')) AS prior_close_raw,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-07 00:00:00')) AS day_open_raw,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 00:00:00')) AS day_close_raw,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 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-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
OR (window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 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 tickerSektory energetyczny i ochrony zdrowia napędzały wzrosty: Exxon +3.78%, Chevron +3.47%, Johnson & Johnson +3.07%, Eli Lilly +2.75%, UnitedHealth +2.41%. Wyniki dwóch spółek typu megacap były rozbieżne: META wzrosło o 2.52%, podczas gdy TSLA oddało większość poniedziałkowych wzrostów przy -4.02%. Największa pojedyncza zmiana na rynku: Crinetics Pharmaceuticals (CRNX) zamknęło się na poziomie +98.79% przy obrocie rzędu $4.19 miliarda, co niemal podwoiło wartość — cały ruch nastąpił w wyniku luki nocnej (98.91% na otwarciu; podczas sesuły kurs zmienił się jedynie o -0.06%). Jest to rodzaj wyceny między sesjami, która ma miejsce tam, gdzie odbywa się handel przedsesyjny. Dane nie wskazują przyczyny.
Gdzie handlowano kapitałem
Dokładny kod SQL dla każdej liczby
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
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-07 13:30:00' AND window_start < '2026-07-07 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-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESCMU zdominował obrót na dolara przy wartości 41.6 mld USD — po jednej sesji utraty pozycji lidera odzyskał pierwsze miejsce. Za nim uplasowały się SPY ($28.68 mld USD) oraz QQQ ($26.54 mld USD), a pozostałe trzy spółki z sektora półprzewodników — NVDA ($19.95 mld USD), SNDK ($19.73 mld USD) oraz INTC ($13.82 mld USD) — dopełniły listę sześciu największych podmiotów. Koncentrację obrotu na pojedynczych walorach wskazuje wolumen względny.
W zestawieniu akcji SOXS wygenerował obrót na poziomie 566.3 mln akcji — trzykrotny odwrotny ETF na półprzewodniki zajmuje pierwsze miejsce pod względem wolumenu trzecią sesję z rzędu (poniedziałek oraz czwartek zawierają poprzednie dane), tym razem w dniu spadków w tym sektorze. CPOP stanowi przykład przeciwstawny: obrót na poziomie 161.3 mln akcji wyniósł zaledwie 0.02 mld USD — wolumen akcji jest niższy dla tanich spółek. Podstawa: 7 lipca, godziny sesyjne; wykluczono jedną spółkę o powtarzającym się symbolu do czasu weryfikacji podmiotu — jego potwierdzenia.
Przebieg sesji
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-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
GROUP BY et_time
ORDER BY et_time2 miliardów akcji w pierwszej półgodzinie, dołek na poziomie 0.64 miliardów przy 13:30 oraz 2.14 miliardów przy zamknięciu o godzinie 15:30 — typowy kształt litery U, z największą aktywnością na zamknięciu.
Rynek opcji
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) = '260707', 1, 0) AS is_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 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-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
) AS spy_regular_close
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS 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) = '260707') / sum(size), 1) AS same_day_expiry_pct,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260707')) / 1e6, 2) AS same_day_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'INTC')) / 1e6, 2) AS intc_contracts_m,
top2.1[1] AS top_contract_underlying,
top2.2[1] AS top_contract_strike,
top2.3[1] AS top_contract_type,
if(top2.3[1] = 'C', 1, 0) AS top_contract_is_call,
top2.4[1] AS top_contract_volume,
top2.5[1] AS top_contract_avg_price,
round(top2.2[1] - spy_regular_close, 2) AS top_strike_minus_spy_close,
top2.1[2] AS second_contract_underlying,
top2.2[2] AS second_contract_strike,
top2.3[2] AS second_contract_type,
if(top2.3[2] = 'P', 1, 0) AS second_contract_is_put,
top2.4[2] AS second_contract_volume,
top2.5[2] AS second_contract_avg_price,
round(spy_regular_close - top2.2[2], 2) AS spy_close_minus_second_strike,
top2.6[1] + top2.6[2] AS both_top_contracts_same_day,
spy_regular_close AS spy_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'Na rynku opcji wyhandlowano 61.13 milionów kontraktów w ramach 10.6 milionów transakcji — wolumen zbliżony do poziomu z poniedziałku — przy czym opcje typu call nadal stanowiły 55.6% obrotu mimo spadkowych notowań. Instrumenty z terminem wygaśnięcia w dniu transakcji stanowiły 31.2% całkowitego obrotu (19.08 milionów kontraktów) — udział 0DTE w typowy wtorek. Dwa najbardziej aktywne kontrakty tego dnia wystąpiły w okolicach zamknięcia sesji, oba z terminem wygaśnięcia w dniu transakcji i ceną wykonania SPY: call przy cenie $749 (873438 kontraktów przy średniej cenie $0.647) zakończył sesję 1.34 poza pieniądzem, natomiast put przy cenie $747 (785834 kontraktów przy cenie $0.88) zakończył sesję 0.66 po drugiej stronie. Zamknięcie indeksu SPY na poziomie 747.66 znalazło się pomiędzy dwoma największymi zakładami dnia, a oba instrumenty wygasły bezwartościowe.
Arkusz notowań
Pod każdą ceną na tej stronie znajduje się strumień notowań — National Best Bid and Offer, nieustannie aktualizowany dla każdej spółki z listy; jest to najtrudniej dostępne zestawienie danych w tym magazynie. Jest ono mierzone tutaj podczas każdej sesji, zarówno zwyczajnej, jak i nietypowej.
Dokładny kod SQL dla każdej liczby
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-07')) / 1e6, 2) AS jul7_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-06')) / 1e6, 2) AS jul6_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-07')) / countIf(toDate(sip_timestamp) = toDate('2026-07-06')) - 1) * 100, 1) AS day_over_day_pct,
toHour(toTimeZone(maxIf(sip_timestamp, toDate(sip_timestamp) = toDate('2026-07-07')), 'America/New_York')) * 60
+ toMinute(toTimeZone(maxIf(sip_timestamp, toDate(sip_timestamp) = toDate('2026-07-07')), 'America/New_York')) AS jul7_last_quote_et_minute,
round(countIf(sip_timestamp >= '2026-07-07 19:00:00' AND sip_timestamp < '2026-07-07 20:00:00') / 1e6, 2) AS jul7_close_hour_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'Arkusz akcji odnotował 492.76 milion aktualizacji NBBO dnia 7 lipca — o 25.7% więcej niż 391.96 milion w poniedziałek. Odnotowano więcej aktualizacji, a nie szersze kwotowania:
Dokładny kod SQL dla każdej liczby
SELECT
ticker,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00'), 2) AS pocket_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 2) AS midday_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00')
- quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 2) AS spread_delta_bps,
round(countIf(sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00') / 1e3, 1) AS pocket_updates_k,
round(countIf(sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00') / 1e3, 1) AS midday_updates_k,
round(countIf(sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00') / countIf(sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 1) AS quote_rate_ratio,
round(count() / 1e6, 2) AS session_updates_m,
countIf(bid_price <= 0 OR ask_price <= 0 OR bid_price > ask_price) AS dropped_invalid_quotes
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AMD', 'INTC', 'MU', 'NVDA', 'QQQ', 'SNDK', 'SOXL', 'SOXS', 'SPY', 'WDC')
AND sip_timestamp >= '2026-07-07 13:30:00' AND sip_timestamp < '2026-07-07 20:00:00'
GROUP BY ticker
ORDER BY tickerW trakcie porannych minimów sprawdzane spółki aktualizowały notowania wielokrotnie względem tempa z południa dnia — MU 3.4x, SanDisk 4.1x, AMD 4.6x — a spread bid-ask niemal się nie zmienił: mediana szerokości dla MU wynosiła 5.02 bps w porannym dołku względem 4.81 w południe, dla NVDA wynosiła 1.04 względem 1.01, natomiast dla SPY nie uległa żadnej zmianie (zmiana o 0 bps przy dotknięciu na poziomie 0.27 bps). Dwie spółki, które odnotowały realny wzrost kosztów transakcyjnych, to AMD (+2.6 bps) i Intel (+0.95) — Intel był jedyną spółką, której cena nadal spadała po porannym dołku — podczas gdy dźwignięta para faktycznie zwęziła się na dnie (SOXL -2.59 bps, SOXS -1.49). Deficyt płynności objawia się szerokimi kwotowaniami i brakiem aktywności; tutaj wystąpiło coś przeciwnego — burza aktualizacji przy zachowaniu stałej szerokości. Koszty realizacji zleceń nadal zależały od spółki: SOXS kwotował szerokość 19.59 bps na dnie względem 1.04 dla NVDA.
Dokładny kod SQL dla każdej liczby
SELECT
round(anyIf(avg_spread_cents, d = toDate('2026-07-07')), 3) AS jul7_avg_spread_cents,
arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-07')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-07'))) + 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-08 00:00:00')
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
)Ta sekcja „zwykłego sprawdzenia” jest publikowana podczas każdej sesji: biorąc pod uwagę średni spread kwotowany ważony aktualizacjami, 7 lipca był najwęższą sesją dla SPY w ciągu ostatniego miesiąca — 1.809 centów, ranking 1 z 21, przy czym najszerszy poziom w miesiącu wynosił 2.865 centów. Fakt, że czerwony arkusz (spadkowy) wyceniono przy najwęższym dotknięciu indeksu w miesiącu, może potwierdzić wyłącznie strumień notowań.
Dokładny kod SQL dla każdej liczby
WITH
(
SELECT count()
FROM global_markets.cache_options_quotes
WHERE toYYYYMMDD(sip_timestamp) = 20260707
) AS jul7_option_rows,
(
SELECT count()
FROM global_markets.cache_options_quotes
WHERE toYYYYMMDD(sip_timestamp) = 20260706
) AS jul6_option_rows,
(
SELECT count()
FROM global_markets.cache_stocks_quotes
WHERE toYYYYMMDD(sip_timestamp) = 20260707
) AS jul7_stock_quote_rows
SELECT
jul7_option_rows AS jul7_option_quote_rows,
round(jul7_option_rows / 1e9, 2) AS jul7_option_quote_updates_bn,
round(jul6_option_rows / 1e9, 2) AS jul6_option_quote_updates_bn,
round((jul7_option_rows / jul6_option_rows - 1) * 100, 1) AS day_over_day_pct,
round(jul7_stock_quote_rows / 1e6, 2) AS jul7_stock_quote_updates_m,
round(jul7_option_rows / jul7_stock_quote_rows, 1) AS jul7_option_to_stock_ratioStrumień notowań opcyjnych jest jeszcze większy i stanowi największy zestaw danych w tym magazynie. 7 lipca odnotowano 8.69 miliard aktualizacji NBBO dla opcji, co stanowi 17.6 wielkości całego arkusza notowań akcji z tej samej sesji (492.76 milion aktualizacji). Poniedziałkowy arkusz opcji zawierał 6.49 miliard, zatem strumień opcyjny wzrósł o 34% sesja do sesji, przy wzroście strumienia akcji o 25.7%.
Dokładny kod SQL dla każdej liczby
WITH
(
SELECT count()
FROM global_markets.cache_stocks_quotes
WHERE toYYYYMMDD(sip_timestamp) = 20260707
) AS jul7_stock_quote_rows,
(
SELECT round(toFloat64(avg(close)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-07-07 14:36:00' AND window_start < '2026-07-07 14:48:00'
) AS spy_pocket_price,
(
SELECT round(toFloat64(avg(close)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-07-07 17:30:00' AND window_start < '2026-07-07 17:42:00'
) AS spy_midday_price
SELECT
round(count() / 1e6, 2) AS spy_option_updates_m,
round(100.0 * count() / jul7_stock_quote_rows, 1) AS pct_of_whole_equity_quote_tape,
uniqExact(ticker) AS spy_contracts_quoted,
round(countIf(substring(ticker, -15, 6) = '260707') / 1e6, 2) AS same_day_updates_m,
spy_pocket_price AS spy_price_in_pocket,
spy_midday_price AS spy_price_midday,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price),
bid_price > 0 AND ask_price >= bid_price
AND substring(ticker, -15, 6) = '260707'
AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_pocket_price) <= 2
AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00'), 3) AS pocket_atm_spread_dollars,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price),
bid_price > 0 AND ask_price >= bid_price
AND substring(ticker, -15, 6) = '260707'
AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_midday_price) <= 2
AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 3) AS midday_atm_spread_dollars,
round(pocket_atm_spread_dollars - midday_atm_spread_dollars, 3) AS atm_spread_delta_dollars,
round(countIf(substring(ticker, -15, 6) = '260707'
AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_pocket_price) <= 2
AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00') / 1e3, 1) AS pocket_atm_updates_k,
round(countIf(substring(ticker, -15, 6) = '260707'
AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_midday_price) <= 2
AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00') / 1e3, 1) AS midday_atm_updates_k,
round(pocket_atm_updates_k / midday_atm_updates_k, 1) AS atm_quote_rate_ratio,
countIf(NOT (bid_price > 0 AND ask_price >= bid_price)
AND substring(ticker, -15, 6) = '260707') AS dropped_invalid_same_day_quotes
FROM global_markets.cache_options_quotes
WHERE ticker >= 'O:SPY26' AND ticker < 'O:SPY27'
AND sip_timestamp >= '2026-07-07 13:30:00' AND sip_timestamp < '2026-07-07 20:00:00'
HAVING pocket_atm_updates_k > 0 AND midday_atm_updates_k > 0Same kontrakty SPY z terminem zapadalności w 2026 roku pochłonęły 327.55 milion tych aktualizacji w godzinach regularnych, rozłożonych na 9116 wymienionych kontraktach. To stanowi 66.5% tego, co wykwotował cały rynek akcji tego samego dnia, dla jednego instrumentu bazowego. Kontrakty z zapadalnością w tym samym dniu, które stanowią arkusz 0DTE, odpowiadają za 13.61 milion aktualizacji.
Przez dwanaście minut porannego braku płynności, kontrakty at-the-money o zapadalności w tym samym dniu kwotowały medianę szerokości na poziomie $0.01, czyli dokładnie tyle samo, co w południe ($0.01, delta wynosząca 0). Tempo aktualizacji dla tej samej pary wynosiło 3x: 191.1 tysięcy aktualizacji na dołkach względem 64 tysięcy w południe. Zmienność opcji powtórzyła zachowanie akcji. Szerokość pozostała stała mimo intensywnej pracy mechanizmów kwotowania. At-the-money oznacza strike w granicach 2 USD od średniej ceny SPY w tym samym oknie czasowym; panel podaje obie ceny (746 w dołku, 749.08 w południe).
Stopy procentowe: krzywa uległa wyprzedaży wraz z trendem wzrostowym
Dokładny kod SQL dla każdej liczby
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jul7_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-07') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-06') AS p
)Obligacje skarbowe traciły na wartości wraz z trendem wzrostowym. Rentowność 1-roczna wzrosła o 11 punktów bazowych do poziomu 4.06%, 10-letnia wzrosła o 7 do 4.55%, a 30-letnia wzrosła o 6 do 5.05% — przekraczając poziom pięciu procent. spread 2s10s utrzymał się na poziomie 0.36 punktów procentowych (zmiana o 1 punktów bazowych): był to ruch głównie równoległy, a nie zmiana kształtu krzywej.
Kalendarz rynkowy
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-07'
) AS news,
(
SELECT (argMax(t, n), 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-07'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-07') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-07') AS splits_executed,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-07') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-07') AS forward_splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-07') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-07') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-07') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-07') AS filings_8k,
news.1 AS news_articles,
news.2 AS news_publishers,
top_news.1 AS most_covered_ticker,
if(top_news.1 = 'NVDA', 1, 0) AS most_covered_is_nvda,
top_news.2 AS most_covered_articles,
top_news.3 AS most_covered_lead_over_next,
(SELECT countIf(has(tickers, 'CRNX')) FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-07') AS crnx_articlesDla 79 spółek nastąpiło odcięcie dywidendy, przeprowadzono 7 podziałów akcji — 5 z nich to reverse splits, czyli konsolidacje poniżej jednego dolara, które generują sztuczne, trójcyfrowe wzrosty na nieskorygowanych wykresach, przy 2 prognozach — oraz pojawił się 1 nowy listing. Indeks SEC odnotował 2433 zgłoszeń: 463 Form 4s, 173 raportów 8-K. Nasz kanał informacyjny zawierał 215 artykułów od 3 wydawców; najczęściej omawianą spółką była NVDA z liczbą 17 artykułów, co stanowi 4 przewagi nad kolejną pozycją — tą samą NVDA, która zamknęła się na zielono mimo czerwonego dnia dla swojego sektora. Kanał zawierał 0 artykułów na temat CRNX, największego wzrostu na rynku — był to jednak temat skupiający uwagę jednego kanału, a nie całych mediów.
Sesja zweryfikowana
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-07 13:30:00' AND window_start < '2026-07-07 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-07') AS jul7_holiday_rows,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-07' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-07' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-07 00:00:00' AND window_start < '2026-07-08 00:00:00'7 lipca była to pełna sesja, a nie wczesne zamknięcie: słupki SPY trwają od 04:00 do 19:59 czasu nowojorskiego, obejmując dokładnie 390 słupków w regularnym oknie czasowym, a tabela świąteczna zawiera 0 wierszy dla tej daty. Następne planowane zamknięcie nastąpi Labor Day, 2026-09-07.
Uwagi do danych
- Wolumen w USD jest wskaźnikiem minutowym — cena zamknięcia pomnożona przez wolumen zsumowany dla danej minuty w godzinach sesji regularnej.
- Podział na lukę oraz ruch wewnątrz sesji jest mierzony od pierwszej świecy sesji regularnej danego waloru (otwarcia) względem ostatniego zamknięcia sesji poprzedniej; pozostała część obejmuje ruch od otwarcia do zamknięcia w dniu 7 lipca.
- Zsynchronizowane poranne minima zostały zweryfikowane względem sąsiednich świec w momencie tworzenia raportu — każda wartość jest śledzona przez sąsiednie minuty, a nie pojedynczy zapis; żadna nie wymagała oznaczenia jako anomalia. W przypadku wystąpienia ekstremum w więcej niż jednej minucie, zestawienie pokazuje najwcześniejszą taką świecę (deterministyczne rozstrzyganie równości).
- Jeden walor o powtarzającym się symbolu został wykluczony z rankingów wolumenu oraz zestawień wiadomości do czasu weryfikacji podmiotu; osobny wpis zawiera dowody.
- Statystyki spreadu kwotowanego wykluczają nieprawidłowe kwotowania (jednostronne lub niespójne zapisy NBBO), a każda kolumna spreadu zawiera informację o liczbie odrzuconych rekordów. "Średnia ważona aktualizacjami spread" oblicza średnią szerokość kwotowań dla każdej poprawnej aktualizacji NBBO — okresy dużej aktywności mają większą wagę; jest to statystyka kwotowań, a nie koszt pojedynczej transakcji.
- Kwotowania opcji z dnia 7 lipca pojawiły się po publikacji tego wpisu.
cache_options_quoteswykazuje najdłuższe opóźnienie w przetwarzaniu danych przez magazyn, dlatego pierwsza edycja zawierała pusty zapis w miejscu, gdzie obecnie znajdują się panele kwotowań opcji. Dane dotarły, a błąd pustego zapisu wystąpił podczas regeneracji, dlatego niniejsza rewizja obejmuje 8.69 miliarda aktualizacji z danej sesji. Taśma kwotowań akcji była kompletna od początku: ostatnia aktualizacja z 7 lipca nastąpiła o godzinie 1199 czasu ET, przy czym w ostatniej godzinie sesji regularnej odnotowano 77.13 milionów aktualizacji (kolumny zapisów w panelu taśmy kwotowań). - Szerokość kwotowań opcji jest mierzona dla opcji at-the-money. Mediana z każdej aktualizacji dla wszystkich wymienionych kontraktów z tego samego dnia jest statystyką złożoną: kontrakty głęboko at-the-money mają szerokość liczoną w dolarach, kontrakty daleko od ceny wykonania (out-of-the-money) mają szerokość liczoną w centach; zestawienie pokazuje również, które kontrakty zmieniają kwotowania w trakcie sesji. Porównanie wartości "pocket" względem południa ogranicza się do cen wykonania w zakresie +/- 2 USD od średniej ceny SPY w każdym oknie czasowym; obie ceny są kolumnami w panelu. Nieprawidłowe kwotowania opcji (jednostronne lub niespójne) są uwzględniane w tym panelu, a nie pomijane.
- Dane dotyczące obligacji skarbowych z 7 lipca zostały przetworzone z opóźnieniem — pierwsza edycja zawierała informację o opóźnieniu; błąd został wykryty 8 lipca po otrzymaniu danych, a niniejsza rewizja zawiera rzeczywistą krzywą.
Metodologia
- Okres obejmuje pojedynczą sesję handlową (sesja 1, zweryfikowana na podstawie obserwowanych słupków i kalendarza świąt — nigdy nie przyjmowana domyślnie). Znaczniki czasu są przechowywane w strefie UTC i konwertowane na czas nowojorski wewnątrz zapytań. „Close” oznacza ostatni słupek minutowy regularnej sesji; zmiany dobowe porównują 7 lipca z 6 lipca, czyli kolejne sesje handlowe.
- Kolumny dziesiętne są rzutowane na typ 64-bit float przed arytmetyką proporcji; terminy wygaśnięcia opcji są ponownie analizowane z tickerów OCC (własna kolumna wygaśnięcia w tabeli jest błędna). Wszystkie panele są odczytywane raz, w momencie tworzenia, poprzez zabezpieczoną ścieżkę tylko do odczytu. Stan magazynu danych na dzień 8 lipca 2026 r.
- Sekcja tape-quote została dodana w rewizji z 8 lipca (ta sama rewizja, która zastąpiła opóźnienie obligacji skarbowych drukiem landed), a panele kwotowań opcji zostały przepisane po pojawieniu się wierszy NBBO dla opcji z dnia 7 lipca. Generowanie odbywa się w trybie wsadowym: panel kwotowań opcji SPY skanuje kilkaset milionów rekordów NBBO, podczas gdy liczniki tape-size odczytują sumy wierszy partycji dobowych, co pozwala tabeli zawierającej miliardy wierszy na sesję odpowiedzieć na zapytanie o liczbę w mniej niż sekundę.
Każdy panel jest wynikiem zapytania przechowywanego — wykres, tabela i SQL stanowią jeden obiekt. Można wkleić dowolny z nich do terminala Strasmore i dostosować do własnych potrzeb. Poprzednia sesja: 6 lipca.