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

Підсумок ринку 2 липня 2026 року

Ротація активів перед вихідними: позитивна широта ринку на фоні падіння Nasdaq. Технологічний сектор та акції пам'яті демонструють зниження.

Четвер, 2 липня 2026 року — остання торгова сесія перед вихідним на День Незалежності — стала днем ротації, що супроводжувався заголовками про розпродаж. QQQ продемонстрував -1.71%, тоді як DIA зріс на 1.04%, а ринкова широта була ПОЗИТИВНОЮ: 3398 ліквідних активів зросли проти 2758, 54.6% усього обсягу торгів було в «зеленій» зоні, тоді як індекс зростання впав. Вісім із одинадцяти секторних фондів закрилися зростанням; продажі зосередилися в технологічному секторі та комплексі акцій пам'яті, що почав падати напередодні.

Результати торгів

ЗапитSPY / QQQ / DIA / IWM — 2 липня порівняно з закриттям 1 липня, регулярні години
Точний 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-01 13:30:00' AND window_start < '2026-07-01 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-02 13:30:00' AND window_start < '2026-07-02 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_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

Основний підсумок дня: DIA на рівні 1.04% проти QQQ на рівні -1.71% — різниця між промисловими акціями та акціями зростання становить майже три пункти денної прибутковості. SPY продемонстрував середнє значення на рівні -0.12%; IWM закрився на рівні -0.59%.

Was the day unusual?

Two lenses in one panel: SPY's open-to-close move and QQQ's close-over-close move, each ranked against the trailing month by absolute size (rank 1 = biggest).

ЗапитРейтинг SPY та QQQ щодо попереднього місяця сесій (ранг 1 = найбільше абсолютне зміщення)
Точний SQL-код для кожного числа
WITH per_day AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct,
           argMax(toFloat64(close), window_start) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ')
      AND window_start >= toDateTime('2026-06-02 00:00:00')
      AND window_start < toDateTime('2026-07-03 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY ticker, d
),
with_prev AS (
    SELECT ticker, d, oc_pct,
           lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) AS prev_close,
           (rth_close / lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct
    FROM per_day
)
SELECT
    round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02'))),
               groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-02'))) + 1 AS spy_abs_move_rank,
    countIf(ticker = 'SPY') AS spy_sessions_compared,
    round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02')), 2) AS qqq_close_over_close_pct,
    arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02'))),
               groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-02') AND isFinite(cc_pct) AND prev_close > 0)) + 1 AS qqq_abs_move_rank,
    countIf(ticker = 'QQQ' AND isFinite(cc_pct) AND prev_close > 0) AS qqq_sessions_compared,
    toString(minIf(d, ticker = 'SPY')) AS first_session
FROM with_prev

At the index level, no. SPY's -0.35% open-to-close ranks 15 of 22 trailing sessions — the bottom half. QQQ was louder but still not extreme: its -1.71% close-over-close ranks 9 of 21 sessions with a defined prior close, back to 2026-06-02 — a mid-pack bad day for the growth index. The single-name tape is where July 2 was loud.

Ширина ринку: зелені показники, червоний індекс зростання

