Strasmore Research
Огляди ринку Matt ConnorВід Matt Connor · Оновлено 2026-07-24

Огляд ринку 7 липня 2026 року

Сектор напівпровідників вплинув на індекс, проте NVDA демонструє ріст. Співвідношення продажів два до одного та найвужчий спред SPY за місяць.

Вівторок, 7 липня 2026 року повністю нівелював зростання, яке забезпелив відкриття ринку в понеділок, — і навіть більше: QQQ закрився на рівні -1.82%, що перевищує втрату прибутку понеділка, на фоні -0.29% у DIA. На внутрішньому ринку переважали продажі у співвідношенні два-до-одного: 4034 ліквідуваних акцій, що падають, проти 2091 акцій, що зростають. Головною подіною дня став обвал у секторі напівпровідників, масштаб якого в кілька разів перевищує розмір індексу, при цьому один із лідерів сектору не брав участі у торгах. Кожне наведене нижче число отримано з запиту до бази даних — розгорніть будь-яку панель, щоб побачити точний SQL-код.

Табло результатів

Кожне порівняння проводиться за останньою хвилинною свічкою регулярної сесії 7 липня та відповідним показником понеділка, 6 липня — послідовні торгові сесії.

ЗапитSPY / QQQ / DIA / IWM — 7 липня порівняно з закриттям 6 липня, регулярні години
Точний SQL-код для кожного числа
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.ticker

Показник -1.82% фонду QQQ спричинив падіння чотирьох індексних ETF; SPY закрився на рівні -0.48%, IWM на рівні -0.9%, а найменше падіння продемонстрував DIA з результатом -0.29%. Розрив між ціною відкриття та динамікою протягом сесії вказує на розбіжність ринку на відкритті: нічний розрив QQQ склав -1.17%, а зміна ціни від відкриття до закриття — -0.65% — основний негативний вплив мав саме розрив; водночас DIA відкрився вгору на 0.47%, але все одно завершив сесію у червоній зоні, продемонструвавши зміну ціни від відкриття до закриття на рівні -0.76%. Лідерство змінюється щосесії з четверга: у четвер лідером був DIA, у понеділок — QQQ, а у вівторок знову DIA.

Чи був цей день незвичним?

ЗапитQQQ та SPY: 7 липня у порівнянні з попереднім місяцем сесій (ранг 1 = найбільше абсолютне зміщення)
Точний SQL-код для кожного числа
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)

На рівні індексів нічого особливого. Зміна ціни QQQ від закриття до закриття у -1.82% займає 9 місце серед 21 попередніх сесій за абсолютною величиною. Зміна ціни SPY від відкриття до закриття у -0.34% займає 15 місце серед 21 — цей місячний період, що включає різкі коливання наприкінці червня, встановлює високу планку. Винятковим був саме рівень дисперсії 7 липня.

Ширина ринку: на кожну акцію, що зростає, припадає дві, що падають

ЗапитАкції, що зростають, проти акцій, що падають, серед тикерів з обсягом торгів ≥ $1M станом на 7 липня
Точний SQL-код для кожного числа
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 > 0

2091 зросли, 4034 впали, 59 без змін — 33.8% ліквідних інструментів продемонстрували зростання, проте позитивна динаміка понеділка змінилася на протилежну. Фільтр виключає 5276 від 11460 акцій з обсягом торгів менше за один мільйон доларів за два сесії, які враховуються в цьому звіті.

Сектор чипів обвалився — за винятком найбільших гравців

Продажі зосередилися в напівпровідниковій галузі: виробники чипів, постачальники обладнання, компанії у сфері накопичувачів та відповідні кредитні ETF. Нижче наведено дані про кореляцію та масштаб падіння; причини не вказані.

ЗапитСектор чипів станом на 7 липня: зміна порівняно з закриттям понеділка, часовий діапазон та обсяг у доларах
Точний SQL-код для кожного числа
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 ticker

Teradyne (-9.63%) та Intel (-9.59%) втратили майже десяту частину своєї вартості; за ними впритул йдуть Marvell (-7.41%), KLA (-7.23%), Lam Research (-6.8%) та AMD (-6.41%). Акції виробників пам'яті та накопичувачів, які відскочили вгору в понеділок, знову продемонстрували падіння: SanDisk -7.1% у діапазоні 10.36% від максимуму до мінімуму, Western Digital -7.81%, Seagate -4.84% та MU -4.61% — при цьому MU забезпечила оборот акцій у розмірі $41.6 мільярда, що перевищує сумарний показник трьох інших виробників накопичувачів (детальний аналіз MU містить передісторію).

Два гіганти сектору залишилися поза грою: NVDA закрилася у зеленій зоні на рівні 0.67%, а Broadcom завершила торги майже без змін на рівні -0.83% — це був червоний день для всього сектору, за винятком його найбільших учасників (детальний аналіз NVDA за червень).

