MU: The Biggest Tape of June 2026
Micron's June 2026: 995.7 billion dollars of regular-hours turnover — the first-ranked tape in the market — while the quarter's repricing cooled to 14 percent.
Micron spent the first half of 2026 repricing violently — and June was the month the price cooled while the tape did not. MU closed June at $1151.01, up 14% on the month — its quietest month since February, after a 89.8% May — while its $995.7 billion of regular-hours turnover ranked it first on the entire US tape, ahead of SPY itself. This page is the June receipts: the tape, the spread, the options book, the shorts, and the six-month arc under it all. Every number is a stored query result; expand any panel for the exact SQL.
The month on one row
The exact SQL behind every number
WITH
(
SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-19 00:00:00') AND window_start < toDateTime('2026-06-20 00:00:00')
) AS spy_jun19,
(
SELECT max(toFloat64(high)) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
) AS hi,
(
SELECT min(toFloat64(low)) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
) AS lo
SELECT
round(argMinIf(toFloat64(open), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS month_open,
round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS month_close,
round((argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / argMinIf(toFloat64(open), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS month_return_pct,
round(hi, 2) AS month_high,
formatDateTime(toTimeZone(minIf(window_start, toFloat64(high) >= hi - 0.011), 'America/New_York'), '%Y-%m-%d %H:%i') AS month_high_first_bar_et,
round(lo, 2) AS month_low,
formatDateTime(toTimeZone(minIf(window_start, toFloat64(low) <= lo + 0.011), 'America/New_York'), '%Y-%m-%d %H:%i') AS month_low_first_bar_et,
round(minIf(toFloat64(low), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - lo, 2) AS rth_minus_extended_low,
round(toFloat64(sum(volume)) / 1e9, 2) AS month_shares_bn,
round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / 1e9, 1) AS rth_dollar_bn,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS session_days_observed,
spy_jun19 AS spy_bars_june19
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')The intramonth range was enormous for a mega-cap-sized name: a $850.1 low (2026-06-05 16:34 ET) to a $1255 high (2026-06-25 09:35 ET) — a swing wider than most stocks' entire year. June 19 was a market-wide closure (0 SPY bars), so the month ran 21 sessions.
June against the six-month arc
Is +14% a big month? For this ticker, in this half, it was the calm one. The panel recomputes every month identically, live.
The exact SQL behind every number
SELECT toString(toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York')))) AS period_start,
round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS month_return_pct,
round(argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS month_close,
round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS rth_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY period_start
ORDER BY period_startThe arc: 40.5% in January, a -15.9% March, then 48.4% in April and 89.8% in May — a close that went from $414.73 to $1151.01 in six months. Turnover climbed with it: $235.8 billion in January to $995.7 billion in June. June's price move was the smallest since February; June's tape was the biggest on record in this window.
Session by session
The exact SQL behind every number
SELECT et_date, close_usd,
round(if(prev_close = 0, NULL, (close_usd / prev_close - 1) * 100), 1) AS change_pct,
shares_m
FROM (
SELECT et_date, close_usd, shares_m,
lagInFrame(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS close_usd,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY et_date
)
)
ORDER BY et_dateThe table swings hard in both directions — closes from $1034.83 on 2026-06-01 through the month's turbulence to $1151.01 on the final session. This is what "+14% on the month" hides: the path was anything but quiet, only the endpoints were.
The biggest ticker on the tape
The exact SQL behind every number
SELECT ticker,
round(sum(toFloat64(volume) * toFloat64(close)) / 1e9, 1) AS regular_hours_dollar_bn,
round(100 * sum(toFloat64(volume) * toFloat64(close)) / max(sum(toFloat64(volume) * toFloat64(close))) OVER (), 1) AS pct_of_leader
FROM global_markets.delayed_stocks_minute_aggs
WHERE 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
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY regular_hours_dollar_bn DESC
LIMIT 10The exact SQL behind every number
WITH (
SELECT sum(toFloat64(volume) * toFloat64(close))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
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
) AS mu_d
SELECT
countIf(d > mu_d AND ticker != 'MU') + 1 AS mu_rank,
round(mu_d / 1e9, 1) AS mu_dollar_bn,
round((mu_d - maxIf(d, d < mu_d AND ticker != 'MU')) / 1e9, 1) AS lead_over_next_bn
FROM (
SELECT ticker, sum(toFloat64(volume) * toFloat64(close)) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE 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
AND ticker NOT IN ('SPCX')
GROUP BY ticker
)MU ranked first of every US-listed symbol by June regular-hours dollar volume — $995.7 billion, $224.3 billion clear of SPY in second. A single company out-trading the flagship index fund for a full month is rare tape structure; this page measures it and leaves the why alone. Basis: June 1–30 regular hours; one reused-symbol June listing excluded pending entity verification (its receipts). The market-wide view of this same table is in the June recap.
What the tape was made of
The exact SQL behind every number
WITH
(
SELECT (round(count() / 1e6, 2),
round(100.0 * countIf(bid_price > 0 AND ask_price > 0 AND ask_price > bid_price) / count(), 2),
countIf(bid_price > 0 AND ask_price > 0 AND ask_price < bid_price),
countIf(bid_price <= 0 OR ask_price <= 0))
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'MU'
AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
) AS quote_census
SELECT
round(count() / 1e6, 2) AS prints_m,
quantileDeterministic(0.5)(toFloat64(size), toUInt64(abs(sequence_number))) AS median_print_shares,
round(avg(toFloat64(size)), 1) AS avg_print_shares,
round(100.0 * countIf(size < 100) / count(), 1) AS odd_lot_pct_of_prints,
round(100.0 * countIf(toFloat64(size) != round(toFloat64(size))) / count(), 2) AS fractional_pct_of_prints,
quote_census.1 AS nbbo_updates_m,
quote_census.2 AS clean_two_sided_pct,
quote_census.3 AS crossed_updates,
quote_census.4 AS one_sided_or_empty_updates
FROM global_markets.stocks_trades
WHERE ticker = 'MU'
AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)35.17 million prints at a median of 8 shares — and 91.7% odd lots, one of the most retail-sliced tapes we have measured (NVDA's June ran materially lower; its deep-dive has the twin panel). At a four-digit share price, a "round lot" is serious money, so small prints dominate by construction — the fractional share of prints (9.04%) points the same direction. The quote half: 19.64 million NBBO updates, 99.86% clean two-sided, 16963 momentarily crossed, 78 one-sided or empty — disclosed, not dropped.
The spread during a repricing
A stock that near-triples in a quarter poses the spread question differently: did the market keep quoting it tightly while its price found a new level?
The exact SQL behind every number
SELECT session,
round(quantileDeterministicIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price), toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS med_spread_cents,
round(quantileDeterministicIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price), 2) AS med_spread_bps,
count() AS quote_updates,
countIf(NOT (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price)) AS invalid_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'MU'
AND sip_timestamp >= toDateTime64('2026-06-01 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session
ORDER BY sessionIn basis points the spread stayed institutional-grade through the whole move: 3.96 bps on 2026-06-01 and 4.19 bps on the last session — while the cents column roughly tracks the price level itself. For what these numbers mean mechanically, see the spread explainer.
Options: a two-way book
The exact SQL behind every number
SELECT
round(count() / 1e6, 2) AS prints_m,
uniqExact(ticker) AS distinct_contracts,
round(sum(size) / 1e6, 2) AS contracts_traded_m,
round(sum(toFloat64(price) * size) * 100 / 1e9, 2) AS premium_notional_busd,
round(toFloat64(sumIf(size, substring(ticker, 11, 1) = 'P')) / toFloat64(sumIf(size, substring(ticker, 11, 1) = 'C')), 2) AS month_put_call_ratio,
uniqExact(substring(ticker, 5, 6)) AS expiries_traded,
round(intDiv(toUInt32OrZero(substring(argMax(ticker, sz), 12, 8)), 1000), 0) AS busiest_strike_usd
FROM (
SELECT ticker, price, size, sum(size) OVER (PARTITION BY ticker) AS sz
FROM global_markets.options_trades
WHERE startsWith(ticker, 'O:MU') AND length(ticker) = 19
AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
)16.76 million contracts traded across 11789 distinct contracts, for $77.13 billion in premium — and unlike its semiconductor peer, the book was two-way: the month put/call ratio was 0.99, essentially parity (NVDA's June ran call-heavy; compare). A near-parity ratio during a violent repricing is the options market split on both sides of the move — the data shows the split, not the intent.
The exact SQL behind every number
SELECT
concat('$', toString(toUInt32(bucket))) AS strike_bucket,
call_contracts,
put_contracts,
round(100.0 * put_contracts / (call_contracts + put_contracts), 1) AS put_share_pct
FROM (
SELECT
least(floor(toFloat64(toUInt32OrZero(substring(ticker, 12, 8))) / 1000 / 100) * 100, 1500) AS bucket,
toUInt64(sumIf(size, substring(ticker, 11, 1) = 'C')) AS call_contracts,
toUInt64(sumIf(size, substring(ticker, 11, 1) = 'P')) AS put_contracts
FROM global_markets.options_trades
WHERE startsWith(ticker, 'O:MU') AND length(ticker) = 19
AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
GROUP BY bucket
)
ORDER BY toUInt32OrZero(substring(strike_bucket, 2))The strike map spans a range that would have been absurd in January — meaningful volume from the $0 bucket to the $1500+ ceiling, a footprint of how far and how fast the underlying moved.
The news flow
The exact SQL behind every number
WITH
(
SELECT (JSONExtractString(any(publisher), 'name'), count())
FROM global_markets.stocks_news
WHERE has(tickers, 'MU')
AND published_utc >= toDateTime('2026-06-01 00:00:00') AND published_utc < toDateTime('2026-07-01 04:00:00')
GROUP BY JSONExtractString(publisher, 'name') ORDER BY count() DESC LIMIT 1
) AS top_pub
SELECT
count() AS june_articles,
uniqExact(JSONExtractString(publisher, 'name')) AS publishers,
top_pub.1 AS top_publisher,
round(100.0 * top_pub.2 / count(), 0) AS top_publisher_pct,
countIf(has(tickers, 'NVDA')) AS nvda_co_articles,
countIf(has(tickers, 'SNDK')) AS sndk_co_articles,
countIf(has(tickers, 'INTC')) AS intc_co_articles
FROM global_markets.stocks_news
WHERE has(tickers, 'MU')
AND published_utc >= toDateTime('2026-06-01 00:00:00') AND published_utc < toDateTime('2026-07-01 04:00:00')195 MU-tagged articles from 4 publishers — read skeptically, The Motley Fool alone wrote 59% of them. Co-tags frame it as a semiconductor story: NVDA in 86 articles, SNDK in 32, INTC in 21.
The shorts — with a coverage hole
The exact SQL behind every number
SELECT toString(date) AS d,
round(toFloat64(any(short_volume)) / 1e6, 2) AS short_shares_m,
round(100 * toFloat64(any(short_volume)) / toFloat64(any(total_volume)), 1) AS short_pct_of_offexchange
FROM global_markets.stocks_short_volume
WHERE ticker = 'MU' AND date >= toDate('2026-06-01') AND date <= toDate('2026-06-30')
GROUP BY date
ORDER BY dateThe exact SQL behind every number
SELECT
toString(maxIf(settlement_date, settlement_date >= toDate('2026-06-01'))) AS settlement,
round(toFloat64(maxIf(short_interest, settlement_date >= toDate('2026-06-01'))) / 1e6, 2) AS shares_short_m,
countIf(settlement_date > toDate('2026-06-15')) AS settlements_after_jun15
FROM global_markets.stocks_short_interest
WHERE ticker = 'MU'Two caveats carry this section. First, coverage: MU's June short-volume file holds only 16 of 21 sessions — beyond the market-wide June 29 truncation, several MU rows are simply absent, so no month-level short-volume ratio is computed here (the per-day rows shown are real; the gaps are disclosed, not interpolated). Second, staleness: short interest printed 41.59 million shares at the 2026-06-15 settlement, and the end-of-June print was not yet published at generation (0 later settlements on file) — here is why that lag is normal.
Data notes
Full data notes
- Entity. MU is Micron Technology, Inc., CIK 0000723125 — a single, continuous EDGAR identity; no symbol-reuse caveats.
- Short-volume coverage. The June file for MU spans 16 of 21 sessions; missing days include the market-wide June 29 truncation plus MU-specific absences. Ratios are shown per-day only.
- Options parsing. Expiry, type, and strike re-parsed from the OCC symbol (positions 5/11/12 for this 4-character root); premium notional assumes the 100-share multiplier.
- June 19 closure verified by the zero-SPY-bars receipt in the scoreboard panel.
- Spread panels exclude crossed/one-sided quotes WITH counts disclosed in the same row.
- The month's market-wide context — including this ticker atop the whole-tape leaderboard — is in the June 2026 recap.
Methodology
- The period is June 1–30, 2026 (21 sessions, verified from observed bars). Returns are first regular-hours open to last regular-hours close; June is entirely EDT, so regular hours are 13:30–20:00 UTC, filtered as raw UTC bounds. The trailing panel spans EST months and uses the Eastern-clock filter (a fixed UTC band selects the wrong session in winter months).
- Trailing comparisons are recomputed live in the same query as June's row — never read from a stored value.
- Generation is batch-only through the gated read-only path; the public page never queries live. Warehouse state as of July 4, 2026.
Every panel is one stored object — chart, table, and SQL. Take any query further on the Strasmore terminal.