Strasmore Research
Market Recap

Обзор рынка за первое полугодие 2026 года

Matt ConnorBy Matt Connor Updated 2026-08-08

Первая половина 2026 года: обзор рынка

Первая половина 2026 года состояла из двух различных рыночных фаз: в первом квартале все основные индексные ETF снижались или находились в боковике, а второй квартал с избытком компенсировал эти потери. По итогам полугодия SPY вырос на 8.8%; QQQ прибавил 18.7%; а результат IWM в 21.3% стал лучшим показателем первого полугодия для этого ETF на акции малой капитализации за всю историю наших данных. Ниже приведены расчеты, сопоставленные с результатами всех предыдущих лет в рамках одного запроса. Рынок ставок развивался по собственному сценарию: спред 2s10s сузился с 72 базисных пунктов до 30 за полугодие, не переходя при этом в инверсию. На этой странице представлена полная отчетность за полугодие: итоговые показатели, исторические ранги, помесячная динамика, кривая доходности по всем срокам погашения, одиннадцать секторов, эволюция рынка опционов по месяцам и наиболее значимые отдельные бумаги. Каждая цифра здесь является результатом сохраненного запроса; разверните любую панель для просмотра SQL-кода.

Итоги полугодия

ЗапросH1 2026: доходность за полугодие, Q1 и Q2 по четырем индексным ETF (единый запрос)
tickerДоходность H1 (%)Доходность Q1 (%)Доходность Q2 (%)Закрытие H1
DIA8.4-3.912.1522.28
IWM21.30.120.2300.42
QQQ18.7-6.926.5735.76
SPY8.8-5.214.1746.32
Точный SQL-код для каждого числа
SELECT ticker,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
    round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS h1_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
  AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY ticker
Запустите сами

Разделение на два квартала определяет динамику полугодия: SPY -5.2%, затем 14.1%; QQQ -6.9%, затем 26.5%. IWM стал тихим лидером полугодия с результатом 21.3%; за шесть месяцев акции малой капитализации обошли все индексы крупной капитализации. Детали по кварталам приведены в обзоре второго квартала. Примечание к арифметике полугодий: показатель SPY 8.8% за шесть месяцев значительно ниже, чем только за второй квартал, поскольку полугодие включает в себя как просадку, так и восстановление. Сложный процент от -5.2% и 14.1% дает итоговое значение, указанное в таблице, и любой заголовок о «доходности за первое полугодие» по умолчанию учитывает весь этот цикл колебаний.

Первое полугодие в сравнении с историческими данными

Является ли 8.8% полугодие необычным? В приведенных ниже таблицах пересчитывается доходность за первое полугодие — от открытия до закрытия основной торговой сессии с января по июнь — для каждого года, по которому имеются минутные данные. Расчеты для каждой пары ETF проводятся по единой методике, после чего текущий результат ранжируется относительно остальных периодов. Самая ранняя дата в минутных данных подтверждена в методологии ниже; первым полным полугодием в архиве считается период, указанный в отчетах.

ЗапросВсе первые полугодия в истории: SPY и QQQ, расчет по годам (указано количество сессий)
39 rows (showing 20)
ГtickerСессииДоходность H1 (%)
2004QQQ1242.9
2004SPY1242.4
2005SPY125-2.1
2006SPY1251.5
2007SPY1245.4
2008SPY125-12.8
2009SPY1241.8
2010SPY124-8.2
2011SPY1254.2
2012QQQ12512.7
2012SPY1256.6
2013QQQ1246.8
2013SPY12410.4
2014QQQ1247.3
2014SPY1246.4
2015QQQ1243.2
2015SPY124-0.2
2016QQQ125-1.7
2016SPY1254.5
2017QQQ12515.2
Точный SQL-код для каждого числа
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
       ticker,
       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 h1_return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
  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, ticker