Падіння відбулося одночасно — раптовий обвал: TER, LRCX та MU зафіксували мінімуми сесії на рівні 10:41, 10:41 та 10:41 ET; SanDisk, Marvell, KLA, AVGO та SOXL продемонстрували ці показники протягом тих самих хвилин (панель містить кожну позначку), а SOXS, 3x інверсний semiconductor ETF, зафіксував свій сесійний максимум на рівні 10:42 — ситуація, протилежна ринку. Intel продовжувала падати ще довго після стабілізації інших акцій, досягнувши мінімуму на рівні 15:18. Кредитні інструменти відображають масштаб руху: SOXL -15.15% проти SOXS +15.87%.

Інша сторона ринку

Співвідношення два-до-одного на користь падіння все ще залишає третю частину ринку у зеленій зоні. Що зросло на фоні падіння сектору чипів:

ЗапитЩо зростало на фоні падіння чипів — та найгучніший окремий показник дня
Точний SQL-код для кожного числа
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 ticker

Енергетика та охорона здоров'я забезпечили позитивну динаміку: Exxon +3.78%, Chevron +3.47%, Johnson & Johnson +3.07%, Eli Lilly +2.75%, UnitedHealth +2.41%. Позиції двох мега-капіталізацій у цьому списку розділилися: META зросла на +2.52%, тоді як TSLA повернула більшу частину понеділкового одностороннього зростання, продемонструвавши -4.02%. Найбільший показник на ринку: Crinetics Pharmaceuticals (CRNX) закрилася на рівні +98.79% при обсязі торгів у $4.19 мільярда, що майже вдвічі перевищує попередні значення — усе зростання відбулося через нічний розрив ціни (98.91% на відкритті; під час основної сесії зміна склала лише -0.06%). Це тип переоцінки між сесіями, що зазвичай відбувається там, де проходять премаркетові торги. Дані не пояснюють причин.

Де відбувалися торги

ЗапитЛідери за обсягами у двох категоріях: топ-6 за обсягом у доларах, топ-4 за кількістю акцій (один повторюваний символ виключено до підтвердження компанії)
Точний SQL-код для кожного числа
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) DESC

MU очолив обсяги торгів у доларах на рівні $41.6 мільярда — через одну сесію після того, як поступився першого місця, він повернув лідерство. За ним слідують SPY ($28.68 мільярда) та QQQ ($26.54 мільярда), а також ще три компанії з сектору чипів — NVDA ($19.95 мільярда), SNDK ($19.73 мільярда) та INTC ($13.82 мільярда), — що доповнюють шістку лідерів. Концентрація обсягів окремих акцій відображається у показнику відносної волатильності.

На ринку акцій SOXS торгувався обсягом 566.3 мільйонів акцій — цей інверсний semiconductor ETF з плечем 3x утримує лідерство за кількістю акцій третю сесію поспіль (понеділок та четвер, згідно з попередніми даними), цього разу в день фактичного падіння його сектору. CPOP демонструє протилежний приклад: 161.3 мільйонів акцій обробили лише на $0.02 мільярда — невеликі обсяги характерні для дешевих акцій. Основа: регулярні години торгів 7 липня; один лістинг з повторюваним символом виключено до підтвердження даних про компанію — її звіти.

Динаміка сесії

ЗапитКількість акцій у 30-хвилинних інтервалах, регулярні години (мільярди)
Точний SQL-код для кожного числа
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_time

2 мільярдів акцій протягом першої половини години, мінімум у 0.64 мільярдів на 13:30 та 2.14 мільярдів на 15:30 закритті — типова «усмішка», з найбільшим обсягом на закритті.

Ринок опціонів

ЗапитОдин рядок для всього дня опціонів: обсяг, частка call, 0DTE та два контракти, що охоплюють закриття SPY
Точний SQL-код для кожного числа
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'

Обсяг торгів опціонами склав 61.13 мільйонів контрактів при 10.6 мільйонах транзакцій — обсяг на рівні понеділка — при цьому на фоні падіння ринку на колл-опціони припало 55.6% обсягу. Контракти з експірацією в той же день склали 31.2% від загального обсягу (19.08 мільйонів контрактів) — частка 0DTE у звичайному вівторку. Два найбільш активні контракти дня були зосереджені навколо закриття ринку, обидва — з експірацією в той же день та страйками SPY: колл-опціон зі страйком $749 (873438 контрактів за середньою ціною $0.647) завершився на 1.34 поза грошима, а пут-опціон зі страйком $747 (785834 контрактів за ціною $0.88) завершився на 0.66 з іншого боку. Ціна закриття SPY 747.66 опинилася між двома найбільшими ставками дня, і обидва контракти знецінилися.

The quote tape

