Strasmore Research
Обзор рынка Matt ConnorАвтор: Matt Connor · Обновлено 2026-07-24

Обзор рынка 8 июля 2026 года в цифрах

Рост акций производителей чипов не повлиял на индексы. NVDA растет второй день, MU лидирует, а по рынку преобладают продажи в соотношении два к одному.

Среда, 8 июля 2026 года, ознаменовалась однодневным ростом акций производителей чипов, который практически не отразился на индексах. SNDK закрылась на отметке +6.8%, AVGO +4.82%, NVDA +3.66% — резкий разворот после вторшнего обвала в секторе полупроводников — однако индексные ETF не изменились: SPY -0.31% и QQQ +0.25%. В целом по рынку преобладали продажи в соотношении два-к-одному по сравнению с предыдущим днем: 1821 растущих акций против 4260 падающих; доля растущих акций составила 29.6% после 33.8% в предыдущую сессию. Все приведенные ниже данные получены из сохраненного запроса — разверните любую панель, чтобы увидеть точный SQL-код.

Сводные показатели

Каждое изменение сравнивает последнюю минутную свечу регулярной сессии 8 июля с показателями вторника, 7 июля — последовательные торговые сессии. Строки расположены в алфавитном порядке, поэтому положение каждого ETF остается неизменным.

ЗапросSPY / QQQ / DIA / IWM — 8 июля к закрытию 7 июля, регулярные часы
Точный 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-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

Четыре ETF открылись падением и далее демонстрировали разную динамику. DIA открылся на уровне -0.97% относительно предыдущего закрытия и продолжил снижение, завершив торги на отметке -1.09%. IWM открылся на уровне -0.73% и сохранял отрицательную динамику, закрывшись на -0.92%. SPY открылся на уровне -0.6%, в течение дня демонстрировал рост, но закрылся на уровне -0.31% — восстановление после открытия было меньше, чем гэп. QQQ открылся на уровне -0.64% и вырос до +0.25% к моменту закрытия; это единственный фонд из четырех, показавший положительную динамику.

Был ли день необычным?

Изменение индекса SPY от открытия до закрытия составило 0.29%, что соответствует 16 значению из 22 предыдущих сессий. Это средний показатель для индекса, а не экстремальное значение. Изменение QQQ от закрытия к закрытию составило +0.25%, что соответствует 21 значению из 22. Это одно из самых незначительных изменений QQQ за последний месяц, что соответствует сдержанным показателям индекса.

ЗапросИзменение SPY / QQQ в ретроспективе (close-over-close, ~22 сессии)
Точный SQL-код для каждого числа
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
    )
)

Ширина рынка: преобладание падающих акций стало еще более выраженным, чем вчера

ЗапросШирина ликвидного ленты: доля растущих акций 8 июля к 7 июля, фильтр $1M
Точный SQL-код для каждого числа
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
)

Разрыв между растущими (1821) и падающими (4260) акциями привел к тому, что доля растущих составила 29.6% против 33.8% в предыдущую сессию — расчет произведен по одному и тому же фильтру ликвидности для обоих дней. Из 11439 наименований, закрывшихся в оба дня, 5284 не прошли фильтр по объему торгов в $1M и исключены из расчета. Рост, вызванный крупными компаниями, и смешанная динамика индекса на закрытии скрыли за собой еще более однородно негативный фон широкого рынка.

Сектор полупроводников показал резкий рост на повышенных объемах

Строки расположены в алфавитном порядке, поэтому позиции компаний неизменны; сравнение с вторником рассчитано на основе цен закрытия за 7 июля и 6 июля в блоке данных под таблицей.

Запрос14 акций: цена закрытия вчера, цена закрытия сегодня, дневной диапазон, объем в $, мин. High/Low ET
Точный SQL-код для каждого числа
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 из четырнадцати компаний сектора полупроводников закрылись ростом — в противовес сессии вторника, когда 12 из четырнадцати компаний закрылись падением. SNDK стала лидером сектора с ростом +6.8% при объеме торгов 16.82B долларов; за ней следовала AVGO с результатом +4.82%; также выросли остальные производители накопителей — STX +3.9%, WDC +3.45%. Трехкратный ETF SOXL вырос на +5.79%, а обратный ETF SOXS снизился на -6.22%, что соответствует однодневному восстановлению базового индекса. MU показала более скромный рост +1.11%, но обеспечила оборот в 32.02B долларов — это самый высоколиквидный актив в данном списке. NVDA закрылась ростом на +3.66% второй день подряд: это была одна из немногих компаний из 2 представленных в списке, которые закрылись в плюсе, несмотря на обвал во вторник (+0.67% в тот день).

ЗапросСтатистика: количество растущих/падающих акций 8 июля и 7 июля по тем же 14 акциям
Точный SQL-код для каждого числа
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
)

Другая сторона: защитные активы и акции роста не показали рост

ЗапросРотация: 8 акций — защитные, мега-капы, биотех
Точный SQL-код для каждого числа
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