HAVING sessions >= 100
ORDER BY y ASC, ticker ASC
Запустите сами
ЗапросРейтинг доходности: текущее полугодие в сравнении с предыдущими (SPY и QQQ; 1-е место — лучшее; без учета текущего)
tickerH1 2026 (%)РейтингСравнение полугодийПервый годСессии 2026
QQQ18.73162004123
SPY8.86232004123
Точный SQL-код для каждого числа
SELECT ticker,
       round(anyIf(ret, y = 2026), 1) AS h1_2026_pct,
       arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
       count() AS halves_compared,
       min(y) AS first_year,
       anyIf(sessions, y = 2026) AS sessions_2026
FROM (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
           ticker,
           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', 'QQQ')
      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, ticker
    HAVING sessions >= 100
)
GROUP BY ticker
ORDER BY ticker ASC
Запустите сами

Результат SPY 8.8% занимает 6 место из 23 первых полугодий начиная с 2004 года (первое место — лучший результат). Это верхняя треть списка, но не рекорд. Результат QQQ 18.7% занимает 3 место из 16 сопоставимых полугодий. Временной ряд QQQ короче, так как фонд в течение нескольких лет торговался под другим тикером. Любой год, в котором для инструмента набралось менее ста торговых сессий в первом полугодии, исключается из выборки согласно фильтру по количеству сессий, указанному в таблице; таким образом, исключения являются явными, а не скрытыми.

ЗапросВсе первые полугодия в истории: DIA и IWM, аналогичный расчет
46 rows (showing 20)
ГtickerСессииДоходность H1 (%)
2004DIA124-0.5
2004IWM1245.9
2005DIA125-5.1
2005IWM125-51.3
2006DIA1253.9
2006IWM1256.3
2007DIA1247
2007IWM1245.2
2008DIA125-14.5
2008IWM125-9.3
2009DIA124-3.9
2009IWM1242.5
2010DIA124-6.8
2010IWM124-3.4
2011DIA1256.4
2011IWM1254.9
2012DIA1253.7
2012IWM1255.3
2013DIA12411.7
2013IWM12412.3
Точный SQL-код для каждого числа
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
       ticker,
       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 h1_return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('DIA', 'IWM')
  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, ticker
HAVING sessions >= 100
ORDER BY y ASC, ticker ASC
Запустите сами
ЗапросРейтинг доходности: DIA и IWM в сравнении со всеми предыдущими первыми полугодиями (1-е место — лучшее; без учета текущего)
tickerH1 2026 (%)РейтингСравнение полугодийПервый годСессии 2026
DIA8.44232004123
IWM21.31232004123
Точный SQL-код для каждого числа
SELECT ticker,
       round(anyIf(ret, y = 2026), 1) AS h1_2026_pct,
       arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
       count() AS halves_compared,
       min(y) AS first_year,
       anyIf(sessions, y = 2026) AS sessions_2026
FROM (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
           ticker,
           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 ('DIA', 'IWM')
      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, ticker
    HAVING sessions >= 100
)
GROUP BY ticker
ORDER BY ticker ASC
Запустите сами

Строка с данными по компаниям малой капитализации — главный итог полугодия: IWM занимает 1 место из 23 первых полугодий начиная с 2004 года. Это лучший результат за всю историю фонда, превосходящий показатели любого восстановительного полугодия в таблице. Результат DIA 8.4% занимает 4 место из 23. Базис расчета: доходность от открытия до закрытия основной сессии внутри каждого календарного полугодия. Методика расчета идентична для всех лет, верхняя граница выборки зафиксирована на конец текущего периода, чтобы набор данных для сравнения не расширялся автоматически при добавлении последующих лет.

Помесячная динамика

