Strasmore Research
Deep dive investigation Matt ConnorBy Matt Connor · Updated 2026-08-02

NVDA May 2023 earnings and the AI gap

May 25, 2023: NVIDIA guidance shock make Wall Street wake up, and stock open 26% higher. See how the overnight gap start the AI supercycle trade.

Ni May 24, 2023 evening, NVIDIA talk say revenue for next quarter go dey roughly fifty percent above Wall Street consensus. Na the data-center number wey make “AI capex” become the market main story. Stock reaction happen almost entirely for place wey most investors no fit trade: overnight. This page dey replay the gap wey open the AI supercycle era from the stored minute tape, the guidance figures themselves, whether the rest of semiconductor complex really move, wetin options tape print, where the gap rank for NVDA own two-decade history, and the dated path to the trillion-dollar line. Every number na stored query; expand any panel to see the SQL.

Wetin NVIDIA really guide

The main figures wey person dey find for this event na the guidance numbers themselves, so na how dem report am at that time be this. For the April quarter (fiscal Q1 2024), NVIDIA report revenue of $7.19 billion against consensus near $6.52 billion. Adjusted earnings come to $1.09 per share, versus roughly $0.92 wey dem expect. Na strong beat, but e no be the main story. The main story na the outlook: NVIDIA guide revenue of $11.00 billion, plus or minus 2% for the July quarter, against Street consensus near $7.15 billion. Big companies normally guide within a few percentage points of expectations. This one pass expectations by more than fifty percent for revenue, even though the company already dey among the biggest companies for the world. NVIDIA point to data-center demand for AI chips as the driver. The guidance later show say e conservative. When NVIDIA report the July quarter that August, revenue reach $13.51 billion. Those consensus figures na context wey press report, no be warehouse data. Everything below na the market verdict wey tape-recorded for dem.

Di gap, wey get receipt

