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

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

Падение полупроводников не затронуло индекс. NVDA в плюсе, на рынке преобладают падающие акции в соотношении два к одному, а спред SPY минимален за месяц.

Во вторник, 7 июля 2026 года, рынок полностью нивелировал рост, наблюдавшийся при открытии в понедельник, и даже превысил его: индекс QQQ закрылся на отметке -1.82%, что перекрыло понедельничный рост на фоне показателя DIA -0.29%. На рынке преобладали падающие котировки в соотношении два-к-одному: 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, трехкратный обратный 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 млн акций. Данный трехкратный обратный ETF на полупроводники удерживает лидерство по количеству сделок третью сессию подряд (понедельник и четверг были предыдущими значениями), при этом сегодня сектор показал падение. 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 — типичная «улыбка» с максимальным объемом в конце торгов.

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

ЗапросДанные по опционам за день: объем, доля колл-опционов, 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.

ЗапросПоток 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:

ЗапросСпред и частота котировок: медиана спреда и частота котировок, 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 июля и против котировок акций за тот же сеанс
Точный 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 июля: полный поток и показатели ATM в период волатильности против контрольного периода
Точный 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).

Ставки: кривая доходности снизилась на фоне роста рисков роста экономики

ЗапросКривая доходности казначейских облигаций: 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
)

Доходность казначейских облигаций США снизилась вместе с рынком акций, ориентированным на рост. Доходность 1-летних облигаций выросла на 11 базисных пунктов до 4.06%, 10-летних — на 7 до 4.55%, а 30-летних — на 6 до 5.05%, превысив отметку в пять процентов. Спред 2s10s зафиксирован на уровне 0.36 процентных пунктов (изменение на 1 базисных пунктов): движение было преимущественно параллельным, а не структурным.

Календарь прошедшего дня

ЗапросКорпоративный календарь и поток новостей на 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 формы 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.

Примечания к данным

  • Объем в долларах — это минутный показатель — произведение цены закрытия на объем, суммированное по каждой минутной свече в рамках регулярных торговых часов.
  • Разделение «гэп против тренда» рассчитывается как разница между первой свечой регулярной сессии (открытием) и ценой закрытия предыдущей сессии; остальная часть объема приходится на торговлю внутри дня 7 июля.
  • Синхронные утренние минимумы были перепроверены по соседним свечам на момент написания — каждый минимум подтверждается соседними минутными значениями, а не одной котировкой; ни один из них не был признан аномалией. Если экстремальное значение фиксировалось более чем в одну минуту, в панели отображается самая ранняя такая свеча (детерминированный метод разрешения равенства).
  • Один тикер с дублирующимся символом исключен из рейтингов по объему и новостной сводки до подтверждения личности организации; подтверждающие данные содержатся в отдельном посте.
  • Статистика спреда котировок не включает недействительные котировки (односторонние или перекрестные записи NBBO); в каждой панели спреда количество исключенных значений выводится в отдельном столбце. «Обновленный средневзвешенный спред» — это средняя ширина котировок по всем валидным обновлениям NBBO; периоды высокой активности имеют больший вес; это статистический показатель котировок, а не стоимость сделки.
  • Котировки опционов за 7 июля поступили после публикации этого материала. cache_options_quotes имеет самую большую задержку загрузки в хранилище, поэтому в первой версии вместо панелей котировок опционов отображался пустой нулевой ряд. Данные поступили, но при повторной генерации нулевой ряд не сформировался; эта редакция включает 8.69 миллиардов обновлений сессии. Лента котировок акций была полной с самого начала: последнее обновление за 7 июля зафиксировано в 1199 минут по восточному времени, при этом в последний час регулярных торгов было 77.13 миллионов обновлений (столбцы получения данных в панели ленты котировок).
  • Ширина спреда опционов измеряется вблизи денег (at-the-money). Медиана по каждому котируемому контракту за тот же день является композитным показателем: глубоко «в деньгах» контракты имеют спред в долларах, далеко «вне денег» — в центах; также учитывается, какие контракты меняют котировки в течение сессии. Сравнение «в начале дня против середины дня» ограничено страйками в пределах $2 от средней цены SPY в каждом временном окне; оба значения представлены в столбцах панели. Недействительные котировки опционов (односторонние или перекрестные) учитываются в этой панели, а не просто удаляются.
  • Данные по казначейским облигациям за 7 июля поступили с задержкой — в первой версии была указана задержка; триггер сработал 8 июля, когда данные поступили; эта редакция содержит фактическую кривую.

Методология

  • Период представляет собой одну торговую сессию (сессия 1, подтвержденная по наблюдаемым барам и календарю праздников — предположения не допускаются). Временные метки хранятся в формате UTC и конвертируются в нью-йоркское время внутри запросов. «Close» означает последнюю минутную свечу регулярной сессии; сравнение за день проводится путем сопоставления данных за 7 июля и 6 июля, то есть последовательных торговых сессий.
  • Десятичные столбцы преобразуются в 64-битные числа с плавающей запятой перед выполнением арифметических операций с коэффициентами; даты экспирации опционов повторно извлекаются из тикера OCC (столбец экспирации в самой таблице содержит ошибки). Все панели считываются один раз в момент подготовки данных через защищенный канал только для чтения. Состояние хранилища на 8 июля 2026 года.
  • Раздел котировок (quote-tape) был добавлен в редакции от 8 июля (в той же редакции, где вместо задержки казначейских облигаций была использована цена исполнения). Панели котировок опционов были перезаписаны после поступления строк NBBO для опционов за 7 июля. Процесс генерации является пакетным: панель котировок опционов SPY сканирует несколько сотен миллионов записей NBBO, в то время как подсчет объема ленты (tape-size) считывает общие суммы строк разделов за день. Именно так таблица, содержащая миллиарды строк за сессию, отвечает на запрос о количестве менее чем за одну секунду.

Каждая панель является результатом сохраненного запроса — график, таблица и SQL представляют собой единый объект. Вы можете скопировать любой из них в терминал Strasmore. Предыдущая сессия: 6 июля.