Июнь 2026 года характеризовался расхождением показателей: индексы компаний с большой капитализацией снизились, в то время как акции компаний с малой капитализацией выросли. Если рассматривать состав акций внутри индексов, то количество падающих бумаг превысило количество растущих. Индекс SPY завершил месяц на отметке $746.32, показав изменение на -1.2% за месяц, в то время как IWM — индекс компаний с малой капитализацией — вырос на 4.2%. Другой важной характеристикой месяца стал объем торгов: один производитель чипов памяти обеспечил оборот в $995.7 миллиарда за 21 сессий, что превышает объем торгов самого SPY. Все представленные данные являются результатами запросов; для получения точного SQL-кода разверните любую панель.
Итоги месяца
Точный SQL-код для каждого числа
SELECT ticker,
round(argMinIf(toFloat64(open), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS month_open,
round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS month_close,
round((argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / argMinIf(toFloat64(open), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS month_return_pct,
round(maxIf(toFloat64(high), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS month_high,
round(minIf(toFloat64(low), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS month_low,
round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / 1e9, 1) AS rth_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY tickerРезультаты наглядно отражены в таблице: DIA 2.4% и IWM 4.2% выросли, в то время как SPY снизился на -1.2%, а QQQ завершил период с результатом -0.2%. Индекс компаний с высокой капитализацией показал отсутствие роста или снижение за тот же месяц, когда акции компаний с малой капитализацией выросли на четыре процента.
Июнь в сравнении с пятью предыдущими месяцами
Был ли спад в июне необычным? В таблице ниже для каждого месяца полугодия рассчитывается одна и та же ежемесячная доходность — данные за июнь формируются так же, как и за январь, в момент генерации.
Точный SQL-код для каждого числа
SELECT toString(toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York')))) AS period_start, ticker,
round((argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / argMinIf(toFloat64(open), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS month_return_pct,
round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS month_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY period_start, ticker
ORDER BY period_start, tickerСогласно этому показателю, июнь был обычным: доходность SPY на уровне -1.2% находится внутри диапазона полугодия — в марте падение составило -4.4%, а в апреле рост составил 9.9%. Основной характеристикой месяца стала ротация активов, а не общее направление движения.
Июнь на фоне всех предыдущих июней
Точный SQL-код для каждого числа
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 1) AS june_return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY')
AND window_start >= toDateTime('2003-01-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND toMonth(toTimeZone(window_start, 'America/New_York')) = 6
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y
HAVING sessions >= 17
ORDER BY y ASCТочный SQL-код для каждого числа
SELECT round(anyIf(ret, y = 2026), 1) AS june_2026_pct,
arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
count() AS junes_compared,
min(y) AS first_year,
anyIf(sessions, y = 2026) AS sessions_2026
FROM (
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY')
AND window_start >= toDateTime('2003-01-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND toMonth(toTimeZone(window_start, 'America/New_York')) = 6
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y
HAVING sessions >= 17
)Показатель SPY -1.2% занимает 15 место из 23 июней с 2004 (1-е место — лучшее) — средний уровень, чуть ниже середины. Это обычный июнь, и такой результат закономерен: динамика индекса не выделяется на фоне июньских показателей за два десятилетия. Заметной стала ротация внутри рынка — панель охвата рынка ниже. База: изменение цены в рамках регулярных торговых сессий от открытия до закрытия в каждом календарном июне; расчет производится идентично каждый год; верхняя граница ограничена концом текущего месяца, чтобы сравнительная выборка не увеличивалась незаметно.
Посессионный анализ
Точный SQL-код для каждого числа
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS spy_close,
round((argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / any(prev) - 1) * 100, 1) AS change_pct
FROM global_markets.delayed_stocks_minute_aggs
INNER JOIN (
SELECT d, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-05-29 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY d
)
) AS p ON toDate(toTimeZone(window_start, 'America/New_York')) = p.d
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY et_date
ORDER BY et_dateСамое резкое однодневное падение за месяц произошло в начале периода — -2.6% на 2026-06-05. График отражает динамику месяца: постепенное снижение до середины июня, формирование уровня поддержки в районе $716.58 и частичное восстановление в последние сессии перед окончанием квартала. Подробный обзор последней недели этого восстановления представлен в обзоре недели.
Широта рынка: падение преобладало над ростом
Точный SQL-код для каждого числа
SELECT
countIf(chg > 0 AND NOT dropped) AS advancers,
countIf(chg < 0 AND NOT dropped) AS decliners,
countIf(chg = 0 AND NOT dropped) AS unchanged,
countIf(dropped) AS dropped_by_liquidity_filter
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-01') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
- argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-05-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS chg,
sumIf(toFloat64(close) * toFloat64(volume), toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-01')) < 5e6 AS dropped
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-05-29 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
HAVING countIf(toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-05-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) > 0
AND countIf(toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-01') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) > 0
)4608 тикеров снизились за месяц против 4240 выросших — отрицательная широта рынка в месяц, когда два из четырех индексных ETF показали рост. Вес акций в индексе и равновесная широта отвечают на разные вопросы; в июне эти показатели разошлись. Фильтр ликвидности исключил 2896 тикеров с объемом торгов менее $5M за июнь, которые здесь учтены, а не скрыты. Дневная динамика совпадает с динамикой по тикерам: в 12 из 21 сессий месяца SPY закрывался ниже, против 9 закрытий выше.
Точный SQL-код для каждого числа
SELECT countIf(day_ret > 0) AS up_sessions,
countIf(day_ret < 0) AS down_sessions,
countIf(day_ret = 0) AS flat_sessions,
count() AS sessions_total
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 2) AS day_ret
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)Лидеры торгов
Точный SQL-код для каждого числа
SELECT ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS dollar_bn,
round(100 * sum(toFloat64(close) * toFloat64(volume)) / max(sum(toFloat64(close) * toFloat64(volume))) OVER (), 1) AS pct_of_leader
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_bn DESC
LIMIT 8MU лидировал в течение всего месяца с показателем $995.7 млрд — SPY занял второе место, показав 77.5% от этого объема. NVDA на четвертом месте с оборотом в $523 млрд; подробный анализ его движений доступен в отчете по тикам. В списке преобладают полупроводники — четыре из восьми позиций. База: регулярные часы торгов с 1 по 30 июня; один повторный символ за июнь исключен до подтверждения данных о компании; первый месяц представлен в отдельном материале.
Опционы: июнь против мая
Точный SQL-код для каждого числа
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-06-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')Точный SQL-код для каждого числа
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-05-01 00:00:00')
AND window_start < toDateTime('2026-06-01 00:00:00')Общий объем торговли опционами в июне составил 1477.9 млн контрактов. Из них 34.3% пришлось на экспирацию в тот же день. Для сравнения: в мае объем составил 1394.6 млн, а доля таких контрактов — 30.3%. Общий объем вырос, а доля 0DTE также увеличилась. В июне доля 0DTE достигла максимума за полугодие. Динамика с января по июнь представлена в обзоре за первое полугодие. Треть объема опционов в июне истекла в день сделки.
Точный SQL-код для каждого числа
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session,
round(quantileDeterministicIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price), 3) AS med_spread_bps,
round(count() / 1e6, 2) AS quote_updates_m,
countIf(NOT (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price)) AS invalid_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND ((sip_timestamp >= toDateTime64('2026-05-13 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-05-13 20:00:00', 9))
OR (sip_timestamp >= toDateTime64('2026-06-10 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-06-10 20:00:00', 9)))
GROUP BY session
ORDER BY session ASCСтоимость торговли наиболее ликвидными инструментами изменилась в том же направлении. Медианный спред SPY в июньской выборке (0.409 б.п., 10 июня) оказался шире, чем в майской (0.27 б.п., 13 мая). Данные по базису: расчет произведен по отдельным сессиям (вторая среда каждого месяца), а не по медианам за весь месяц; в выборку включены недействительные котировки.
Ставки: кривая практически не изменилась
Точный SQL-код для каждого числа
SELECT toString(date) AS d,
round(yield_10_year, 2) AS y10,
round(yield_2_year, 2) AS y2,
round((yield_10_year - yield_2_year) * 100, 0) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-06-01') AND date <= toDate('2026-06-30')
AND isNotNull(yield_10_year) AND isNotNull(yield_2_year)
ORDER BY dateВ июне доходность 10-летних облигаций составила 4.44%, а спред 2s10s составил 30 базисных пунктов. Это был спокойный месяц для процентных ставок по сравнению с волатильным полугодием (подробности динамики шестимесячной кривой см. в обзоре за H1).
Календарь: высокая активность в конце квартала, один пропущенный день подачи отчетности
Точный SQL-код для каждого числа
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= toDate('2026-06-01') AND ex_dividend_date <= toDate('2026-06-30')) AS ex_div_events,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= toDate('2026-06-01') AND execution_date <= toDate('2026-06-30')) AS splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= toDate('2026-06-01') AND listing_date <= toDate('2026-06-30')) AS ipos,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= toDate('2026-06-01') AND filing_date <= toDate('2026-06-30')) AS june_filings,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS filings_jun30,
(SELECT count() FROM global_markets.stocks_news WHERE published_utc >= toDateTime('2026-06-01 00:00:00') AND published_utc < toDateTime('2026-07-01 00:00:00')) AS news_articlesВ июне было зафиксировано 6651 событий с выплатой дивидендов, 164 дроблений акций и 35 новых листингов. Среди них — главное событие месяца, подробно разобранное в анализе первого месяца работы SpaceX. В данных по количеству отчетов есть одна особенность: индекс SEC показывает 68388 июньских заявок, однако на 30 июня приходится только 31 — индекс за последний день месяца существенно не полон (соседние дни содержат тысячи записей). Таким образом, общее число за июнь занижено до тех пор, пока не завершится заполнение данных; это часть паттерна конца месяца 2026 года, о котором есть отдельное примечание.
Дивидендная волна
Точный SQL-код для каждого числа
SELECT toString(ex_dividend_date) AS d, count() AS ex_div_events
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= toDate('2026-06-01') AND ex_dividend_date <= toDate('2026-06-30')
GROUP BY d
ORDER BY dВ начале месяца наблюдается высокая активность по выплатам. В июне в один день было зафиксировано 807 событий с наступлением экс-дивидендной даты. График отражает общий ритм месяца: ежедневный оборот составляет несколько сотен событий, который прерывается резкими скачками в конце месяца. В объяснении по экс-дивидендным датам рассказывается о том, как именно дата фиксации права на дивиденды влияет на цену.
Короткие позиции: оба июньских отчета опубликованы
Точный SQL-код для каждого числа
SELECT toString(settlement_date) AS settlement, count() AS tickers
FROM global_markets.stocks_short_interest
WHERE settlement_date >= toDate('2026-05-20')
GROUP BY settlement
ORDER BY settlementДанные по коротким позициям обновляются дважды в месяц с задержкой. Оба июньских отчета уже доступны: отчет по расчетным данным 2026-06-30 включает 22207 тикеров, после 22178 в отчете от 15 июня и 21987 в отчете от 29 мая. Ежедневный объем коротких продаж — это отдельный набор данных; его июньская особенность заключается в неполном отчете за 29 июня, который представлен в обзоре за неделю и в подробном разборе за 29 июня.
Отчет по сессиям
Точный SQL-код для каждого числа
SELECT
(SELECT uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')) AS june_sessions,
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-19 00:00:00') AND window_start < toDateTime('2026-06-20 00:00:00')) AS juneteenth_spy_bars,
(SELECT countIf((toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')) AS regular_bars_juneВ июне было проведено 21 сессий. В день праздника Juneteenth (19 июня) зафиксировано 0 баров SPY, а 8190 регулярных баров соответствуют ровно двадцати одной полной 390-минутной сессии.
Примечания к данным
Полные примечания к данным
- Данные по коротким позициям включают расчеты на 30 июня — оба показателя за месяц зафиксированы и приведены выше.
- Данные за отчетный день 30 июня существенно неполны (несколько административных заявок на фоне тысяч заявок в соседние дни); итоговые показатели за июнь занижены до момента обновления базы данных. Каждый конец месяца 2026 года, последний календарный день которого был будним, имеет такую же особенность — диагностическая заметка содержит подтверждающие данные; обзор за Q2 содержит оговорку по масштабам квартала.
- Файл FINRA по коротким объемам за 29 июня неполный по всему рынку — подтверждающие данные содержатся в обзоре за неделю и в подробном анализе за 29 июня.
- Исключение лидера по объему: один июньский тикер торгуется под повторно используемым символом и исключен из рейтинга до подтверждения данных о компании; соответствующие сведения содержатся в отдельной публикации.
- Ширина рынка сравнивает цену закрытия каждого тикера на конец июня с ценой закрытия на конец мая; тикеры без обоих показателей исключены по умолчанию, а исключения по фильтру ликвидности учитываются в панели.
Методология
- Период: с 1 по 30 июня 2026 года — 21 сессия, подтвержденная по наблюдаемым барам (панель получения данных выше). Месячная доходность рассчитывается от открытия до закрытия регулярных торгов в рамках указанного периода.
- Временные метки хранятся в формате UTC и фильтруются по необработанным границам UTC; в июне 2026 года используется EDT, поэтому регулярные торги проходят с 13:30 до 20:00 UTC. Объем в долларах рассчитывается как произведение цены закрытия минуты на объем за минуту в течение регулярных торгов.
- Сравнения с предыдущим месяцем пересчитываются в реальном времени в том же запросе, что и строка за июнь — значения не считываются из сохраненных данных. Блок истории за каждый июнь работает по тому же принципу по всей минутной ленте (регулярные часы по восточному времени — стандарт с учетом перехода на летнее время; верхняя граница ограничена концом текущего месяца, минимальное количество сессий указано для каждого года); проверка глубины данных приведена в методологии обзора H1.
- Генерация данных происходит через защищенный путь только для чтения; публичная страница никогда не делает запросы в реальном времени. Состояние хранилища на 5 июля 2026 года.
Это первое издание регулярного ежемесячного обзора — июльский выпуск будет содержать ссылку на эту страницу. Подробные данные по сессиям за последнюю неделю месяца доступны в обзоре за неделю с 29 июня; данные за квартал, завершившийся в этом месяце, доступны в обзоре за Q2.