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

Обзор рынка за неделю с двадцатого июля 2026 года

Анализ рыночной активности после июльской экспирации опционов. Рассматриваются показатели индексов, отраслевая дисперсия, рыночная ширина и направления движения денежных потоков.

5
Неделя, начавшаяся двадцатого июля две тысячи двадцать шестого года, стала первой полной неделей после июльской экспирации месячных опционов; она включала 5 торговых сессий без выходных дней внутри периода. Изменение цены закрытия SPY от недели к неделе составило -0.59%, а при сопоставлении показателя «от открытия до закрытия» с данными за последний год эта неделя заняла 43 место из 53. Все приведенные ниже цифры получены из сохраненного запроса, а каждый временной интервал привязан к конкретным датам, поэтому повторный запуск SQL-запроса вернет те же значения.

Неделя на бирже

Еженедельные изменения рассчитываются с момента закрытия основных торгов в пятницу, семнадцатого июля, по пятницу, двадцать четвёртое июля. В последнем столбце приведены показатели предыдущей недели, что позволяет сравнить их. Строки отсортированы в алфавитном порядке.

ЗапросSPY / QQQ / DIA / IWM: неделя с 20 июля к закрытию 17 июля, с учетом изменений за предыдущую неделю
tickerЗакрытие пред. неделиЗакрытие неделиИзм. за неделю, %Изм. пред. недели, %
DIA520.76518.79-0.38-0.95
IWM294.09291.2-0.98-0.63
QQQ695.3684.22-1.59-4.17
SPY743.2738.85-0.59-1.55
Точный SQL-код для каждого числа
SELECT ticker,
    round(argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00'), 2) AS prior_week_close,
    round(argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'), 2) AS week_close,
    round((argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00')
         / argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00') - 1) * 100, 2) AS week_change_pct,
    round((argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
         / argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00') - 1) * 100, 2) AS prior_week_change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
  AND ((window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')
    OR (window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
    OR (window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'))
GROUP BY ticker
ORDER BY ticker
Запустите сами

Итоги недели: DIA изменился на -0.38%, IWM на -0.98%, QQQ на -1.59%, а SPY на -0.59%, закрывшись на отметке $738.85. Показатели предыдущей недели в том же алфавитном порядке составили -0.95%, -0.63%, -4.17% и -1.55%. Степень расхождения между четырьмя индексами — это первый показатель, который оценивает табло, и он не всегда бывает незначительным.

Неделя в сравнении с годовым периодом

Результат одной недели мало что значит без понимания распределения данных. В этой панели каждая прошедшая неделя пересчитывается по единой логике: от цены открытия до цены закрытия основной торговой сессии, после чего текущий результат ранжируется относительно этого ряда.

ЗапросНедельная динамика SPY в контексте года (доходность от открытия до закрытия)
Изм. от откр. до закр., %РейтингСравнение недельПервая неделяСессий на этой неделе
-1.143532025-07-215
Точный SQL-код для каждого числа
SELECT round(anyIf(ret, wk = toDate('2026-07-20')), 2) AS week_open_to_close_pct,
       arrayCount(x -> x > anyIf(ret, wk = toDate('2026-07-20')), groupArrayIf(ret, wk != toDate('2026-07-20'))) + 1 AS rank_best,
       count() AS weeks_compared,
       toString(min(wk)) AS first_week,
       anyIf(sessions_measured, wk = toDate('2026-07-20')) AS sessions_this_week
FROM (
    SELECT toStartOfWeek(toDate(toTimeZone(window_start, 'America/New_York')), 1) AS wk,
           uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions_measured,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2025-07-21 00:00:00')
      AND window_start < toDateTime('2026-07-25 00:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY wk
    HAVING sessions_measured >= 3
)
Запустите сами

При таком подходе доходность SPY составила -1.1%, что соответствует 43 месту из 53 недель, начиная с 2025-07-21 года. Обратите внимание на разницу в определении: данный показатель рассчитывается от цены открытия основной сессии в начале недели, тогда как итоговая таблица выше — от цены закрытия предыдущей недели. Оба метода обозначены везде, где они используются.

Пять сессий, одна траектория

ЗапросSPY по сессиям: закрытие, изменение и объем торгов, 20–24 июля
ДатаЗакрытие SPYИзм., %Объем SPY, млн
2026-07-20742.1-0.1540.1
2026-07-21748.320.8425.6
2026-07-22747.39-0.1226.6
2026-07-23738.24-1.2248
2026-07-24738.850.0840.1
Точный SQL-код для каждого числа
SELECT toString(d) AS date,
       round(c, 2) AS spy_close,
       round((c / prev_c - 1) * 100, 2) AS change_pct,
       round(shares_m, 1) AS spy_shares_m
FROM (
    SELECT d, c, shares_m,
           lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMax(toFloat64(close), window_start) AS c,
               toFloat64(sum(volume)) / 1e6 AS shares_m
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY d
    )
)
WHERE d >= '2026-07-20'
ORDER BY date
Запустите сами

Подневная динамика SPY составила -0.15% в понедельник, 0.84% во вторник, -0.12% в среду, -1.22% в четверг и 0.08% в пятницу, завершив период на отметке $738.85 при объеме торгов в 40.1 миллионов акций. Показатель понедельника рассчитывается относительно цены закрытия 17 июля — сессии, непосредственно предшествующей данному периоду.

Ширина рынка, сессия за сессией

Уровень индекса — это одно число. Показатель ширины рынка отражает количество акций, которые двигались вместе с ним, и именно это число определяет, была ли «зеленая» неделя широкой или узкой.

ЗапросРастущие и падающие акции по сессиям, объем торгов от $5 млн, 20–24 июля
ДатаРастущиеПадающиеБез изм.Активы
2026-07-2012682632453945
2026-07-2125161450414007
2026-07-2215952332333960
2026-07-2312322815304077
2026-07-2422731635423950
Точный SQL-код для каждого числа
SELECT toString(d) AS date, advancers, decliners, unchanged, measured_names
FROM (
    SELECT d,
           countIf(c > prev_c) AS advancers,
           countIf(c < prev_c) AS decliners,
           countIf(c = prev_c) AS unchanged,
           count() AS measured_names
    FROM (
        SELECT d, c, dv,
               lagInFrame(c) OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
        FROM (
            SELECT ticker,
                   toDate(toTimeZone(window_start, 'America/New_York')) AS d,
                   argMax(toFloat64(close), window_start) AS c,
                   sum(toFloat64(close) * toFloat64(volume)) AS dv
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
                OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
              AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
            GROUP BY ticker, d
        )
    )
    WHERE d >= '2026-07-20' AND prev_c > 0 AND dv >= 5000000
    GROUP BY d
)
ORDER BY date
Запустите сами

В понедельник 1268 из 3945 отслеживаемых бумаг выросли, а 2632 снизились. К пятнице соотношение составило 2273 против 1635 при общем количестве 3950. Акции, по которым не было цены закрытия в обе стороны сессии, исключаются, поэтому общее число отслеживаемых бумаг немного меняется день ото дня.

Тот же вопрос, заданный один раз для всей недели:

ЗапросНедельный охват рынка: закрытие 24 июля к закрытию 17 июля, акции с объемом торгов от $5 млн за неделю
РастущиеПадающиеБез изм.АктивыОтсеяно по ликвидностиДоля растущих, %
24373630336100509940
Точный SQL-код для каждого числа
SELECT
    countIf(cw > cp AND liquid) AS advancers,
    countIf(cw < cp AND liquid) AS decliners,
    countIf(cw = cp AND liquid) AS unchanged,
    countIf(liquid) AS measured_names,
    countIf(NOT liquid) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(cw > cp AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
    SELECT ticker, cp, cw, dv >= 5000000 AS liquid
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker
        HAVING cp > 0 AND cw > 0
    )
)
Запустите сами

Из 6100 бумаг, преодолевших порог оборота в пять миллионов долларов в основную торговую сессию, 2437 закрылись выше уровня закрытия 17 июля, а 3630 — ниже, что дает долю растущих акций в 40%. Фильтр ликвидности отсеял еще 5099 бумаг, объем торгов по которым за неделю не достиг указанного порога. Они учтены здесь, а не просто отброшены.

Таблица результатов по секторам

Одиннадцать отраслевых ETF семейства SPDR, ранжированные от лучших к худшим по итогам торгов с 17 по 24 июля.

ЗапросОтраслевые ETF, изменение за неделю: закрытие 24 июля к закрытию 17 июля
СекторНед. изм., %Отставание от лидера
Energy3.330
Utilities2.50.83
Industrials1.781.55
Materials1.471.86
Real Estate1.122.21
Health Care0.912.42
Technology0.183.15
Financials0.133.2
Staples-1.274.6
Communications-3.967.29
Consumer Discretionary-5.28.53
Точный SQL-код для каждого числа
SELECT sector, week_pct, round(max(week_pct) OVER () - week_pct, 2) AS points_behind_best
FROM (
    SELECT multiIf(ticker = 'XLK', 'Technology', ticker = 'XLC', 'Communications', ticker = 'XLE', 'Energy',
                   ticker = 'XLF', 'Financials', ticker = 'XLI', 'Industrials', ticker = 'XLB', 'Materials',
                   ticker = 'XLP', 'Staples', ticker = 'XLRE', 'Real Estate', ticker = 'XLU', 'Utilities',
                   ticker = 'XLV', 'Health Care', 'Consumer Discretionary') AS sector,
           round((cw / cp - 1) * 100, 2) AS week_pct
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw
        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-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'))
        GROUP BY ticker
        HAVING cp > 0 AND cw > 0
    )
)
ORDER BY week_pct DESC
Запустите сами

Energy занял верхнюю строчку таблицы с результатом 3.33%. Consumer Discretionary оказался в самом низу с показателем -5.2%, отстав на 8.53 процентных пункта. Этот разрыв представляет собой недельную дисперсию по секторам, и его стоит рассматривать отдельно: неделя, когда все одиннадцать секторов укладываются в диапазон одного процентного пункта, сильно отличается от рынка, где спред достигает двузначных значений.

Куда ушли доллары

ЗапросЛидеры по объему торгов в денежном выражении (основная сессия), 20–24 июля
tickerОбъем, $ млрд% от лидера
MU158.1100
SPY133.984.7
QQQ101.564.2
NVDA93.959.4
SNDK81.451.5
TSLA79.150
AMD57.936.6
AAPL54.634.5
Точный SQL-код для каждого числа
SELECT ticker, week_dollar_bn, round(100 * week_dollar_bn / max(week_dollar_bn) OVER (), 1) AS pct_of_leader
FROM (
    SELECT ticker,
           round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS week_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    ORDER BY week_dollar_bn DESC
    LIMIT 8
)
ORDER BY week_dollar_bn DESC
Запустите сами

MU зафиксировал 158.1 миллиарда долларов оборота в основную торговую сессию за пять дней, опередив SPY с 133.9 миллиарда и QQQ с 101.5 миллиарда. Восьмой в списке, AAPL, наторговал на 34.5% от объема лидера. Рекорды оборота показывают, где рынок вел споры на прошедшей неделе, и это не обязательно совпадает с направлением цены. Индивидуальный показатель для каждой бумаги — это относительный объем.

Лидеры движения за неделю

Дробление акций меняет цену сделки, не меняя стоимости компании: обратный сплит создает видимость четырехзначного роста, а прямой сплит — аналогичное по масштабу падение. За неделю произошло 26 обратных сплитов и 12 прямых сплитов. Оба приведенных ниже списка исключают бумаги, по которым дробление было проведено в период с закрытия торгов 17 июля по закрытие 24 июля — именно за этот интервал измеряется изменение цены. Также для включения в список требуется объем торгов в основную сессию не менее пяти миллионов долларов.

ЗапросЛидеры роста и падения за неделю: топ-10, основная сессия, объем от $5 млн, без учета сплитов
tickerПлощадкаНед. изм., %Объем, $ млнТорговых сессий% от макс. объема
STAKgainers383.7251.6526
ADVBgainers277.1875.7590.3
WLDSgainers157.2104.6510.8
ZYBTgainers123.8294.6530.4
CJMBgainers111.3131.8513.6
LVWRgainers107.8131.6513.6
OMHgainers99.8436.6545
PNgainers97.589.759.3
UTZgainers95.4969.55100
GOROgainers92.350.355.2
LBGJdecliners-98.847.754.9
SXTCdecliners-97.440.654.2
WETOdecliners-86.48.850.9
GVHdecliners-78.817.251.8
VEEEdecliners-66.665.256.7
CLBKdecliners-53.5953.7598.4
BIYAdecliners-53.4266.9527.5
LESLdecliners-52.26.850.7
QMLSdecliners-48.737.253.8
VCIGdecliners-47.89.551
Точный SQL-код для каждого числа
SELECT ticker, board, week_pct, week_dollar_m, sessions_traded,
       round(100 * week_dollar_m / max(week_dollar_m) OVER (), 1) AS pct_of_dollar_max
FROM (
    SELECT 'gainers' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct,
           round(dv / 1e6, 1) AS week_dollar_m, sessions_traded
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv,
               uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-20 13:30:00') AS sessions_traded
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker NOT IN ('SPCX')
          AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-17' AND execution_date <= '2026-07-24')
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker
        HAVING cp > 0 AND cw > 0 AND dv >= 5000000
    )
    ORDER BY week_pct DESC
    LIMIT 10
    UNION ALL
    SELECT 'decliners' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct,
           round(dv / 1e6, 1) AS week_dollar_m, sessions_traded
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv,
               uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-20 13:30:00') AS sessions_traded
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker NOT IN ('SPCX')
          AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-17' AND execution_date <= '2026-07-24')
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker
        HAVING cp > 0 AND cw > 0 AND dv >= 5000000
    )
    ORDER BY week_pct ASC
    LIMIT 10
)
ORDER BY board DESC, abs(week_pct) DESC
Запустите сами

Чтобы попасть в любой из списков, требовалось реальное рыночное движение. Наименьший рост среди лидеров составил 92.3%, а наименьшее падение — -47.8%. В крайних точках STAK показал изменение на 383.7% при объеме торгов 251.6 миллионов долларов, а LBGJ изменился на -98.8% при объеме 47.7 миллионов. Это падение близко к полной рыночной капитализации компании, поэтому список содержит подтверждение: LBGJ зафиксировал сделки в основную сессию в 5 из пяти торговых дней, и за период между двумя датами закрытия, по которым ведется расчет, дробления акций не проводилось.

Котируемый спред, сессия за сессией

Цена — это главный показатель. Стоимость исполнения сделки — это котируемый спред, который здесь измеряется для SPY по каждой сессии отдельно, напрямую из необработанных данных ленты NBBO, а не из сводных отчетов.

ЗапросМедианный спред и обновления NBBO для SPY по сессиям, основная сессия, 20–24 июля
ДатаМедианный спред, б.п.Обновления котировок (млн)Односторонние котировкиПерекрестные котировки
2026-07-200.273.8901084
2026-07-210.272.290333
2026-07-220.272.510747
2026-07-230.275.105906
2026-07-240.274.402777
Точный SQL-код для каждого числа
SELECT toString(toDate(sip_timestamp)) AS date,
       round(quantileExactIf(0.5)(
           10000 * (toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),
           bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price), 2) AS median_spread_bps,
       round(count() / 1e6, 2) AS quote_updates_m,
       countIf(bid_price <= 0 OR ask_price <= 0) AS one_sided_quote_count,
       countIf(bid_price > ask_price AND bid_price > 0 AND ask_price > 0) AS crossed_quote_count
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
  AND sip_timestamp >= '2026-07-20 13:30:00'
  AND sip_timestamp < '2026-07-24 20:00:00'
  AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY toDate(sip_timestamp)
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
ORDER BY toDate(sip_timestamp)
Запустите сами

Медианный котируемый спред SPY составил 0.27 базисных пунктов от средней цены в понедельник и 0.27 в пятницу, при количестве обновлений NBBO в 3.89 миллиона и 4.4 миллиона соответственно. Последние два столбца представляют собой раскрытие информации, а не результат исследования: 0 односторонних котировок и 1084 пересекающихся котировок были учтены при расчете медианы за понедельник, а не исключены без уведомления. Пересекающаяся котировка, когда цена покупки выше цены продажи, является обычным артефактом консолидированного потока данных, собираемого из множества площадок с наносекундным разрешением.

Опционная неделя после ежемесячной экспирации

Июльская ежемесячная экспирация пришлась на пятницу перед началом этой недели, поэтому все контракты, торговавшиеся в течение этих пяти сессий, являются новыми выпусками. График экспирации задает ритм, по которому работают трейдеры, торгующие внутри дня.

ЗапросОпционные контракты, доля акций и колл-опционов по сессиям, 20–24 июля
ДатаКонтракты (млн)Доля 0DTE (%)Доля Call (%)Экспирация июль 24 (%)
2026-07-206440.255.315.1
2026-07-2157.329.553.917
2026-07-2255.836.156.419.9
2026-07-2366.226.453.426.4
2026-07-2471.14953.549
Точный SQL-код для каждого числа
SELECT toString(toDate(sip_timestamp)) AS date,
       round(toFloat64(sum(size)) / 1e6, 1) AS contracts_m,
       round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = formatDateTime(toDate(sip_timestamp), '%y%m%d')) / sum(size), 1) AS pct_0dte,
       round(100.0 * sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'C') / sum(size), 1) AS pct_call,
       round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260724') / sum(size), 1) AS pct_expiring_jul24
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-20 00:00:00' AND sip_timestamp < '2026-07-25 00:00:00'
GROUP BY toDate(sip_timestamp)
ORDER BY toDate(sip_timestamp)
Запустите сами

Объем торгов контрактами составил 64 миллионов в понедельник и 71.1 миллионов в пятницу. Доля сделок внутри дня, то есть контрактов, истекающих в день совершения сделки, составила 40.2% в понедельник против 49% в пятницу, в день экспирации на этой неделе. На долю call-опционов пришлось 53.5% пятничного объема контрактов. Влияние этой пятницы было заметно с самого начала недели: 15.1% объема понедельника уже приходилось на контракты с датой истечения в этот день. В преддверии экспирации с таким высоким открытым интересом некоторые трейдеры следят за max pain — ценой исполнения, при которой держатели опционной цепочки получили бы наименьшую прибыль, хотя вопрос о том, приблизится ли расчетная цена к этому уровню, требует проверки, а не слепого допущения.

Ставки за неделю

ЗапросКривая доходности казначейских облигаций по сессиям, с 17 по 24 июля
ДатаДоходность 2г (%)Доходность 10л (%)Доходность 30л (%)Спред 2г/10л (б.п.)Изм. 10л к закр. (б.п.)
2026-07-174.184.555.06370
2026-07-204.214.65.11395
2026-07-214.264.635.13378
2026-07-224.314.675.153612
2026-07-234.374.715.173416
2026-07-244.334.695.163614
Точный SQL-код для каждого числа
SELECT toString(date) AS date,
       round(toFloat64(yield_2_year), 2) AS yield_2y_pct,
       round(toFloat64(yield_10_year), 2) AS yield_10y_pct,
       round(toFloat64(yield_30_year), 2) AS yield_30y_pct,
       round((toFloat64(yield_10_year) - toFloat64(yield_2_year)) * 100) AS spread_2s10s_bp,
       round((toFloat64(yield_10_year) - (SELECT toFloat64(any(yield_10_year)) FROM global_markets.treasury_yields WHERE date = '2026-07-17')) * 100) AS chg_10y_from_prior_close_bp
FROM global_markets.treasury_yields
WHERE date >= '2026-07-17' AND date <= '2026-07-24'
ORDER BY date
Запустите сами

По сравнению с данными на 17 июля, доходность десятилетних казначейских облигаций изменилась на 14 базисных пунктов и составила 4.69% на момент последней зафиксированной сделки. Доходность двухлетних бумаг составила 4.33%, а тридцатилетних — 5.16%. Спред между двухлетними и десятилетними облигациями завершил период на уровне 36 базисных пунктов. Данные Казначейства отстают от рыночных котировок примерно на одну сессию, поэтому в таблице представлены 6 сделок, каждая из которых имеет соответствующую дату.

Короткие позиции: ежедневные отчеты

FINRA ежедневно публикует отчеты об объеме коротких продаж. Объем коротких продаж представляет собой валовый дневной поток, а не размер позиции. Поскольку эти файлы иногда поступают в усеченном виде, перед расчетом любых коэффициентов на их основе необходимо оценить полноту данных.

ЗапросЕжедневный объем коротких позиций: тикеры и количество акций, 20–24 июля
ДатаТикеры в файлеКороткие позиции (млрд)Доля от макс. файла (%)
2026-07-20150984.71100
2026-07-21151025.28100
2026-07-22149844.5999.2
2026-07-2348161.7431.9
2026-07-24150624.2799.7
Точный SQL-код для каждого числа
SELECT date, tickers_on_file, short_shares_bn,
       round(100.0 * tickers_on_file / max(tickers_on_file) OVER (), 1) AS pct_of_fullest_file
FROM (
    SELECT toString(date) AS date,
           uniqExact(ticker) AS tickers_on_file,
           round(sum(short_shares) / 1e9, 2) AS short_shares_bn
    FROM (
        SELECT date, ticker, max(short_volume) AS short_shares
        FROM global_markets.stocks_short_volume
        WHERE date >= '2026-07-20' AND date <= '2026-07-24'
        GROUP BY date, ticker
    )
    GROUP BY date
)
ORDER BY date
Запустите сами

5 ежедневных отчетов доступны за неделю. В первом содержится 15098 тикеров и 4.71 миллиарда акций с пометкой «короткая продажа»; в последнем — 15062 тикеров, что составляет 99.7% от количества тикеров в наиболее полном файле. Любые утверждения об объеме коротких позиций по конкретному инструменту, основанные на файле, который значительно уступает по объему соседним отчетам, остаются непроверяемыми до момента повторной публикации данных.

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

ЗапросОтчетность SEC по сессиям и типам форм, 20–24 июля
ДатаОтчетностьForm 4Form 8-KForm 424B2
2026-07-203013632166663
2026-07-2132755032501083
2026-07-223461549279569
2026-07-233551545369626
2026-07-243844644223623
Точный SQL-код для каждого числа
SELECT toString(filing_date) AS date,
       count() AS filings,
       countIf(form_type = '4') AS form4,
       countIf(form_type = '8-K') AS form8k,
       countIf(form_type = '424B2') AS f424b2
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24'
GROUP BY filing_date
ORDER BY date
Запустите сами

В первую сессию было подано 3013 документов, из них 632 — отчеты инсайдеров по форме Form 4, а 166 — формы 8-K. В последнюю сессию поступило 3844 документов, включая 644 форм 4 и 223 форм 8-K. Для 5 сессий недели в системе EDGAR имеется ежедневный индекс; этот индекс формируется по собственному графику, который иногда отстает от ленты торгов.

ЗапросКорпоративный календарь недели: дивиденды, сплиты, листинги, новости
Отчетность за неделюДней в отчетностиЭкс-дивиденды за неделюЭкс-дивиденды (розница)Обратные сплиты за неделюПрямые сплиты за неделюЛистинги за неделюНовости за неделюИздатели новостей
1714455941261248522
Точный SQL-код для каждого числа
SELECT
    (SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24') AS filings_week,
    (SELECT uniqExact(filing_date) FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24') AS filing_days_on_file,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-20' AND ex_dividend_date <= '2026-07-24') AS ex_dividends_week,
    (SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-20' AND ex_dividend_date <= '2026-07-24') AS household_ex_dividends_week,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-20' AND execution_date <= '2026-07-24') AS reverse_splits_week,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-20' AND execution_date <= '2026-07-24') AS forward_splits_week,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= '2026-07-20' AND listing_date <= '2026-07-24') AS listings_week,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-20 04:00:00' AND published_utc < '2026-07-25 04:00:00') AS news_week,
    (SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-20 04:00:00' AND published_utc < '2026-07-25 04:00:00') AS news_publishers_week
Запустите сами

Остальная документация за неделю: 17144 документов SEC за 5 индексированных дня, 594 записей об ex-dividend датах, из них 1 приходятся на десять известных компаний, отслеживаемых в этой панели, 26 обратных и 12 прямых сплитов, 4 новых листингов и 852 статей от 2 издателей. Последний показатель отражает внимание одного конкретного канала данных, а не мировых СМИ в целом.

Проверенные торговые сессии

ЗапросВерификация сессий: бары, праздничные дни, закрытия вверх/вниз, дата следующего закрытия
Сессий за неделюПервая сессияПоследняя сессияБары за неделюПраздничные дниРастущие сессииПадающие сессииДата след. закрытияСлед. закрытие
52026-07-202026-07-2419500232026-09-07Labor Day
Точный SQL-код для каждого числа
WITH spy AS (
    SELECT d, c, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS p
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMax(toFloat64(close), window_start) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY d
    )
)
SELECT
    uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions_in_week,
    toString(min(toDate(toTimeZone(window_start, 'America/New_York')))) AS first_session,
    toString(max(toDate(toTimeZone(window_start, 'America/New_York')))) AS last_session,
    count() AS regular_bars_in_week,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-20' AND date <= '2026-07-24') AS holiday_rows_in_week,
    (SELECT countIf(c > p) FROM spy WHERE d >= '2026-07-20') AS up_sessions,
    (SELECT countIf(c < p) FROM spy WHERE d >= '2026-07-20') AS down_sessions,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_date,
    (SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'
  AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
Запустите сами

5 сессий, с 2026-07-20 по 2026-07-24, при наличии 0 праздничных дней в данном периоде. По SPY зафиксировано 1950 минутных баров в рамках регулярных сессий. 2 сессий закрылись выше уровня предыдущего закрытия, а 3 — ниже. Следующее запланированное закрытие торгов состоится Labor Day, 2026-09-07.

На подходе

На следующей неделе ознакомьтесь с данными из наших таблиц:

ЗапросКалендарь на следующую неделю: закрытия, экс-дивидендные даты, сплиты и экспирации
Закрытия на след. неделеЭкс-дивиденды на следующей неделеЭкс-дивиденды (сектор домохозяйств)Сплиты на следующей неделеЭкспирация 31 июля (% от объема пятницы)Последние данные по шорт-интересу
093402614.22026-07-15
Точный SQL-код для каждого числа
SELECT
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-27' AND date <= '2026-07-31' AND status != 'open') AS closures_next_week,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-27' AND ex_dividend_date <= '2026-07-31') AS ex_dividends_next_week,
    (SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-27' AND ex_dividend_date <= '2026-07-31') AS household_ex_div_next_week,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-27' AND execution_date <= '2026-07-31') AS splits_next_week,
    (SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260731') / sum(size), 1) FROM global_markets.options_trades WHERE sip_timestamp >= '2026-07-24 00:00:00' AND sip_timestamp < '2026-07-25 00:00:00') AS jul31_expiry_pct_of_friday_volume,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-24') AS latest_short_interest_settlement
Запустите сами

Календарь праздников указывает на 0 выходных дней в течение следующей недели. На этот период приходится 934 дат ex-dividend, включая 0 по акциям потребительского сектора, а также 26 запланированных дробления акций. Из общего объёма торгов опционами в пятницу 14.2% пришлось на контракты с экспирацией в следующую пятницу. Последняя зафиксированная дата расчёта по коротким позициям — 2026-07-15; данные публикуются с задержкой, достаточной для того, чтобы иметь собственное пояснение.

Часто задаваемые вопросы

Как вел себя фондовый рынок на неделе с двадцатого июля две тысячи двадцать шестого года?

Котировки SPY изменились на -0.59% по ценам закрытия в период с семнадцатого по двадцать четвертое июля, QQQ — на -1.59%, DIA — на -0.38%, а IWM — на -0.98%. Среди ликвидных бумаг 2437 выросли, а 3630 упали.

Какой сектор стал лидером на неделе с двадцатого июля две тысячи двадцать шестого года?

Energy с показателем 3.33%. Самым слабым из одиннадцати отраслевых ETF сектора SPDR стал Consumer Discretionary с результатом -5.2%, отстав на 8.53 процентных пункта.

Сколько торговых сессий было на неделе с двадцатого июля две тысячи двадцать шестого года?

5, в период с 2026-07-20 по 2026-07-24, при этом в данном промежутке было 0 праздничных дней. Следующее запланированное закрытие торгов — Labor Day.

По какому тикеру прошел наибольший объем торгов в долларовом выражении на неделе с двадцатого июля две тысячи двадцать шестого года?

По MU, с оборотом в 158.1 миллиарда долларов в основную торговую сессию, опередив SPY с 133.9 миллиарда.

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

Все хранящиеся временные метки указаны по UTC; стандартная торговая сессия составляет 13:30-20:00 UTC, а недельный период охватывает время от закрытия торгов семнадцатого июля до закрытия двадцать четвёртого июля. Каждая панель сравнения цен закрытия использует последнюю минутную свечу основной сессии с обеих сторон, поэтому сделка в продлённые часы не может быть ценой закрытия недели. Рейтинг за последний год рассчитывается на основе недельной доходности от открытия до закрытия, поэтому он не совпадает с таблицей сравнения цен закрытия; оба метода указаны там, где они применяются. Рыночный охват и таблицы лидеров движения цен используют фильтр по обороту в пять миллионов долларов в основную сессию, а данные по охвату включают количество инструментов, отсеянных этим фильтром. Таблицы лидеров движения исключают бумаги, по которым дробление акций произошло в период с закрытия семнадцатого июля по двадцать четвёртое июля — это точный интервал измерения изменений, который учитывает дробления, оформленные как в выходные, так и в течение торговой сессии. В таблицы включены ETF с кредитным плечом и инверсные ETF, которые могут доминировать в списке на направленном рынке. Нижняя часть таблицы аутсайдеров может приближаться к полной потере котируемой стоимости за неделю; для каждой позиции в этой таблице указано, в скольких из пяти сессий были зафиксированы сделки. Панель спредов SPY учитывает односторонние и пересекающиеся котировки, а не отбрасывает их; медиана рассчитывается по оставшимся валидным котировкам. Файлы Казначейства отстают от ленты сделок примерно на одну сессию, а ежедневный индекс EDGAR публикуется по собственному графику, поэтому панели ставок и отчётности указывают фактическую задержку данных в днях. Индексы подразумеваемой волатильности здесь не представлены: эти данные не лицензированы для данного хранилища, поэтому волатильность оценивается по ленте сделок через торговые диапазоны, долю опционов внутри дня и поведение котировок.

Методология

  • Источник рыночных данных: консолидированная лента. delayed_stocks_minute_aggs для цен и объемов, cache_stocks_quotes для панели NBBO, options_trades для опционной недели.
  • Закрытие: последний минутный бар основной торговой сессии; не учитываются условные принты в 16:00 и сделки на продленных торговых сессиях.
  • Сессии: верифицируются на основе таблицы праздничных дней и фактических баров, а не на основе календарных допущений.
  • Обработка часовых поясов: в предложениях WHERE используются исходные литералы UTC, а toTimeZone применяется только в списках SELECT для меток ET.
  • Десятичные дроби: столбцы с ценой, размером и объемом приводятся к типу Float64 перед выполнением любого деления или умножения.
  • Детерминированные агрегаты: используются точные квантили; каждое утверждение о порядке или знаке в тексте подкреплено контрольными границами.
  • Дата актуальности данных в хранилище: 26 июля 2026 года.

Перекрестные ссылки: предыдущий выпуск этой еженедельной серии, что такое спред bid-ask, когда истекают опционы, short interest против short volume и спред между двухлетними и десятилетними облигациями.

Каждый из приведенных выше запросов выполняется без изменений в терминале Strasmore, если вам потребуется перенастроить окно на другую неделю.

#recap#weekly#spy#sectors#options#market structure