ЗапросПомесячная доходность за полугодие (SPY и QQQ, единый запрос)
Начало периодаtickerДоходность мес. (%)Закрытие мес.
2026-01-01QQQ0.3621.81
2026-01-01SPY0.9691.85
2026-02-01QQQ-1.8607.45
2026-02-01SPY-0.5686.23
2026-03-01QQQ-3.6577.14
2026-03-01SPY-4.2650.24
2026-04-01QQQ14.8667.6
2026-04-01SPY9.9718.43
2026-05-01QQQ10.3738.25
2026-05-01SPY4.9756.4
2026-06-01QQQ-0.2735.76
2026-06-01SPY-1.2746.32
Точный SQL-код для каждого числа
SELECT toString(toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York')))) AS period_start, ticker,
    round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS month_return_pct,
    round(argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 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 9.9%, QQQ 14.8%; для QQQ это был лучший месяц из шести), а июнь завершил полугодие на спокойной ноте с показателем -1.2% для SPY. Итоги июня с разбором рыночного охвата, скрывающимся за этой нейтральной цифрой, представлены здесь. Если рассматривать таблицу помесячно: год начался почти без изменений (SPY 0.9% в январе), в феврале (-0.5%) и марте (-4.2%) последовало снижение, затем апрель развернул тренд за один месяц, май его закрепил (4.9%), а в июне темпы замедлились. Три из шести месяцев оказались отрицательными — результат «орлянки» для полугодия, которое в итоге закрылось уверенным ростом. Это типичная конфигурация для полугодовых периодов на рынке акций, и об этом стоит помнить, когда результаты одного месяца пытаются выдать за окончательный вердикт.

Ставки: вся кривая, по срокам погашения

Кривая доходности казначейских облигаций в течение полугодия подверглась «скручиванию», а не сдвигу. Самый короткий конец кривой, сроки погашения которого наиболее тесно коррелируют с монетарной политикой, практически не изменился; двухлетние бумаги выросли на две трети процентного пункта; тридцатилетние бумаги почти не отреагировали. В таблице представлена вся кривая: состояние на начало полугодия в сравнении с концом.

ЗапросСемь сроков погашения: доходность на начало и конец полугодия, а также изменение
Срок погашенияНач. (%)Кон. (%)Изменение (б.п.)
1-month3.723.7-2
3-month3.653.8722
1-year3.473.9851
2-year3.474.1467
5-year3.744.1945
10-year4.194.4425
30-year4.864.915
Точный SQL-код для каждого числа
SELECT maturity, start_pct, end_pct, round((end_pct - start_pct) * 100, 0) AS change_bp FROM (
    SELECT '1-month' AS maturity, (SELECT round(argMin(yield_1_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_month)) AS start_pct, (SELECT round(argMax(yield_1_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_month)) AS end_pct, 1 AS o
    UNION ALL SELECT '3-month', (SELECT round(argMin(yield_3_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_3_month)), (SELECT round(argMax(yield_3_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_3_month)), 2
    UNION ALL SELECT '1-year', (SELECT round(argMin(yield_1_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_year)), (SELECT round(argMax(yield_1_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_year)), 3
    UNION ALL SELECT '2-year', (SELECT round(argMin(yield_2_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_2_year)), (SELECT round(argMax(yield_2_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_2_year)), 4
    UNION ALL SELECT '5-year', (SELECT round(argMin(yield_5_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_5_year)), (SELECT round(argMax(yield_5_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_5_year)), 5
    UNION ALL SELECT '10-year', (SELECT round(argMin(yield_10_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_10_year)), (SELECT round(argMax(yield_10_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_10_year)), 6
    UNION ALL SELECT '30-year', (SELECT round(argMin(yield_30_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_30_year)), (SELECT round(argMax(yield_30_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_30_year)), 7
) ORDER BY o
Запустите сами

Если прочитать столбец изменений сверху вниз, «скручивание» становится очевидным: доходность одномесячных бумаг изменилась на -2 базисных пунктов за шесть месяцев, в то время как двухлетние выросли на 67, а тридцатилетние — всего на 5. Параллельный сдвиг предполагает движение всех сроков погашения в одном направлении; в этом полугодии движение затронуло середину кривой, тогда как оба конца остались зафиксированными: краткосрочные ставки привязаны к уровню политики регулятора, а долгосрочные ставки почти не подверглись переоценке.

Как это повлияло на наклон

ЗапросНаклон кривой: значения на начало, конец, минимум; спред не инвертировался в течение полугодия
Нач. (б.п.)Кон. (б.п.)Мин. (б.п.)Сделки
723027124
Точный SQL-код для каждого числа
SELECT
    round((argMin(yield_10_year - yield_2_year, date)) * 100, 0) AS start_bp,
    round((argMax(yield_10_year - yield_2_year, date)) * 100, 0) AS end_bp,
    round(min((yield_10_year - yield_2_year)) * 100, 0) AS min_bp,
    count() AS prints
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
  AND isNotNull(yield_10_year) AND isNotNull(yield_2_year)
Запустите сами

Более быстрый рост доходности на коротком конце кривой по сравнению с длинным — это и есть суть сглаживания: спред 2s10s снизился с 72 до 30 базисных пунктов за 124 сделок, при этом минимальное значение за полугодие составило 27, поэтому кривая сгладилась, так и не перейдя в состояние инверсии. Означает ли сглаживание кривой что-либо для будущих событий — это вопрос прогнозирования, а данная таблица прогнозов не содержит.

ЗапросСпред 2s10s: все значения за полугодие
124 rows (showing 20)
ДСпред 2s10s (б.п.)
2026-01-0272
2026-01-0571
2026-01-0671
2026-01-0768
2026-01-0870
2026-01-0964
2026-01-1265
2026-01-1365
2026-01-1464
2026-01-1561
2026-01-1665
2026-01-2070
2026-01-2166
2026-01-2265
2026-01-2364
2026-01-2666
2026-01-2771
2026-01-2870
2026-01-2971
2026-01-3074
Точный SQL-код для каждого числа
SELECT toString(date) AS d, round((yield_10_year - yield_2_year) * 100, 0) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
  AND isNotNull(yield_10_year) AND isNotNull(yield_2_year)
ORDER BY date
Запустите сами

Дневные данные показывают, что сглаживание не было разовым событием, а происходило постепенно: 124 сделок фиксировали снижение на протяжении полугодия, при этом спред начал год на уровне 72 базисных пунктов, а завершил его на отметке 30.

Секторы: дисперсия, скрытая индексом

Какие именно сегменты рынка обеспечили доходность за полугодие? Одиннадцать отраслевых ETF SPDR, разделенных по полугодиям и кварталам, в одном запросе.

ЗапросОдиннадцать секторных ETF: доходность за H1 2026, разбивка по Q1 и Q2, объем торгов в долларах за H1
tickerДоходность H1 (%)Доходность Q1 (%)Доходность Q2 (%)H1 ($ млрд)
XLB11.79.8186.8
XLC-9.3-6.2-3.790.3
XLE18.836.9-11316.2
XLF-2.2-9.97.7271.7
XLI193.913.3222.8
XLK30.8-8.742286
XLP6.95.51.7163.7
XLRE9.11.37.738.4
XLU5.77-1128.7
XLV2.5-5.47.8218.8
XLY-2.3-9.36.9132.5
Точный SQL-код для каждого числа
SELECT ticker,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
    round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS h1_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 >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY ticker
Запустите сами

Главная история — это дисперсия: сектор технологий (XLK) завершил полугодие ростом на 30.8%, показав 42% во втором квартале, тогда как сектор коммуникационных услуг (XLC) закончил период с результатом -9.3%. Разрыв между лучшим и худшим сектором за шесть месяцев составил около сорока процентных пунктов. Владение «рынком» означало владение обоими этими полюсами. Энергетический сектор (XLE) служит предостережением для тех, кто смотрит на длинные временные интервалы: он показал уверенные 18.8% за полугодие, что сложилось из 36.9% в ПЕРВОМ квартале и -11% во втором. Это был самый сильный крупный сектор рынка в квартале, когда индексы падали, и один из самых слабых в квартале, когда они восстанавливались. Финансовый сектор (XLF) прошел тот же путь в обратном направлении: -9.9% в первом квартале и 7.7% во втором. Единый показатель за первое полугодие сглаживает оба этих движения; разделение по кварталам дает более объективную картину.

Стоимость торговли в каждом секторе

Таблицы доходности встречаются повсеместно, в отличие от лент котировок. Данная панель измеряет медианный спред bid-ask для каждого отраслевого ETF в течение одной полной репрезентативной сессии из 123 сессий за полугодие. В качестве такой сессии выбрано 29 июня, данные по которому приведены здесь на основе каждого обновления NBBO в этот день.

ЗапросМедианный котируемый спред по секторным ETF, одна репрезентативная сессия (29 июня 2026 г.), основная торговая сессия
tickerМед. спред (б.п.)Обновл. котировок (млн)Отклонено
XLV0.622.11150
XLY0.861.1921
XLC0.931.1282
XLI1.11.3812
XLK1.12.7255
XLP1.180.7633
XLE1.850.591
XLF1.860.382
XLB1.970.410
XLU2.180.296
XLRE2.230.280
Точный SQL-код для каждого числа
SELECT ticker,
    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), 2) 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 IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
  AND sip_timestamp >= toDateTime64('2026-06-29 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-06-29 20:00:00', 9)
GROUP BY ticker
ORDER BY med_spread_bps
Запустите сами

Каждая из одиннадцати котировок составляет несколько базисных пунктов или меньше: самая дешевая — 0.62 б.п. (XLV), самая широкая — 2.23 б.п. (XLRE). В этом и заключается практический смысл утверждения о том, что «отраслевые ETF ликвидны»: стоимость входа в любую отраслевую позицию измеряется сотыми долями процента. Для сравнения с отдельными акциями, в глубоком анализе за 29 июня спред низколиквидного инструмента в ту же сессию оценивается в сотни раз выше.

Ширина рынка за полугодие

Анализ ширины рынка на полугодовом отрезке представлен в двух масштабах. Крупный масштаб: SPY показал 64 сессий роста против 59 сессий снижения за 123 торговых дней полугодия. Это почти равновероятное распределение дней внутри периода с уверенной положительной динамикой, что характерно для постепенного роста котировок. Детальный анализ по всем тикерам проводится в месячном масштабе: соотношение растущих и падающих акций в июне приведено в июньском обзоре (там количество упавших тикеров превысило число выросших), а данные на конец квартала — в обзоре за второй квартал. Единый скан растущих акций по всему рынку за шесть месяцев превышает лимит запросов, установленный для этой страницы; это ограничение раскрывается здесь открыто, а не через скрытое сужение выборки.

ЗапросКоличество сессий SPY с ростом и падением за полугодие
Рост. сессииПад. сессииНейтр. сессииВсего сессий
64590123
Точный 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-01-01 00:00:00')
      AND window_start < toDateTime('2026-07-01 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 d
)
Запустите сами

Динамика рынка опционов по месяцам

Что показывает полугодовой срез: как менялась активность на рынке опционов. Каждый график ниже представляет собой скан общего объема торгов за месяц, совокупный объем контрактов и долю сделок, совершенных в день истечения срока действия (0DTE). Статистика такова: объем торгов вырос с 1316.1 миллионов контрактов в январе до 1477.9 миллионов в июне, который стал самым активным месяцем полугодия. Доля контрактов с истечением в день сделки увеличилась с 26.5% в январе до 34.3% в июне, что стало максимальным показателем за полугодие. Треть июньского объема торгов опционами пришлась на контракты, истекающие в тот же день.

ЗапросЯнварь: общий объем опционных контрактов и доля контрактов с экспирацией в день открытия (0DTE)
Контракты (млн)0DTE (%)Сессии
1316.126.520
Точный 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-01-01 00:00:00')
  AND window_start < toDateTime('2026-02-01 00:00:00')
Запустите сами
ЗапросФевраль: общий объем опционных контрактов и доля контрактов с экспирацией в день открытия (0DTE)
Контракты (млн)0DTE (%)Сессии
1262.32719
Точный 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-02-01 00:00:00')
  AND window_start < toDateTime('2026-03-01 00:00:00')
Запустите сами
ЗапросМарт: общий объем опционных контрактов и доля контрактов с экспирацией в день открытия (0DTE)
Контракты (млн)0DTE (%)Сессии
1442.629.522
Точный 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-03-01 00:00:00')
  AND window_start < toDateTime('2026-04-01 00:00:00')
Запустите сами
ЗапросАпрель: общий объем опционных контрактов и доля контрактов с экспирацией в день открытия (0DTE)
Контракты (млн)0DTE (%)Сессии
1386.930.321
Точный 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-04-01 00:00:00')
  AND window_start < toDateTime('2026-05-01 00:00:00')
Запустите сами
ЗапросМай: общий объем опционных контрактов и доля контрактов с экспирацией в день открытия (0DTE)
Контракты (млн)0DTE (%)Сессии
1394.630.320
Точный 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')
Запустите сами
ЗапросИюнь: общий объем опционных контрактов и доля контрактов с экспирацией в день открытия (0DTE)
Контракты (млн)0DTE (%)Сессии
1477.934.321
Точный 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')
Запустите сами

Стоимость совершения сделок, ежемесячная выборка

ЗапросМедианный котируемый спред SPY: выборка по вторым средам каждого месяца, все обновления NBBO
СессияМед. спред (б.п.)Обновл. котировок (млн)Отклонено
2026-01-140.14510.651410
2026-02-110.14412.391365
2026-03-110.2957.595639
2026-04-150.2862.121047
2026-05-130.272.64661
2026-06-100.4097.4812382
Точный 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-01-14 14:30:00', 9) AND sip_timestamp < toDateTime64('2026-01-14 21:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-02-11 14:30:00', 9) AND sip_timestamp < toDateTime64('2026-02-11 21:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-03-11 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-03-11 20:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-04-15 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-04-15 20:00:00', 9))
    OR (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.145 б.п. в январской выборке, 0.144 в февральской, примерно в два раза больше в весенних выборках и 0.409 б.п. в июньской, что является максимальным значением из шести. Основание для раскрытия: это данные по отдельным сессиям (вторая среда каждого месяца), а не медианные значения за весь месяц, так как полный анализ ленты котировок за шесть месяцев превышает лимит запросов для этой страницы. Даты выборки указаны на панели, невалидные котировки учитываются в статистике, а не исключаются без уведомления.

Значимые бумаги полугодия

Критерий значимости — не редакционный выбор, а объективные показатели: ниже представлен список лидеров по объему торгов в долларовом выражении за квартал. Данные пересчитаны для обеспечения точности отчета, а для каждой бумаги, по которой проводился углубленный анализ, добавлена ссылка.

ЗапросОбъем торгов в долларах за Q2 (основная сессия), весь рынок (исключая повторы тикеров до верификации)
ticker$ млрд% от лидера
MU2047.5100
SPY203299.2
QQQ1658.581
NVDA1591.877.7
TSLA1198.858.5
SNDK98047.9
AMD755.236.9
INTC712.334.8
Точный 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-04-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 8
Запустите сами

MU опередил SPY по объему торгов во втором квартале (2047.5 миллиардов против 2032 миллиардов); эти же данные приведены в обзоре второго квартала. Динамика шести отдельных акций из этого списка за полугодие:

ЗапросДоходность лидеров за полугодие и Q2, объем торгов за полугодие (фильтр по тикерам)
tickerДоходность H1 (%)Доходность Q2 (%)H1 ($ млрд)
AMD165.3179.81185.9
INTC269.3210969
MU290229.92862.1
NVDA5.213.53287.9
SNDK830.1248.41592.7
TSLA-8.2112577.1
Точный SQL-код для каждого числа
SELECT ticker,
    round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, window_start >= toDateTime('2026-04-01 00:00:00') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
    round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS h1_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'NVDA', 'TSLA', 'SNDK', 'AMD', 'INTC')
  AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY ticker
Запустите сами

Сектор памяти и полупроводников доминирует в этом полугодии: доходность SNDK за шесть месяцев составила 830.1%, MU — 290% (подробный потиковый разбор июня доступен здесь), INTC — 269.3%. NVDA, лидер по обороту в этом списке с показателем 3287.9 миллиардов за полгода, принесла 5.2% — это однозначный показатель на фоне кратного роста бумаг сектора памяти; июньский глубокий анализ демонстрирует это расхождение по сессиям. TSLA — единственный аутсайдер списка с результатом -8.2%. Июньское мега-размещение торгуется под повторно использованным тикером и исключено из сканирования лидеров до завершения верификации эмитента; первый месяц торгов разобран в отдельной публикации. Основа: список лидеров сформирован по объему торгов в долларах в основную сессию второго квартала (сканирование выше); столбцы доходности отражают результаты за полугодие, от цены открытия первой основной сессии до цены закрытия последней основной сессии.

Волна IPO за полугодие: помесячная динамика

ЗапросКоличество новых листингов по месяцам за полугодие
мЛистинги
2026-01-0136
2026-02-0147
2026-03-0117
2026-04-0130
2026-05-0140
2026-06-0135
Точный SQL-код для каждого числа
SELECT toString(toStartOfMonth(listing_date)) AS m, count() AS listings
FROM global_markets.stocks_ipos
WHERE listing_date >= toDate('2026-01-01') AND listing_date <= toDate('2026-06-30')
GROUP BY m
ORDER BY m
Запустите сами

Волна размещений была неравномерной и пришлась преимущественно на начало периода: февраль стал самым активным месяцем полугодия с 47 листингами, а март — самым спокойным с 17. Знаковое июньское мегаразмещение состоялось в месяц с обычным для рынка объемом (35 листингов).

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

ЗапросКорпоративный календарь H1 2026 (раскрыты все три разрыва в индексах отчетности на конец месяца)
Экс-дивидендыСплитыIPOОтчетность H1Отчетность 31 марОтчетность 30 апрОтчетность 30 июн
28356830205471377553431
Точный SQL-код для каждого числа
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= toDate('2026-01-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-01-01') AND execution_date <= toDate('2026-06-30')) AS splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= toDate('2026-01-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-01-01') AND filing_date <= toDate('2026-06-30')) AS h1_filings,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-03-31')) AS filings_mar31,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-04-30')) AS filings_apr30,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS filings_jun30
Запустите сами

В первом полугодии на биржу вышли 205 компаний. Это волна размещений, крупнейший июньский дебют которой имеет собственный разбор по каждой квитанции, наряду с 830 сплитами и 28356 событиями ex-dividend. Для масштаба: это более одного нового листинга на каждую торговую сессию в течение полугодия. Общее число заявок содержит тройное раскрытие: индекс SEC почти пуст на конец каждого месяца полугодия, последний календарный день которого приходился на будний день (55 заявок проиндексировано 31 марта, 34 — 30 апреля и 31 — 30 июня, против тысяч в соседние дни), поэтому показатели заявок за полугодие занижены, пока лента не заполнится данными, разрыв на конец месяца имеет собственную диагностическую заметку.

Результаты торговой сессии

Запрос123 торговые сессии в полугодии, верифицировано по данным ленты
Сессии H1
123
Точный 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-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')) AS h1_sessions
Запустите сами

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

Полные примечания к данным
  • Данные по short interest приведены на дату расчётов 15 июня (на момент формирования отчёта; ожидаются данные за конец июня, полная информация будет доступна в июньском обзоре; публикация обновится автоматически после поступления данных).
  • Три отчётных дня на конец месяца в 2026 году практически пусты (31 марта, 30 апреля, 30 июня — все те концы месяцев, чей последний календарный день пришёлся на будни); информация об этом приведена вместе с показателями, причины разобраны в заметке о разрывах в данных на конец месяца. В предыдущие годы на эти даты приходились тысячи отчётов, поэтому речь идёт о техническом сбое в потоке данных, а не об отсутствии отчётности.
  • Лидеры рынка за полугодие ограничены в выборке: шестимесячное сканирование всего рынка превышает лимит запросов, установленный для данной страницы, поэтому список значимых имён сформирован на основе квартального рейтинга, представленного в тексте. Доходность за полугодие рассчитана для этого фиксированного набора активов, база расчёта указана в соответствующих разделах. Полные таблицы лидеров по соответствующим масштабам приведены в обзорах за второй квартал и июнь.
  • Ширина рынка в целом за полугодие также ограничена, представлено распределение по дням; данные в разрезе тикеров доступны на месячном и квартальном уровнях, ссылки на них приведены в разделе о ширине рынка.
  • Исторический ряд QQQ короче, чем у SPY: в течение нескольких лет фонд торговался под другим основным тикером; фильтр по количеству торговых сессий исключает эти годы (количество сессий по годам приведено в таблице).
  • Шесть панелей опционов представляют собой ежемесячные сканирования всего объёма торгов, а тренд спредов демонстрирует выборку по одной сессии в месяц; оба показателя получены пакетной обработкой, базы выборок указаны в тексте.
  • Анализ микроструктуры рынка представлен в глубоком обзоре от 29 июня.

Методология

  • Период охватывает интервал с первого января по тридцатое июня две тысячи двадцать шестого года, 123 торговых сессий, верифицированных по наблюдаемым барам. Доходность рассчитывается от цены открытия основной торговой сессии до цены закрытия основной торговой сессии в рамках каждого окна; все показатели вычислены с помощью одних и тех же запросов.
  • Исторические сравнения пересчитываются в режиме реального времени на основе полной минутной истории на момент генерации, а не считываются из сохраненных значений. Верификация глубины данных: самая ранняя дата минутного бара в используемом здесь представлении с задержкой совпадает с датой в базовой таблице (сентябрь две тысячи третьего года), что было проверено при составлении материала, поэтому первым полным полугодием в архиве является первое полугодие две тысячи четвертого года. Каждый запрос к истории фиксирует верхнюю границу на момент окончания данного периода (набор для сравнения не расширяется при добавлении данных за последующие годы) и применяет ограничение по минимальному количеству сессий с учетом ежегодных показателей.
  • Временные метки хранятся в формате UTC с использованием исходных границ UTC. Многолетние исторические блоки фильтруют данные основной торговой сессии по восточному времени (с девяти тридцати до пятнадцати пятидесяти девяти, конвертация выполняется для каждой строки, что является единственным надежным методом учета перехода на летнее время на протяжении десятилетий); блоки с одним окном в диапазонах только по EDT используют эквивалентный диапазон в исходном UTC. Оба метода указаны здесь.
  • Генерация выполняется через защищенный путь доступа только для чтения; публичная страница не делает запросов к «живым» данным. Состояние хранилища данных на пятое июля две тысячи двадцать шестого года.

Это первое издание регулярного полугодового обзора; полнолетнее издание выйдет в январе. Детали по кварталам: второй квартал две тысячи двадцать шестого года. Макроэкономические релизы, на фоне которых велись торги в данном полугодии, представлены в разделе макроэкономическая картина.

#market recap#semiannual#rates#ipos#yield curve