Under every price on this page sits the quote stream — the National Best Bid and Offer, re-quoted continuously across every listed name, the hardest dataset in this warehouse to come by. It gets measured here every session, ordinary or not.

ЗапитВесь потік equity NBBO: 7 липня порівняно з оновленнями за 6 липня
Точний SQL-код для кожного числа
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'

The equity tape carried 492.76 million NBBO updates on July 7 — 25.7% more than Monday's 391.96 million. More re-quoting, not wider quoting:

ЗапитTouch через «повітряну кишеню»: медіанний спред та частота котирувань, 10:36–10:48 ET порівняно з контрольним показником вдень (по 12 хвилин кожен)
Точний SQL-код для кожного числа
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 ticker

At the morning lows the checked names re-quoted at multiples of their midday pace — MU 3.4x, SanDisk 4.1x, AMD 4.6x — and the bid-ask spread barely moved: MU's median width was 5.02 bps in the pocket against 4.81 midday, NVDA's 1.04 against 1.01, and SPY's did not move at all (0 bps change on a 0.27 bps touch). The two names that paid a real width penalty were AMD (+2.6 bps) and Intel (+0.95) — Intel the one name that kept falling after the pocket — while the leveraged pair actually tightened at the bottom (SOXL -2.59 bps, SOXS -1.49). A liquidity vacuum looks like wide quotes and silence; this was the opposite — a quote storm with the touch pinned. Crossing costs stayed name-dependent all the same: SOXS quoted 19.59 bps wide at the bottom against NVDA's 1.04.

ЗапитСередній зважений за оновленнями спред SPY: 7 липня у порівнянні з попереднім місяцем (ранг 1 = найвужчий)
Точний SQL-код для кожного числа
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
)

And the ordinary-check this section runs every session: by update-weighted average quoted spread, July 7 was SPY's tightest session of the trailing month1.809 cents, rank 1 of 21, against a month that reached 2.865 cents at its widest. A two-to-one red tape priced at the month's tightest index touch is a fact only the quote stream can settle.

ЗапитПотік опційних NBBO: 7 липня порівняно з 6 липня та з котируваннями equity тієї ж сесії
Точний SQL-код для кожного числа
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_ratio

The options quote stream is larger still, and it is the biggest dataset in this warehouse. July 7 carried 8.69 billion option NBBO updates, 17.6 times the size of the same session's entire stock-quote tape (492.76 million updates). Monday's options tape held 6.49 billion, so the option stream expanded 34% session over session, alongside the equity stream's 25.7%.

ЗапитОпційні котирування SPY 7 липня: повний корінь та near-the-money touch через «повітряну кишеню» порівняно з контрольним показником вдень
Точний SQL-код для кожного числа
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 > 0

SPY's 2026-dated contracts alone took 327.55 million of those updates in regular hours, spread across 9116 listed contracts. That is 66.5% of what the entire equity market quoted the same day, from one underlying. The same-day expiries that carry the 0DTE tape account for 13.61 million of them.

Through the twelve minutes of the morning air pocket, the near-the-money same-day contracts quoted a median $0.01 wide, precisely what they quoted in the midday control ($0.01, a delta of 0). The quote rate across that same pair ran 3x: 191.1 thousand updates at the lows against 64 thousand at lunch. The option touch did what the stock touch did. It held its width while the quoting machinery ran hot. Near-the-money means a strike within $2 of SPY's average price in the same window, and the panel prints both prices (746 in the pocket, 749.08 midday).

Rates: the curve sold off with the growth tape

ЗапитКрива Treasury: 7 липня порівняно з даними за 6 липня (тільки за наявними термінами погашення)
Точний SQL-код для кожного числа
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
)

Treasuries sold off alongside the growth tape. The 1-year rose 11 basis points to 4.06%, the 10-year 7 to 4.55%, and the 30-year 6 to 5.05% — above the five-percent line. The 2s10s spread held at 0.36 percentage points (1 basis point of change): a mostly parallel move, not a reshaping.

Календар дня

ЗапитКорпоративний календар та інформаційний потік за 7 липня в одному рядку
Точний SQL-код для кожного числа
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_articles

79 дивідендних дат екс-дивідендних, виконано 7 сплітів — 5 з них були зворотними сплітами, що створюють фіктивні тризначні «прибутки» на неадаптованій стрічці котирувань, на фоні 2 прогнозів — та з'явився 1 новий лістинг. SEC зафіксувала 2433 подань: 463 Form 4, 173 8-K. Наша стрічка новин містила 215 статей від 3 видавців; найпопулярнішою назвою була NVDA з 17 статтями, що на 4 більше за наступну назву — ту саму NVDA, яка закрилася зростанням попри червоний день у своєму секторі. Стрічка містила 0 статей про CRNX, головного лідера зростання на стрічці — це увага одного джерела, а не світових медіа.

