Итоги рынка за 29 июня 2026 года в цифрах
Обзор рынка за 29 июня 2026 года: рост индексов, разброс по секторам, динамика акций и показатели 0DTE опционов, котировки и процентные ставки.
Понедельник, 29 июня 2026 года, был днем роста с ограниченным кругом лидеров: QQQ вырос на 2.57%, SPY на 1.62%, 3968 ликвидных бумаг закрылись в плюсе против 2327 падающих активов — при этом почти половина отраслевых корзин закрылась в красной зоне. Все данные извлечены из сохраненного запроса; для просмотра SQL-кода разверните любую панель. Потиковая детализация той же сессии: подробный анализ микроструктуры за 29 июня.
Сводные показатели
Каждое изменение сравнивается по минутным барам последней регулярной сессии 29 июня и пятницы, 26 июня.
Точный SQL-код для каждого числа
WITH friday AS (
SELECT ticker, argMax(close, window_start) AS friday_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00'
GROUP BY ticker
),
monday AS (
SELECT ticker,
argMin(open, window_start) AS monday_open,
argMax(close, window_start) AS monday_close,
max(high) AS day_high,
min(low) AS day_low,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_traded_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
GROUP BY ticker
)
SELECT
m.ticker AS ticker,
toFloat64(f.friday_close) AS jun26_close,
toFloat64(m.monday_open) AS jun29_open,
toFloat64(m.monday_close) AS jun29_close,
round((toFloat64(m.monday_close) / toFloat64(f.friday_close) - 1) * 100, 2) AS pct_change,
round(100 * (toFloat64(m.monday_close) / toFloat64(f.friday_close) - 1) / max(toFloat64(m.monday_close) / toFloat64(f.friday_close) - 1) OVER (), 1) AS pct_of_best_change,
toFloat64(m.day_high) AS day_high,
toFloat64(m.day_low) AS day_low,
m.shares_traded_m AS shares_traded_m
FROM monday m
JOIN friday f ON m.ticker = f.ticker
ORDER BY m.tickerSPY открылся по цене $736.525 против закрытия пятницы в $729.09 и завершил торги на уровне $740.88, что ниже дневного максимума в $741.56. Рост QQQ на 2.57% при показателе DIA в 0.81% указывает на преобладание секторов роста и технологий; акции компаний с малой капитализацией IWM выросли на 0.45%.
Был ли этот день необычным?
Процентное изменение мало о чем говорит без эталона для сравнения. В этой панели данные за 29 июня ранжируются относительно показателей за прошедший месяц по абсолютному значению изменения цены закрытия.
Точный SQL-код для каждого числа
SELECT
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-06-29')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-06-29'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-06-29'))) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ') AS qqq_sessions_compared,
round(max(if(ticker = 'QQQ', abs(cc_pct), 0)), 2) AS qqq_biggest_move_of_month_pct,
countIf(ticker = 'QQQ' AND cc_pct > 0) AS qqq_up_sessions,
round(anyIf(cc_pct, ticker = 'SPY' AND d = toDate('2026-06-29')), 2) AS spy_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'SPY' AND d = toDate('2026-06-29'))), groupArrayIf(abs(cc_pct), ticker = 'SPY' AND d != toDate('2026-06-29'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-06-29')), 2) AS spy_open_to_close_pct,
concat(monthName(min(d)), ' ', toString(toDayOfMonth(min(d))), ', ', toString(toYear(min(d)))) AS first_session
FROM (
SELECT ticker, d,
(close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct,
oc_pct
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS close_px,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-05-28 00:00:00')
AND window_start < toDateTime('2026-06-30 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
)
)
WHERE isFinite(cc_pct)Значительное, но не рекордное: изменение QQQ на 2.57% занимает 5 место среди 21 сессий с May 29, 2026, при этом крупнейшее разовое изменение за месяц составило 4.76%; показатель SPY на 1.62% занимает 4 место из 21. Важно, за счет чего произошло движение: рост SPY от открытия до закрытия составил всего 0.59%, поэтому основная часть прибыли была получена за счет ночного гэпа, до появления первой свечи в обычные торговые часы. QQQ закрывался ростом в 10 таких сессий: месяц показал результат, сопоставимый с подбрасыванием монеты.
Широта рынка: каков был охват ралли?
Аванс — это тикер, цена закрытия которого в понедельник выше цены закрытия пятницы, при условии, что объем торгов составляет не менее $1 миллиона. Этот фильтр исключает 5,108 из 11,475 тикеров, торгующихся в обе сессии.
Точный SQL-код для каждого числа
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')) AS friday_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')) AS monday_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-29 00:00:00') AS monday_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
GROUP BY ticker
)
SELECT
countIf(monday_close > friday_close AND monday_dollar_volume >= 1000000) AS advancers,
countIf(monday_close < friday_close AND monday_dollar_volume >= 1000000) AS decliners,
countIf(monday_close = friday_close AND monday_dollar_volume >= 1000000) AS unchanged,
countIf(monday_dollar_volume >= 1000000) AS liquid_tickers,
count() AS tickers_traded_both_sessions,
reverse(arrayStringConcat(extractAll(reverse(toString(count())), '[0-9]{1,3}'), ',')) AS tickers_traded_both_sessions_label,
count() - countIf(monday_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
reverse(arrayStringConcat(extractAll(reverse(toString(count() - countIf(monday_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS dropped_by_liquidity_filter_label,
round(100.0 * countIf(monday_close > friday_close AND monday_dollar_volume >= 1000000)
/ countIf(monday_dollar_volume >= 1000000), 1) AS advancer_pct
FROM per_ticker
WHERE friday_close > 0 AND monday_close > 03968 авансов, 2327 деклайнеров, 72 без изменений: 62.3% ликвидных инструментов выросли — расчет производился по каждой акции отдельно, день был широким.
По секторам: ралли было менее масштабным, чем казалось
Существует два подхода: учет количества акций и учет их рыночной капитализации. Одиннадцать секторных ETF от SPDR представляют второй подход — по одной корзине на каждый сектор S&P 500, взвешенной по рыночной стоимости. Эти данные сильно расходятся с показателями по количеству акций.
Точный SQL-код для каждого числа
WITH per_etf AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')) AS friday_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')) AS monday_close,
maxIf(toFloat64(high), window_start >= '2026-06-29 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-06-29 00:00:00') AS day_low,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-29 00:00:00') / 1e6, 0) AS dollar_volume_m
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-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'))
GROUP BY ticker
)
SELECT
sector,
ticker,
round((monday_close / friday_close - 1) * 100, 2) AS pct_change,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
dollar_volume_m,
round((monday_close / friday_close - 1) * 100 - min((monday_close / friday_close - 1) * 100) OVER (), 2) AS pct_above_worst_sector
FROM (
SELECT *,
multiIf(ticker = 'XLB', 'Materials',
ticker = 'XLC', 'Communication services',
ticker = 'XLE', 'Energy',
ticker = 'XLF', 'Financials',
ticker = 'XLI', 'Industrials',
ticker = 'XLK', 'Technology',
ticker = 'XLP', 'Consumer staples',
ticker = 'XLRE', 'Real estate',
ticker = 'XLU', 'Utilities',
ticker = 'XLV', 'Health care',
'Consumer discretionary') AS sector
FROM per_etf
)
ORDER BY pct_change DESCТехнологический сектор лидировал с показателем 2.52%, за ним следовал сектор потребительских товаров не первой необходимости с 2.37%; сектор материалов и сектор недвижимости закрылись на уровнях -1.82% и -0.64% соответственно. Разница между лучшим и худшим показателем — дисперсия секторов за день — составила 4.34 процентных пункта. На фоне роста индекса такие сектора, как коммунальные услуги, потребительские товары первой необходимости, энергетика, недвижимость и материалы, показали отрицательную динамику. Рост индексного фонда может скрывать ситуацию, когда по количеству акций ралли широкое, а по весу — узкое.
Главное событие дня: память и накопители
Четыре компании торговались в рамках одной тематики, но с разными результатами — наблюдалась лишь корреляция и разница в масштабах; данные не объясняют причин.
Точный SQL-код для каждого числа
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')) AS friday_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')) AS monday_close,
maxIf(toFloat64(high), window_start >= '2026-06-29 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-06-29 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-06-29 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-06-29 00:00:00') AS high_bar
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
AND ((window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(friday_close, 2) AS jun26_close,
round(monday_close, 2) AS jun29_close,
round((monday_close / friday_close - 1) * 100, 2) AS pct_chg,
round(day_high, 2) AS day_high,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
round(day_low, 2) AS day_low,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct
FROM per_name
ORDER BY tickerMU — классический пример разницы между внутридневным диапазоном и чистым изменением цены: диапазон составил 12.22% — минимум $1023.65 в 10:18 ET, максимум $1148.79 в 15:59, однако цена закрытия была 1.97% выше, чем в пятницу. Western Digital выросла на 11.15%, а Seagate — на 8.17%; SanDisk закрылась на -1.9% в пределах 10.33% — единственная компания в группе, показавшая снижение цены закрытия. Цена закрытия не отражает волатильность, которую пережили держатели акций.
Где торговали активы
По объему торгов в долларах Micron (MU) значительно опередила все остальные активы, включая индексные фонды: 58.47 млрд против 33.97 млрд у SPY. По количеству проторгованных акций ситуация была иной.
Точный SQL-код для каждого числа
SELECT ticker, leaderboard, dollar_volume_bn, if(dollar_volume_bn < 1, dollar_volume_m, NULL) AS dollar_value_m, shares_m,
round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
/ max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
FROM (
SELECT
'by dollars traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
GROUP BY ticker
ORDER BY dollar_volume_bn DESC
LIMIT 6
UNION ALL
SELECT
'by shares traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESCДанные по количеству акций могут вводить в заблуждение: лидерами по объему торгов стали SOXS, трехкратный обратный ETF на полупроводники (695.3 млн акций), и INLF, дешевая акция, объем торгов которой составил 353.8 млн акций, что в денежном эквиваленте составило около 23 млн долларов в течение дня. Объем в долларах показывает направление движения капитала; относительный объем показывает, является ли активность конкретного актива необычной для него самого.
В 30-минутных интервалах по Нью-Йорку 29 июня наблюдается классическая «улыбка» объема:
Точный SQL-код для каждого числа
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket,
round(100 * (sum(toFloat64(volume)) / min(sum(toFloat64(volume))) OVER () - 1), 1) AS pct_above_trough
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
GROUP BY et_time
ORDER BY et_time2.3 млрд акций в первые полчаса, провал до 0.77 млрд в 13:30 и самый большой объем — 2.39 млрд — в последние полчаса, когда концентрируются аукционы закрытия и потоки средств, отслеживающих индексы.
The options tape
Options traded 66.33 million contracts across 11.04 million prints.
Точный SQL-код для каждого числа
WITH
(
SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
sum(size), count(), round(avg(toFloat64(price)), 3))
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
GROUP BY ticker
ORDER BY sum(size) DESC
LIMIT 1
) AS top_contract,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
) AS spy_regular_close
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260629') / sum(size), 1) AS same_day_expiry_pct,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702')) / 1e6, 2) AS thu_jul2_expiry_contracts_m,
countIf(substring(ticker, length(ticker) - 14, 6) = '260703') AS fri_jul3_expiry_prints,
countIf(sip_timestamp < '2026-06-29 13:30:00') AS premarket_prints,
reverse(arrayStringConcat(extractAll(reverse(toString(countIf(sip_timestamp < '2026-06-29 13:30:00'))), '[0-9]{1,3}'), ',')) AS premarket_prints_label,
countIf(sip_timestamp < '2026-06-29 13:30:00'
AND underlying_symbol NOT IN ('SPX', 'SPXW', 'XSP', 'RUTW', 'VIX', 'VIXW')) AS premarket_non_index_prints,
arrayStringConcat(arraySort(groupUniqArrayIf(underlying_symbol, sip_timestamp < '2026-06-29 13:30:00')), ', ') AS premarket_underlyings,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
top_contract.1 AS top_contract_underlying,
top_contract.2 AS top_contract_strike,
top_contract.3 AS top_contract_type,
top_contract.4 AS top_contract_expiry,
top_contract.5 AS top_contract_volume,
reverse(arrayStringConcat(extractAll(reverse(toString(assumeNotNull(top_contract.5))), '[0-9]{1,3}'), ',')) AS top_contract_volume_label,
round(top_contract.7, 3) AS top_contract_avg_price,
round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'Calls took 55.7% of contract volume, and 35.8% of everything that traded expired that same Monday — the zero-days-to-expiry (0DTE) share. The busiest single contract anywhere was the same-day SPY $741 call: 788,133 contracts at an average premium of $0.474, with SPY's close landing 0.12 dollars below the strike — the day's most-traded option finished out of the money. SPY traded 12.01 million contracts as an underlying; QQQ 7.32 million.
The panel also counts 40,621 option prints before the 9:30 equity open — every one on a cash-settled index root (RUTW, SPX, SPXW, VIX, VIXW, XSP), with 0 stock or ETF option prints in the same window. That is the rule, not an accident: index options list extended global-trading-hours sessions, options on stocks and ETFs open with the stock market. The stocks trade early — see premarket and after-hours trading — their options do not.
No contract with a Friday, July 3 expiration code printed all day (0 prints) — the market is closed that Friday — while the Thursday, July 2 expiry traded 10.73 million.
Лента котировок: стоимость совершения сделок за день
Каждая цена на этой странице основана на потоке котировок — National Best Bid and Offer, который непрерывно обновляется для каждого котируемого актива. Разница между лучшей ценой покупки и лучшей ценой продажи, бид-аск спред, — это сумма, которую платит ордер за совершение сделки.
Точный SQL-код для каждого числа
SELECT
ticker,
round(count() / 1e6, 2) AS nbbo_updates_m,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price), 2) AS median_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 14:00:00'), 2) AS open_30min_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-06-29 17:00:00' AND sip_timestamp < '2026-06-29 17:30:00'), 2) AS midday_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 14:00:00')
- quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-06-29 17:00:00' AND sip_timestamp < '2026-06-29 17:30:00'), 2) AS open_minus_midday_bps,
countIf(NOT (bid_price > 0 AND ask_price >= bid_price)) AS dropped_invalid_quotes
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'MU', 'WDC')
AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 20:00:00'
GROUP BY ticker
ORDER BY tickerМедианная ширина котировок SPY составила 0.41 базисных пункта от средней цены, против 0.84 у QQQ, 4.6 у Micron и 8.2 у Western Digital — последний показал самый широкий спред среди четырех активов. Один базисный пункт при ордере в $10,000 равен одному доллару, поэтому покупка и мгновенная продажа SPY на сумму $10,000 обходится примерно в $0.41; аналогичная круговая сделка с Western Digital стоит $8.2. Размер сделки не менялся, менялся только актив.
В первый получасовой период котировки всех четырех активов были шире, чем в период полуденного затишья: SPY — 0.41 б.п. против 0.27, Western Digital — 14.33 против 7.55; таким образом, в начале торгов спред самого волатильного актива был выше на 6.78 б.п. Вторая составляющая — это оборот: 3.98 миллионов обновлений NBBO для SPY в основные торговые часы и 4.42 миллионов для QQQ.
Ставки: кривая практически не изменилась
В понедельник на рынке казначейских облигаций США наблюдалось затишье. Указаны значения доходности на момент закрытия сессии и их изменение по сравнению с 26 июня.
Точный SQL-код для каждого числа
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jun29_yield_pct,
round((t.2 - t.3) * 100) AS one_day_change_bp
FROM (
SELECT arrayJoin([
('1 month', toFloat64(mon.yield_1_month), toFloat64(fri.yield_1_month)),
('3 month', toFloat64(mon.yield_3_month), toFloat64(fri.yield_3_month)),
('1 year', toFloat64(mon.yield_1_year), toFloat64(fri.yield_1_year)),
('2 year', toFloat64(mon.yield_2_year), toFloat64(fri.yield_2_year)),
('5 year', toFloat64(mon.yield_5_year), toFloat64(fri.yield_5_year)),
('10 year', toFloat64(mon.yield_10_year), toFloat64(fri.yield_10_year)),
('30 year', toFloat64(mon.yield_30_year), toFloat64(fri.yield_30_year)),
('2s10s spread', toFloat64(mon.yield_10_year - mon.yield_2_year), toFloat64(fri.yield_10_year - fri.yield_2_year))
]) AS t
FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-29') AS mon,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-26') AS fri
)Доходность 10-летних облигаций составила 4.38% и не изменилась за день (0 bp), в то время как доходность 3-месячных векселей выросла на 4 bp и составила 3.87%. Спред 2s10s — разница между доходностью 10-летних и 2-летних облигаций — закрылся на уровне 0.28 процентных пункта (-3 bp): значение остается положительным, но кривая стала чуть более плоской.
Календарь событий дня
Точный SQL-код для каждого числа
WITH
(
SELECT (argMax(d, n), max(n))
FROM (
SELECT ex_dividend_date AS d, count() AS n
FROM global_markets.stocks_dividends
WHERE ex_dividend_date BETWEEN '2026-06-22' AND '2026-07-02'
GROUP BY d
)
) AS peak_ex_div,
(
SELECT (countIf(form_type = '424B2'), countIf(form_type = '4'), countIf(form_type = '8-K'), count())
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date = '2026-06-29'
) AS filings,
(
SELECT (count(), uniqExact(publisher), countIf(has(tickers, 'NVDA')))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-06-29'
) AS news,
(
SELECT max(n)
FROM (
SELECT t, count() AS n
FROM (
SELECT arrayJoin(tickers) AS t
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-06-29'
)
WHERE t NOT IN ('NVDA', 'SPCX')
GROUP BY t
)
) AS runner_up_articles,
(
SELECT (any(split_from), any(split_to), count())
FROM global_markets.stocks_splits
WHERE ticker = 'HON' AND execution_date = '2026-06-29'
) AS hon_split,
(
SELECT (
round(toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')), 2),
round(toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')), 2)
)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'HON'
AND ((window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'))
) AS hon_close
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-06-29') AS ex_dividend_records_jun29,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-06-29'
AND ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'GOOGL', 'GOOG', 'META', 'TSLA', 'JPM', 'JNJ',
'XOM', 'KO', 'PG', 'V', 'MA', 'HD', 'WMT', 'CVX', 'MRK', 'PEP',
'SPY', 'QQQ', 'DIA', 'IWM', 'VTI')) AS household_name_ex_dividends,
length(['AAPL', 'MSFT', 'NVDA', 'AMZN', 'GOOGL', 'GOOG', 'META', 'TSLA', 'JPM', 'JNJ',
'XOM', 'KO', 'PG', 'V', 'MA', 'HD', 'WMT', 'CVX', 'MRK', 'PEP',
'SPY', 'QQQ', 'DIA', 'IWM', 'VTI']) AS household_names_checked,
concat(monthName(peak_ex_div.1), ' ', toString(toDayOfMonth(peak_ex_div.1))) AS busiest_ex_div_day_of_window,
peak_ex_div.2 AS busiest_ex_div_day_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-06-29') AS splits_executed,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-06-29') AS ipos_listed_jun29,
(SELECT arrayStringConcat(groupArray(ticker), ', ') FROM (
SELECT ticker FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-01' ORDER BY ticker
)) AS jul1_ipo_debuts,
filings.4 AS sec_filings,
filings.1 AS prospectus_424b2_filings,
filings.2 AS insider_form4_filings,
filings.3 AS filings_8k,
news.1 AS news_articles,
news.2 AS news_publishers,
news.3 AS nvda_articles,
runner_up_articles AS next_most_covered_articles,
news.3 - runner_up_articles AS nvda_minus_next_most_covered,
hon_split.3 AS hon_split_records,
hon_split.1 AS hon_split_from,
hon_split.2 AS hon_split_to,
hon_close.1 AS hon_close_jun26,
hon_close.2 AS hon_close_jun29449 дивидендных дат экс-дивиденд наступило 29 июня — чтобы получить выплату, необходимо владеть акциями до экс-дивидендной даты. Из 25 известных брендов, которые мы проверили, 0 подтвердили выплаты. Волна отчетности в конце квартала достигла пика: 745 записей на July 1. Было проведено 23 сплитов и зарегистрировано 0 IPO; дебюты среды (BSP, ITG, LIME) уже запланированы.
SEC зафиксировала 6173 документов от 29 июня: 1473 дополнений к ценообразованию структурированных продуктов (форма 424B2) и 1277 отчетов о сделках инсайдеров (форма 4) значительно превышают количество 231 отчетов 8-K, попадающих в заголовки новостей. Наша лента новостей содержала 170 статей от 3 издателей; если исключить один повторно используемый символ с неоднозначной меткой (удален из запроса), наиболее часто упоминаемым активом была NVDA с количеством статей 14 против 12 у следующего по популярности актива.
Примечания к данным
Аномальные данные помечаются, а не исключаются — эти четыре пункта влияют на основные показатели.
- Метод формирования отраслевых корзин определен. Под «сектором» понимаются одиннадцать ETF-фондов SPDR с весами по рыночной капитализации — этот же набор активов используется каждую сессию, а не классификация поставщика по отдельным тикерам.
- Объем в долларах — это минутный показатель — сумма произведений цены закрытия на объем за каждую минутную свечу; значение близко к сумме цен сделок, но не идентично ей.
- Котируемые спреды не включают недействительные котировки (односторонние или пересекающиеся записи NBBO); панель учитывает количество отброшенных данных (1544 по SPY). Медианная ширина спреда является статистикой котировок, а не стоимостью сделки — ордера часто исполняются внутри спреда.
- Одна сделка может исказить максимум или минимум минутной свечи. Минутная свеча QQQ в 11:07 ET имеет минимум $709.58, хотя ни одна соседняя свеча не опускалась ниже $715.09 — одна сделка была на $5.51 ниже рыночной стоимости в этот момент. Все максимумы и минимумы выше были перепроверены по соседним свечам; дневной минимум QQQ на уровне $705.172 подтвержден.
Полные примечания к данным
- Охват казначейских облигаций уже, чем в схеме. Четыре заявленные сроки погашения (6 месяцев, 3, 7 и 20 лет) никогда не заполнялись; кривая отображает семь существующих сроков плюс строку 2s10s.
- Данные противоречат «обратному сплиту» Honeywell. Поток содержит запись 1 HON от 29 июня: обратный сплит, конвертирующий 2 старых акций в 1 новых. HON закрылась по $231.3 в пятницу и по $227.71 в понедельник — удвоения нет. Мы не применяли корректировку.
- Количество новостей — это поток одного поставщика, а именно 3 издателей, которых мы используем, — а не «все рыночные новости».
- Данные на уровне тиков — пересекающиеся котировки, корректировка фантомного объема, усеченный файл коротких продаж FINRA (и почему объем коротких продаж не является чистым интересом к коротким позициям) — представлены в подробном обзоре.
Сессия подтверждена
Точный SQL-код для каждого числа
WITH
(
SELECT (
round(toFloat64(minIf(low, formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') = '11:07')), 2),
round(toFloat64(minIf(low, formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') IN ('11:04', '11:05', '11:06', '11:08', '11:09', '11:10'))), 2)
)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'QQQ' AND window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
) AS qqq_lone
SELECT
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-03 00:00:00' AND window_start < '2026-07-04 00:00:00') AS jul3_spy_bars,
formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
count() AS spy_minute_bars,
countIf(window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00') AS regular_session_bars,
qqq_lone.1 AS qqq_1107_lone_low,
qqq_lone.2 AS qqq_1107_adjacent_bars_low,
round(qqq_lone.2 - qqq_lone.1, 2) AS qqq_lone_print_below_adjacent
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-06-29 00:00:00' AND window_start < '2026-06-30 00:00:00'Бары SPY идут с 04:00 по 19:59 по нью-йоркскому времени, всего 390 баров в регулярном окне — полная сессия, подтвержденная по ленте (данные биржевого календаря содержат только предстоящие закрытия). В ту пятницу, 3 июля, был полный торговый день — 0 баров SPY печатались весь день, а 4 июля пришлось на субботу; обзор четырехсессионной недели доступен отдельно.
FAQ
Как изменился фондовый рынок 29 июня 2026 года?
Рынок вырос благодаря акциям роста: QQQ закрылся на 2.57% выше уровня пятницы, SPY на 1.62%, DIA на 0.81% и IWM на 0.45%. При этом 62.3% тикеров с объемом торгов от $1 млн и выше завершили день ростом.
Был ли 29 июня 2026 года значимым днем для Nasdaq?
Значимым, но не исключительным: изменение цены QQQ на 2.57% по сравнению с предыдущим закрытием заняло 5 место среди 21 сессий за последний месяц по абсолютному значению, при максимальном месячном показателе 4.76%.
Какие сектора стали лидерами 29 июня 2026 года?
Лидерами среди одиннадцати секторов SPDR стали технологии (2.52%) и потребительские товары непервой необходимости (2.37%). Материалы заняли последнее место с показателем -1.82%, разрыв составил 4.34 процентных пункта. Коммунальные услуги, потребительские товары первой необходимости, энергетика и недвижимость также закрылись снижением.
Какую долю в объеме торгов опционами 29 июня 2026 года составили опционы с экспирацией в тот же день (0DTE)?
Опционы с экспирацией в тот же день составили 35.8% от 66.33 миллионов торгуемых контрактов. Самым активным контрактом стал SPY call со страйком $741 (788,133 контрактов), который закрылся вне денег.
Почему опционы торгуются до открытия фондового рынка?
Это относится только к индексным опционам. Все 40,621 сделок с опционами до 9:30 по восточному времени 29 июня были связаны с индексами с денежным расчетом (RUTW, SPX, SPXW, VIX, VIXW, XSP), которые торгуются в расширенные часы глобальной сессии; объем сделок с опционами на акции и ETF в этот период составил 0.
Методология
- Временные метки хранятся в формате UTC и конвертируются в нью-йоркское время внутри запросов. «Close» — это последняя минутная свеча регулярной сессии, а не цена аукциона; сравнение дней проводится между 29 июня и 26 июня; продолжительность сессии подтверждена на основе наблюдаемого диапазона свечей.
- Ранг за прошедший месяц рассчитывается на основе изменений цены закрытия в регулярные часы; первая сессия исключена (предыдущее закрытие не входит в окно). Сроки экспирации опционов пересчитываются по тикеру OCC (столбец экспирации в таблице содержит ошибки).
- Каждая панель считывается один раз в момент подготовки материала через защищенный путь только для чтения. Состояние хранилища данных на 13 июля 2026 года.
Каждая панель представляет собой результат сохраненного запроса — график, таблицу и SQL в одном объекте. Вы можете скопировать любой из них в терминал Strasmore. Следующая сессия: 30 июня.