Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-07-26

NVDA: NVIDIA's Full June 2026, Tick by Tick

NVIDIA's June 2026 in full: a $235 pre-market peak, a 7.4% slide across 21 sessions, and the fourth-biggest dollar volume on the US tape.

NVIDIA opened June 2026 at $215.77 and closed the month at $199.76, a -7.4% decline over 21 sessions. The stock peaked at $235 in pre-market trading on 2026-06-02 04:00 ET, hit a regular-hours high of $232.28 at 2026-06-02 09:59 ET, and bottomed at $189.8 on 2026-06-29 10:17 ET, all regular hours. Total volume: 2.75 billion shares, $571.9 billion in dollar turnover, the fourth-biggest name on the US tape by regular-hours dollar volume (basis: June 1–30 regular hours; one reused-symbol June listing excluded pending entity verification). Every number here is a stored query result; expand any panel for the exact SQL.

QueryThe month on one row: open, close, extremes, volume, and their receipts
month_openmonth_closemonth_change_pctmonth_decline_abs_pctpeak_close_datepeak_closemonth_highmonth_high_first_bar_etbars_within_cent_of_highhigh_minute_tradesrth_month_highrth_high_first_bar_etrth_bars_near_highmonth_lowmonth_low_bar_etbars_within_cent_of_lowlow_minute_tradesrth_month_lowrth_minus_extended_lowmonth_shares_bnmonth_dollar_bnrth_dollar_bnrth_shares_bnsession_days_observedspy_bars_june19
215.77199.76-7.47.42026-06-01224.432352026-06-02 04:0019329232.282026-06-02 09:591189.82026-06-29 10:17143131189.802.75571.95232.52210
The exact SQL behind every number
WITH
    (
        SELECT (toString(argMax(et_date, c)), max(c), argMax(c, et_date))
        FROM (
            SELECT
                toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
                argMax(toFloat64(close), window_start) AS c
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'NVDA'
              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 et_date
        )
    ) AS closes,
    (
        SELECT max(toFloat64(high)) FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          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 = 'NVDA'
          AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
    ) AS lo,
    (
        SELECT maxIf(toFloat64(high), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
    ) AS rth_hi,
    (
        SELECT minIf(toFloat64(low), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
    ) AS rth_lo,
    (
        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
    round(toFloat64(argMin(open, window_start)), 2) AS month_open,
    closes.3 AS month_close,
    round((closes.3 / toFloat64(argMin(open, window_start)) - 1) * 100, 1) AS month_change_pct,
    round((1 - closes.3 / toFloat64(argMin(open, window_start))) * 100, 1) AS month_decline_abs_pct,
    closes.1 AS peak_close_date,
    round(closes.2, 2) AS peak_close,
    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,
    countIf(toFloat64(high) >= hi - 0.011) AS bars_within_cent_of_high,
    argMinIf(transactions, window_start, toFloat64(high) >= hi - 0.011) AS high_minute_trades,
    round(rth_hi, 2) AS rth_month_high,
    formatDateTime(toTimeZone(minIf(window_start, toFloat64(high) >= rth_hi - 0.011 AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 'America/New_York'), '%Y-%m-%d %H:%i') AS rth_high_first_bar_et,
    countIf(toFloat64(high) >= rth_hi - 0.011 AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS rth_bars_near_high,
    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_bar_et,
    countIf(toFloat64(low) <= lo + 0.011) AS bars_within_cent_of_low,
    argMin(transactions, toFloat64(low)) AS low_minute_trades,
    round(rth_lo, 2) AS rth_month_low,
    round(rth_lo - lo, 2) AS rth_minus_extended_low,
    round(toFloat64(sum(volume)) / 1e9, 2) AS month_shares_bn,
    round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS month_dollar_bn,
    round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / 1e9, 1) AS rth_dollar_bn,
    round(sumIf(toFloat64(volume), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / 1e9, 2) AS rth_shares_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 = 'NVDA'
  AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
Run this yourself

The arc is a steady downtrend with one sharp gap lower in the final week. NVDA closed above $224.43 just once, on 2026-06-01, the first session. The month low printed in regular hours at 2026-06-29 10:17 ET, with 1 bar within a cent and 43131 trades in that minute. The pre-market $235 peak at 2026-06-02 04:00 ET is an extended-hours print; the regular-hours high of $232.28 stood at 2026-06-02 09:59 ET. June 19 was a market-wide closure (0 SPY bars that day), so NVDA had 21 trading sessions.

Session by session

QueryThe 21 sessions: regular-hours close, close-over-close change, full-day volume
21 rows (showing 20)
et_dateclose_usdchange_pctshares_mdollar_bn
2026-06-01224.43None185.541
2026-06-02222.81-0.7171.238.69
2026-06-03214.9-3.6143.931.16
2026-06-04218.721.8152.733.1
2026-06-05205.11-6.2187.339.09
2026-06-08208.641.7116.424.27
2026-06-09208.2-0.2160.532.98
2026-06-10200.34-3.8140.128.48
2026-06-11204.662.2131.826.71
2026-06-12205.140.298.220.15
2026-06-15212.453.6113.924.03
2026-06-16207.41-2.49720.29
2026-06-17204.68-1.3101.921.04
2026-06-18210.22.7144.230.16
2026-06-22208.56-0.8100.521.13
2026-06-23200.01-4.1115.423.27
2026-06-24198.96-0.5114.122.72
2026-06-25195.75-1.6125.124.46
2026-06-26191.72-2.1116.522.55
2026-06-29194.891.711822.88
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,
    dollar_bn
FROM (
    SELECT et_date, close_usd, shares_m, dollar_bn,
           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,
            round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_bn
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          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_date
Run this yourself

The session table reads as a persistent slide. The first close above $224.43 set the high-water mark on 2026-06-01. The steepest single-session decline was -6.2% on 2026-06-05, a Friday, coinciding with the highest volume of the month at 187.3 million shares. The defining stretch was 5 straight declines, 2026-06-22 through 2026-06-26, ending at the month's lowest close of $191.72; the last two sessions recovered 1.7% and 2.5%. Volume was front-loaded: 185.5 million shares on day one, 119.6 million on the last day.

QueryThe five-session slide, bounded: every claim in the streak sentence as a checked column
run_startrun_endsessions_in_rundeclining_sessionsrun_low_closerun_holds_month_low_close
2026-06-222026-06-2655191.721
The exact SQL behind every number
WITH per_session AS (
    SELECT et_date, close_usd,
           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
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= toDateTime('2026-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
        GROUP BY et_date
    )
)
SELECT
    toString(minIf(et_date, et_date >= toDate('2026-06-22') AND et_date <= toDate('2026-06-26'))) AS run_start,
    toString(maxIf(et_date, et_date >= toDate('2026-06-22') AND et_date <= toDate('2026-06-26'))) AS run_end,
    countIf(et_date >= toDate('2026-06-22') AND et_date <= toDate('2026-06-26')) AS sessions_in_run,
    countIf(et_date >= toDate('2026-06-22') AND et_date <= toDate('2026-06-26') AND close_usd < prev_close) AS declining_sessions,
    round(minIf(close_usd, et_date >= toDate('2026-06-22') AND et_date <= toDate('2026-06-26')), 2) AS run_low_close,
    toUInt8(min(close_usd) = minIf(close_usd, et_date >= toDate('2026-06-22') AND et_date <= toDate('2026-06-26'))) AS run_holds_month_low_close
FROM per_session
Run this yourself

June against its trailing six months

Is a month like this unusual for NVDA, or ordinary? The panel below recomputes the same three figures for each of the last six months in one pass, the June row is produced by exactly the same query as the five before it, fresh from the warehouse at generation time.

QueryThe trailing six months, recomputed live: turnover, shares, and month return
period_startrth_dollar_bnshares_bnmonth_return_pct
2026-01-01441.12.910.9
2026-02-01490.73.35-4.8
2026-03-01572.53.56-0.5
2026-04-01511.22.7813.4
2026-05-01557.52.874.9
2026-06-015232.75-7.4
The exact SQL behind every number
SELECT
    toString(toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York')))) AS period_start,
    round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / 1e9, 1) AS rth_dollar_bn,
    round(toFloat64(sum(volume)) / 1e9, 2) AS shares_bn,
    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
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'NVDA'
  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_start
Run this yourself

By turnover, June was ordinary: $523 billion in regular hours sat mid-range for the window, below May's $557.5 billion and March's $572.5 billion. The return column is where June stands out: -7.4% was the sharpest monthly decline of the six, against -4.8% in February and gains in April and May.

The fourth-biggest ticker on the tape

QueryThe whole US tape ranked by June 2026 regular-hours dollar volume
tickerregular_hours_dollar_bnpct_of_leaderis_nvda
MU995.71000
SPY771.577.50
QQQ672.867.60
NVDA52352.51
SNDK381.638.30
TSLA342.734.40
MRVL302.730.40
INTC272.427.40
AAPL27027.10
MSFT268.6270
AMD264.926.60
SOXL239.924.10
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,
    toUInt8(ticker = 'NVDA') AS is_nvda
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 12
Run this yourself

NVDA ranked fourth on the entire US tape by regular-hours dollar volume: $523 billion, $141.5 billion clear of SNDK below it, behind only MU ($995.7 billion), SPY ($771.5 billion), and QQQ ($672.8 billion). The basis: June 1–30 regular hours, with one reused-symbol June listing excluded pending entity verification, its receipts live in its own deep-dive. Of the three names above NVDA, 1 is a single stock, MU, another semiconductor name; the other two are the big index ETFs.

QueryThe rank receipt: NVDA's place, its lead over the next name, and the basis, as checked columns
nvda_ranknvda_dollar_bnlead_over_next_bnsingle_stocks_above_nvdapct_of_leader
4523141.5152.5
The exact SQL behind every number
WITH (
    SELECT sum(toFloat64(volume) * toFloat64(close))
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'NVDA'
      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 nvda_d
SELECT
    countIf(d > nvda_d AND ticker != 'NVDA') + 1 AS nvda_rank,
    round(nvda_d / 1e9, 1) AS nvda_dollar_bn,
    round((nvda_d - maxIf(d, d < nvda_d AND ticker != 'NVDA')) / 1e9, 1) AS lead_over_next_bn,
    countIf(d > nvda_d AND ticker NOT IN ('SPY', 'QQQ', 'NVDA')) AS single_stocks_above_nvda,
    round(100 * nvda_d / max(d), 1) AS pct_of_leader
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
)
Run this yourself

What the tape was made of

QueryThe whole NVDA tape in one row: prints, print sizes, and the quote census
prints_mmedian_print_sharesavg_print_sharesodd_lot_pct_of_printsfractional_pct_of_printsnbbo_updates_mclean_two_sided_pctlocked_updatescrossed_updatesone_sided_or_empty_updates
55.64572.984.632.9155.799.353296793394163
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 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 = 'NVDA'
          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 locked_updates,
    quote_census.4 AS crossed_updates,
    quote_census.5 AS one_sided_or_empty_updates
FROM global_markets.stocks_trades
WHERE ticker = 'NVDA'
  AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
Run this yourself

The texture is small-print and quote-dense: 55.64 million prints at a median of 5 shares (average 72.9, institutional crosses pull the mean up), 84.6% odd lots (under 100 shares), 32.91% fractional, consistent with retail apps slicing orders into market-maker inventory. The quote half: 55.7 million NBBO updates, 99.35% clean two-sided; 33941 momentarily crossed (bid above ask), 329679 locked (bid equals ask), 63 one-sided or empty. A mega-cap prints more quotes in a month than many names print in a decade.

The spread stayed tight

A mega-cap like NVDA carries a structurally narrow bid-ask spread, the question is how stable that tightness was across a month with a 20-point price range. The quote census above shows the month-level median; this panel measures it per session.

QueryThe spread by session: regular-hours median and time-weighted average (bps)
21 rows (showing 20)
sessionmed_spread_centsmed_spread_bpsquote_updatesinvalid_dropped
2026-06-0131.3424653991436
2026-06-0231.312281523655
2026-06-0320.9321333001298
2026-06-0420.932511478707
2026-06-0520.974147331445
2026-06-0820.972232572409
2026-06-0931.455021029452
2026-06-1031.453428787353
2026-06-1131.46378128916953
2026-06-1231.452538803318
2026-06-1520.951932126358
2026-06-1620.962673619253
2026-06-1720.972430971302
2026-06-1820.961990982677
2026-06-2220.9524637521851
2026-06-2320.992240334202
2026-06-2421.012180333717
2026-06-2521.032427607635
2026-06-2621.042458712852
2026-06-2921.031779717323
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 = 'NVDA'
  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 session
Run this yourself

The spread held in a narrow band all month: 1.34 bps on 2026-06-01 and 1.01 bps on 2026-06-30, a mega-cap spread that barely moved over a 20-point price drop. The widest session was 2026-06-05 at 0.97 bps (the -6.2% decline day), the tightest 2026-06-15 at 0.95 bps. For scale against a thin name, see the June 29 microstructure deep-dive where a single-ticker spread panel covers the same session.

Options: 64.64 million contracts, calls every session

QueryNVDA's options market in one row: totals, expiry structure, flagship contracts
first_print_etoption_sessionsprints_mdistinct_contractscontracts_traded_mpremium_notional_busdmonth_put_call_ratiomax_session_put_call_ratioexpiries_tradedlongest_expiryjun18_expiry_share_pctbusiest_contracttop_premium_contracttop_premium_strike_usdaapl_premium_bnaapl_contracts_mtsla_premium_bntsla_contracts_m
2026-06-01 09:30:00218.9516364.6424.430.550.782382028-12-1510.5$210 call, expiry 2026-06-18$0.5 call, expiry 2026-12-180.58.842733.6858
The exact SQL behind every number
WITH
    (
        SELECT (round(sum(toFloat64(price) * size) * 100 / 1e9, 2), round(sum(size) / 1e6, 1))
        FROM global_markets.options_trades
        WHERE startsWith(ticker, 'O:AAPL') AND length(ticker) = 21
          AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
    ) AS aapl,
    (
        SELECT (round(sum(toFloat64(price) * size) * 100 / 1e9, 2), round(sum(size) / 1e6, 1))
        FROM global_markets.options_trades
        WHERE startsWith(ticker, 'O:TSLA') AND length(ticker) = 21
          AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
    ) AS tsla,
    (
        SELECT concat('$', toString(round(toFloat64(toUInt32OrZero(substring(ticker, 14, 8))) / 1000, 2)),
               if(substring(ticker, 13, 1) = 'P', ' put', ' call'),
               ', expiry 20', substring(ticker, 7, 2), '-', substring(ticker, 9, 2), '-', substring(ticker, 11, 2))
        FROM global_markets.options_trades
        WHERE startsWith(ticker, 'O:NVDA') AND length(ticker) = 21
          AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
        GROUP BY ticker ORDER BY sum(size) DESC LIMIT 1
    ) AS busiest_name,
    (
        SELECT concat('$', toString(round(toFloat64(toUInt32OrZero(substring(ticker, 14, 8))) / 1000, 2)),
               if(substring(ticker, 13, 1) = 'P', ' put', ' call'),
               ', expiry 20', substring(ticker, 7, 2), '-', substring(ticker, 9, 2), '-', substring(ticker, 11, 2))
        FROM global_markets.options_trades
        WHERE startsWith(ticker, 'O:NVDA') AND length(ticker) = 21
          AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
        GROUP BY ticker ORDER BY sum(toFloat64(price) * size) DESC LIMIT 1
    ) AS premium_name,
    (
        SELECT round(toFloat64(toUInt32OrZero(substring(ticker, 14, 8))) / 1000, 2)
        FROM global_markets.options_trades
        WHERE startsWith(ticker, 'O:NVDA') AND length(ticker) = 21
          AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
        GROUP BY ticker ORDER BY sum(toFloat64(price) * size) DESC LIMIT 1
    ) AS premium_strike,
    (
        SELECT max(pc)
        FROM (
            SELECT round(toFloat64(sumIf(size, substring(ticker, 13, 1) = 'P')) / toFloat64(sumIf(size, substring(ticker, 13, 1) = 'C')), 3) AS pc
            FROM global_markets.options_trades
            WHERE startsWith(ticker, 'O:NVDA') AND length(ticker) = 21
              AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
            GROUP BY toDate(sip_timestamp)
        )
    ) AS max_daily_pc
SELECT
    formatDateTime(toTimeZone(min(sip_timestamp), 'America/New_York'), '%Y-%m-%d %H:%i:%S') AS first_print_et,
    uniqExact(toDate(sip_timestamp)) AS option_sessions,
    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, 13, 1) = 'P')) / toFloat64(sumIf(size, substring(ticker, 13, 1) = 'C')), 2) AS month_put_call_ratio,
    max_daily_pc AS max_session_put_call_ratio,
    uniqExact(substring(ticker, 7, 6)) AS expiries_traded,
    concat('20', substring(max(substring(ticker, 7, 6)), 1, 2), '-', substring(max(substring(ticker, 7, 6)), 3, 2), '-', substring(max(substring(ticker, 7, 6)), 5, 2)) AS longest_expiry,
    round(100 * toFloat64(sumIf(size, substring(ticker, 7, 6) = '260618')) / toFloat64(sum(size)), 1) AS jun18_expiry_share_pct,
    busiest_name AS busiest_contract,
    premium_name AS top_premium_contract,
    premium_strike AS top_premium_strike_usd,
    aapl.1 AS aapl_premium_bn,
    aapl.2 AS aapl_contracts_m,
    tsla.1 AS tsla_premium_bn,
    tsla.2 AS tsla_contracts_m
FROM global_markets.options_trades
WHERE startsWith(ticker, 'O:NVDA') AND length(ticker) = 21
  AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
Run this yourself

In 21 option sessions: 8.9 million prints across 5163 distinct contracts, 64.64 million contracts and $24.43 billion in premium (price times the 100-share multiplier). The month put/call ratio was 0.55, calls out-traded puts every single session; the daily ratio peaked at 0.782 and never reached 1.0. 38 expiries traded, from the June 18 weekly out to 2028-12-15 LEAPS; the June 18 expiry alone took 10.5% of month volume. Busiest contract: $210 call, expiry 2026-06-18. Premium magnet: $0.5 call, expiry 2026-12-18, a deep-in-the-money $0.5 strike. For comparison, AAPL options collected $8.84 billion on 27 million contracts in June; TSLA $33.68 billion on 58 million.

QueryOptions session by session: contracts, the call/put split, and the put/call ratio
21 rows (showing 20)
sessionprintscontracts_tradedcall_contractsput_contractsput_call_ratiopct_of_busiest_session
2026-06-016315654455405318314012722650.484.1
2026-06-02568652355149726643558871420.3367
2026-06-03418199320178722964739053140.3960.4
2026-06-044763043267233226105610061770.4561.7
2026-06-056096035298529327772320208060.62100
2026-06-084495373194748201529111794570.5960.3
2026-06-094510943079719189390111858180.6358.1
2026-06-104158162997532168180513157270.7856.6
2026-06-11359377242793215127009152320.6145.8
2026-06-123717252859048177762510814230.6154
2026-06-154669833400120226936911307510.564.2
2026-06-16263398177935510928146865410.6333.6
2026-06-173417592779717167654811031690.6652.5
2026-06-184104103498315225631312420020.5566
2026-06-22391027284263819273609152780.4753.6
2026-06-23329417213042512673548630710.6840.2
2026-06-244165463452333198498514673480.7465.2
2026-06-253974512661094161014510509490.6550.2
2026-06-264256992994426178794512064810.6756.5
2026-06-29366976271056417380759724890.5651.2
The exact SQL behind every number
SELECT
    toDate(sip_timestamp) AS session,
    count() AS prints,
    toUInt64(sum(size)) AS contracts_traded,
    toUInt64(sumIf(size, substring(ticker, 13, 1) = 'C')) AS call_contracts,
    toUInt64(sumIf(size, substring(ticker, 13, 1) = 'P')) AS put_contracts,
    round(toFloat64(sumIf(size, substring(ticker, 13, 1) = 'P')) / toFloat64(sumIf(size, substring(ticker, 13, 1) = 'C')), 2) AS put_call_ratio,
    round(100 * toFloat64(sum(size)) / max(toFloat64(sum(size))) OVER (), 1) AS pct_of_busiest_session
FROM global_markets.options_trades
WHERE startsWith(ticker, 'O:NVDA') AND length(ticker) = 21
  AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
GROUP BY session
ORDER BY session
Run this yourself

The busiest options session was 2026-06-05, 5298529 contracts, 100% of the month's peak, the same -6.2% decline day that posted the highest equity volume. The put/call ratio rose alongside the price decline: it bottomed at 0.33 on 2026-06-02 (near the price peak) and climbed to 0.61 by 2026-06-12 (the session the stock first closed below $205.14). Put volume grew as the price fell, hedging activity or directional bets; the data shows the co-movement, not the intent.

QueryWhere the contracts landed: call and put volume by strike bucket
strike_bucketcall_contractsput_contractsput_share_pctpct_of_biggest_bucket
$0582111468320.10.2
$25508345839900.1
$50197306530176.80.2
$75291869515376.50.3
$10062553383988861.1
$1257409640458584.51.2
$150201297152097688.34.4
$1753055475703173069.725.6
$200265111171285619232.7100
$22580225245354176.321.7
$2502014503588342.85.3
$275382647264556.51
$30062945653900.81.6
$3257841432173.90.2
$35014406928271.90.4
$3753697818044.70.1
$4001102925780.50.3
$42524811460.20.1
$45012003917591.40.3
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,
    round(100 * (call_contracts + put_contracts) / max(call_contracts + put_contracts) OVER (), 1) AS pct_of_biggest_bucket
FROM (
    SELECT
        least(floor(toFloat64(toUInt32OrZero(substring(ticker, 14, 8))) / 1000 / 25) * 25, 450) AS bucket,
        toUInt64(sumIf(size, substring(ticker, 13, 1) = 'C')) AS call_contracts,
        toUInt64(sumIf(size, substring(ticker, 13, 1) = 'P')) AS put_contracts
    FROM global_markets.options_trades
    WHERE startsWith(ticker, 'O:NVDA') AND length(ticker) = 21
      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))
Run this yourself

The strike map is a barbell around the $200 trading range. The $200 bucket, at the money, took the most volume, split 32.7% puts (two-way traffic). Below the range puts dominate (88.3% of the $150 bucket); above it calls own the book (6.3% puts at $225, 120039 contracts at the $450 ceiling). The structure is textbook: protective puts below, speculative calls above, a two-way market at the money.

The news flow

QueryThe information flow in one row: volume, composition, and co-tags
june_articlespublishersfirst_tagged_daypeak_day_datepeak_day_articlestop_publishertop_publisher_articlestop_publisher_pcttsla_co_articlesamd_co_articlesmsft_co_articlesaapl_co_articles
64242026-05-312026-06-0145The Motley Fool4036369101169134
The exact SQL behind every number
WITH
    (
        SELECT (toString(d), n)
        FROM (
            SELECT toDate(toTimeZone(published_utc, 'America/New_York')) AS d, count() AS n
            FROM global_markets.stocks_news
            WHERE has(tickers, 'NVDA')
              AND published_utc >= toDateTime('2026-06-01 00:00:00')
              AND published_utc < toDateTime('2026-07-01 04:00:00')
            GROUP BY d ORDER BY n DESC, d ASC LIMIT 1
        )
    ) AS peak_day,
    (
        SELECT (JSONExtractString(any(publisher), 'name'), count())
        FROM global_markets.stocks_news
        WHERE has(tickers, 'NVDA')
          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,
    toString(min(toDate(toTimeZone(published_utc, 'America/New_York')))) AS first_tagged_day,
    peak_day.1 AS peak_day_date,
    peak_day.2 AS peak_day_articles,
    top_pub.1 AS top_publisher,
    top_pub.2 AS top_publisher_articles,
    round(100.0 * top_pub.2 / count(), 0) AS top_publisher_pct,
    countIf(has(tickers, 'TSLA')) AS tsla_co_articles,
    countIf(has(tickers, 'AMD')) AS amd_co_articles,
    countIf(has(tickers, 'MSFT')) AS msft_co_articles,
    countIf(has(tickers, 'AAPL')) AS aapl_co_articles
FROM global_markets.stocks_news
WHERE has(tickers, 'NVDA')
  AND published_utc >= toDateTime('2026-06-01 00:00:00')
  AND published_utc < toDateTime('2026-07-01 04:00:00')
Run this yourself

642 NVDA-tagged articles in June from 4 publishers. Read those counts skeptically: The Motley Fool alone wrote 63%, one feed's attention, not the world's media. The peak day was 2026-06-01 with 45 articles. Co-tags show the framing: MSFT in 169, AAPL in 134, AMD in 101, TSLA in 69, this feed covered NVDA as a mega-cap tech story, not a semiconductor story.

The shorts

QueryFINRA off-exchange short volume by session: marked-short share and reported volume
dateshort_shares_moffexchange_total_mshort_pct_of_offexchange
2026-06-0123.8381.3229.3
2026-06-0235.4986.7740.9
2026-06-0329.4270.4241.8
2026-06-0429.6775.4539.3
2026-06-0528.3983.5534
2026-06-0817.8953.4533.5
2026-06-0930.4775.4440.4
2026-06-1023.7763.0337.7
2026-06-1117.3858.2429.8
2026-06-1215.1945.3433.5
2026-06-1516.6351.6632.2
2026-06-1616.143.3137.2
2026-06-1715.9745.8934.8
2026-06-1814.3249.0529.2
2026-06-2214.8346.2332.1
2026-06-2316.4846.9235.1
2026-06-2414.3446.9430.5
2026-06-2518.6260.1630.9
2026-06-2617.7149.0536.1
2026-06-3023.9749.8648.1
The exact SQL behind every number
SELECT
    date,
    round(toFloat64(any(short_volume)) / 1e6, 2) AS short_shares_m,
    round(toFloat64(any(total_volume)) / 1e6, 2) AS offexchange_total_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 = 'NVDA' AND date >= toDate('2026-06-01') AND date <= toDate('2026-06-30')
GROUP BY date
ORDER BY date
Run this yourself

Off-exchange short volume is the share of FINRA-reported volume marked short; much of it is market makers selling short to fill customer buys, routine plumbing, not short interest. NVDA's marked-short share ranged from 29.3% on 2026-06-01 to 48.1% on 2026-06-30. Off-exchange reported volume peaked at 86.77 million shares on 2026-06-02 and bottomed at 43.31 million on 2026-06-16, across the 20 sessions on file.

QueryThe off-exchange peak and trough, bounded (deduped per session)
peak_datepeak_offex_mtrough_datetrough_offex_mpeak_minus_trough_msessions_on_file
2026-06-0286.772026-06-1643.3143.4620
The exact SQL behind every number
SELECT
    toString(argMax(date, offex_m)) AS peak_date,
    max(offex_m) AS peak_offex_m,
    toString(argMin(date, offex_m)) AS trough_date,
    min(offex_m) AS trough_offex_m,
    round(max(offex_m) - min(offex_m), 2) AS peak_minus_trough_m,
    count() AS sessions_on_file
FROM (
    SELECT date, round(toFloat64(any(total_volume)) / 1e6, 2) AS offex_m
    FROM global_markets.stocks_short_volume
    WHERE ticker = 'NVDA' AND date >= toDate('2026-06-01') AND date <= toDate('2026-06-30')
    GROUP BY date
)
Run this yourself
QueryThe mid-June short-interest print
settlementshares_short_mavg_daily_volume_mreported_days_to_coverimplied_days_to_coverjune_settlements
2026-06-30310.13155.991.991.992
The exact SQL behind every number
SELECT
    toString(max(settlement_date)) AS settlement,
    round(toFloat64(argMax(short_interest, settlement_date)) / 1e6, 2) AS shares_short_m,
    round(toFloat64(argMax(avg_daily_volume, settlement_date)) / 1e6, 2) AS avg_daily_volume_m,
    argMax(days_to_cover, settlement_date) AS reported_days_to_cover,
    round(toFloat64(argMax(short_interest, settlement_date)) / toFloat64(argMax(avg_daily_volume, settlement_date)), 2) AS implied_days_to_cover,
    count() AS june_settlements
FROM global_markets.stocks_short_interest
WHERE ticker = 'NVDA'
  AND settlement_date >= toDate('2026-06-01') AND settlement_date <= toDate('2026-06-30')
Run this yourself

Actual short interest printed at 2026-06-30: 310.13 million shares short against a 155.99 million-share average day. The vendor reports days-to-cover as 1.99; the raw ratio is 1.99, shorts needed roughly two average days to cover. Both of the month's settlements are on file (2 June prints); the figures above carry the month-end June 30 settlement.

Data notes

QueryNVDA fundamentals census: balance sheets, income statements, cash flows
balance_sheet_rowsincome_statement_rowscash_flow_rows
83152152
The exact SQL behind every number
SELECT
    (SELECT count() FROM global_markets.stocks_balance_sheets WHERE has(tickers, 'NVDA')) AS balance_sheet_rows,
    (SELECT count() FROM global_markets.stocks_income_statements WHERE has(tickers, 'NVDA')) AS income_statement_rows,
    (SELECT count() FROM global_markets.stocks_cash_flow_statements WHERE has(tickers, 'NVDA')) AS cash_flow_rows
Run this yourself
Full data notes
  • Entity. NVDA is NVIDIA Corporation, CIK 0001045810, listed on Nasdaq. No symbol-reuse ambiguity; no entity-boundary caveats apply. The warehouse carries 83 balance-sheet rows, 152 income-statement rows, and 152 cash-flow-statement rows for NVDA, the fundamentals exist, unlike the June 29 microstructure deep-dive case.
  • Month extremes. The $235 high printed at 2026-06-02 04:00 ET in pre-market (4:00 AM); the regular-hours high of $232.28 printed at 2026-06-02 09:59 ET. Both the month low and regular-hours low are $189.8, the low was a regular-hours print.
  • June 19 closure. The warehouse carries 0 SPY bars for June 19 (Juneteenth), so NVDA's June spans 21 sessions. The holidays table does not extend back to June 2026 (it starts July 3 2026); the zero-bar observation is the receipt.
  • Dollar volume. Minute close times minute volume, summed, a close-weighted proxy for notional. The regular-hours figure ($523 billion) excludes pre-market and post-close bars; the full-day figure ($571.9 billion) includes them.
  • Options parsing. Expiry, type, and strike are re-parsed from the OCC ticker (the table's expiration_date column is unreliable); premium notional assumes the 100-share multiplier.
  • Per-update spread statistics weight each NBBO update equally; time-weighted statistics are in the panel. Medians use deterministic quantiles.
  • No tick-dump guard tripped. All tick-table queries are aggregated; the tape-texture query sums the full trade table into one row.
  • Short-volume gap on June 29. The FINRA off-exchange short-volume file for June 29 was truncated market-wide (the source file ends mid-alphabet); NVDA sorts before the cutoff so its row is absent. The short-volume panel carries 20 sessions; the June 29 row is missing (market-wide file truncation), not zero. The June 29 deep-dive carries the market-wide probe receipt.

Methodology

  • Timestamps are stored in UTC and filtered with raw UTC bounds; June 2026 is entirely EDT, so regular hours are 13:30–20:00 UTC (9:30 am–4:00 pm ET). toTimeZone appears only in SELECT lists.
  • A session close is the last regular-hours minute bar. Dollar volume is minute close times minute volume, summed.
  • Options expiry, type and strike are re-parsed from the OCC ticker. Premium notional assumes the 100-share multiplier.
  • Generation is batch-only through the gated read-only path; the public page never queries live. The warehouse retains full tick history with no rolling expiry, so this analysis reproduces from the same tables at any time. 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.