Tổng kết thị trường ngày 2 tháng 7 năm 2026
Thị trường xoay chuyển dòng tiền trước kỳ nghỉ lễ khi Nasdaq giảm điểm nhưng độ rộng thị trường vẫn tích cực. Nhóm công nghệ và cổ phiếu bộ nhớ chịu áp lực bán.
Thứ Năm, ngày 2 tháng 7 năm 2026 — phiên giao dịch cuối cùng trước kỳ nghỉ lễ Độc lập — là một ngày xoay chuyển dòng tiền dù tiêu đề chính là về một đợt bán tháo. QQQ ghi nhận mức -1.71% trong khi DIA tăng 1.04%, và độ rộng thị trường ở mức TÍCH CỰC: 3398 cổ phiếu thanh khoản tăng so với 2758, 54.6% mã tăng điểm trong khi chỉ số tăng trưởng giảm. Tám trên mười một quỹ ngành đóng cửa ở mức cao hơn; áp lực bán tập trung vào nhóm công nghệ và nhóm cổ phiếu bộ nhớ vốn đã giảm ngày hôm trước.
Bảng điểm
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-07-01 13:30:00' AND window_start < '2026-07-01 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-07-02 13:30:00' AND window_start < '2026-07-02 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.tickerSự chênh lệch giữa DIA ở mức 1.04% và QQQ ở mức -1.71% là điểm nhấn của ngày hôm nay — nhóm công nghiệp và nhóm tăng trưởng có mức lợi nhuận hàng ngày chênh lệch gần ba điểm. SPY nằm ở mức trung bình là -0.12%; IWM đóng cửa ở mức -0.59%.
Was the day unusual?
Two lenses in one panel: SPY's open-to-close move and QQQ's close-over-close move, each ranked against the trailing month by absolute size (rank 1 = biggest).
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH per_day AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct,
argMax(toFloat64(close), window_start) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-06-02 00:00:00')
AND window_start < toDateTime('2026-07-03 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
),
with_prev AS (
SELECT ticker, d, oc_pct,
lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) AS prev_close,
(rth_close / lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct
FROM per_day
)
SELECT
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02'))),
groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-02'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02'))),
groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-02') AND isFinite(cc_pct) AND prev_close > 0)) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ' AND isFinite(cc_pct) AND prev_close > 0) AS qqq_sessions_compared,
toString(minIf(d, ticker = 'SPY')) AS first_session
FROM with_prevAt the index level, no. SPY's -0.35% open-to-close ranks 15 of 22 trailing sessions — the bottom half. QQQ was louder but still not extreme: its -1.71% close-over-close ranks 9 of 21 sessions with a defined prior close, back to 2026-06-02 — a mid-pack bad day for the growth index. The single-name tape is where July 2 was loud.
Độ rộng thị trường: sắc xanh bao phủ, chỉ số tăng trưởng giảm
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-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') AS day_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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,
reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close > prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS advancers_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close < prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS decliners_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(count() - countIf(day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS dropped_by_liquidity_filter_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(count())), '[0-9]{1,3}'), ',')) AS tickers_traded_both_sessions_fmt
FROM per_ticker
WHERE prior_close > 0 AND day_close > 03,398 mã tăng, 2,758 mã giảm, 63 không đổi — 54.6% số mã thanh khoản tăng trong khi QQQ giảm. Các chỉ số tính theo vốn hóa và chỉ số độ rộng tính theo số lượng mã cho kết quả khác nhau; những ngày như thế này là lý do tại sao cả hai đều được đưa vào bảng phân tích. Bộ lọc loại bỏ 5,317 trong số 11,536 mã giao dịch hai phiên có vốn hóa dưới một triệu đô la.
Từng nhóm ngành: nơi dòng tiền đổ vào
Độ rộng thị trường cho biết số lượng mã tăng, nhưng không cho biết loại hình cụ thể. Mười một quỹ ETF theo nhóm ngành của SPDR đã phân tích phiên giao dịch theo từng ngành, và khoảng cách giữa nhóm tăng mạnh nhất và yếu nhất chính là mức độ phân tán của ngày hôm đó.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH per_etf AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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_close / prior_close - 1) * 100 - min((day_close / prior_close - 1) * 100) OVER (), 2) AS pts_above_worst_sector,
day_dollar_bn
FROM per_etf
ORDER BY tickerY tế (XLV) dẫn đầu với 2.63%, tiếp theo là tiện ích 2.23%, hàng tiêu dùng thiết yếu 2%, và nguyên vật liệu 1.94%. Công nghệ (XLK) đứng cuối với -2.71%, là nhóm ngành duy nhất giảm hơn một điểm; tiêu dùng không thiết yếu (-0.81%) và dịch vụ truyền thông (-0.13%) là hai quỹ giảm điểm khác, tám nhóm còn lại đều tăng. Mức độ phân tán từ nhóm tốt nhất đến tệ nhất là: 5.34 điểm phần trăm. Sự phân hóa giữa DIA tăng và QQQ giảm diễn ra trên toàn thị trường, không chỉ ở bốn cổ phiếu vốn hóa lớn — đó là lý do tại sao đường tiến-lùi (advance-decline line) tăng trong khi Nasdaq giảm không phải là điều mâu thuẫn.
Điểm nhấn trong ngày: làn sóng bán tháo bộ nhớ, ngày thứ hai
Nhóm cổ phiếu phức hợp đã giảm mạnh vào thứ Tư tiếp tục lao dốc hơn vào thứ Năm — xét về biên độ và sự biến động cùng chiều, không phải về 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-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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 ghi nhận mức giảm -14.32%, Seagate -10.38%, Western Digital -9.92%, MU -5.57% — trên khối lượng giao dịch $51.4 tỷ của MU, xấp xỉ một lần rưỡi so với SPY. MU và SanDisk chạm đáy muộn (15:26, 15:26 ET), Seagate và Western Digital chạm đáy sớm hơn (14:23, 13:59). Bối cảnh: Thứ Tư và phân tích chuyên sâu về MU.
Nửa còn lại của làn sóng luân chuyển dòng tiền, nằm ở nhóm megacaps:
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-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA')
AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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 tickerAAPL tăng 4.75% theo một chiều duy nhất — đáy tại 09:30 ET, đỉnh tại 15:57, ba phút trước khi đóng cửa — trong khi TSLA biến động ngược lại tại -7.65%. MSFT tăng 1.41%; NVDA đóng cửa ở mức -1.55%. Cùng một chỉ số, nhưng diễn biến trái ngược.
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-07-02 13:30:00' AND window_start < '2026-07-02 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-07-02 13:30:00' AND window_start < '2026-07-02 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) DESCMU dẫn đầu thị trường với $51.4 tỷ trong phiên thứ tư liên tiếp (Thứ Hai, Thứ Ba, Thứ Tư) so với mức $32.7 tỷ của SPY. SanDisk với $26.57 tỷ cũng là cổ phiếu thứ hai thuộc nhóm ngành bộ nhớ nằm trong top 4. SOXS — ETF nghịch đảo 3x nhóm bán dẫn — đứng đầu bảng về số lượng cổ phiếu với 748.2 triệu: số lượng cổ phiếu rẻ chiếm ưu thế về số lượng, trong khi cổ phiếu đắt chiếm ưu thế về giá trị, và relative volume so sánh giá trị đó với mức trung bình của chính cổ phiếu đó. Cơ sở dữ liệu: giờ giao dịch bình thường ngày 2 tháng 7, loại trừ một niêm yết tái sử dụng ký hiệu (receipts).
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-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY et_time
ORDER BY et_time2.13 tỷ cổ phiếu trong nửa giờ đầu mở cửa, mức thấp nhất là 0.81 tỷ vào lúc 14:30, và đạt 2.3 tỷ vào lúc đóng cửa trước kỳ nghỉ lễ — nhóm cuối cùng là nhóm có khối lượng lớn nhất trong ngày, do the closing auction gom các lệnh chờ vào một mức giá duy nhất.
Thị trường options: sự dịch chuyển của các hợp đồng weekly
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-07-02 00:00:00' AND sip_timestamp < '2026-07-03 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-07-02 13:30:00' AND window_start < '2026-07-02 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) = '260702') / 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, substring(ticker, length(ticker) - 14, 6) = '260710')) / 1e6, 2) AS jul10_weekly_contracts_m,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717')) / 1e6, 2) AS jul17_monthly_contracts_m,
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_fmt,
round(top_contract.7, 3) AS top_contract_avg_price,
round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close,
round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'Giao dịch options đạt 80.96 triệu hợp đồng qua 13.15 triệu lệnh, và 47.4% khối lượng đó đã đáo hạn vào cùng ngày thứ Năm. Không có hợp đồng nào có mã đáo hạn ngày 3 tháng 7 được giao dịch trong ngày (0 lệnh), vì vậy thứ Năm vừa chịu kỳ đáo hạn hàng ngày, vừa chịu kỳ đáo hạn weekly bị dịch chuyển của tuần. Hợp đồng giao dịch nhiều nhất là SPY put $740 cùng ngày — 540,403 hợp đồng với mức premium trung bình là $0.499, trong khi SPY đóng cửa cao hơn mức strike 4.8 đô la: trạng thái out of the money, và một lệnh put xuất hiện trên một bảng điện mà Thứ Ba và Thứ Tư toàn là lệnh call. Lệnh call vẫn chiếm 58.4% khối lượng; hợp đồng weekly tiếp theo đạt 9.64 triệu hợp đồng, còn hợp đồng monthly tháng 7 đạt 8.82 triệu (cơ chế đáo hạn).
Bảng giá: chi phí để giao dịch
Giá cả cho biết điều gì đã xảy ra; báo giá cho biết chi phí phải trả. bid-ask spread là phí tổn cho mỗi giao dịch khứ hồi, tính theo basis points của mức giá trung bình (một basis point bằng một phần trăm chia cho một trăm). Chúng tôi đo lường chỉ số này trong mọi phiên, dù là phiên bình thường hay không — đây là cơ sở để kiểm chứng nhận định "spread giãn rộng".
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-01')) / 1e6, 2) AS jul1_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / countIf(toDate(sip_timestamp) = toDate('2026-07-01')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'SPY') / 1e6, 2) AS jul2_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'QQQ') / 1e6, 2) AS jul2_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'MU') / 1e6, 2) AS jul2_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'Mức giá mua và bán tốt nhất quốc gia (NBBO) — đỉnh của sổ lệnh hợp nhất — đã được cập nhật 597.22 triệu lần vào ngày 2 tháng 7 so với 449.15 triệu vào ngày 1 tháng 7: tăng 33% vào thời điểm đóng cửa. QQQ đạt 7.56 triệu, cao hơn mức 5.42 triệu của SPY; MU đạt 1.01 triệu.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
ticker,
round(med_bps, 2) AS median_spread_bps,
round(med_dollars * 100, 1) AS median_spread_cents,
round(med_bps / min(med_bps) OVER (), 1) AS times_the_spy_spread,
round(quote_updates / 1e6, 2) AS rth_updates_m,
invalid_quotes_dropped
FROM (
SELECT
ticker,
quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000,
toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_bps,
quantileExactIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price),
toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_dollars,
count() AS quote_updates,
countIf(NOT (toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price))) AS invalid_quotes_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'TSLA', 'NVDA', 'MU', 'SNDK', 'WDC')
AND sip_timestamp >= '2026-07-02 13:30:00' AND sip_timestamp < '2026-07-02 20:00:00'
GROUP BY ticker
)
ORDER BY median_spread_bps ASCSPY có mức spread trung vị là 0.27 basis points: khoảng 2 cent trên một ETF giá $744.8. QQQ ở mức 0.83 bps, NVDA là 1.03. Những mã cổ phiếu giảm giá lại là những mã có chi phí giao dịch cao: MU 5.52 bps, SanDisk 10.4, Western Digital 10.79 — gấp 40 lần spread của SPY. Việc khớp lệnh một rổ cổ phiếu bộ nhớ tốn chi phí gấp nhiều lần so với khớp lệnh chỉ số, trước khi tính đến tác động về giá. Các báo giá không hợp lệ (chỉ có một chiều, hoặc giá mua cao hơn giá bán) được tính trên từng mã, không bị bỏ qua.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH per_day AS (
SELECT toDate(sip_timestamp) AS d,
quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000) AS med_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= '2026-06-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)
GROUP BY d
)
SELECT
round(anyIf(med_bps, d = toDate('2026-07-02')), 3) AS jul2_median_spread_bps,
round(quantileExact(0.5)(med_bps), 3) AS trailing_median_bps,
round(anyIf(med_bps, d = toDate('2026-07-02')) - quantileExact(0.5)(med_bps), 3) AS jul2_minus_trailing_bps,
arrayCount(x -> x > anyIf(med_bps, d = toDate('2026-07-02')), groupArrayIf(med_bps, d != toDate('2026-07-02'))) + 1 AS wider_rank,
count() AS sessions_compared,
round(max(med_bps), 3) AS widest_session_bps
FROM per_dayKết luận cho thấy đây là một ngày thanh khoản bình thường: mức spread trung vị của SPY là 0.27 bps, chênh lệch 0 bps so với mức trung vị của tháng trước (0.27 bps), xếp thứ 11 trên 22 phiên về độ giãn rộng — không hề gần mức giãn rộng nhất trong tháng là 0.409 bps. Một đợt bán tháo tập trung trong bối cảnh thị trường tăng điểm đã không gây áp lực lên hệ thống vận hành.
Lãi suất: dữ liệu ngày 2 tháng 7 đã cập nhật
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS jul2_rows,
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS jul1_rowsDữ liệu kho bạc thường chậm hơn thị trường một hoặc hai ngày: tại thời điểm xuất bản đầu tiên, dữ liệu đóng cửa ngày 2 tháng 7 chưa có dòng nào được lưu trữ, và trang này đã thông báo như vậy thay vì đưa ra con số dự đoán. Dữ liệu hiện đã được cập nhật — 1 dòng cho ngày 2 tháng 7, 1 dòng cho ngày 1 tháng 7 — vì vậy bảng dưới đây hiển thị đường cong lãi suất của chính phiên giao dịch đó.
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 jul2_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-07-02') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS p
)Tại thời điểm đóng cửa, lợi suất kỳ hạn 10 năm ở mức 4.49%, và spread 2s10s ở mức 0.35 điể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-07-02'
) 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-07-02'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news,
(
SELECT (count(), countIf(split_to > split_from), countIf(split_to < split_from),
arrayStringConcat(groupArray(concat(ticker, ' ', toString(split_to), '-for-', toString(split_from))), '; '))
FROM global_markets.stocks_splits
WHERE execution_date = '2026-07-02' AND ticker NOT IN ('SPCX')
) AS splits
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-02') AS ex_dividend_records,
splits.1 AS splits_executed,
splits.2 AS forward_splits,
splits.3 AS reverse_splits,
splits.4 AS split_records,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS filings_8k,
(SELECT arrayStringConcat(groupArray(concat(ticker, ' — ', issuer_name)), '; ') FROM (
SELECT ticker, issuer_name FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02' 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 any(split_from) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_from,
(SELECT any(split_to) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_to,
(SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00') AS crwd_prev_close,
(SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_day_close,
(SELECT round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_dollar_m,
(SELECT count() FROM (
SELECT ticker FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-02')
AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY ticker
)) AS split_names_with_bars319 cổ phiếu đã đến ngày không hưởng cổ tức, 2 mã niêm yết mới đã xuất hiện (MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II), và chỉ số SEC ghi nhận 5200 hồ sơ trong kỳ nghỉ lễ — bao gồm 2109 Form 4s và 258 8-Ks. Luồng tin tức cung cấp 201 bài viết từ 3 nhà xuất bản (NVDA là nhiều nhất, chiếm 18).
Việc chia tách cổ phiếu có thể gây nhầm lẫn cho bất kỳ ai chỉ đọc giá đóng cửa thô. CRWD đã thực hiện chia tách cổ phiếu theo tỷ lệ 4-cho-1, vì vậy bảng giá chưa điều chỉnh hiển thị mức $772.45 vào thứ Tư và $193.67 vào thứ Năm — một sự sụt giảm giả, thực chất là bốn cổ phiếu mới cho mỗi cổ phiếu cũ. CRWD không phải trường hợp duy nhất: 8 hồ sơ chia tách đã được thực hiện, bao gồm 5 chia tách xuôi và 3 chia tách ngược (cột split_records liệt kê các hồ sơ này). Chia tách ngược tạo ra hiệu ứng ngược lại — mức giá thô tăng vọt qua đêm. Chỉ 2 các mã đó được giao dịch trên bảng giá của chúng tôi; mức doanh số 1473.51 triệu đô của CRWD là con số đủ lớn để làm sai lệch dữ liệu trên màn hình, và mọi bộ lọc biến động ở đây đều loại trừ mã này.
Sắp tới
Dữ liệu lịch sử, không phải dự báo — những gì các bảng dữ liệu ghi nhận về các phiên tiếp theo.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS jul6_spy_regular_bars,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS exdiv_records_jul6,
(SELECT arrayStringConcat(groupArray(ticker), ', ') FROM global_markets.stocks_dividends
WHERE ex_dividend_date = '2026-07-06'
AND ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'XOM', 'KO', 'PG', 'WMT', 'CVX', 'HD')) AS household_exdivs_jul6,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_jul6,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02') AS next_scheduled_closure,
(SELECT any(name) FROM global_markets.stocks_market_holidays
WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_name,
(SELECT any(status) FROM global_markets.stocks_market_holidays
WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_status,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest
WHERE settlement_date <= '2026-07-02') AS latest_si_settlement,
(SELECT dateDiff('day', max(settlement_date), toDate('2026-07-02')) FROM global_markets.stocks_short_interest
WHERE settlement_date <= '2026-07-02') AS si_settlement_age_daysThứ Hai ngày 6 tháng 7 mở cửa với một phiên đầy đủ các thanh 390, được xác nhận từ các thanh của chính nó. Phiên này ghi nhận 118 hồ sơ chia cổ tức — có một thương hiệu nổi tiếng trong số mười cái tên chúng tôi đang xem xét (JPM) — và 15 lệnh thực hiện chia tách cổ phiếu. Thời điểm đóng cửa tiếp theo được lên lịch: Labor Day, 2026-09-07 (closed). Vị thế bán khống (short interest) không có gì mới, như thường lệ — kỳ quyết toán mới nhất được ghi nhận là 2026-06-30, 2 ngày trước, việc công bố dữ liệu chậm hơn khoảng hai tuần so với kỳ quyết toán (tại sao).
Phiên giao dịch chính thức — và ngày thứ Sáu không diễn ra
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-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS day_sessions,
(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
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-02 00:00:00' AND window_start < '2026-07-03 00:00:00'Ngày 2 tháng 7 là một phiên giao dịch đầy đủ, không phải đóng cửa sớm: các thanh nến của SPY kéo dài từ 04:00 đến 19:59 giờ New York (bao gồm cả phiên pre-market và after-hours), với chính xác 390 thanh nến trong khung giờ giao dịch chính thức. Thứ Sáu ngày 3 tháng 7 ghi nhận 0 thanh nến SPY — một phiên đóng cửa đầy đủ vì ngày Lễ Độc lập 4 tháng 7 rơi vào thứ Bảy. Tuần gồm bốn phiên: tổng kết tuần.
FAQ
Tại sao Dow tăng trong khi Nasdaq giảm vào ngày 2 tháng 7 năm 2026?
Hai chỉ số này nắm giữ các nhóm cổ phiếu khác nhau: DIA đóng cửa ở mức 1.04%, QQQ ở mức -1.71%. Cơ cấu ngành cũng có sự phân hóa tương tự — nhóm chăm sóc sức khỏe, tiện ích và hàng tiêu dùng thiết yếu chiếm ưu thế, trong khi nhóm công nghệ đứng cuối ở mức -2.71%, tạo ra khoảng cách từ tốt nhất đến tệ nhất là 5.34 điểm.
Thị trường chứng khoán có mở cửa vào thứ Sáu của tuần lễ Lễ Độc lập không?
Không. Ngày Lễ Độc lập rơi vào thứ Bảy, nên các sàn giao dịch đã nghỉ lễ trọn ngày thứ Sáu ngay sau phiên này: dữ liệu của chúng tôi hiển thị 0 nến phút của SPY cho ngày đó.
Việc chia tách cổ phiếu (stock split) sẽ tác động thế nào đến giá cổ phiếu?
Việc này nhân số lượng cổ phiếu lên bốn lần và chia giá cổ phiếu cho bốn; giá trị của vị thế không đổi. CRWD, ngày 2 tháng 7: giá đóng cửa chưa điều chỉnh là $772.45 vào thứ Tư và $193.67 vào thứ Năm — đây là mức giảm ảo trên bất kỳ bộ lọc dữ liệu nào không tính đến việc chia tách.
Spread giữa giá mua và giá bán (bid-ask spreads) vào ngày 2 tháng 7 năm 2026 rộng bao nhiêu?
Median spread niêm yết của SPY là 0.27 basis points so với giá trung bình trong giờ giao dịch bình thường — chiếm 11 của 22 các phiên trước đó về độ rộng, một ngày giao dịch bình thường. Các mã cổ phiếu riêng lẻ có spread rộng hơn: MU là 5.52 bps, WDC là 10.79.
Ghi chú dữ liệu
- Khối lượng giao dịch (Dollar volume) là đại diện theo từng phút — giá đóng cửa × khối lượng, cộng dồn theo mỗi thanh nến.
- Dữ liệu trái phiếu kho bạc kỳ hạn 2 năm tháng 7 được cập nhật sau lần xuất bản đầu tiên — bản ghi chú gốc thông báo về việc thiếu dữ liệu này kèm theo biên nhận số dòng; bản sửa đổi này đã bao gồm dữ liệu, biên nhận được hiển thị kèm theo.
- Thay đổi giá đóng cửa thô của CRWD là hệ quả của việc chia tách cổ phiếu — dữ liệu này bị loại khỏi các màn hình theo dõi biến động mạnh (mover screens).
Ghi chú dữ liệu đầy đủ
- Bảng ngành bao gồm mười một quỹ SPDR Select Sector (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY) — đây là một rổ chứng khoán cố định đã được công bố, không phải trường dữ liệu ngành từ nhà cung cấp.
- Số lượng báo giá (Quote-tape counts) được phân loại theo ngày UTC của dấu thời gian SIP; một phiên giao dịch mùa hè có thể nằm trong cùng một ngày UTC.
- Một mã niêm yết tháng 6 bị trùng lặp ký hiệu (reused-symbol) đã bị loại khỏi bảng xếp hạng (biên nhận); các phân tích chi tiết về tick dữ liệu nằm trong các bài phân tích chuyên sâu.
Phương pháp luận
- Giai đoạn được tính là một phiên giao dịch (1 phiên, được xác nhận từ các thanh nến quan sát được). Dấu thời gian được lưu trữ theo giờ UTC và chuyển đổi sang giờ New York trong các truy vấn; "close" nghĩa là thanh nến phút cuối cùng của phiên giao dịch thường, và sự thay đổi ngày được so sánh giữa ngày 2 tháng 7 với ngày 1 tháng 7. Giá đóng cửa ngày 3 tháng 7 được xác nhận từ các thanh nến, không phải là giả định.
- Spread được báo giá (ask trừ bid) theo đơn vị basis points của mức giá mid-price, tính theo trung vị qua các cập nhật NBBO trong giờ giao dịch thường, dựa trên một quantile xác định. Các số thập phân được chuyển đổi thành float trước khi thực hiện phép tính tỷ lệ; ngày đáo hạn quyền chọn được phân tích lại từ ticker của OCC. Mỗi bảng được đọc 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.
Biểu đồ, bảng và SQL là một thực thể thống nhất. Bạn có thể dán bất kỳ bảng nào vào terminal Strasmore để tùy chỉnh. Phiên trước đó: ngày 1 tháng 7. Tuần này: tuần lễ nghỉ lễ gồm bốn phiên.