Strasmore Research
Market Recap

Огляд ринку за тиждень червня 2026

Matt ConnorBy Matt Connor Updated 2026-07-24

Останній тиждень червня склався з чотирьох торгових сесій: ринок працював з понеділка 29 червня по четвер 2 липня, а п'ятниця 3 липня була вихідним днем через День Незалежності — оскільки 4 липня припало на суботу, вихідний було перенесено на попередню п'ятницю. Дані щодо закриття ринку та інші показники наведені в панелях. Найважливіший показник тижня відображено в таблиці обсягів: один виробник чипів пам'яті провів через біржу $190.2 мільярдів за чотири дні — це на пів більше, ніж обсяг самого SPY. Кожне число на цій сторінці є результатом збереженого запиту; розгорніть будь-яку панель, щоб побачити точний SQL-запит.

Тиждень на табло

Чи відшкодував ринок падіння попереднього тижня, чи продовжив його? Дані свідчать про відновлення: ця панель обчислює тижневу зміну кожного індексу ETF та, для порівняння, зміну за попередній тиждень — обидва показники отримані з одного запиту.

ЗапитТижнева динаміка: чотири індексні ETF відносно закриття минулої п'ятниці
Точний SQL-код для кожного числа
SELECT ticker,
    round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS prior_friday_close,
    round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS week_close,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') 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-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS week_change_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') 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-06-18') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS prior_week_change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
  AND window_start >= toDateTime('2026-06-15 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY ticker
ORDER BY ticker

SPY завершив тиждень на рівні $744.8, що на 2.2% більше за показник минулої п'ятниці — після -2.3% у попередній тиждень. QQQ зріс на 1% після -4.6% у попередньому тижні, DIA приріс на 2%, а IWM закрився на рівні 297.530% за тиждень, залишившись без змін, тоді як індекси великої капіталізації продемонстрували зростання.

Тиждень у порівнянні з минулим роком

ЗапитПоточний тиждень відносно попереднього року: SPY, відкриття-закриття за тиждень (ранг 1 = найкращий; короткі тижні виключено)
Точний SQL-код для кожного числа
SELECT round(anyIf(ret, wk = toDate('2026-06-29')), 2) AS week_2026_pct,
       arrayCount(x -> x > anyIf(ret, wk = toDate('2026-06-29')), groupArrayIf(ret, wk != toDate('2026-06-29'))) + 1 AS rank_best,
       count() AS weeks_compared,
       toString(min(wk)) AS first_week,
       anyIf(sessions, wk = toDate('2026-06-29')) 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,
           (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-06-29 00:00:00')
      AND window_start < toDateTime('2026-07-03 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 >= 3
)

Показник зміни ціни від відкриття до закриття за тиждень — від першої регулярної сесії понеділка до останньої сесії четверга — дещо відрізняється від наведеного вище результату за закриттям п'ятниці. Згідно з даними, тиждень індексу SPY займає 14 місце серед минулих 53 тижнів (1 — найкращий результат): середня позиція за останній рік, що включав як розпродаж, так і відновлення. Тижні, що мають менше трьох торгових сесій, виключені з розрахунку; цей тиждень мав 4 сесій. Історичний контекст залежить від обраного періоду — підсумки за місяць, квартал та півріччя порівнюють відповідні періоди з усіма даними щохвилинного таймфрейму.

Чотири сесії, потім вихідний

П'ятиденний торговий тиждень є лише припущенням, а не фактом — цей тиждень склався з чотирьох сесій. Панель звітності підтверджує закриття за даними котирувань: нуль барів SPY за липень 3 проти 1560 регулярних барів протягом чотирьох торгових днів.

ЗапитРезультати сесій: чотири торгові дні, закриття п'ятниці, підтверджено за даними торгів
Точний 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-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')) AS sessions_in_week,
    (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-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')) AS regular_bars_week,
    (SELECT count() FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-03 00:00:00') AND window_start < toDateTime('2026-07-04 00:00:00')) AS jul3_spy_bars
ЗапитПо сесіях: ціна закриття SPY, зміна та загальний обсяг за день
Точний 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,
    round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
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-06-26 00:00:00') AND window_start < toDateTime('2026-07-03 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-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY et_date
ORDER BY et_date

Усі чотири сесії проходили за повним регулярним графіком — 1560 регулярних барів складаються рівно з чотирьох 390-хвилинних сесій. Тиждень закрився фактично без змін (-0.1%) 2026-07-02 перед вихідним — основний приріст за тиждень було забезпечено протягом перших трьох сесій.

Ширина ринку: кількість активів, що зросли

Зростання одного індексу може приховувати падіння всього ринку. У цій панелі враховано кожен тікер, ціна закриття якого змінилася протягом тижня; перелік виключених активів наведено окремо.

ЗапитКількість зростаючих та падаючих активів за тиждень із фільтром ліквідності
Точний 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,
    count() AS tickers_with_both_closes
FROM (
    SELECT ticker,
        argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') 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-06-26') 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-29')) < 1e6 AS dropped
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= toDateTime('2026-06-26 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
    GROUP BY ticker
    HAVING countIf(toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') 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-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) > 0
)

5047 тікерів зросли за тиждень проти 3525, що впали (39 без змін) — зростання було широким, а не лише на рівні індексу. Фільтр ліквідності виключив 3163 тікерів, обсяг торгів якими протягом тижня становив менше $1M; вони враховані в цьому звіті, а не приховані.

Лідери ринку: одна акція перевершила показники ETF

ЗапитОбсяг у доларах у регулярні години, тиждень червня 29 (один символ виключено до підтвердження)
Точний 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-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
  AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
  AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_bn DESC
LIMIT 8

MU очолила весь ринок з обсягом торгів у звичайні години на суму $190.2 мільярдів — SPY, найбільший ETF, склав 66.4% від цього обсягу. Той факт, що одна компанія торгувала обсягами, більшими за стандартний індексний фонд ринку протягом цілого тижня, є головним показником тижня; на цій сторінці наведено розмір потоку, а не його причини. База: звичайні години 29 червня–2 липня; один лістинг за червень з повторним символом виключено до підтвердження даних про компанію — детальний аналіз доступний у окремому звіті.

Святкові дні змінили графік щотижневих експірацій

Куди переноситься щотижнева експірація у п'ятницю, якщо п'ятниця є вихідним днем? Ринок опціонів дає пряму відповідь: ця панель аналізує дату експірації кожного контракту, що торгувався протягом тижня, і ранжує їх.

ЗапитКонтракти, що торгувалися протягом тижня, за датою експірації (одноразове сканування; пакетна генерація)
Точний SQL-код для кожного числа
SELECT concat('20', substring(expiry_raw, 1, 2), '-', substring(expiry_raw, 3, 2), '-', substring(expiry_raw, 5, 2)) AS expiry,
    round(sum(size) / 1e6, 1) AS contracts_m,
    round(100 * sum(size) / max(sum(size)) OVER (), 1) AS pct_of_biggest
FROM (
    SELECT substring(ticker, length(ticker) - 14, 6) AS expiry_raw, size
    FROM global_markets.options_trades
    WHERE sip_timestamp >= toDateTime64('2026-06-29 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-03 00:00:00', 9)
)
GROUP BY expiry
ORDER BY contracts_m DESC
LIMIT 6

Найбільш активною експірацією тижня стала 2026-07-02 — четвер — обсягом 74.1 мільйонів контрактів, що на 42.2% більше за наступну дату. Оскільки третій липня був вихідним, щотижнева експірація перенеслася з п'ятниці на четвер; щоденні експірації з понеділка по середу та місячна експірація 17 липня доповнюють таблицю. Дати експірації розраховуються за символом OCC кожного контракту (власна колонка експірації в ленті даних є ненадійною); механіку таких тижнів експірації можна дізнатися в поясненні щодо святкових днів.

Ставки: зростання доходності 10-річних облігацій

ЗапитДохідність Treasury протягом тижня (дані за липень 2 ще не завантажені)
Точний 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-26') AND date <= toDate('2026-07-02')
ORDER BY date

Доходність 10-річних облігацій зросла з 4.38% минулої п'ятниці до 4.48% станом на 2026-07-01, тоді як спред 2s10s стабілізувався на рівні 31 базисних пунктів. Примітка: дані щодо доходності 2-річних облігацій за липень ще не були опрацьовані на момент створення цієї сторінки (4 рядків станом на липень 1) — панель відобразить їх під час наступного оновлення.

Календар: завершення кварталу та пропуск дня подання звітності

ЗапитКорпоративний календар тижня — із відображенням розриву індексу податкових звітів червня 30
Точний SQL-код для кожного числа
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= toDate('2026-06-29') AND ex_dividend_date <= toDate('2026-07-02')) AS ex_div_events,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= toDate('2026-06-29') AND execution_date <= toDate('2026-07-02')) AS splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= toDate('2026-06-29') AND listing_date <= toDate('2026-07-02')) AS ipos,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-29')) AS filings_jun29,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS filings_jun30,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-07-01')) AS filings_jul1,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-07-02')) AS filings_jul2,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= toDateTime('2026-06-29 00:00:00') AND published_utc < toDateTime('2026-07-03 00:00:00')) AS news_articles