ЗапитАкції, що зростають, проти акцій, що падають, серед тикерів з обсягом торгів ≥ $1M станом на 2 липня
Точний SQL-код для кожного числа
WITH per_ticker AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') AS day_dollar_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
       OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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,
    reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close > prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS advancers_fmt,
    reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close < prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS decliners_fmt,
    reverse(arrayStringConcat(extractAll(reverse(toString(count() - countIf(day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS dropped_by_liquidity_filter_fmt,
    reverse(arrayStringConcat(extractAll(reverse(toString(count())), '[0-9]{1,3}'), ',')) AS tickers_traded_both_sessions_fmt
FROM per_ticker
WHERE prior_close > 0 AND day_close > 0

3,398 зросли, 2,758 впали, 63 без змін — 54.6% активів з високою ліквідністю зросли, тоді як QQQ впав. Індекси з капіталізаційною вагою та індекси рівної ваги демонстрували різні результати; подібні дні є причиною розбіжностей між ними. Фільтр виключає 5,317 з 11,536 активів з обсягом торгів за дві сесії менше ніж один мільйон доларів.

Посекторний аналіз: де зосередилася позитивна динаміка

Широта ринку вказує на кількість активів, але не на їхній тип. Один із одинадцяти секторних фондів SPDR проаналізував сесію за галузями; розрив між найкращим і найгіршим показником відображає денну дисперсію одним числом.

ЗапитОдинадцять секторних ETF від SPDR — закриття 2 липня порівняно з закриттям 1 липня, регулярні години
Точний SQL-код для кожного числа
WITH per_etf AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
      AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
        OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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_close / prior_close - 1) * 100 - min((day_close / prior_close - 1) * 100) OVER (), 2) AS pts_above_worst_sector,
    day_dollar_bn
FROM per_etf
ORDER BY ticker

Оздоровлення (XLV) продемонструвало найкращий результат на рівні 2.63%, далі йдуть комунальні послуги 2.23%, споживчі товари першої необхідності 2% та матеріали 1.94%. Технологічний сектор (XLK) завершив збудований цикл останнім на позначці -2.71%, ставши єдиним сектором, що впав більш ніж на один пункт; споживчі товари непершої необхідності (-0.81%) та комунікаційні послуги (-0.13%) також показали від'ємну динаміку, тоді як решта вісім фондів зросли. Дисперсія від найкращого до найгіршого показника: 5.34 відсоткових пунктів. Розрив між зростанням DIA та падінням QQQ спостерігався по всьому ринку, а не лише серед чотирьох мега-капіталізацій — саме тому зростання лінії індексу кількісних показників при падінні Nasdaq не є суперечністю.

Головна подія дня: розпродаж акцій пам'яті, другий день

Комплекс факторів, що спричинив падіння у середу, у четвер призвів до ще сильнішого обвалу — мова про масштаби та синхронність руху, а не про причини.

ЗапитАкції пам'яті та накопичувачів: зміна порівняно з закриттям середи, часовий діапазон та обсяг у доларах
Точний SQL-код для кожного числа
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
      AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
        OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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, 2) AS day_high,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    round(day_low, 2) AS day_low,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    day_dollar_bn
FROM per_name
ORDER BY ticker

SanDisk продемонструвала -14.32%, Seagate -10.38%, Western Digital -9.92%, MU -5.57% — при обороті MU у $51.4 billion, що приблизно в півтора раза перевищує оборот SPY. MU та SanDisk досягли мінімумів наприкінці торгової сесії (15:26, 15:26 ET), Seagate та Western Digital — раніше (14:23, 13:59). Контекст: середа та детальний аналіз MU.

Друга частина ротації у компаніях з найбільшою капіталізацією:

ЗапитРотація megacap: зміна порівняно з закриттям середи, часовий діапазон та обсяг у доларах
Точний SQL-код для кожного числа
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA')
      AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
        OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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, 2) AS day_high,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    round(day_low, 2) AS day_low,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    day_dollar_bn
FROM per_name
ORDER BY ticker

AAPL зросла на 4.75% без жодних відхитлень — мінімум о 09:30 ET, максимум о 15:57, за три хвилини до закриття, — тоді як TSLA продемонструвала протилежну динаміку на -7.65%. MSFT додала 1.41%; NVDA закрилася на рівні -1.55%. Один і той самий індекс, протилежні дні.

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

ЗапитЛідери за обсягами у двох розрізах: топ-6 за обсягом у доларах, топ-4 за кількістю акцій (один повторюваний тикер виключено до підтвердження)
Точний SQL-код для кожного числа
SELECT ticker, leaderboard, dollar_volume_bn, if(dollar_volume_bn < 1, dollar_volume_m, NULL) AS dollar_value_m, 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(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
        round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
        round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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 склав $51.4 мільярда, що стало лідером четверту торгову сесію поспіль (понеділок, вівторок, середа) проти $32.7 мільярда у SPY. SanDisk з обсягом $26.57 мільярда став другим представником сектору пам'яті у четівці лідерів. SOXS — ETF з трьократним зворотним плечем на напівпровідники — очолив список за кількістю акцій з показником 748.2 мільйонів: дешеві акції домінують у кількісному обліку, дорогі — у грошовому, а відносна частка обсягу порівнює показник із середнім значенням самої компанії. База: 2 липня, основні торгові години, один лістинг із повторним символом виключено (отримання).

ЗапитКількість акцій у 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-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY et_time
ORDER BY et_time

2.13 мільярда акцій протягом першої половини години, мінімум у 14:30 на рівні 0.81 мільярда, та 2.3 мільярда на закритті напередодні вихідних — останній сегмент став найбільшим за обсягом, оскільки закривальний аукціон об'єднує невиконані ордери в один ціновий показник.

Лента опціонів: зміщені тижневі експірації

ЗапитОдин рядок для всього дня опціонів: обсяг, експірація в той же день, тиждень з урахуванням вихідного та липень
Точний SQL-код для кожного числа
WITH
    (
        SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
                any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
                sum(size), count(), round(avg(toFloat64(price)), 3))
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
        GROUP BY ticker
        ORDER BY sum(size) DESC
        LIMIT 1
    ) AS top_contract,
    (
        SELECT round(toFloat64(argMax(close, window_start)), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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) = '260702') / sum(size), 1) AS same_day_expiry_pct,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702')) / 1e6, 2) AS thu_jul2_expiry_contracts_m,
    countIf(substring(ticker, length(ticker) - 14, 6) = '260703') AS fri_jul3_expiry_prints,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710')) / 1e6, 2) AS jul10_weekly_contracts_m,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717')) / 1e6, 2) AS jul17_monthly_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,
    top_contract.1 AS top_contract_underlying,
    top_contract.2 AS top_contract_strike,
    top_contract.3 AS top_contract_type,
    top_contract.4 AS top_contract_expiry,
    top_contract.5 AS top_contract_volume,
    reverse(arrayStringConcat(extractAll(reverse(toString(assumeNotNull(top_contract.5))), '[0-9]{1,3}'), ',')) AS top_contract_volume_fmt,
    round(top_contract.7, 3) AS top_contract_avg_price,
    round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close,
    round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'