QueryNVDA: May 24, 2023 official close vs May 25 open, how dem repriced am overnight
May24 official closeMay24 last extended printafter-hours move %May25 RTH openovernight gap %
305.41380.624.6385.2326.1
The exact SQL behind every number
WITH
    (
        SELECT argMaxIf(toFloat64(close), window_start,
            (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= toDateTime('2023-05-24 00:00:00') AND window_start < toDateTime('2023-05-25 04:00:00')
    ) AS rth_close_524,
    (
        SELECT argMax(toFloat64(close), window_start)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= toDateTime('2023-05-24 00:00:00') AND window_start < toDateTime('2023-05-25 04:00:00')
    ) AS last_extended_524
SELECT
    round(rth_close_524, 2) AS may24_official_close,
    round(last_extended_524, 2) AS may24_last_extended_print,
    round((last_extended_524 / rth_close_524 - 1) * 100, 1) AS after_hours_move_pct,
    round(toFloat64(argMinIf(open, window_start,
        (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)), 2) AS may25_rth_open,
    round((toFloat64(argMinIf(open, window_start,
        (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / rth_close_524 - 1) * 100, 1) AS overnight_gap_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'NVDA'
  AND window_start >= toDateTime('2023-05-25 04:00:00') AND window_start < toDateTime('2023-05-25 23:59:00')
Run am yourself

The official May 24 close na $305.41. Within hours, after-hours tape don already carry the stock reach $380.6, a +24.6% move for extended session based on the guidance. The next morning regular open print $385.23: overnight gap of +26.1%, roughly $197 billion market value wey create between one closing bell and the next opening one, with roughly 2.47 billion shares wey dey outstanding that time. E still be the main modern example of why stocks dey gap: the information land while main market dey close, and the extended sessions reprice am before most holders fit act.

Di wey gap happen after

QueryNVDA on May 25, 2023: trading di day after di guidance
prior closeRTH opengap %RTH lowlow ETRTH highhigh ETRTH closeday change %low vs prior %day shares mRTH minute bars
305.41385.2326.1366.3509:38394.811:27379.7924.420151.4390
The exact SQL behind every number
WITH
    (
        SELECT argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= toDateTime('2023-05-24 00:00:00') AND window_start < toDateTime('2023-05-25 04:00:00')
    ) AS prior_rth_close
SELECT
    round(prior_rth_close, 2) AS prior_close,
    round(toFloat64(argMinIf(open, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)), 2) AS rth_open,
    round((toFloat64(argMinIf(open, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / prior_rth_close - 1) * 100, 1) AS gap_pct,
    round(minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS rth_low,
    formatDateTime(toTimeZone(argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 'America/New_York'), '%H:%i') AS low_et,
    round(maxIf(toFloat64(high), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS rth_high,
    formatDateTime(toTimeZone(argMaxIf(window_start, (toFloat64(high), -toInt64(toUnixTimestamp(window_start))), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 'America/New_York'), '%H:%i') AS high_et,
    round(toFloat64(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)), 2) AS rth_close,
    round((toFloat64(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / prior_rth_close - 1) * 100, 1) AS day_change_pct,
    round((minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / prior_rth_close - 1) * 100, 1) AS low_vs_prior_pct,
    round(toFloat64(sum(volume)) / 1e6, 1) AS day_shares_m,
    countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth_minute_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'NVDA'
  AND window_start >= toDateTime('2023-05-25 04:00:00') AND window_start < toDateTime('2023-05-25 23:59:00')
Run am yourself

Na dis be di surprising part: after a +26.1% gap, di regular session itself no really move anywhere. Di open print na $385.23; shakeout low of $366.35 touch at 09:38 ET, few minutes after bell, and even dat low still dey +20% above di previous close, so di gap no come near to filling. Di session high of $394.8 print at 11:27 ET, while di close, $379.79, land within about two percent of di open, with a huge 151.4 million shares traded. Na only people wey hold am overnight get di day’s return. Buyers for di open effectively pay di full repriced level, and sellers for di open capture am. Di gap na di event; di session na di settlement.

Did the whole complex move?

One “AI boom” wey dey inside one ticker alone for just be earnings pop. Wetin make sense to test na whether the repricing pass NVIDIA reach other names for that same session. So, na the same May 24-close to May 25-close measurement we use for a checked group of semiconductor and AI-adjacent names, with the index ETFs SPY and QQQ as market context.

QueryMay 25, 2023, close to close: how di semiconductor complex move around NVDA gap
tickerMay24 closeMay25 closeday change %
NVDA305.41379.7924.4
TSM90.14100.9412
AMD108.25120.3211.2
AVGO679.33728.87.3
MU66.5469.64.6
MSFT313.85325.963.9
QQQ331.65339.742.4
SPY411.09414.630.9
INTC28.9827.41-5.4
The exact SQL behind every number
SELECT
    ticker,
    may24_close,
    may25_close,
    round((may25_close / may24_close - 1) * 100, 1) AS day_change_pct
FROM (
    SELECT
        ticker,
        round(argMaxIf(toFloat64(close), window_start,
            toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2023-05-24') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS may24_close,
        round(argMaxIf(toFloat64(close), window_start,
            toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2023-05-25') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS may25_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('NVDA', 'AMD', 'TSM', 'AVGO', 'MU', 'INTC', 'MSFT', 'SPY', 'QQQ')
      AND window_start >= toDateTime('2023-05-24 00:00:00') AND window_start < toDateTime('2023-05-26 00:00:00')
    GROUP BY ticker
)
ORDER BY day_change_pct DESC
Run am yourself

E move, but e no move evenly. The two big chipmakers wey dey closest to the trade, TSM (+12%) and AMD (+11.2%), repriced by double digits for that same session, even though dem no get their own earnings that evening. AVGO add 7.3%. The broad market hardly notice am: SPY close up by only 0.9%, while the Nasdaq-100 ETF QQQ gain +2.4%. And the difference inside the sector na the main signal. The market dey rearrange the winners, instead of lifting every name wey get chip connection: Intel finish that same session at -5.4%. Sector repricing wey get one loser inside am no be the same thing as market-wide rally. That split show from day one, and e remain the signature of the AI trade.

The options tape: after, not before

If traders had front-run the print, it would show in the listed options. Here is NVDA's full options tape, every contract on every NVDA strike and expiry, by session: five sessions before the report, the report session, and the gap day.

QueryNVDA options: contracts, trades, call share, and premium by session
sessioncontracts mtrades kcall share %premium bn
2023-05-170.8717358.20.74
2023-05-181.7833659.81.2
2023-05-191.1822757.90.72
2023-05-220.3790520.39
2023-05-230.429551.50.4
2023-05-240.9320354.50.77
2023-05-252.7560259.84.82
The exact SQL behind every number
SELECT
    toString(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) AS session,
    round(sum(size) / 1e6, 2) AS contracts_m,
    round(count() / 1e3, 0) AS trades_k,
    round(100.0 * sumIf(size, substring(ticker, 13, 1) = 'C') / sum(size), 1) AS call_share_pct,
    round(sum(size * price * 100) / 1e9, 2) AS premium_bn
FROM global_markets.options_trades
WHERE ticker LIKE 'O:NVDA2%'
  AND sip_timestamp >= toDateTime('2023-05-17 00:00:00') AND sip_timestamp < toDateTime('2023-05-26 00:00:00')
GROUP BY session
ORDER BY session
Run am yourself

The pre-print tape shows no stampede. Activity ran warm through opex week, peaking at 1.78 million contracts on 2023-05-18, the session before the May 19 monthly expiration; the two sessions just before earnings were then the quietest of the window, 0.37 and 0.42 million contracts. The report session itself printed 0.93 million. Then the guidance landed: 2.75 million contracts on the gap day, the heaviest of the window, and $4.82 billion of option premium in a single session, against $0.77 billion on the report session and roughly $0.39–$0.4 billion on the quiet days. Calls took 59.8% of gap-day contract volume. One caution on reading this: it is volume, not open interest, contracts changing hands, not net positioning, and by this measure the explosion came after the news, not ahead of it.

Where May 2023 gap dey rank for NVDA history

Na NVIDIA biggest overnight repricing be this one, or na just the most famous? Full-history receipt: e include every NVDA session for minute tape go back to 2003, rank dem by how big the regular-session open be over the previous official close.

QueryNVDA ten biggest overnight gaps up, 2003-present
sessionprior closeopen USDovernight gap %
2023-05-25305.41385.2326.1
2003-11-0718.1821.6619.1
2016-11-1167.7779.5117.3
2004-11-0515.3517.7215.4
2008-11-077.638.6813.8
2023-02-23207.65234.412.9
2024-02-22674.85750.2511.2
2009-12-0714.2615.8511.2
2017-05-10102.89114.2911.1
2011-08-1213.4114.8310.6
The exact SQL behind every number
WITH daily AS (
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
        argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth_open,
        argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'NVDA'
    GROUP BY et_date
    HAVING countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) > 0
)
SELECT
    toString(et_date) AS session,
    round(prev_close, 2) AS prior_close,
    round(rth_open, 2) AS open_usd,
    round((rth_open / prev_close - 1) * 100, 1) AS overnight_gap_pct
FROM (
    SELECT et_date, rth_open, rth_close,
           lagInFrame(rth_close) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily
)
WHERE prev_close > 0 AND isFinite(rth_open / prev_close)
ORDER BY overnight_gap_pct DESC
LIMIT 10
Run am yourself

May 25, 2023 na the biggest overnight gap up for NVDA recorded minute-tape history: +26.1%, far pass the runner-up (2003-11-07, +19.1%, from previous close of $18.18). Most of the other moves for the list happen after earnings reports too, including 2023-02-23 and 2009-12-07, the February 2023 and February 2024 AI-era prints wey each pass ten percent but still no near this one.

The road wey reach one trillion dollars

The gap no fade; e compound. For the roughly 2.47 billion shares outstanding wey NVIDIA report for that quarter, $1 trillion market value mean about $404.86 per share. Na the level financial press dey watch that week. Na here the dated path from the close before the gap:

QueryNVDA daily closes from di pre-gap session reach mid-June 2023
sessionclose USDchange %cum vs pre-gap %
2023-05-24305.41-0.50
2023-05-25379.7924.424.4
2023-05-26389.242.527.4
2023-05-30401.133.131.3
2023-05-31378.38-5.723.9
2023-06-01397.745.130.2
2023-06-02393.24-1.128.8
2023-06-05391.74-0.428.3
2023-06-06386.54-1.326.6
2023-06-07374.83-322.7
2023-06-08385.12.726.1
2023-06-09387.640.726.9
2023-06-12394.971.929.3
2023-06-13410.233.934.3
2023-06-14429.984.840.8
2023-06-15426.46-0.839.6
2023-06-16427.020.139.8
The exact SQL behind every number
WITH
    daily AS (
        SELECT
            toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
            argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth_close
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= toDateTime('2023-05-23 00:00:00') AND window_start < toDateTime('2023-06-17 00:00:00')
        GROUP BY et_date
    ),
    (SELECT any(rth_close) FROM daily WHERE et_date = toDate('2023-05-24')) AS pre_gap_close
SELECT
    toString(et_date) AS session,
    round(rth_close, 2) AS close_usd,
    round(if(prev_close = 0, NULL, (rth_close / prev_close - 1) * 100), 1) AS change_pct,
    round((rth_close / pre_gap_close - 1) * 100, 1) AS cum_vs_pregap_pct
FROM (
    SELECT et_date, rth_close,
           lagInFrame(rth_close) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily
)
WHERE et_date >= toDate('2023-05-24')
ORDER BY et_date
Run am yourself
QueryDi trillion-dollar crossing, receipt: first touch and first close above $404.86
overnight cap added bnfirst touch sessionfirst touch highfirst touch closesessions wey reach first touchfirst close sessionfirst close USDsessions wey reach first closefirst close cum pct
1972023-05-30419.38401.1332023-06-13410.231334.3
The exact SQL behind every number
WITH
    daily AS (
        SELECT
            toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
            argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth_close,
            maxIf(toFloat64(high), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth_high
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= toDateTime('2023-05-24 00:00:00') AND window_start < toDateTime('2023-06-20 00:00:00')
        GROUP BY et_date
    ),
    firsts AS (
        SELECT
            minIf(et_date, rth_high >= 404.86) AS ft,
            minIf(et_date, rth_close >= 404.86) AS fc
        FROM daily
    ),
    (SELECT any(rth_close) FROM daily WHERE et_date = toDate('2023-05-24')) AS pre_close,
    (
        SELECT argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= toDateTime('2023-05-25 04:00:00') AND window_start < toDateTime('2023-05-26 00:00:00')
    ) AS may25_open
SELECT
    round((may25_open - pre_close) * 2.47, 0) AS overnight_cap_added_bn,
    toString(any(f.ft)) AS first_touch_session,
    round(anyIf(d.rth_high, d.et_date = f.ft), 2) AS first_touch_high,
    round(anyIf(d.rth_close, d.et_date = f.ft), 2) AS first_touch_close,
    countIf(d.et_date > toDate('2023-05-24') AND d.et_date <= f.ft) AS sessions_to_first_touch,
    toString(any(f.fc)) AS first_close_session,
    round(anyIf(d.rth_close, d.et_date = f.fc), 2) AS first_close_usd,
    countIf(d.et_date > toDate('2023-05-24') AND d.et_date <= f.fc) AS sessions_to_first_close,
    round((anyIf(d.rth_close, d.et_date = f.fc) / pre_close - 1) * 100, 1) AS first_close_cum_pct
FROM daily AS d
CROSS JOIN firsts AS f
Run am yourself

The report day itself, May 24, close for -0.5%. Na the market last pre-AI-boom price, and na the “slightly down” session wey make the gap famous. Then +24.4% for the gap day and +2.5% the next day. 3 sessions after the guidance, on 2023-05-30, intraday tape reach $419.38, pass the trillion line, then e close below am for $401.13. The next session return -5.7%. The first close above the line come on 2023-06-13, for $410.23, 13 trading sessions after the guidance, +34.3% above the close before the gap. By 2023-06-14, the stock don reach $429.98, +40.8% within three weeks. All the prices here na as-traded for 2023, before NVDA 2024 ten-for-one stock split. Within two years, the AI-capex trade wey this evening start don become the market main theme. Na the same complex wey 2026 whipsaws dey fill our modern NVDA coverage.

Wetin this day teach

Earnings gaps na the purest example of the overnight problem. The reaction window belong to the thin, fast tape for extended session, and the regular session mostly just confirm am. The main lesson from this one be say the biggest single-name repricing of that period added almost nothing between the open and close. If your plan for events na “react at the regular open,” this tape show exactly wetin that plan worth.

This episode also change wetin earnings print fit be. Guidance surprises of a few percent dey move stocks. This one na guidance surprise of roughly fifty percent for the revenue line of company wey already dey among the biggest for the world. The consensus get the category wrong; e no be ordinary beat. The market treat am as new information about the direction of capital spending for the whole economy, no be just one company quarter. Na why the complex move with am, why competitor fit fall on the same news, and why people remember the date as the starting gun for the AI trade, no be as NVDA story alone.

NVDA AI-boom FAQ

NVDA gap up after May 2023 earnings na amount?

Regular session open na +26.1% above the previous official close, from $305.41 reach $385.23, after after-hours tape don already move +24.6% because of the guidance.

Wetin NVIDIA announce for May 24, 2023?

Fiscal Q1 2024 results, with revenue of $7.19 billion against consensus wey dey near $6.52 billion. The big surprise na July-quarter revenue guidance of $11.00 billion, plus or minus 2%, versus Street consensus wey dey near $7.15 billion. Data-center demand for AI chips drive am.

Na this NVIDIA biggest earnings gap ever?

Yes, for the minute tape going back to 2003. The +26.1% overnight gap into May 25, 2023 na NVDA largest recorded gap up. E pass the +19.1% runner-up from 2003-11-07.

When NVIDIA first reach $1 trillion market cap?

The tape first cross the widely watched $404.86 threshold intraday on 2023-05-30, with high of $419.38. E first close above the level on 2023-06-13 at $410.23, 13 trading sessions after the May 24 guidance.

Other semiconductor stocks move together with NVDA?

Yes, TSM add 12% and AMD move +11.2% for the same session. SPY rise less than one percent, while Intel close lower. Na sector repricing be this, no be market-wide move.


Every panel above na stored, versioned query over the historical tape. You fit expand the SQL to see each measurement. You wan feel this day instead of just reading am? E dey among the playable scenarios for the Strasmore Labs trading simulator.

#market history#nvda#earnings#ai boom