На межі кварталів тиждень охопив події 2217 ex-dividend, спліти 48 та нові лістинги 7. У стовпцях звітності виявлено помилку в якості даних: індекс подання SEC показує 4439 документів 29 червня та 4282 1 липня, проте лише 31 за 30 червня — останній день кварталу. У аналогічні дні наприкінці кварталу минулого року було подано тисячі документів. Пропуск виник у каналі передачі даних, а не через відсутність реальних подань компаній; будь-яка кількість подань за червень або Q2, що включає 30 червня, є заниженою, доки індекс не проведе перерахунок. Це частина закономірності завершення місяців у 2026 році — діагностична примітка містить підтвердження — опублікована тут, а також у підсумках за червень та Q2.

Короткі позиції: один неповний файл та три повних

ЗапитПозабіркова короткі продажі FINRA за сесіями: покриття та позначені короткі акції
Точний SQL-код для кожного числа
SELECT toString(date) AS d,
    uniqExact(ticker) AS tickers_on_file,
    max(ticker) AS alphabetical_end,
    round(100 * sum(toFloat64(short_volume)) / sum(toFloat64(total_volume)), 1) AS marked_short_pct
FROM (
    SELECT date, ticker, any(short_volume) AS short_volume, any(total_volume) AS total_volume
    FROM global_markets.stocks_short_volume
    WHERE date >= toDate('2026-06-29') AND date <= toDate('2026-07-02')
    GROUP BY date, ticker
)
GROUP BY date
ORDER BY date