Обсяг торгів опціонами склав 80.96 мільйонів контрактів за 13.15 мільйонів транзакцій, при цьому 47.4% цього обсягу експірувалося того ж четверга. Контракти з датою експірації 3 липня протягом дня не реєструвалися (0 транзакцій), тому четвер припав одночасно на денну та зміщену тижневу експірацію. Найактивнішим контрактом був SPY $740 put з датою експірації в той же день — 540,403 контрактів із середньою премією $0.499, при закритті SPY на 4.8 доларів вище ціни виконання: поза грошима, а пут-опціон на ринку, де вівторок та середа були з колл-опціонами. Колл-опціони все ще складали 58.4% обсягу; наступний тижневий контракт охопив 9.64 мільйонів контрактів, а липневий місячний — 8.82 мільйонів (механіка експірації).

The quote tape: what it cost to trade

Prices say what happened; quotes say what it cost. The bid-ask spread is the toll on every round trip, in basis points of the mid-price (a basis point is a hundredth of a percent). We measure it every session, ordinary or not — which is what makes "spreads blew out" a falsifiable claim.

ЗапитКількість оновлень NBBO для акцій: 2 липня порівняно з 1 липня, з оновленнями за тикерами (мільярди)
Точний SQL-код для кожного числа
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-01')) / 1e6, 2) AS jul1_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / countIf(toDate(sip_timestamp) = toDate('2026-07-01')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'SPY') / 1e6, 2) AS jul2_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'QQQ') / 1e6, 2) AS jul2_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'MU') / 1e6, 2) AS jul2_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'

The national best bid and offer — the top of the consolidated book — was rewritten 597.22 million times on July 2 against 449.15 million on July 1: a 33% jump into the closure. QQQ took 7.56 million, above SPY's 5.42 million; MU 1.01 million.

ЗапитМедіанний спред котирувань у базисних пунктах, регулярні години — індексні ETF, megacaps та акції пам'яті
Точний SQL-код для кожного числа
SELECT
    ticker,
    round(med_bps, 2) AS median_spread_bps,
    round(med_dollars * 100, 1) AS median_spread_cents,
    round(med_bps / min(med_bps) OVER (), 1) AS times_the_spy_spread,
    round(quote_updates / 1e6, 2) AS rth_updates_m,
    invalid_quotes_dropped
