рынок итоги недели 20 июля 2026
Индексный табло, секторный разброс, ширина рынка и потоки капитала за неделю после июльской экспирации опционов. Все цифры из сохранённых запросов.
Неделя, начавшаяся 20 июля 2026 года, стала первой полной неделей после июльской экспирации месячных опционов. Она прошла 5 сессий без единого закрытия внутри неё. Изменение цены закрытия SPY к цене закрытия за неделю составило -0.59%. По отношению изменения открытия к закрытию среди предшествующих пятидесяти двух недель этот результат занял 43 место из 53. Каждое число ниже получено из сохранённого запроса, а каждый временной отрезок привязан к конкретным датам, поэтому повторный запуск SQL вернёт те же значения.
Неделя на бирже
Недельные изменения считаются от закрытия регулярной сессии в пятницу 17 июля до закрытия в пятницу 24 июля. В последнем столбце указаны данные за предыдущую неделю, чтобы их можно было сравнить. Строки расположены в алфавитном порядке.
Точный 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%. Расстояние между четырьмя индексами — первое, что измеряет табло, и оно не всегда мало.
Неделя на фоне скользящего года
Показатель одной недели мало что значит без распределения, стоящего за ним. Эта панель пересчитывает каждую скользящую неделю по идентичной логике — от открытия до закрытия в рамках основной сессии — и ранжирует данную неделю внутри этого распределения.
Точный 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. Обратите внимание на разницу в определении: этот показатель стартует с первого открытия основной сессии недели, а табло выше — с закрытия предыдущей недели. Оба показателя подписаны везде, где они появляются.
Пять сессий, одна дуга
Точный 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 июля — сессии, непосредственно предшествующей данному периоду.
Ширина рынка, сессия за сессией
Уровень индекса — это одно число. Ширина рынка показывает, сколько акций двигалось вместе с ним, и именно это число определяет, была ли зелёная неделя широкой или узкой.
Точный 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. Бумаги, у которых нет котировок закрытия по обе стороны сессии, исключаются — поэтому учтённое количество слегка колеблется день ото дня.
Тот же вопрос, заданный один раз за всю неделю:
Точный 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 июля.
Точный 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 DESCEnergy оказался на вершине таблицы с показателем 3.33%. Consumer Discretionary замкнул список на уровне -5.2%, отстав на 8.53 процентных пункта. Этот разрыв — недельная отраслевая дисперсия, и она показательна сама по себе: неделя, когда все одиннадцать секторов укладываются в один пункт друг от друга, — это совсем другой рынок, чем тот, где спред достигает двузначных чисел.
Куда ушли доллары
Точный 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 DESCMU зафиксировал 158.1 миллиардов долларов оборота в регулярные часы за пять сессий, опередив SPY с 133.9 миллиардами и QQQ с 101.5 миллиардами. Восьмой в таблице, AAPL, показал 34.5% от объёма лидера. Оборот показывает, на чём рынок спорил на неделе, и это не обязано совпадать с движением цены. Показатель на уровне отдельных бумаг — это оборот на акцию.
Крупнейшие движения недели
Сплиты меняют цену на бумаге, не меняя стоимости: обратный сплит создаёт искусственный четырёхзначный рост, прямой сплит — такое же искусственное падение. На неделе произошло 25 обратных сплитов и 11 прямых сплитов; обе таблицы ниже исключают любые бумаги, чей сплит был исполнен между закрытием 17 июля и закрытием 24 июля — именно за этот интервал измеряется изменение. Обе таблицы также требуют оборота в пять миллионов долларов в основную сессию.
Точный 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, а не из каких-либо сводок.
Точный 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 в пятницу, при 3.89 миллионах и 4.4 миллионах обновлений NBBO. Последние два столбца — это раскрытие, а не вывод: 0 односторонних котировок и 1084 перекрестных котировок были учтены в медиане понедельника, а не молча отброшены. Перекрестная котировка (цена предложения выше цены спроса) — это обычный артефакт консолидированного потока, собранного из множества площадок с наносекундным разрешением.
Опционная неделя после месячного экспирирования
Июльский месячный экспиринг пришёлся на пятницу перед началом этой недели, поэтому каждый контракт, торгуемый в эти пять сессий, пережил его. Срок экспирирования задаёт ритм, по которому работает толпа одного дня.
Точный 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% в пятницу — сессию экспирирования на этой неделе. Коллы заняли 53.5% пятничного объёма контрактов. И притяжение этой пятницы было заметно уже с открытия: 15.1% объёма понедельника уже приходилось на контракты с датой экспирирования в этот день.
Ставки за неделю
Точный 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 июля десятилетняя доходность изменилась на 16 базисных пункта и достигла 4.71% к последнему зафиксированному значению, при этом двухлетняя составила 4.37%, а тридцатилетняя — 5.17%. Спред двух- и десятилетних бумаг завершил серию на уровне 34 базисных пунктов. Файл Казначейства отстаёт от текущих котировок примерно на одну сессию, поэтому данная панель содержит 5 значений, каждое с указанием даты в таблице.
Короткие продажи: ежедневные файлы
FINRA публикует ежедневный файл объёмов коротких продаж. Объём коротких продаж — это валовой дневной поток, а не позиция, и эти файлы иногда приходят усечёнными, поэтому сначала измеряется покрытие, прежде чем из них выводится какое-либо соотношение.
Точный 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% от количества тикеров самого полного файла. Любое утверждение об объёме коротких продаж по отдельному наименованию, взятое из файла, который значительно уступает соседним, остаётся непроверяемым до тех пор, пока этот файл не будет передан повторно.
Календарь, стоящий за неделей
Точный 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Первая сессия в файле содержала 3012 документов, 632 из которых были отчётами инсайдеров по форме 4, а 166 — отчётами 8-K. Последняя сессия содержала 3814 документов, из них 644 форм 4 и 223 отчётов 8-K. 5 сессий недели имеют на файле ежедневный индекс EDGAR; этот индекс публикуется по собственному графику, который иногда отстаёт от ленты.
Точный 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Остальная документация недели: 17106 заявок SEC за 5 проиндексированных дней, 592 записей экс-дивидендов, 1 из них по десяти широко известным именам, которые отслеживает эта панель, 25 обратных и 11 прямых сплитов, 4 новых листингов и 1704 статей от 2 издателей. Последняя пара измеряет внимание одного канала, а не мировые СМИ.
Сессии, верифицированные
Точный 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 11995 сессий, с 2026-07-20 по 2026-07-24, с 0 праздничными строками в любом месте окна. SPY сформировал 1950 минутных баров регулярной сессии в их пределах. 2 сессий закрылись выше предыдущего закрытия, а 3 — ниже. Следующее плановое закрытие — Labor Day в 2026-09-07.
На повестке
На следующей неделе — данные из наших собственных таблиц:
Точный 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 закрытий на следующей неделе. На неё приходится 368 экс-дивидендных записей, 0 из семейного набора, а также 15 запланированных сплитов. Из пятничного объёма опционов 14.2% уже находились в контрактах, истекающих в следующую пятницу. Последняя дата расчёта по коротким позициям в файле — 2026-07-15; этот файл публикуется с задержкой, достаточной для того, чтобы у него было собственное объяснение.
Часто задаваемые вопросы
Как изменился фондовый рынок за неделю с 20 июля 2026 года?
SPY изменился на -0.59% по цене закрытия за период с 17 по 24 июля, QQQ — на -1.59%, DIA — на -0.38%, IWM — на -0.98%. Среди ликвидных бумаг 2437 выросли, а 3630 снизились.
Какой сектор лидировал на неделе с 20 июля 2026 года?
Energy, с результатом 3.33%. Слабым из одиннадцати отраслевых ETF SPDR стал Consumer Discretionary с показателем -5.2%, что на 8.53 процентных пункта хуже.
Сколько торговых сессий было на неделе с 20 июля 2026 года?
5, в период с 2026-07-20 по 2026-07-24, при этом в окне учтено 0 праздничных строк. Следующее запланированное закрытие — Labor Day.
По какой бумаге был наибольший долларовый оборот на неделе с 20 июля 2026 года?
MU, с оборотом 158.1 миллиарда долларов в основную сессию, опередив SPY с 133.9 миллиарда.
Заметки к данным
Все хранимые метки времени — UTC; основная сессия длится 13:30-20:00 UTC, а границы недели проходят от закрытия регулярной сессии 17 июля до закрытия 24 июля. Каждая панель «закрытие к закрытию» здесь считывает последнюю минутную свечу основной сессии по обе стороны сравнения, поэтому значение, полученное во внебиржевые часы, никогда не может установить недельное закрытие. Ранжирование за последний год использует недельные доходности «открытие — закрытие», поэтому оно не совпадает с табло «закрытие к закрытию»; оба определения помечены там, где они появляются. Недельная ширина рынка и доски движений применяют фильтр по обороту в основную сессию в пять миллионов долларов, а ширина публикует количество наименований, отсеянных этим фильтром. Доски движений исключают любое наименование, чей сплит был исполнен после закрытия 17 июля и до 24 июля включительно — то есть за тот самый интервал, за который измеряется изменение; это ловит как сплит, пришедшийся на промежуточные выходные, так и сплит, пришедшийся на торговую сессию. Они не исключают leveraged и inverse 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, когда истекают опционы, короткий интерес против короткого объёма и спред между двух- и десятилетними облигациями.
Каждый запрос выше выполняется без изменений на терминале Strasmore, если вы хотите перенаправить окно на другую неделю.