Strasmore Research
Tổng hợp thị trường Matt ConnorBởi Matt Connor · Cập nhật 2026-07-23

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.

Truy vấnSPY / QQQ / DIA / IWM — 30/06 so với đóng cửa 29/06, giờ giao dịch chính thức
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.ticker

SPY 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ý.

Truy vấnQ2 2026 từ đầu đến cuối: mỗi index ETF từ mở cửa 01/04 đến đóng cửa 30/06, giờ giao dịch chính thức
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 ASC

Từ 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?

Truy vấnBiến động open-to-close của SPY xếp hạng theo các phiên tháng trước (rank 1 = biến động tuyệt đối lớn nhất)
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

Truy vấnSố mã tăng so với số mã giảm trong các ticker có khối lượng giao dịch ít nhất $1M vào 30/06
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 > 0

3,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.

Truy vấnMười quỹ sector S&P vào 30/06: thay đổi so với đóng cửa thứ Hai, và khoảng cách so với mã dẫn đầu
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 ASC

Nhó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.

Truy vấnTop 5 mã tăng mạnh nhất và top 5 mã giảm mạnh nhất trong các mã có khối lượng giao dịch trên $10M vào 30/06 (đã loại trừ một mã trùng symbol)
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 ASC

Cả 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.

Truy vấnNhóm cổ phiếu semiconductor và storage: thay đổi so với đóng cửa thứ Hai, biên độ và dollar volume
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 ticker

SanDisk 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:

Truy vấnCác định chế tài chính liên quan crypto: thay đổi so với đóng cửa thứ Hai, biên độ và dollar volume
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 ticker

CRCL 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 đó.

Truy vấnTin tức ngày 30/06: số lượng bài báo và tiêu đề cuối cùng trong ngày của mỗi mã trong bản tóm tắt nà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 ASC

Cá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, 00 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

Truy vấnDẫn đầu về volume theo hai cách: top 6 theo dollars traded, top 4 theo shares traded (đã loại trừ một mã trùng symbol đang chờ xác minh)
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) DESC

Xé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).

Truy vấnSố shares traded mỗi khung 30 phút, giờ giao dịch chính thức (tỷ)
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_time

2.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

Truy vấnMột dòng cho cả ngày giao dịch options: volume, expiry trong ngày, SPY's put/call skew theo moneyness, tuần điều chỉnh theo ngày lễ
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'

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.

Truy vấnSáu option contracts giao dịch nhiều nhất ngày 30/06, theo số lượng contracts traded
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 ASC

Hợ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

Truy vấnĐường cong Treasury, đóng cửa 30/06 so với 29/06 (chỉ hiển thị các kỳ hạn có dữ liệu)
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

Truy vấnLịch doanh nghiệp và dòng thông tin ngày 30/06, trong một dòng (hiển thị khoảng cách filing-index)
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_session

704 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

Truy vấnKiểm tra phiên: biên độ minute-bar quan sát được của SPY
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.