Позабіржовий обсяг був зафіксований на низькому рівні — приблизно 48.8% середини тижня. Це стандартні операції маркетмейкерів, а не сигнал до squeeze. У колонках покриття вказано застереження: файл за 29 червня є неповним для всього ринку (5489 тікерів закінчуються на "SSUS" проти приблизно 15 000, що закінчуються на "ZYME" у повні дні), тому показник 45.8% за 29 червня розрахований на основі часткового файлу. Детальний аналіз за 29 червня містить повне дослідження всього ринку.

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

Повні примітки до даних
  • 3 липня був ПОВНИЙ вихідний, а не раннє закриття. 4 липня 2026 року припало на суботу; NYSE та Nasdaq святкували вихідний у п'ятницю, 3 липня — 0 бари SPY були зафіксовані в цей день. Примітка до набору даних, виявлена під час оновлення сторінки: таблиця календарів бірж є динамічним потоком майбутніх свят, і рядок за 3 липня зник з неї після закінчення свята (він був присутній у першій редакції цієї сторінки), тому відсутність даних через закриття є нульовим баром у стрічці; механізм описано в поясненні щодо свят.
  • Short interest розраховано станом на розрахункову дату 15 червня. Бімісячна розрахункова дата наприкінці червня ще не була опублікована на момент створення цієї сторінки; тут вона не використовується, а повна інформація міститься в огляді за червень. Цей пост буде оновлено після публікації даних.
  • Розрив індексу звітности за 30 червня розкрито вище; дані Treasury за 2 липня очікують на завантаження.
  • Файл FINRA щодо коротких обсягів за 29 червня скорочено по всьому ринку; його коефіцієнт показано разом із відповідним охопленням.
  • Виключення лідера за обсягами: один лістинг червня торгується під повторно використаним символом і виключений з таблиці лідерів до підтвердження юридичної особи (докази містяться в окремому пості).

Методологія

  • Період охоплює з 29 червня по 2 липня 2026 року — чотири торгові сесії тижня; 3 липня був вихідний день на ринку. Межі сесій підтверджуються за фактичними барами, а не припускаються (датасет календарів бірж містить лише майбутні вихідні — див. примітку до даних).
  • Часові мітки зберігаються в UTC і фільтруються за необробленими межами UTC; регулярні години на цьому тижні (EDT) тривають з 13:30 до 20:00 UTC. Закриття — це остання хвилинна свічка регулярних годин; обсяг у доларах — це добуток ціни закриття хвилини на обсяг хвилини, підсумований за регулярні години.
  • Показники порівняння тиждень до тижня розраховуються відносно закриття попередньої п'ятниці, що обчислюється заново в тому ж запиті, що й поточний тиждень — значення ніколи не зчитуються зі збережених даних. Ранг за останній рік перераховується щотижня однаковим чином (регулярні години за часом Eastern, захист мінімальної сесії, верхня межа зафіксована на кінці цього тижня).
  • Генерація здійснюється через обмежений доступ для читання; публічна сторінка ніколи не робить запитів до live-даних. Стан сховища станом на 5 липня 2026 року.

Це перше видання регулярного щотижневого звіту — наступне видання охоплюватиме період з 6 по 10 липня і буде посилатися на цей матеріал. Щоденний звіт за 29 червня містить детальний аналіз понеділка.