FROM (
    SELECT
        ticker,
        quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000,
                             toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_bps,
        quantileExactIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price),
                             toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_dollars,
        count() AS quote_updates,
        countIf(NOT (toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price))) AS invalid_quotes_dropped
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'TSLA', 'NVDA', 'MU', 'SNDK', 'WDC')
      AND sip_timestamp >= '2026-07-02 13:30:00' AND sip_timestamp < '2026-07-02 20:00:00'
    GROUP BY ticker
)
ORDER BY median_spread_bps ASC

SPY quoted a median 0.27 basis points wide: about 2 cents on a $744.8 ETF. QQQ came in at 0.83 bps, NVDA 1.03. The names doing the falling were the expensive ones to trade: MU 5.52 bps, SanDisk 10.4, Western Digital 10.7940x SPY's spread. Crossing a basket of memory names cost multiples of crossing the index, before any price impact. Invalid quotes (one-sided, crossed) are counted per name, not hidden.

ЗапитЧи була ліквідність нетиповою? Медіанний спред SPY у регулярні години порівняно з попереднім місяцем сесій
Точний SQL-код для кожного числа
WITH per_day AS (
    SELECT toDate(sip_timestamp) AS d,
           quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000) AS med_bps
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'SPY'
      AND sip_timestamp >= '2026-06-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
      AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
      AND toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)
    GROUP BY d
)
SELECT
    round(anyIf(med_bps, d = toDate('2026-07-02')), 3) AS jul2_median_spread_bps,
    round(quantileExact(0.5)(med_bps), 3) AS trailing_median_bps,
    round(anyIf(med_bps, d = toDate('2026-07-02')) - quantileExact(0.5)(med_bps), 3) AS jul2_minus_trailing_bps,
    arrayCount(x -> x > anyIf(med_bps, d = toDate('2026-07-02')), groupArrayIf(med_bps, d != toDate('2026-07-02'))) + 1 AS wider_rank,
    count() AS sessions_compared,
    round(max(med_bps), 3) AS widest_session_bps
FROM per_day

An ordinary day for liquidity, and that is the finding: SPY's median spread of 0.27 bps sits 0 bps from the trailing month's median (0.27 bps), ranking 11 of 22 sessions by wideness — nowhere near the month's widest at 0.409 bps. A concentrated rout under a green tape did not stress the plumbing.

Ставки: дані за 2 липня оновлено