Сесія підтверджена

ЗапитПеревірка сесії: спостережуваний діапазон хвилинних барів SPY, таблиця вихідних та наступне закриття в календарі
Точний SQL-код для кожного числа
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 липня була повноцінною сесією, а не раннім закриттям: бари SPY тривали від 04:00 до 19:59 за нью-йоркським часом, з рівно 390 барами у межах регулярного вікна, а таблиця святкових днів містить 0 рядків для цієї дати. Наступне заплановане закриття відбудеться Labor Day, 2026-09-07.

Примітки до даних

  • Обсяг у доларах є хвилинним показником — ціна закриття, помножена на обсяг, що сумується за кожну хвилинну свічку в межах регулярних торгових годин.
  • Розподіл gap-versus-grind вимірюється від першої свічки кожного активу в межах регулярної сесії (відкриття) відносно останнього ціни закриття попередньої сесії; залишок припадає на період від відкриття до закриття 7 липня.
  • Синхронні мінімуми вранці були перевірені на відповідність сусіднім свічкам на момент написання — кожен мінімум визначається за сусідніми хвилинами, а не за одним окремим значенням; жоден не був визнаний аномалією. Якщо екстремальне значення з'являлося більше ніж в одну хвилину, у панелі відображається найперша така свічка (детермінований метод вирішення ніяковостей).
  • Один актив з повторюваним символом виключено з таблиць лідерів за обсягом та з блоку новин до завершення перевірки юридичної особи; власний пост містить підтвердження.
  • Статистика quoted-spread не включає некоректні котирування (односторонні або перехресні записи NBBO), і кожна панель спреду має окрему колонку для підрахунку видалених значень. "Update-weighted average spread" — це середнє значення котируваної ширини за кожне валідне оновлення NBBO; активні моменти мають більшу вагу; це статистичний показник котирувань, а не вартість окремої угоди.
  • Котирування опціонів за 7 липня надійшли після публікації цього посту. cache_options_quotes має найбільшу затримку завантаження сховища, тому перша версія містила нульовий результат у місці, де зараз розташовані панелі котирувань опціонів. Дані надійшли, але при повторній генерації нульовий результат зберігся; ця редакція містить 8.69 мільярд оновлень сесії. Стрічка котирувань акцій була повною від початку: останнє оновлення за 7 липня зафіксоване в хвилину ET 1199, з 77.13 мільйонів оновлень у останню регулярну годину (колонки отриманих даних у панелі стрічки котирувань).
  • Ширина котирувань опціонів вимірюється near the money. Медіана за кожне оновлення по всіх перелічених контрактах за той самий день є складеним показником: контракти deep in-the-money мають ширину в доларах, контракти far out-of-the-money — у центах; також відображається, які контракти змінюють котирування протягом сесії. Порівняння "pocket-versus-midday" обмежується страйками в межах $2 від середньої ціни SPY у кожному вікні, обидві ціни представлені окремими колонками в панелі. Некоректні котирування опціонів (односторонні або перехресні) враховуються в цій панелі, а не видаляються без відома.
  • Дані по Treasury за 7 липня були завантажені з затримкою — перша версія містила дані з оголошеною затримкою; тривожний сигнал спрацював 8 липня, коли дані надійшли, і ця редакція містить фактичну криву.

Методологія

  • Період охоплює одну торгову сесію (сесія 1, підтверджена на основі спостережуваних барів та календаря вихідних днів — припущення не використовуються). Часові мітки зберігаються в UTC і конвертуються у нью-йоркський час під час виконання запитів. "Close" означає останній хвилинний бар регулярної сесії; зміна дня порівнює 7 липня з 6 липня, що є послідовними торговими сесіями.
  • Десяткові стовпці перетворюються на 64-bit float перед арифметикою коефіцієнтів; дати експірації опціонів повторно розбираються з тікера OCC (власний стовпець експірації в таблиці містить помилки). Усі панелі зчитуються одноразово під час підготовки матеріалу через обмежений доступ лише для читання. Стан сховища станом на 8 липня 2026 року.
  • Розділ quote-tape було додано в редакції від 8 липня (та сама редакція, що замінила затримку Treasury на landed print), а панелі котирувань опціонів були перезаписані після того, як з'явилися рядки NBBO для опціонів за 7 липня. Генерація є пакетним завданням за дизайном: панель котирувань опціонів SPY сканує кілька сотень мільйонів записів NBBO, тоді як підрахунок tape-size використовує суми рядків партицій дня; саме так таблиця, що містить мільярди рядків за сесію, забезпечує відповідь на запит підрахунку менш ніж за одну секунду.

Кожна панель є результатом збереженого запиту — графік, таблиця та SQL є одним об'єктом. Скопіюйте будь-який із них у термінал Strasmore для власного використання. Попередня сесія: 6 липня.