Market Recap: July 6, 2026, Di Day In Numbers
Back from Independence Day break: growth-led gap up, sector split wey pass di index move several times, reverse-split wall, and di month tightest quotes.
Monday, July 6, 2026, na di first session wey dey come back from Independence Day weekend, e open with gap up wey growth stocks lead, and e hold am. QQQ close 1.39% against DIA 0.42%, na di mirror of Thursday wey rotation happen, and breadth dey run green: 3861 liquid names dey rise against 2242. Most of di move na di reopening gap, wey dem price for di tightest index quote of di trailing month. Every number wey dey below, dem read am from stored query.
Di scoreboard
Di changes dey compare July 6's last regular-session minute bar with Thursday July 2's, one market holiday back.
| ticker | prior close | day open | day close | gap pct | intraday pct | pct change | day high | day low | shares traded m |
|---|---|---|---|---|---|---|---|---|---|
| DIA | 527.83 | 528.72 | 530.03 | 0.17 | 0.25 | 0.42 | 530.03 | 525.85 | 2.8 |
| IWM | 297.53 | 297.75 | 298.88 | 0.07 | 0.38 | 0.45 | 300.41 | 297.62 | 17.1 |
| QQQ | 712.74 | 719.93 | 722.63 | 1.01 | 0.38 | 1.39 | 726.08 | 718.45 | 26 |
| SPY | 744.8 | 748.74 | 751.3 | 0.53 | 0.34 | 0.87 | 752.41 | 747.41 | 42 |
The exact SQL behind every number
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-02 13:30:00' AND window_start < '2026-07-02 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-06 13:30:00' AND window_start < '2026-07-06 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_open) / toFloat64(p.prior_close) - 1) * 100, 2) AS gap_pct,
round((toFloat64(s.day_close) / toFloat64(s.day_open) - 1) * 100, 2) AS intraday_pct,
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.tickerQQQ's 1.39% lead di four index ETFs, DIA's 0.42% trail am — na di exact inverse of Thursday, wey DIA rise and QQQ fall. SPY close 0.87%, IWM 0.45%. Gap versus grind na di real shape of di day: QQQ open 1.01% above Thursday's close, then add only 0.38% more open-to-close; SPY's 0.53% gap carry most of di 0.87% day. IWM (0.07%) and DIA (0.17%) barely gap — dem just grind higher inside di session instead.
Dat day dey strange?
| day move pct | abs move rank | sessions wey we compare | first session |
|---|---|---|---|
| 0.34 | 13 | 19 | 2026-06-08 |
The exact SQL behind every number
SELECT round(anyIf(oc_pct, d = toDate('2026-07-06')), 2) AS day_move_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-06'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-06'))) + 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-06 00:00:00')
AND window_start < toDateTime('2026-07-07 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)For the index side, no: SPY open-to-close move wey clock 0.34% rank 13 among the last 19 trailing sessions for absolute size, so e dey mid-pack. The intraday tape dey normal; na the gap wey the day show face.
Breadth: green tape, growth don come front again
| advancers | decliners | unchanged | liquid tickers | tickers wey trade both sessions | tickers wey liquidity filter drop | advancer pct |
|---|---|---|---|---|---|---|
| 3861 | 2242 | 86 | 6189 | 11550 | 5361 | 62.4 |
The exact SQL behind every number
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 00:00:00') AS day_dollar_volume
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')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 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
FROM per_ticker
WHERE prior_close > 0 AND day_close > 03861 advancers, 2242 decliners, 86 unchanged, 62.4% of the liquid tape dey rise. Index weighting and equal-count breadth agree, both green — wey Thursday bin split dem. Di filter don drop 5361 of 11550 dual-session tickers wey trade under $1M.
Sector by sector: how wide the split take dey?
Four megacap no dey make one market. The panel price di day through di eleven big sector ETFs, one fund for each slice of the S&P 500, di same basket every session. Watch di spread between di best sector and di worst: na dis be di day's dispersion.
| ticker | pct chg | gap pct | intraday pct | day dollar bn | points wey e dey behind leader |
|---|---|---|---|---|---|
| XLK | 1.71 | 1.19 | 0.52 | 1.43 | 0 |
| XLF | 0.99 | 0.42 | 0.56 | 1.64 | 0.72 |
| XLI | 0.9 | 0.43 | 0.47 | 1.2 | 0.81 |
| XLY | 0.75 | 0.35 | 0.39 | 0.98 | 0.96 |
| XLC | 0.6 | 0.43 | 0.17 | 0.82 | 1.11 |
| XLB | -0.06 | -0.13 | 0.08 | 0.85 | 1.77 |
| XLE | -0.15 | -0.32 | 0.17 | 1.15 | 1.86 |
| XLRE | -0.92 | 0.09 | -1.01 | 0.28 | 2.63 |
| XLU | -1.03 | -0.11 | -0.92 | 0.73 | 2.74 |
| XLV | -1.03 | -0.35 | -0.69 | 2.35 | 2.75 |
| XLP | -1.08 | -0.24 | -0.85 | 1.06 | 2.79 |
The exact SQL behind every number
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-06 00:00:00')) AS day_open,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 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-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
round((day_close / day_open - 1) * 100, 2) AS intraday_pct,
day_dollar_bn,
round(max((day_close / prior_close - 1) * 100) OVER () - (day_close / prior_close - 1) * 100, 2) AS points_behind_leader
FROM per_name
ORDER BY pct_chg DESC, ticker ASCTechnology (XLK) take di day for 1.71%, and almost all of am na di gap: 1.19% for di open, then 0.52% for di next six and a half hours. Financials (0.99%) and industrials (0.9%) follow. Then di table turn: five green rows give way to six red, na di defensive end — utilities, health care, staples — come reach low as -1.08%. From top to bottom, 2.79 percentage points separate best from worst on di day wey S&P tracker move 0.87%, several times di index move, and na why e no make sense read one green day as one thing. Real estate and utilities run di opposite shape to tech: near-flat opens (0.09%, -0.11%), then slide all session (-1.01% and -0.92% open to close).
The highlight of the day: di memory rout, wey reverse half
Di memory-and-storage complex wey break down across Wednesday and Thursday bounce back Monday, but na only half reverse.
| ticker | prior close | day close | pct chg | day high | day high ET | day low | day low ET | range pct | day dollar bn |
|---|---|---|---|---|---|---|---|---|---|
| MU | 975.77 | 984.31 | 0.88 | 1019 | 10:45 | 980.85 | 15:59 | 3.89 | 30.9 |
| SNDK | 1743.59 | 1743.08 | -0.03 | 1837.77 | 10:44 | 1713.2 | 13:59 | 7.27 | 13.85 |
| STX | 820.25 | 869.5 | 6 | 886.89 | 10:39 | 848 | 13:02 | 4.59 | 2.56 |
| WDC | 538.99 | 577.46 | 7.14 | 601 | 10:44 | 563.61 | 09:30 | 6.63 | 3.78 |
The exact SQL behind every number
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-06 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-06 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-06 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-06 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 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-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 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 tickerDi two drive makers lead di rebound: Western Digital 7.14% and Seagate 6%, both of dem top out for mid-morning (10:44 and 10:39 ET). Di heaviest two just sit out: MU add 0.88%, e print im low on di closing bar (15:59); SanDisk finish -0.03% across a 7.27% range. MU still move $30.9 billion of stock, pass di other three put together (di MU deep-dive don cover im quarter).
Di other half of di rotation sit inside di megacaps:
| ticker | prior close | day close | pct chg | day high | day high ET | day low | day low ET | range pct | day dollar bn |
|---|---|---|---|---|---|---|---|---|---|
| AAPL | 308.22 | 312.81 | 1.49 | 314.2 | 11:45 | 307 | 09:30 | 2.35 | 11.7 |
| MSFT | 389.62 | 386.88 | -0.7 | 389.15 | 09:30 | 381.22 | 09:39 | 2.08 | 9.32 |
| NVDA | 194.51 | 195.62 | 0.57 | 197.55 | 12:14 | 193.99 | 09:30 | 1.84 | 15.14 |
| TSLA | 392.81 | 419.77 | 6.86 | 420 | 15:59 | 390.5 | 09:37 | 7.55 | 19.17 |
The exact SQL behind every number
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-06 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-06 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-06 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-06 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 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-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 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 tickerTSLA run one-way climb go 6.86%, low for 09:37 ET, high on di closing bar (15:59), di mirror of im Thursday fall. AAPL add 1.49% and NVDA 0.57%; MSFT na di only megacap wey red, for -0.7%, im high print for di 09:30 open.
Where di money dey trade
| leaderboard | ticker | dollar volume bn | shares m | pct for board leader |
|---|---|---|---|---|
| by dollars traded | SPY | 31.49 | 42 | 100 |
| by dollars traded | MU | 30.9 | 30.9 | 98.1 |
| by dollars traded | TSLA | 19.17 | 46.6 | 60.9 |
| by dollars traded | QQQ | 18.79 | 26 | 59.7 |
| by dollars traded | NVDA | 15.14 | 77.2 | 48.1 |
| by dollars traded | AMD | 14.26 | 25.5 | 45.3 |
| by shares traded | SOXS | 1.86 | 467.1 | 100 |
| by shares traded | BITO | 3.06 | 358.5 | 76.8 |
| by shares traded | SBEV | 0.07 | 281.9 | 60.4 |
| by shares traded | TZA | 0.62 | 161.6 | 34.6 |
The exact SQL behind every number
SELECT leaderboard, ticker, dollar_volume_bn, 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(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 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(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 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) DESCSPY na e lead di dollar tape with $31.49 billion, with MU ($30.9 billion) one step behind, and dat end MU run wey am dey top for four sessions (Monday Thursday through dey carry di receipts). For di share board, SOXS, wey be di 3x-inverse semiconductor ETF, trade 467.1 million shares, and e top di count again even as di chips wey e dey track dey rise.
| ET time | shares bn | pct for biggest bucket |
|---|---|---|
| 09:30 | 1.96 | 93.7 |
| 10:00 | 1.31 | 62.7 |
| 10:30 | 1.09 | 51.9 |
| 11:00 | 1.06 | 50.5 |
| 11:30 | 0.88 | 42 |
| 12:00 | 0.84 | 40 |
| 12:30 | 0.76 | 36.3 |
| 13:00 | 0.77 | 36.5 |
| 13:30 | 0.81 | 38.7 |
| 14:00 | 0.69 | 32.8 |
| 14:30 | 0.68 | 32.5 |
| 15:00 | 0.84 | 40.3 |
| 15:30 | 2.1 | 100 |
The exact SQL behind every number
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-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
GROUP BY et_time
ORDER BY et_time1.96 billion shares for di opening half hour, a 0.68 billion trough around 14:30, 2.1 billion inside di 15:30 close — na di normal intraday smile, wey dey heaviest pass for di two ends.
The options tape
| option prints (m) | contracts (m) | call pct of volume | same day expiry pct | same day contracts (m) | spy contracts (m) | qqq contracts (m) | tsla contracts (m) | top contract underlying wey dey top | top contract strike | top contract type | top contract na call | top contract expiry | top contract volume (m) | top contract avg price | spy close minus strike |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10.53 | 60.98 | 58.4 | 38.7 | 23.57 | 12.1 | 6.88 | 4.29 | SPY | 751 | C | 1 | 2026-07-06 | 1.08 | 0.564 | 0.3 |
The exact SQL behind every number
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-06 00:00:00' AND sip_timestamp < '2026-07-07 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-06 13:30:00' AND window_start < '2026-07-06 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) = '260706') / sum(size), 1) AS same_day_expiry_pct,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260706')) / 1e6, 2) AS same_day_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,
round(toFloat64(sumIf(size, underlying_symbol = 'TSLA')) / 1e6, 2) AS tsla_contracts_m,
top_contract.1 AS top_contract_underlying,
top_contract.2 AS top_contract_strike,
top_contract.3 AS top_contract_type,
if(top_contract.3 = 'C', 1, 0) AS top_contract_is_call,
top_contract.4 AS top_contract_expiry,
round(toFloat64(top_contract.5) / 1e6, 2) AS top_contract_volume_m,
round(top_contract.7, 3) AS top_contract_avg_price,
round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'Options trade 60.98 million contracts for total of 10.53 million trades, 58.4% na calls. Same-day expiry hold 38.7% of the tape (23.57 million contracts), that na the normal Monday 0DTE share, and e dey below the heavy Thursday number wey be holiday-eve figure. Busiest contract na the same-day SPY $751 call, 1.08 million contracts for average price $0.564, and SPY close $0.3 above the strike price, so e dey in the money. Call dey top the board, even though Thursday finish on put.
Quote tape: gap up dey trade for wide markets?
Under every price wey dey above, na the quote stream dey sit there — the National Best Bid and Offer, wey dem dey re-quote continuously for every listed name. Gap open na where quotes fit turn hostile, so we dey measure am every session.
| jul6 updates (m) | jul2 updates (m) | day over day pct | jul6 open half hour (m) | jul6 midday half hour (m) | jul6 close half hour (m) |
|---|---|---|---|---|---|
| 391.96 | 597.22 | -34.4 | 58.66 | 20.74 | 33.7 |
The exact SQL behind every number
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-06')) / 1e6, 2) AS jul6_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-06')) / countIf(toDate(sip_timestamp) = toDate('2026-07-02')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 14:00:00') / 1e6, 2) AS jul6_open_half_hour_m,
round(countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 18:00:00') / 1e6, 2) AS jul6_midday_half_hour_m,
round(countIf(sip_timestamp >= '2026-07-06 19:30:00' AND sip_timestamp < '2026-07-06 20:00:00') / 1e6, 2) AS jul6_close_half_hour_m
FROM global_markets.cache_stocks_quotes
WHERE (sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00')
OR (sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00')The tape carry 391.96 million NBBO updates on Monday, against 597.22 million Thursday, -34.4% — one-third fewer messages than the pre-holiday session — and dem pile into the open: 58.66 million for the first half hour, against 20.74 million at 1:30pm and 33.7 million into the close. Fewer quotes than Thursday, but no be wider ones:
| ticker | open spread (bps) | midday spread (bps) | spread delta (bps) | open updates (k) | midday updates (k) | quote rate ratio | session updates (m) | dropped invalid quotes |
|---|---|---|---|---|---|---|---|---|
| DIA | 0.76 | 0.57 | 0.19 | 105.9 | 19.6 | 5.4 | 0.83 | 7 |
| IWM | 0.67 | 0.33 | 0.34 | 219.1 | 98.4 | 2.2 | 2.56 | 62 |
| MSFT | 3.88 | 1.56 | 2.32 | 25.2 | 6.6 | 3.8 | 0.32 | 121 |
| MU | 8.09 | 4.46 | 3.63 | 53.5 | 15.2 | 3.5 | 0.69 | 317 |
| QQQ | 0.83 | 0.42 | 0.42 | 357.9 | 121.4 | 2.9 | 3.96 | 239 |
| SNDK | 21.07 | 8.16 | 12.9 | 14.9 | 4.6 | 3.3 | 0.16 | 38 |
| SPY | 0.27 | 0.27 | 0 | 276.9 | 92.8 | 3 | 3.35 | 883 |
| STX | 30.94 | 25.62 | 5.32 | 2.9 | 0.8 | 3.4 | 0.04 | 11 |
| TSLA | 4.57 | 1.68 | 2.89 | 40.6 | 17.7 | 2.3 | 0.6 | 553 |
| WDC | 14.67 | 9.28 | 5.39 | 9.5 | 2.1 | 4.5 | 0.1 | 40 |
The exact SQL behind every number
SELECT
ticker,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00'), 2) AS open_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 2) AS midday_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00')
- quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 2) AS spread_delta_bps,
round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00') / 1e3, 1) AS open_updates_k,
round(countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00') / 1e3, 1) AS midday_updates_k,
round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00') / countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 1) AS quote_rate_ratio,
round(count() / 1e6, 2) AS session_updates_m,
countIf(bid_price <= 0 OR ask_price <= 0 OR bid_price > ask_price) AS dropped_invalid_quotes
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('DIA', 'IWM', 'MSFT', 'MU', 'QQQ', 'SNDK', 'SPY', 'STX', 'TSLA', 'WDC')
AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 20:00:00'
GROUP BY ticker
ORDER BY tickerThe bid-ask spread na the cost of crossing, for basis points of the mid-price — 1 bp na one penny for $100 stock. No checked name quote tighter for the gap's first twelve minutes than midday, and SPY's touch dey identical for both (0.27 bps, 0 bps of change), even as e re-quote 3x faster into the open. The width penalty land on single names, no be index funds: SanDisk pay the most (+12.9 bps, 8.16 to 21.07), MU +3.63, TSLA +2.89, against QQQ's 0.42 bps on a 0.83 bps touch. Seagate answer "no be everything liquid?": 30.94 bps wide at the open, over a hundred times SPY's touch.
| jul6 avg spread (cents) | tightness rank | sessions wey we compare | widest session (cents) | other sessions na avg (cents) | first session | dropped invalid quotes |
|---|---|---|---|---|---|---|
| 1.815 | 1 | 21 | 2.865 | 2.337 | June 4, 2026 | 41468 |
The exact SQL behind every number
SELECT
round(anyIf(avg_spread_cents, d = toDate('2026-07-06')), 3) AS jul6_avg_spread_cents,
arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-06')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-06'))) + 1 AS tightness_rank,
count() AS sessions_compared,
round(max(avg_spread_cents), 3) AS widest_session_cents,
round(avgIf(avg_spread_cents, d != toDate('2026-07-06')), 3) AS other_sessions_avg_cents,
replaceAll(formatDateTime(min(d), '%M %e, %Y'), ' ', ' ') AS first_session,
sum(dropped_invalid) AS dropped_invalid_quotes
FROM (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
avgIf(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100 AS avg_spread_cents,
countIf(NOT (bid_price > 0 AND ask_price >= bid_price)) AS dropped_invalid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime('2026-06-04 00:00:00')
AND sip_timestamp < toDateTime('2026-07-07 00:00:00')
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
)For the whole regular day, July 6 na SPY's tightest session for the trailing month: update-weighted average quoted spread of 1.815 cents, rank 1 of 21 sessions since June 4, 2026, against month wey average 2.337 cents and reach 2.865 at am widest. Holiday-thinned quote count still give the index buyer the cheapest touch for the board.
Rates: di curve hold quiet for long weekend
| curve point | jul6 yield pct | session change (bp) |
|---|---|---|
| 1 month | 3.69 | -1 |
| 3 month | 3.87 | 5 |
| 1 year | 3.95 | -1 |
| 2 year | 4.13 | -1 |
| 5 year | 4.21 | -2 |
| 10 year | 4.48 | -1 |
| 30 year | 4.99 | 1 |
| 2s10s spread | 0.35 | 0 |
The exact SQL behind every number
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jul6_yield_pct,
round((t.2 - t.3) * 100) AS session_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-06') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS p
)Di curve barely move for the long weekend. The 10-year sit down for 4.48% and the 2s10s spread for 0.35 percentage points — both of dem dey within one or two basis point of the July 2 print; the 3-month be the only mover wey matter, sit down for 5 basis points.
Calendar wey dey behind that day
| ex dividend records wey dey | splits wey don execute | reverse splits | forward splits | ipos wey don list | sec filings wey dey | insider form4 filings | filings 8k | news articles wey dey | news publishers wey dey | ticker wey cover pass | articles wey cover pass |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 119 | 15 | 14 | 1 | 0 | 3164 | 1219 | 201 | 236 | 3 | NVDA | 25 |
The exact SQL behind every number
WITH
(
SELECT (count(), uniqExact(publisher))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-06'
) 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-06'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_executed,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS forward_splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-06') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06') AS filings_8k,
news.1 AS news_articles,
news.2 AS news_publishers,
top_news.1 AS most_covered_ticker,
top_news.2 AS most_covered_articles119 dividend records waka go ex-dividend, 15 splits execute, 0 new listings come, and the SEC index record 3164 filings, 1219 Form 4s, 201 8-Ks — na lighter book pass wetin we see for the Thursday wey dey before holiday. The news feed carry 236 articles, and the name wey dem cover pass dey NVDA for 25.
Wall of reverse-split wey dey sit behind the mover screens
14 of the 15 splits na reverse splits, wey dem dey call share consolidations, and most of am dey for prices below one dollar, against 1 forward splits. A reverse split turn many old shares into one share, and the price go rise the same proportion, but a screen wey no adjust am for the split go report triple-digit "gain" wey never gain at all. The whole wall:
| ticker | old shares | new shares | old shares per new | jul2 close | jul6 close | unadjusted pct chg |
|---|---|---|---|---|---|---|
| INLF | 200 | 1 | 200 | 0.02 | 6.31 | 31450 |
| NTCL | 50 | 1 | 50 | 0.09 | 4.62 | 5033.3 |
| NIPG | 30 | 1 | 30 | 0.24 | 8.18 | 3308.3 |
| JZ | 30 | 1 | 30 | 0.1 | 2.99 | 2890 |
| HKIT | 25 | 1 | 25 | 0.17 | 4.13 | 2329.4 |
| CRIS | 20 | 1 | 20 | 0.35 | 5.9 | 1585.7 |
| NVVE | 18 | 1 | 18 | 0.32 | 4.94 | 1443.8 |
| ABTC | 15 | 1 | 15 | 0.56 | 8.47 | 1412.5 |
| TXXS | 10 | 1 | 10 | 2.35 | 24.34 | 935.7 |
| SLAI | 7 | 1 | 7 | 0.45 | 3.19 | 608.9 |
| SNAL | 5 | 1 | 5 | 0.61 | 3.03 | 396.7 |
| NIVF | 3 | 1 | 3 | 0.46 | 1.5 | 226.1 |
The exact SQL behind every number
SELECT
s.ticker AS ticker,
toFloat64(s.split_from) AS old_shares,
toFloat64(s.split_to) AS new_shares,
round(toFloat64(s.split_from) / toFloat64(s.split_to), 0) AS old_shares_per_new,
p.prev_close AS jul2_close,
d.day_close AS jul6_close,
round((d.day_close / p.prev_close - 1) * 100, 1) AS unadjusted_pct_chg
FROM (
SELECT ticker, any(split_from) AS split_from, any(split_to) AS split_to
FROM global_markets.stocks_splits
WHERE execution_date = '2026-07-06'
GROUP BY ticker
) s
INNER JOIN (
SELECT ticker, round(toFloat64(argMax(close, window_start)), 2) AS prev_close
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 IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06')
GROUP BY ticker
HAVING prev_close > 0
) p ON s.ticker = p.ticker
INNER JOIN (
SELECT ticker, round(toFloat64(argMax(close, window_start)), 2) AS day_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
AND ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06')
GROUP BY ticker
HAVING day_close > 0
) d ON s.ticker = d.ticker
ORDER BY unadjusted_pct_chg DESC, ticker ASCEvery one of the 12 rows na consolidation wey print triple-digit or higher "gain" on raw tape, from 31450% for top (a 200-for-1 consolidation, unadjusted close from $0.02 go $6.31) reach down to 226.1% with the smallest ratio (3-for-1). Partway down the table dey the cleanest teaching case: a 10-for-1 reverse split carry TXXS's unadjusted close from $2.35 Thursday reach $24.34 Monday, ten old shares become one, no be tenfold rally. Any screener wey dey look raw price change go put this whole table above every real mover; our own screener dey exclude splits. Thursday's CRWD forward split fake the opposite one, e look like a crash.
Di session, e verify, di first back from break
| first spy bar ET | last spy bar ET | spy minute bars | regular session bars | day sessions | jul3 spy bars | next closure date | next closure name |
|---|---|---|---|---|---|---|---|
| 04:00 | 19:59 | 917 | 390 | 1 | 0 | September 7, 2026 | Labor Day |
The exact SQL behind every number
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-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 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,
(SELECT replaceAll(formatDateTime(min(date), '%M %e, %Y'), ' ', ' ') FROM global_markets.stocks_market_holidays WHERE date > '2026-07-06' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-06' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'July 6 na full session, no be early close: SPY bars run from 04:00 to 19:59 New York time, with exactly 390 bars for the regular window. Friday wey dey before, July 3, print 0 SPY bars, full closure for Independence Day, since July 4 dey fall on top Saturday. Next closure: Labor Day, September 7, 2026. Di four-session week wey dey before di break, we measure am for week recap.
Questions Wey People Dey Ask
How the stock market do on July 6, 2026?
All four big index ETFs close for higher side: QQQ 1.39%, SPY 0.87%, IWM 0.45%, DIA 0.42%, with 62.4% of liquid names advancing, and most of the move na overnight gap.
Which sector lead on July 6, 2026?
Technology (XLK) lead the eleven sector ETFs at 1.71%, the defensive side dey as low as -1.08%, the spread between the best and the worst na 2.79 percentage points, wey be plenty times the S&P tracker's 0.87% move.
The stock market open for Independence Day 2026?
No. July 4 fall for Saturday, and the exchanges observe Independence Day for Friday July 3, that closure show for the 0 SPY minute bars wey print above. July 6 na the first session wey dem come back.
Why some stocks show huge one-day gains on July 6?
14 reverse splits dey execute. When you join many old shares go inside one share at price wey dey proportionally higher, unadjusted screen dey report "gain" of hundreds of percent even though the holder's position value no change at all; the 12 names wey dey for up there all na that kind.
The spreads wide for the gap open?
E dey only for individual stocks. SPY's median quoted spread for the first twelve minutes na 0.27 basis points, the same level wey e get for midday; SanDisk's quote dey 12.9 bps wider than midday.
Note dem don make for the data
- Dollar volume na proxy wey dey per-minute, close × volume wey dem sum for each minute bar.
- Sector basket na declared method, no be vendor field: the eleven big S&P sector ETFs (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY), the same set every session.
- Quoted spreads na median for (ask − bid) ÷ mid over valid two-sided quotes; one-sided quotes, zero quotes and crossed quotes dem don drop am, and dem dey count am inside the panel.
- One listing wey reuse one symbol dem don exclude am from the leaderboards, until dem don verify the entity (receipts).
Methodology
- The period na one single trading session (1 session, wey dem verify from observed bars). Dem store timestamps for UTC, then dem convert am to New York time inside the queries. "Close" mean the last minute bar wey close for regular session; day changes dey compare July 6 with July 2, the prior session wey fall across the July 3 closure, verified from bars, we never just assume.
- Dem cast decimals to 64-bit floats before dem do ratio arithmetic. Dem dey read panels once, at authoring time, through the gated read-only path.
Every panel na stored query result — chart, table, and SQL na one single object. Paste any one of them inside the Strasmore terminal, e go become your own. Previous session: July 2. Next: July 7.