NVDA's May 2023 Earnings: The AI Gap
May 25, 2023: NVIDIA's guidance shocked Wall Street after the close and the stock opened 26% higher. The overnight gap that started the AI supercycle trade.
On the evening of May 24, 2023, NVIDIA guided its next quarter's revenue roughly fifty percent above Wall Street's consensus, the data-center number that made "AI capex" the market's organizing story. The stock's response happened almost entirely where most investors couldn't trade it: overnight. This page replays the gap that opened the AI supercycle era from the stored minute tape, the guidance figures themselves, whether the rest of the semiconductor complex actually moved, what the options tape printed, where the gap ranks in NVDA's own two-decade history, and the dated path to the trillion-dollar line. Every number is a stored query; expand any panel for the SQL.
What NVIDIA actually guided
The figures a searcher for this event usually wants are the guidance numbers themselves, so here they are as reported at the time. For its April quarter (fiscal Q1 2024), NVIDIA reported revenue of $7.19 billion against a consensus near $6.52 billion, with adjusted earnings of $1.09 per share versus roughly $0.92 expected, a solid beat, and not the story. The story was the outlook: revenue guidance for the July quarter of $11.00 billion, plus or minus 2%, against a Street consensus near $7.15 billion. Large companies typically guide within a few percent of expectations; this was more than fifty percent above them, on the revenue line of a company already among the world's largest, with the company pointing to data-center demand for AI chips. The guidance itself later proved conservative, the July quarter came in at $13.51 billion when NVIDIA reported it that August. Those consensus figures are press-reported context, not warehouse data; everything below is the market's tape-recorded verdict on them.
The gap, receipted
| may24_official_close | may24_last_extended_print | after_hours_move_pct | may25_rth_open | overnight_gap_pct |
|---|---|---|---|---|
| 305.41 | 380.6 | 24.6 | 385.23 | 26.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')The official May 24 close: $305.41. Within hours, the after-hours tape had already carried the stock to $380.6, a +24.6% extended-session move on the guidance. The next morning's regular open printed $385.23: an overnight gap of +26.1%, roughly $197 billion of market value created between one closing bell and the next opening one, at the roughly 2.47 billion shares then outstanding. It remains the canonical modern example of why stocks gap: the information landed while the main market was closed, and the extended sessions repriced it before most holders could act.
The day after the gap
| prior_close | rth_open | gap_pct | rth_low | low_et | rth_high | high_et | rth_close | day_change_pct | low_vs_prior_pct | day_shares_m | rth_minute_bars |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 305.41 | 385.23 | 26.1 | 366.35 | 09:38 | 394.8 | 11:27 | 379.79 | 24.4 | 20 | 151.4 | 390 |
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')Here is the counter-intuitive receipt: after a +26.1% gap, the regular session itself went essentially nowhere. The open printed $385.23; a shakeout low of $366.35 hit at 09:38 ET, minutes after the bell, and even that low stood +20% above the prior close, so the gap never came close to filling. The session high of $394.8 printed at 11:27 ET, and the close, $379.79, landed within a couple percent of the open, on a colossal 151.4 million shares. The day's return belonged entirely to whoever held through the night. Buyers at the open effectively paid the full repriced level, and sellers at the open captured it. The gap was the event; the session was the settlement.
Did the whole complex move?
An "AI boom" that lived in one ticker would just be an earnings pop. The claim worth testing is that the repricing extended beyond NVIDIA the same session, so here is the same May 24-close to May 25-close measurement for a checked set of semiconductor and AI-adjacent names, with the index ETFs SPY and QQQ as market context.
| ticker | may24_close | may25_close | day_change_pct |
|---|---|---|---|
| NVDA | 305.41 | 379.79 | 24.4 |
| TSM | 90.14 | 100.94 | 12 |
| AMD | 108.25 | 120.32 | 11.2 |
| AVGO | 679.33 | 728.8 | 7.3 |
| MU | 66.54 | 69.6 | 4.6 |
| MSFT | 313.85 | 325.96 | 3.9 |
| QQQ | 331.65 | 339.74 | 2.4 |
| SPY | 411.09 | 414.63 | 0.9 |
| INTC | 28.98 | 27.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 DESCIt moved, and unevenly. The two big chipmakers nearest the trade, TSM (+12%) and AMD (+11.2%), repriced double digits the same session with no earnings of their own that evening, and AVGO added 7.3%. The broad market barely registered it: SPY closed up just 0.9%, the Nasdaq-100 ETF QQQ +2.4%. And the dispersion inside the sector is the tell that the market was re-sorting winners rather than lifting everything with a chip on it: Intel finished the same session at -5.4%. A sector repricing with a loser inside it is a different animal from a market-wide rally, and that split, visible on day one, stayed the AI trade's signature.
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.
| session | contracts_m | trades_k | call_share_pct | premium_bn |
|---|---|---|---|---|
| 2023-05-17 | 0.87 | 173 | 58.2 | 0.74 |
| 2023-05-18 | 1.78 | 336 | 59.8 | 1.2 |
| 2023-05-19 | 1.18 | 227 | 57.9 | 0.72 |
| 2023-05-22 | 0.37 | 90 | 52 | 0.39 |
| 2023-05-23 | 0.42 | 95 | 51.5 | 0.4 |
| 2023-05-24 | 0.93 | 203 | 54.5 | 0.77 |
| 2023-05-25 | 2.75 | 602 | 59.8 | 4.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 sessionThe 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 the May 2023 gap ranks in NVDA history
Was this actually NVIDIA's biggest overnight repricing, or merely its most famous? Full-history receipt: every NVDA session on the minute tape back to 2003, ranked by the size of the regular-session open over the prior official close.
| session | prior_close | open_usd | overnight_gap_pct |
|---|---|---|---|
| 2023-05-25 | 305.41 | 385.23 | 26.1 |
| 2003-11-07 | 18.18 | 21.66 | 19.1 |
| 2016-11-11 | 67.77 | 79.51 | 17.3 |
| 2004-11-05 | 15.35 | 17.72 | 15.4 |
| 2008-11-07 | 7.63 | 8.68 | 13.8 |
| 2023-02-23 | 207.65 | 234.4 | 12.9 |
| 2024-02-22 | 674.85 | 750.25 | 11.2 |
| 2009-12-07 | 14.26 | 15.85 | 11.2 |
| 2017-05-10 | 102.89 | 114.29 | 11.1 |
| 2011-08-12 | 13.41 | 14.83 | 10.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 10May 25, 2023 is the largest overnight gap up in NVDA's recorded minute-tape history: +26.1%, well clear of the runner-up (2003-11-07, +19.1%, from a prior close of $18.18). The rest of the list is mostly mornings after earnings reports too, including 2023-02-23 and 2009-12-07, the February 2023 and February 2024 AI-era prints that each cleared ten percent and still land nowhere near this one.
The path to a trillion dollars
The gap did not fade, it compounded. At the roughly 2.47 billion shares outstanding NVIDIA reported that quarter, a $1 trillion market value worked out to about $404.86 per share, the line the financial press watched that week. Here is the dated path from the pre-gap close:
| session | close_usd | change_pct | cum_vs_pregap_pct |
|---|---|---|---|
| 2023-05-24 | 305.41 | -0.5 | 0 |
| 2023-05-25 | 379.79 | 24.4 | 24.4 |
| 2023-05-26 | 389.24 | 2.5 | 27.4 |
| 2023-05-30 | 401.13 | 3.1 | 31.3 |
| 2023-05-31 | 378.38 | -5.7 | 23.9 |
| 2023-06-01 | 397.74 | 5.1 | 30.2 |
| 2023-06-02 | 393.24 | -1.1 | 28.8 |
| 2023-06-05 | 391.74 | -0.4 | 28.3 |
| 2023-06-06 | 386.54 | -1.3 | 26.6 |
| 2023-06-07 | 374.83 | -3 | 22.7 |
| 2023-06-08 | 385.1 | 2.7 | 26.1 |
| 2023-06-09 | 387.64 | 0.7 | 26.9 |
| 2023-06-12 | 394.97 | 1.9 | 29.3 |
| 2023-06-13 | 410.23 | 3.9 | 34.3 |
| 2023-06-14 | 429.98 | 4.8 | 40.8 |
| 2023-06-15 | 426.46 | -0.8 | 39.6 |
| 2023-06-16 | 427.02 | 0.1 | 39.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| overnight_cap_added_bn | first_touch_session | first_touch_high | first_touch_close | sessions_to_first_touch | first_close_session | first_close_usd | sessions_to_first_close | first_close_cum_pct |
|---|---|---|---|---|---|---|---|---|
| 197 | 2023-05-30 | 419.38 | 401.13 | 3 | 2023-06-13 | 410.23 | 13 | 34.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 fThe report day itself, May 24, had closed at -0.5%, the market's last pre-AI-boom price, and the "slightly down" session the gap made famous. Then +24.4% on the gap day and +2.5% the day after. 3 sessions after the guidance, on 2023-05-30, the intraday tape ran to $419.38, through the trillion line, and closed back below it at $401.13; the next session gave back -5.7%. The first close above the line came on 2023-06-13, at $410.23, 13 trading sessions after the guidance, +34.3% above the pre-gap close. By 2023-06-14 the stock stood at $429.98, +40.8% in three weeks. All prices here are as-traded in 2023, before NVDA's 2024 ten-for-one stock split. Within two years the AI-capex trade this evening ignited had become the market's dominant theme, the same complex whose 2026 whipsaws fill our modern NVDA coverage.
What this day teaches
Earnings gaps are the purest form of the overnight problem: the reaction window belongs to the extended session's thin, fast tape, and the regular session mostly ratifies it. The receipt worth remembering from this one, the biggest single-name repricing of its era added almost nothing between its open and close. If your plan for events is "react at the regular open," this tape prices exactly what that plan is worth.
The episode also rewrote what an earnings print could be. Guidance surprises of a few percent move stocks; this was a guidance surprise of roughly fifty percent on the revenue line of a company already among the world's largest, a category error in the consensus rather than a beat, and the market treated it as new information about an entire economy's capital-spending direction rather than one company's quarter. That is why the complex moved with it, why a competitor could fall on the same news, and why the date is remembered as the AI trade's starting gun rather than as an NVDA story alone.
NVDA AI-boom FAQ
How much did NVDA gap up after May 2023 earnings?
The regular session opened +26.1% above the prior official close, $305.41 to $385.23, after the after-hours tape had already moved +24.6% on the guidance.
What did NVIDIA announce on May 24, 2023?
Fiscal Q1 2024 results, revenue of $7.19 billion against a consensus near $6.52 billion, plus the shock: July-quarter revenue guidance of $11.00 billion, plus or minus 2%, versus a Street consensus near $7.15 billion, on data-center demand for AI chips.
Was this NVIDIA's biggest earnings gap ever?
Yes, on the minute tape back to 2003: the +26.1% overnight gap into May 25, 2023 is NVDA's largest recorded gap up, ahead of the +19.1% runner-up from 2003-11-07.
When did NVIDIA first reach a $1 trillion market cap?
The tape first crossed the widely watched $404.86 threshold intraday on 2023-05-30 (high $419.38) and first closed above it on 2023-06-13 at $410.23, 13 trading sessions after the May 24 guidance.
Did other semiconductor stocks move with NVDA?
Yes, TSM added 12% and AMD +11.2% the same session, while SPY rose under one percent and Intel closed lower. It was a sector repricing, not a market-wide move.
Every panel above is a stored, versioned query over the historical tape, expand the SQL to see each measurement. Want to feel this day instead of reading it? It is one of the playable scenarios in the Strasmore Labs trading simulator.