Акции роста с большой капитализацией двигались в противоположном направлении от сектора полупроводников: TSLA -2.22%, META -2.04%, LLY -1.6%. CVX была единственной акцией в списке, закрывшейся в плюсе: цена выросла на +1.12% после утреннего гэпа. В то же время XOM открылась ростом на +1.26%, но к закрытию снизилась до -0.49%. Таким образом, торговая сессия среды разделилась на два направления: акции производителей чипов росли, а акции роста и защитные активы снижались; при этом индексы остались без изменений. (Строки расположены в алфавитном порядке: CRNX, CVX, JNJ, LLY, META, TSLA, UNH, XOM.)

Направления торговых потоков

ЗапросТоп-6 по объему в $, топ-4 по количеству акций — 8 июля, регулярные часы
Точный SQL-код для каждого числа
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 обеспечила оборот в 32.02B долларов — это самый ликвидный актив и единственный показатель выше отметки в $30 млрд. Далее следуют SPY (26.49B), NVDA (24.17B) и QQQ (20.9B); также в списке лидеров по объему торгов находятся SNDK с показателем 16.82B и TSLA с 11.71B. В сегменте акций ситуация иная: трехкратный обратный ETF на полупроводники SOXS показал объем торгов в 636.5M акций при средней цене $4.67 — такая динамика характерна для недорогих трехкратных производных инструментов в дни активных торгов акциями производителей чипов.

Структура сессии

ЗапросКол-во акций в 30-минутных интервалах ET, регулярные часы, % от макс. объема за день
Точный 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-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
GROUP BY et_time
ORDER BY et_time

Объем торгов имел классическую U-образную форму: объем в первый период составил 89.9% от максимального значения за день и снижался в течение утра, достигнув минимума в 34.1% в период с 13:00 до 13:30 по времени ET. Последние полчаса торгов (15:30 ET) стали периодом максимального объема в размере 2.2B акций, что превышает объем в начале сессии в 1.98B акций. Это соответствует стандартному паттерну для обычной торговой сессии.

Лента опционов

ЗапросЛента опционов: сделки, контракты, % колл, доля 0DTE к вторнику, топ-контракт
Точный 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) = '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'

Консолидированная лента опционов зафиксировала 10.44M сделок и 63.26M контрактов. Это выше показателя вторника в 61.13M, рассчитанного по той же ленте за аналогичный период вторника. Колл-опционы составили 55.4% от общего объема, что указывает на умеренный перекос в сторону коллов. Контракты 0DTE (с экспирацией в тот же день, 260708) составили 38.7% объема контрактов, что выше показателя вторника в 31.2%. Самым активным отдельным контрактом был SPY 745C677981 контрактов при средней цене $0.875; экспирация в тот же день, цена практически на уровне исполнения (at the money) относительно цены закрытия SPY в $745.31.

Лента котировок

ЗапросОбновления NBBO по акциям: 8 июля к 7 июля, по тикерам (млн)
Точный SQL-код для каждого числа
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'

8 июля лента котировок зафиксировала 530.55M обновлений NBBO — это на +7.7% больше, чем в предыдущую сессию. Лидером по количеству обновлений стал QQQ с показателем 6.53M, опередив SPY с его 4.93M. Также в число наиболее активных вошли NVDA (1.8M), TSLA (0.72M) и MU (0.6M).

ЗапросSPY / QQQ / NVDA / TSLA / MU / SNDK / AVGO: медианный спред NBBO в б.п. (RTH)
Точный SQL-код для каждого числа
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

Среди семи указанных тикеров медианный спред котировок SPY в период RTH составил 0.27 bps, что является минимальным значением для наиболее ликвидного ETF в США. QQQ торговался со спредом 0.71 bps, NVDA — с 1.52 bps. Наибольшие значения спреда зафиксированы у менее ликвидных активов: MU составил 5.66 bps, а SNDK12.21 bps.

ЗапросСредний спред SPY в RTH в контексте месяца
Точный SQL-код для каждого числа
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
)

Средний спред котировок SPY в период RTH составил 2.202 центов. Этот показатель вошел в 11 из 22 предыдущих сессий. Это средний результат для данного периода; за последний месяц диапазон спредов варьировался от 1.809 центов (минимальный) до 2.865 центов (максимальный). Резких изменений ликвидности не наблюдалось — для спредов SPY это обычная сессия.

ЗапросЛента NBBO опционов: общее число обновлений к ленте акций + срез SPY
Точный SQL-код для каждого числа
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

Лента опционов зафиксировала 9.62 миллиардов обновлений NBBO, что в 18.1 раз превышает количество обновлений в ленте котировок акций. Только на опционы SPY в ходе регулярных торгов пришлось 422 миллионов обновлений.

Ставки: кривая практически не изменилась

ЗапросДоходность казначейских облигаций: 8 июля к 7 июля — по срокам + 2s10s
Точный SQL-код для каждого числа
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
)

