Tổng kết thị trường ngày 30 tháng 6 năm 2026
Điểm tin phiên cuối quý: chỉ số tăng nhờ nhóm công nghệ bất chấp đa số cổ phiếu giảm, nhóm ngành bộ nhớ dẫn đầu và dữ liệu options tại thời điểm đóng cửa.
Thứ Ba, ngày 30 tháng 6 năm 2026 — phiên giao dịch cuối cùng của quý — là một ngày tăng điểm nhờ nhóm công nghệ trong bối cảnh phần lớn thị trường giảm điểm: QQQ tăng 1.63% và SPY 0.73%, tuy nhiên chỉ có 4 các quỹ thuộc nhóm S&P 10 đóng cửa ở mức cao hơn (3,349 cổ phiếu có thanh khoản tăng, 3,033 giảm). Phiên trước đó: tóm tắt ngày 29 tháng 6. Mọi con số dưới đây đều được đọc từ truy vấn đã lưu — hãy mở rộng bất kỳ bảng nào để xem SQL.
Bảng điểm
Mọi thay đổi đều được so sánh giữa phút cuối cùng của phiên giao dịch thường nhật ngày 30 tháng 6 với ngày thứ Hai 29 tháng 6.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH prior AS (
SELECT ticker, argMax(close, window_start) AS prior_close
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
),
sess AS (
SELECT ticker,
argMin(open, window_start) AS day_open,
argMax(close, window_start) AS day_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-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
GROUP BY ticker
)
SELECT
s.ticker AS ticker,
round(toFloat64(p.prior_close), 2) AS prior_close,
round(toFloat64(s.day_open), 2) AS day_open,
round(toFloat64(s.day_close), 2) AS day_close,
round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
round(toFloat64(s.day_high), 2) AS day_high,
round(toFloat64(s.day_low), 2) AS day_low,
s.shares_traded_m AS shares_traded_m
FROM sess s
JOIN prior p ON s.ticker = p.ticker
ORDER BY s.tickerSPY mở cửa ở mức $741.29 và đóng cửa ở mức $746.32, gần mức cao nhất là $748.02. Sự chênh lệch 1.63% của QQQ so với 0.12% của DIA là đặc điểm chính của ngày hôm nay: nhóm cổ phiếu tăng trưởng bứt phá, nhóm blue chips hầu như không biến động, còn IWM 0.49%.
Kết thúc quý
Ngày 30 tháng 6 đã khép lại phiên giao dịch cuối cùng của 62 trong quý hai, và diễn biến của ngày này phản ánh chính xác xu hướng chung của cả quý.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH q2 AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS d_open,
argMax(toFloat64(close), window_start) AS d_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND 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
GROUP BY ticker, d
)
SELECT
ticker,
toString(min(d)) AS quarter_first_session,
count() AS quarter_sessions,
round(argMin(d_open, d), 2) AS quarter_open,
round(argMax(d_close, d), 2) AS quarter_close,
round((argMax(d_close, d) / argMin(d_open, d) - 1) * 100, 2) AS quarter_pct,
countIf(d_close > d_open) AS up_sessions
FROM q2
GROUP BY ticker
ORDER BY quarter_pct DESC, ticker ASCTừ ngày 1 tháng 4 đến ngày 30 tháng 6: QQQ +26.53%, IWM 20.21%, SPY 14.13%, DIA 12.08%. QQQ dẫn đầu cả quý và cả ngày 30 tháng 6, mặc dù thứ hạng giữa các chỉ số có sự thay đổi: SPY nhỉnh hơn IWM trong ngày, nhưng IWM lại dẫn trước SPY trong suốt cả quý. QQQ đóng cửa ở mức cao hơn trong 38 trên tổng số 62 phiên giao dịch (bản tóm tắt Q2 phân tích chi tiết từng bảng).
Ngày hôm nay có bất thường không?
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT round(anyIf(oc_pct, d = toDate('2026-06-30')), 2) AS day_move_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-06-30'))), groupArrayIf(abs(oc_pct), d != toDate('2026-06-30'))) + 1 AS abs_move_rank,
count() AS sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)Xét theo biến động trong phiên thay vì so sánh giá đóng cửa với giá đóng cửa trước đó — SPY đã di chuyển 0.68%, xếp thứ 7 trong số 21 phiên giao dịch xét về biên độ tuyệt đối. Chỉ số này diễn biến bình lặng; nhưng các giao dịch chi tiết bên dưới thì không.
Độ rộng thị trường: lợi thế tăng trưởng mong manh
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') AS day_dollar_volume
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')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00')
GROUP BY ticker
)
SELECT
countIf(day_close > prior_close AND day_dollar_volume >= 1000000) AS advancers,
countIf(day_close < prior_close AND day_dollar_volume >= 1000000) AS decliners,
countIf(day_close = prior_close AND day_dollar_volume >= 1000000) AS unchanged,
countIf(day_dollar_volume >= 1000000) AS liquid_tickers,
count() AS tickers_traded_both_sessions,
count() - countIf(day_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
/ countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct,
countIf(ticker IN ('XLB', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')) AS sector_funds_counted,
countIf(ticker IN ('XLB', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND day_close > prior_close) AS sector_funds_up
FROM per_ticker
WHERE prior_close > 0 AND day_close > 03,349 mã tăng, 3,033 mã giảm, 88 mã không đổi: 51.8% các mã có thanh khoản tăng — kết quả tương đương một trò chơi may rủi trong bối cảnh chỉ số tăng trưởng đạt 1.63%. Bộ lọc thanh khoản loại bỏ 5,055 trong số 11,525 ticker giao dịch cả hai phiên (khối lượng giao dịch dưới 1 triệu USD), được tính toán tại đây và không bị ẩn đi.
Từng nhóm ngành: dòng tiền thực sự chảy vào đâu
Việc chỉ đếm số lượng cổ phiếu tăng giá sẽ che lấp đi nơi dòng tiền thực sự tập trung. Mười quỹ dưới đây, mỗi quỹ nắm giữ một phần của S&P 500, và sự chênh lệch giữa nhóm tốt nhất và tệ nhất sẽ cho thấy mức độ phân hóa của phiên giao dịch.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('XLB', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND ((window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
if(day_close > prior_close, 1, 0) AS is_up,
round(max((day_close / prior_close - 1) * 100) OVER () - (day_close / prior_close - 1) * 100, 2) AS pts_behind_leader,
day_dollar_bn
FROM per_name
ORDER BY pct_chg DESC, ticker ASCNhóm Công nghệ (XLK) tăng 2.69% và là nhóm nổi bật nhất: công nghiệp 1.34%, nguyên vật liệu 0.36% và tiêu dùng không thiết yếu 0.15% là những nhóm xanh duy nhất còn lại. Các nhóm còn lại đều giảm, từ tài chính (-0.17%) đến tiện ích (-1.48%), hàng tiêu dùng thiết yếu (-1.53%) và cuối cùng là bất động sản ở mức -2%. Chênh lệch giữa nhóm tốt nhất và tệ nhất là: 4.69 điểm phần trăm, có 4 trên 10 quỹ tăng giá. Một chỉ số tăng chưa đầy một phần trăm với mức chênh lệch bốn điểm: một nhóm ngành đã dẫn dắt toàn bộ thị trường.
Các mã biến động mạnh nhất trong ngày, toàn thị trường
Độ rộng thị trường cho biết số lượng mã tăng giá; chỉ số này cho thấy những mã biến động mạnh nhất — gồm năm mã tăng và năm mã giảm nhiều nhất tính theo phần trăm thay đổi trong số các mã có khối lượng giao dịch từ 10 triệu USD trở lên.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') AS day_dollar_volume
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')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00')
GROUP BY ticker
HAVING prior_close > 1 AND day_close > 0 AND day_dollar_volume >= 10000000 AND ticker NOT IN ('SPCX')
)
SELECT
board,
ticker,
prior_close,
day_close,
pct_chg,
round(abs(pct_chg), 2) AS abs_pct_chg,
dollar_volume_m,
if(ticker IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date >= '2026-06-29' AND execution_date <= '2026-06-30'), 1, 0) AS split_record_on_file
FROM (
SELECT 'top gainers' AS board, ticker, round(prior_close, 2) AS prior_close, round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg, round(day_dollar_volume / 1e6, 0) AS dollar_volume_m
FROM per_ticker
ORDER BY (day_close / prior_close) DESC, ticker ASC
LIMIT 5
UNION ALL
SELECT 'top decliners' AS board, ticker, round(prior_close, 2) AS prior_close, round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg, round(day_dollar_volume / 1e6, 0) AS dollar_volume_m
FROM per_ticker
ORDER BY (day_close / prior_close) ASC, ticker ASC
LIMIT 5
)
ORDER BY if(board = 'top gainers', 0, 1) ASC, pct_chg DESC, ticker ASCCả hai sàn giao dịch đều không đi theo xu hướng của chỉ số. JEM dẫn đầu với mức tăng +256.76% trên khối lượng giao dịch 141 triệu USD; SOC giảm 55.89% với khối lượng 306 triệu USD. ABVX tăng 38.56% trên 942 triệu USD, mức luân chuyển cổ phiếu lớn nhất ở cả hai sàn; NVCT giảm 35.62% và UNCY giảm 39.09%. Cột dữ liệu chưa điều chỉnh giúp phản ánh đúng thực tế — một đợt chia tách ngược tỷ lệ 1-cho-10 sẽ hiển thị mức "tăng" 900% trên bảng điện chưa điều chỉnh — và mọi mã ở đây đều có 0: giao dịch thực tế.
Có ba dòng là một giao dịch được lặp lại hai lần: CRCA (-35.16%) và CRCG (-35.19%) giảm giá trong khi CRCD tăng 35.47% — mỗi mã đều có mức biến động gần gấp đôi -17.53% của mã liên quan đến crypto dưới đây: các sản phẩm phái sinh đòn bẩy cổ phiếu đơn lẻ.
Điểm nhấn trong ngày: nhóm bán dẫn xoay chuyển cục diện
Sáu mã cổ phiếu, một chủ đề, nhưng kết quả rất khác nhau — chỉ có sự tương quan về xu hướng và biên độ; dữ liệu không cho biết nguyên nhân.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-06-30 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-06-30 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-06-30 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-06-30 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'INTC', 'MU', 'SNDK', 'TSM', 'WDC')
AND ((window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_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,
day_dollar_bn
FROM per_name
ORDER BY tickerSanDisk tăng 10.79%, AMD 7.7%, Intel 5.93%, TSMC 4.86% — trong khi MU, mã có khối lượng giao dịch lớn nhất thị trường với 37.41 tỷ USD, chỉ đóng cửa tăng 0.52% và Western Digital (-2.01%) không có biến động. Đây là những diễn biến phức tạp đằng sau kết quả của nhóm ngành công nghệ 2.69% (diễn biến chi tiết của MU trong tháng 6).
Xu hướng ngược chiều xuất hiện ở nhóm tài chính liên quan đến crypto, trái ngược với đà tăng chung của thị trường:
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-06-30 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-06-30 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-06-30 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-06-30 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('COIN', 'CRCL', 'HOOD', 'MSTR')
AND ((window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_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,
day_dollar_bn
FROM per_name
ORDER BY tickerCRCL ghi nhận mức -17.53%, chạm đáy 62.52 USD tại mức 15:59 ET — vào phút cuối cùng của phiên giao dịch — cùng với MSTR -6.2%, COIN -3.61% và HOOD -1.53%. Có sự tương quan về xu hướng nhưng không xác định được nguyên nhân.
Nội dung tin tức
Một bản tóm tắt không khẳng định nguyên nhân thì cần phải cung cấp cho độc giả những gì thực sự đã được xuất bản trong ngày đó.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
names.n AS ticker,
countIf(has(tickers, names.n)) AS articles_today,
if(countIf(has(tickers, names.n)) = 0, 'none',
formatDateTime(toTimeZone(argMaxIf(published_utc, (published_utc, id), has(tickers, names.n)), 'America/New_York'), '%H:%i')) AS latest_et,
if(countIf(has(tickers, names.n)) = 0, 'no article in our feed this session',
JSONExtractString(argMaxIf(publisher, (published_utc, id), has(tickers, names.n)), 'name')) AS publisher_name,
if(countIf(has(tickers, names.n)) = 0, 'no article in our feed this session',
argMaxIf(title, (published_utc, id), has(tickers, names.n))) AS latest_headline
FROM global_markets.stocks_news
CROSS JOIN (SELECT arrayJoin(['NVDA', 'MU', 'SNDK', 'CRCL', 'SOC', 'ABVX', 'JEM']) AS n) AS names
WHERE published_utc >= '2026-06-30 04:00:00' AND published_utc < '2026-07-01 04:00:00'
GROUP BY names.n
ORDER BY articles_today DESC, ticker ASCCái tên được nhắc đến nhiều nhất là NVDA với 21 bài viết — dù không nằm trong nhóm các mã biến động mạnh nhất ngày — bài viết cuối cùng của mã này trong phiên (16:28 ET, Investing.com) có tiêu đề "These Stocks Could Benefit as the Robotaxi Race Heats Up". MU có 7 bài; bài viết duy nhất về SanDisk (The Motley Fool) là tiêu đề duy nhất trong ngày đề cập đến một biến động thực tế: "Why Sandisk Stock Is Skyrocketing Today".
Sự chênh lệch chính là điểm đáng chú ý: mã giảm mạnh nhất ngày, mã tăng mạnh nhất và mã liên quan đến crypto giảm sâu nhất chỉ nhận được 0, 0 và 0 bài viết — mỗi mã không có bài nào, trong tổng số 211 bài viết của dòng tin. Độ phủ truyền thông không phải là thước đo cho biến động giá.
Dòng tiền giao dịch
Câu lệnh SQL chính xác đằng sau mỗi con số
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-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
AND ticker NOT IN ('SPCX')
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-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESCXét về giá trị giao dịch, MU vượt xa tất cả, kể cả các quỹ chỉ số: $37.41 tỷ so với $31.84 tỷ của SPY — đây là phiên thứ hai liên tiếp MU có khối lượng giao dịch lớn hơn quỹ chỉ số chủ chốt này (tóm tắt ngày thứ Hai đã đề cập lần đầu). Tuy nhiên, bảng điện tử lại cho thấy một kết quả khác: SOXS, một ETF bán dẫn nghịch đảo với đòn bẩy 3x (515.5 triệu cổ phiếu), và hai mã có giá dưới một đô la với giá trị không đáng kể so với MU — khối lượng đang cho thấy hai kịch bản.
Có một mã bị tách biệt khỏi cả hai bảng do mục đích riêng: một mã niêm yết vào tháng Sáu mà ticker trước đó thuộc về một công ty khác không liên quan, khiến các nguồn dữ liệu gắn hai thực thể với cùng ba chữ cái (xem biên lai tại đây).
Câu lệnh SQL chính xác đằng sau mỗi con số
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
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
GROUP BY et_time
ORDER BY et_time2.05 tỷ cổ phiếu trong nửa giờ đầu mở cửa, chạm đáy 0.78 tỷ tại 13:30, và nhóm giao dịch lớn nhất trong ngày — 2.69 tỷ — vào thời điểm đóng cửa cuối quý, nơi phiên đấu giá đóng cửa và các dòng tiền tái cơ cấu được ghi nhận (phân tích chuyên sâu ngày 29 tháng 6 có chi tiết cụ thể).
Thị trường options
Câu lệnh SQL chính xác đằng sau mỗi con số
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-30 00:00:00' AND sip_timestamp < '2026-07-01 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-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
) AS spy_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) = '260630') / 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,
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,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'P'))
/ toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'C')), 2) AS spy_put_call_ratio,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'C'
AND substring(ticker, length(ticker) - 14, 6) = '260630' AND toFloat64(strike_price) > spy_close)) / 1e6, 2) AS spy_0dte_otm_calls_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'C'
AND substring(ticker, length(ticker) - 14, 6) = '260630' AND toFloat64(strike_price) <= spy_close)) / 1e6, 2) AS spy_0dte_itm_calls_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'P'
AND substring(ticker, length(ticker) - 14, 6) = '260630' AND toFloat64(strike_price) < spy_close)) / 1e6, 2) AS spy_0dte_otm_puts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'P'
AND substring(ticker, length(ticker) - 14, 6) = '260630' AND toFloat64(strike_price) >= spy_close)) / 1e6, 2) AS spy_0dte_itm_puts_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,
round(top_contract.7, 3) AS top_contract_avg_price,
round(top_contract.2 - spy_close, 2) AS top_strike_minus_spy_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-06-30 00:00:00' AND sip_timestamp < '2026-07-01 00:00:00'Có 61.95 triệu hợp đồng options đã được giao dịch qua 10.06 triệu lệnh khớp; các lệnh call chiếm 57.3% tổng khối lượng giao dịch, và 28% trong số đó đã đáo hạn vào thứ Ba đó. SPY đi ngược lại xu hướng này: đạt 12.04 triệu hợp đồng với tỷ lệ put/call là 1.09 — số lượng put nhiều hơn call, dù là ngày quỹ tăng điểm.
So sánh các hợp đồng đáo hạn trong ngày của SPY với mức đóng cửa $746.32 cho thấy sự lệch pha rõ rệt: có 3.33 triệu put out-of-the-money (mức strike thấp hơn giá đóng cửa) và 2.28 triệu call out-of-the-money, so với 1.77 triệu call in-the-money và 0.63 triệu put in-the-money — các mức strike phía dưới bị mất giá trị là nhóm giao dịch sôi động nhất trong ngày 0DTE của SPY. Không có mã nào có ngày đáo hạn thứ Sáu, ngày 3 tháng 7 được khớp lệnh (0 lệnh — thị trường đóng cửa vào thứ Sáu đó); các hợp đồng weekly đáo hạn vào thứ Năm đạt 10.52 triệu.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
concat(underlying, ' $', toString(strike), ' ', if(typ = 'C', 'call', 'put')) AS contract,
toString(expiry) AS expires,
formatDateTimeInJodaSyntax(expiry, 'MMMM d, yyyy') AS expires_label,
if(expiry = toDate('2026-06-30'), 1, 0) AS is_same_day,
contracts,
round(avg_px, 3) AS avg_premium,
round(100 * contracts / max(contracts) OVER (), 1) AS pct_of_busiest
FROM (
SELECT any(underlying_symbol) AS underlying,
any(toFloat64(strike_price)) AS strike,
any(option_type) AS typ,
any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) AS expiry,
sum(size) AS contracts,
avg(toFloat64(price)) AS avg_px,
any(ticker) AS occ
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-06-30 00:00:00' AND sip_timestamp < '2026-07-01 00:00:00'
GROUP BY ticker
ORDER BY contracts DESC, occ ASC
LIMIT 6
)
ORDER BY contracts DESC, contract ASCHợp đồng giao dịch nhiều nhất là call SPY $747 đáo hạn trong ngày — 821,361 hợp đồng với mức premium trung bình là $0.641, kết thúc ở mức $0.68 cao hơn mức giá cuối cùng của SPY và trở nên vô giá trị. Dữ liệu đằng sau nó là một bài học: năm trong số sáu hợp đồng giao dịch nhiều nhất trên thị trường là các mức strike của SPY đáo hạn trong ngày, cách nhau một đô la quanh mức đóng cửa (SPY $748 call tiếp theo), mỗi hợp đồng chỉ giao dịch ở mức vài cent. Ngoại lệ, chiếm 65.1% khối lượng của mã dẫn đầu, là KWEB $29 call đáo hạn vào December 18, 2026, không phải là hợp đồng đáo hạn trong ngày: một vị thế thời hạn sáu tháng nằm giữa năm "vé số" vào buổi chiều.
Lãi suất: kỳ hạn dài tăng vào cuối nửa đầu năm
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jun30_yield_pct,
round((t.2 - t.3) * 100) AS one_day_change_bp
FROM (
SELECT arrayJoin([
('1 month', toFloat64(d.yield_1_month), toFloat64(p.yield_1_month)),
('3 month', toFloat64(d.yield_3_month), toFloat64(p.yield_3_month)),
('1 year', toFloat64(d.yield_1_year), toFloat64(p.yield_1_year)),
('2 year', toFloat64(d.yield_2_year), toFloat64(p.yield_2_year)),
('5 year', toFloat64(d.yield_5_year), toFloat64(p.yield_5_year)),
('10 year', toFloat64(d.yield_10_year), toFloat64(p.yield_10_year)),
('30 year', toFloat64(d.yield_30_year), toFloat64(p.yield_30_year)),
('2s10s spread', toFloat64(d.yield_10_year - d.yield_2_year), toFloat64(p.yield_10_year - p.yield_2_year))
]) AS t
FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-30') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-29') AS p
)Kỳ hạn dài tăng vào ngày cuối cùng của nửa đầu năm: lợi suất kỳ hạn 10 năm tăng 6 bp lên 4.44%, kỳ hạn 2 năm tăng 4 bp lên 4.14%, và 2s10s spread dốc lên 2 bp lên 0.3 điểm. Lợi suất kỳ hạn dài tăng trong phiên mà các nhóm yếu nhất là bất động sản (-2%) và nhóm yếu thứ ba là tiện ích (-1.48%), cả hai đều là những nhóm nhạy cảm với lãi suất: một sự trùng hợp đáng chú ý, dù dữ liệu này không thể chứng minh mối quan hệ nhân quả (bản tóm tắt H1 phản ánh đường cong lãi suất của nửa đầu năm).
Lịch trình diễn biến trong ngày
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH
(
SELECT (count(), uniqExact(publisher))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-06-30'
) AS news,
(
SELECT (argMax(t, n), 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-30'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-06-30') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-06-30') AS splits_executed,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-06-30') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-06-30') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-06-30') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-06-30') AS filings_8k,
(SELECT arrayStringConcat(groupArray(concat(ticker, ' — ', issuer_name)), '; ') FROM (
SELECT ticker, issuer_name FROM global_markets.stocks_ipos WHERE listing_date = '2026-06-30' ORDER BY ticker
)) AS ipo_names,
news.1 AS news_articles,
news.2 AS news_publishers,
top_news.1 AS most_covered_ticker,
top_news.2 AS most_covered_articles,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-29')) AS filings_prior_session704 cổ phiếu đã ex-dividend vào ngày cuối cùng của quý — một làn sóng cuối quý khi hầu hết các công ty Mỹ chi trả cổ tức hàng quý — cùng với 7 đợt chia tách và 2 niêm yết mới (AACU — Ares Acquisition Corp III; OSPRU — Osprey Acquisition Corp. III). Cột hồ sơ là điểm nhấn về chất lượng dữ liệu: chỉ số SEC ghi nhận 31 hồ sơ cho ngày 30 tháng 6 — 0 insider Form 4s, 0 8-Ks — so với 4439 của phiên trước đó. Đây là một mô hình cuối tháng trong luồng dữ liệu, đã được xác định trong ghi chú về khoảng trống cuối tháng; bất kỳ số lượng nào bao gồm ngày này đều sẽ thấp hơn thực tế cho đến khi dữ liệu được cập nhật bổ sung.
Phiên giao dịch đã được xác minh
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
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-30 13:30:00' AND window_start < '2026-06-30 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00') AS day_sessions
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-06-30 00:00:00' AND window_start < '2026-07-01 00:00:00'Các thanh nến của SPY chạy từ 04:00 đến 19:59 theo giờ New York với chính xác 390 thanh nến trong khung giờ giao dịch bình thường — một phiên giao dịch hoàn chỉnh, đã được xác minh từ tape (dữ liệu lịch giao dịch của sàn chỉ bao gồm các mốc đóng cửa sắp tới).
Tổng kết phiên giao dịch
Một kết quả 0.73% SPY với 51.8% mã tăng giá, 4 quỹ ngành 10 tăng và khoảng cách 4.69 giữa mã tăng mạnh nhất và giảm mạnh nhất cho thấy đây không phải là một đợt tăng trưởng diện rộng. Thực tế, đây là đợt tăng trưởng của một nhóm ngành duy nhất núp bóng chỉ số, diễn ra trong nửa giờ giao dịch sôi động nhất trong một đợt đấu giá cuối quý. Sự thay đổi của chỉ số chỉ là con số trung bình, và đợt này được dẫn dắt bởi nhóm công nghệ trong khi hầu hết các ngành khác đều giảm: hãy kiểm tra độ phân tán trước khi tin vào hướng đi của chỉ số.
FAQ
How did the stock market do on June 30, 2026?
It closed higher: SPY gained 0.73% and QQQ 1.63% against June 29's close. Breadth was narrower — 51.8% of liquid names rose, 4 of 10 S&P sector funds green.
Which sector led the market on June 30, 2026?
Technology: XLK gained 2.69%, against 1.34% for industrials next and -2% for real estate last — 4.69 points between best and worst.
What were the biggest stock movers on June 30, 2026?
Among names trading $10 million or more, JEM gained the most (+256.76%) and SOC lost the most (55.89%). Neither carried a split record: both are real price moves, not corporate-action artifacts.
How did the stock market do in Q2 2026?
From the April 1 open to the June 30 close, across 62 sessions: QQQ +26.53%, IWM 20.21%, SPY 14.13%, DIA 12.08% — a growth-led quarter, ended by a growth-led day.
Why does so much volume trade in the last half hour?
The final half hour carried 2.69 billion shares against 2.05 billion at the open. The closing auction sets each stock's official closing price in one crossing, and index funds trade there to match it; quarter-end rebalancing concentrates the flow.
Ghi chú dữ liệu và phương pháp
- Các giỏ chứng khoán. Bảng ngành bao gồm mười quỹ sector của SPDR được liệt kê trong bảng điều khiển — cùng một giỏ chứng khoán cho mỗi phiên, do đó số liệu về độ phân tán (dispersion) có thể so sánh giữa các ngày. Các bảng biến động yêu cầu mức quay vòng vốn (turnover) là 10 triệu USD và giá đóng cửa trước đó phải trên 1, loại trừ các niêm yết sử dụng lại ký hiệu (symbol) ở trên, và có thêm cột ghi nhận chia tách cổ phiếu.
- Các lưu ý. Khối lượng giao dịch tính theo USD là một đại diện tính theo từng phút (giá đóng cửa × khối lượng mỗi nến). Chỉ số hồ sơ ngày 30 tháng 6 gần như trống rỗng (ghi chú về khoảng trống cuối tháng đã phân tích điều này). Số lượng tin tức dựa trên một nguồn cung cấp dữ liệu: việc không có bài báo nào ở đây không có nghĩa là không có tin tức nào được xuất bản ở bất kỳ nơi nào khác.
- Phương pháp. Một phiên (1, được xác minh từ các nến quan sát được); dấu thời gian được lưu trữ theo giờ UTC, được chuyển đổi sang giờ New York trong các truy vấn; "close" là nến phút thông thường cuối cùng, không phải giá khớp lệnh phiên (auction print). Ngày đáo hạn quyền chọn được phân tích lại từ ticker của OCC (cột riêng của bảng này đang bị lỗi); độ nhạy giá (moneyness) được đo dựa trên nến thông thường cuối cùng của SPY. Các bảng điều khiển được chạy một lần tại thời điểm soạn thảo, thông qua đường dẫn chỉ đọc được kiểm soát. Kho dữ liệu tính đến ngày 13 tháng 7 năm 2026.
Mỗi bảng điều khiển là kết quả của một truy vấn đã được lưu trữ — bao gồm biểu đồ, bảng và SQL trong một đối tượng duy nhất. Bạn có thể dán bất kỳ bảng nào vào terminal Strasmore. Phiên tiếp theo: ngày 1 tháng 7.