ЗапитЗвіт: дані Treasury за 2 липня зафіксовані
Точний SQL-код для кожного числа
SELECT
    (SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS jul2_rows,
    (SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS jul1_rows

Дані Treasury зазвичай відстають від ринку на один-два дні: на момент першої публікації за закриття 2 липня дані були відсутні, і ця сторінка вказувала на це замість припущень. Зараз дані доступні — 1 рядків за 2 липня, 1 за 1 липня — тому наведена нижче панель відображає криву за цей сеанс.

ЗапитКрива сесії: 2 липня порівняно з 1 липня (тільки доступні терміни погашення)
Точний SQL-код для кожного числа
SELECT
    t.1 AS curve_point,
    round(t.2, 2) AS jul2_yield_pct,
    round((t.2 - t.3) * 100) AS one_day_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-02') AS d,
         (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS p
)

На момент закриття дохідність 10-річних Treasury становила 4.49%, а спред 2s10s склав 0.35 пунктів.

Календар дня

ЗапитКорпоративний календар та інформаційний потік за 2 липня одним рядком (включаючи вісім сплітів)
Точний SQL-код для кожного числа
WITH
    (
        SELECT (count(), uniqExact(publisher))
        FROM global_markets.stocks_news
        WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-02'
    ) AS news,
    (
        SELECT (argMax(t, n), max(n))
        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-02'
            )
            WHERE t != 'SPCX'
            GROUP BY t
        )
    ) AS top_news,
    (
        SELECT (count(), countIf(split_to > split_from), countIf(split_to < split_from),
                arrayStringConcat(groupArray(concat(ticker, ' ', toString(split_to), '-for-', toString(split_from))), '; '))
        FROM global_markets.stocks_splits
        WHERE execution_date = '2026-07-02' AND ticker NOT IN ('SPCX')
    ) AS splits
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-02') AS ex_dividend_records,
    splits.1 AS splits_executed,
    splits.2 AS forward_splits,
    splits.3 AS reverse_splits,
    splits.4 AS split_records,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02') AS ipos_listed,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS sec_filings,
    (SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS insider_form4_filings,
    (SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS filings_8k,
    (SELECT arrayStringConcat(groupArray(concat(ticker, ' — ', issuer_name)), '; ') FROM (
        SELECT ticker, issuer_name FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02' ORDER BY ticker
    )) AS ipo_names,
    news.1 AS news_articles,
    news.2 AS news_publishers,
    top_news.1 AS most_covered_ticker,
    top_news.2 AS most_covered_articles,
    (SELECT any(split_from) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_from,
    (SELECT any(split_to) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_to,
    (SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'CRWD' AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00') AS crwd_prev_close,
    (SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_day_close,
    (SELECT round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 2) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_dollar_m,
    (SELECT count() FROM (
        SELECT ticker FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-02')
          AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
        GROUP BY ticker
    )) AS split_names_with_bars

319 дивідендних дат було без права на дивіденд, з'явилося 2 нових лістингів (MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II), а індекс SEC зафіксував 5200 подань перед вихідними — 2109 Form 4s, 258 8-Ks. Стрічка новин містила 201 статей від 3 видавців (NVDA найбільш охоплених, 18 з них).

Спліти можуть ввести в оману тих, хто аналізує лише ціни закриття. CRWD здійснила 4-на-1 прямий спліт, тому нескоригована стрічка показує $772.45 у середу та $193.67 у четвер — це фіктивне падіння, яке насправді означає чотири нові акції замість однієї старої. Це не єдиний випадок: було проведено 8 сплітів, 5 прямих та 3 зворотних (вони перелічені в колонці split_records), а зворотний спліт створює протилежний ефект — ціна різко зростає за ніч. Лише 2 цих назв торгувалися в нашій стрічці; оборот CRWD у розмірі $1473.51 мільйонів є достатньо великим, щоб спотворити екран, тому кожен наш фільтр активів, що змінюють ціну, виключає цю позицію.

У планах

Календарні факти, а не прогнози — що показують дані на наступні сесії.

ЗапитПісля вихідного: наступна сесія, дати ex-dividend та сплітів, наступне заплановане закриття та затримка short-interest
Точний SQL-код для кожного числа
SELECT
    (SELECT count() FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS jul6_spy_regular_bars,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS exdiv_records_jul6,
    (SELECT arrayStringConcat(groupArray(ticker), ', ') FROM global_markets.stocks_dividends
     WHERE ex_dividend_date = '2026-07-06'
       AND ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'XOM', 'KO', 'PG', 'WMT', 'CVX', 'HD')) AS household_exdivs_jul6,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_jul6,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02') AS next_scheduled_closure,
    (SELECT any(name) FROM global_markets.stocks_market_holidays
     WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_name,
    (SELECT any(status) FROM global_markets.stocks_market_holidays
     WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_status,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest
     WHERE settlement_date <= '2026-07-02') AS latest_si_settlement,
    (SELECT dateDiff('day', max(settlement_date), toDate('2026-07-02')) FROM global_markets.stocks_short_interest
     WHERE settlement_date <= '2026-07-02') AS si_settlement_age_days

Понеділок 6 липня відкрився повною сесією з 390-баром, що підтверджується власними барами. Було зафіксовано 118 рекордів після виплати дивідендів — один відомий бренд серед десяти об'єктів нашого аналізу (JPM) — та 15 виконаних сплітів. Наступне заплановане закриття: Labor Day, 2026-09-07 (closed). Дані про короткі позиції не новина, як і завжди — останній розрахунок зафіксовано 2026-06-30, 2 днів тому, а публікація зазвичай відстає від розрахунку приблизно на два тижні (чому).

Повна сесія та не відбулася п'ятниця

ЗапитПеревірка сесії: спостережуваний часовий діапазон хвилинних барів SPY та закриття 3 липня
Точний 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-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= '2026-07-03 00:00:00' AND window_start < '2026-07-04 00:00:00') AS jul3_spy_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-02 00:00:00' AND window_start < '2026-07-03 00:00:00'

2 липня була повноцінною сесією, а не раннім закриттям: бари SPY охоплюють період з 04:00 по 19:59 за нью-йоркським часом (включаючи премаркет та післяторговельний період), причому було зафіксовано рівно 390 барів у межах регулярної торгової сесії. П'ятниця 3 липня продемонструвала 0 барів SPY — повне закриття, оскільки День Незалежності, 4 липня, припав на суботу. Підсумки чотирьох сесій тижня: огляд тижня.

FAQ

Чому Dow виріс, тоді як Nasdaq впав 2 липня 2026 року?

Ці два індекси складаються з різних компаній: DIA закрився на рівні 1.04%, QQQ — на -1.71%. Структура секторів має такий самий розподіл: на перших позиціях охорона здоров'я, комунальні послуги та споживчі товари, а технологічний сектор знаходиться в кінці на рівні -2.71%, що становить розрив у 5.34 пунктів між найкращими та найгіршими показниками.

Чи був відкритий фондовий ринок у п'ятницю тижня Дня Незалежності?

Ні. День Незалежності припав на суботу, тому біржі закрилися на весь день у п'ятницю наступного дня після цієї сесії: наші дані показують 0 хвилинних барів SPY для цього дня.

Як фьючерсний дроблення акцій впливає на ціну за одну акцію?

Це множить кількість акцій на чотири і ділить ціну на чотири; вартість позиції залишається незмінною. CRWD, 2 липня: нескоригована ціна закриття у середу становила $772.45, у четвер — $193.67 — це хибне зниження в будь-якому скринері, який не враховує дроблення.

Якими були спреди bid-ask 2 липня 2026 року?

Медіанний котируваний спред SPY склав 0.27 базисних пунктів від середньої ціни в основні години — це 11 від 22 попередніх сесій за показником ширини, що є звичайним днем. Спреди окремих акцій були ширшими: MU — 5.52 bps, WDC — 10.79.

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

  • Обсяг у доларах — це хвилинний показник — ціна закриття × обсяг, сума за бар.
  • Дані по Treasury за липень надійшли після першої публікації — у попередній примітці було вказано про їх відсутність із підтвердженням кількості рядків; ця редакція містить ці дані, підтвердження додано.
  • Зміна ціни закриття CRWD є артефактом спліту — виключено з екранів лідерів зміни.
Повні примітки до даних
  • Секторна панель складається з одинадцяти фондів SPDR Select Sector (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY) — це фіктоване, задеклароване кошик, а не поле сектору від постачальника.
  • Підрахунок котирувань здійснюється за датою UTC за часовою міткою SIP; літня сесія входить до одного дня UTC.
  • Один лістинг за червень з повторно використаним символом виключено з таблиць лідерів (підтвердження); детальний аналіз тиків наведено в глибоких дослідженнях.

Методологія

  • Період становить одну торгову сесію (1 сесія, підтверджена за спостережуваними барами). Часові мітки зберігаються в UTC і конвертуються у нью-йоркський час усередині запитів; "close" означає останній хвилинний бар регулярної сесії, а зміна дня порівнюється за 2 липня та 1 липня. Закриття 3 липня було підтверджено за барами, а не припущено.
  • Спреди (ask мінус bid) наводяться в базисних пунктах від середньої ціни (mid-price), як медіана оновлень NBBO у регулярні години на детермінованому квантилі. Десяткові значення перетворюються на числа з плаваючою точкою перед арифметикою відношень; терміни експірації опціонів повторно розбираються з тікера OCC. Кожна панель зчитується один раз під час підготовки матеріалу через обмежений доступ лише для читання.

Графік, таблиця та SQL є єдиним об'єктом. Скопіюйте будь-яку панель у термінал Strasmore, щоб використовувати її самостійно. Попередня сесія: 1 липня. Тиждень: чотирисесійний святковий тиждень.