Пятилетние облигации показали наибольшую динамику за сессию: рост составил +4 bp; двухлетние облигации закрылись ростом на +2 bp. Другие сроки погашения изменились менее чем на 2 bp в любую сторону. В результате спред 2s10s составил 0.35% (изменение за сессию — -1 bp), оставаясь в пределах недавнего диапазона. Слабая динамика ставок совпала со слабым движением индекса.

Календарь событий дня

ЗапросДивиденды, сплиты, отчеты SEC, новости
Точный SQL-код для каждого числа
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

В этот день было мало событий: 81 реестров на получение дивидендов, 1 исполненных дроблений акций и 3722 отчетов SEC (включая 775 сделок инсайдеров по форме 4, 527 проспектов 424B2 и 163 текущих отчетов 8-K). В новостном покрытии было 192 статей от 3 издателей, при этом MU вошел в число наиболее упоминаемых тикеров в 17 статьях. Среди корпоративных событий известных компаний в этот день не выделялось ничего значимого — основным сюжетом рынка стал сектор полупроводников.

Итоги сессии

ЗапросПроверка сессии: первый/последний бар SPY ET, кол-во регулярных баров, праздники, дата закрытия
Точный 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-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'

Торговая сессия включала полный период расширенных часов — первая свеча SPY в 04:00 ET, последняя — в 19:59 ET. Было зафиксировано 390 минутных свечей в основную торговую сессию и 1 свечей в период расширенных часов (половина торгового дня отсутствует; в таблице праздников на эту дату записи нет). Следующее плановое закрытие рынка состоится Labor Day в 2026-09-07.

Data notes

All timestamps are stored in UTC; regular hours on July 8, 2026 are filtered as sip_timestamp / window_start between 2026-07-08 13:30:00 and 2026-07-08 20:00:00, which corresponds to 9:30 am–4:00 pm New York time. Decimal prices are cast to Float64 before any division. Named per-ticker panels (scoreboard, chip complex, rotation) are ordered alphabetically by ticker so each prose reference points at a fixed row; leaderboards (volume, quote snapshot) are value-ordered, and every positional claim they make is encoded as a sanity bound on that position. Every Tuesday comparison on this page — breadth share, chip green/red counts, options contracts and 0DTE share, quote-update counts — is computed fresh from July 7 (and July 6 where a prior close is needed) in the same query block, never quoted from an earlier post.

Full data notes

The breadth panel counts names with a regular-hours close on both sessions and at least $1M traded on the measured day; the dropped count (5284 of 11439) makes the excluded tail visible. The chip complex's day_low/day_high timing columns use the argMin/argMaxIf(..., (value, timestamp)) pattern so ties resolve deterministically. The volume-smile bucket labels are ET (%H:%i), computed with toTimeZone in the SELECT list only. The options-tape panel detects same-day expiry with the OCC-ticker substring match (substring(ticker, length(ticker) - 14, 6)) rather than options_trades.expiration_date (that column is broken, per the standing preflight note). Symbols in KNOWN_AMBIGUOUS_TICKERS are excluded in the volume-leaders and news-attention SQL so "most X" callouts fall through to verifiable names. The top-news ticker uses a deterministic tie-break (argMax(t, (n, t))); top_news_lead_over_next = 0 marks a tie, which is why the prose says "among the most-mentioned". The treasury panel joins two daily snapshot rows; a missing snapshot for either date yields zero rows and the row_count bound holds the post. The stocks-quote and options-quote counts are whole-tape scans over day partitions; named-ticker counts are reported in millions to match their column units. Spread medians use quantileExact (deterministic); the trailing spread panel is an average (avgIf), labeled as such.

Методология

  • Источник рыночных данных: консолидированная лента — delayed_stocks_minute_aggs для цен и объемов индексов и отдельных инструментов, cache_stocks_quotes для данных NBBO и котируемых спредов, cache_options_quotes и options_trades для ленты опционов.
  • Обработка часовых поясов: все сохраненные временные метки указаны в UTC; метки времени ET вычисляются с помощью toTimeZone(..., 'America/New_York') только в списках SELECT; в предложениях WHERE используются необработанные литералы UTC.
  • Окно регулярных торгов: 13:30–20:00 UTC; время проверяется по фактическим минутным барам SPY (панель верификации сессии), а не с помощью календарных вычислений.
  • Определение спреда: (ask - bid) / midpoint × 10,000 в базисных пунктах на основе действительных двусторонних котировок для снимка данных; панель за прошедший месяц показывает среднюю ширину в центах и обозначена как средняя.
  • Сравнение с предыдущей сессией: вычисляется внутри запроса, начиная с 7 июля (и с 6 июля для сравнения вторника с предыдущим днем) — данные не переносятся из предыдущих публикаций.
  • Детерминированные агрегаты: quantileExact, argMin/argMax с ключом в виде кортежа и детерминированный метод разрешения конфликтов на основе новостей для стабильной регенерации данных.
  • Дата актуальности хранилища: 10 июля 2026 года (T+2 для данного периода); ленты обеих сессий полностью загружены на этом уровне.

Перекрестные ссылки: обзор за 7 июля 2026 года, затраты на торговлю опционами, основы бид-аск спреда, опционы 0DTE и относительный объем.