Strasmore Research
Deep Dives Matt ConnorBy Matt Connor

GameStop, Jan 28, 2021: $483 to $112 by Noon

January 28, 2021: GME printed $483 and $112 in the same morning, with 76 minutes of the session lost to volatility halts. The wildest tape of the squeeze.

January 28, 2021 was the crescendo of the GameStop squeeze — the morning GME printed $483.00 and $112.25 within two hours, the day several brokerages restricted buying in the name, and the single most halt-riddled tape a household stock has produced in the modern era. The squeeze's mechanics are covered in the short squeeze explainer, with this same stock as the case study; this page is the day itself, minute by minute. Every number is a stored query; expand any panel for the SQL.

The day, on one row — count the bars

QueryGME on January 28, 2021 — receipted (as-traded, pre-2022-split prices)
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 = 'GME'
          AND window_start >= toDateTime('2021-01-27 00:00:00') AND window_start < toDateTime('2021-01-28 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,
    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 = 'GME'
  AND window_start >= toDateTime('2021-01-28 04:00:00') AND window_start < toDateTime('2021-01-28 23:59:00')

Start with the bar count: 314 regular-session minute bars instead of 390. The roughly seventy-six missing minutes are Limit Up/Limit Down volatility halts — the single-stock circuit breakers born of the 2010 flash crash — tripping over and over as the price teleported. Between the halts: an open at $265 — already -23.2% below the prior official close, the overnight and premarket tape having turned violent as brokerage restrictions were announced — then a spike to the all-time high of $483 in the opening hour, a collapse to $112.25 at 11:24 ET — a 77% fall from the top — and a close at $197.44, -42.8% down on the day. All prices as they traded, before the 2022 four-for-one split.

The morning, bucket by bucket

QueryGME by half-hour — January 28, 2021 regular session
The exact SQL behind every number
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
    round(toFloat64(argMax(close, window_start)), 2) AS bucket_close,
    round(min(toFloat64(low)), 2) AS bucket_low,
    round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'GME'
  AND window_start >= toDateTime('2021-01-28 04:00:00') AND window_start < toDateTime('2021-01-28 23:59:00')
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY et_time
ORDER BY et_time

The 09:30 and 10:00 buckets contain the peak; the 11:00 bucket's $112.25 low is the trough — a round trip that erased and partially rebuilt tens of billions of market value before lunch. Note the missing volume inside the halt windows: the buckets with sparse shares are the ones where trading kept stopping. The brokerage buying restrictions announced that morning sit in the public record alongside this tape; this page records the co-timing and the prints, not a causal verdict — the sequencing arguments filled congressional hearings for months afterward.

The squeeze context, receipted elsewhere on this site

The setup that produced this day — short interest exceeding the float-adjusted norms, days to cover in double digits — is documented with settlement-by-settlement receipts in the squeeze explainer and days to cover. By the January 29 settlement (the day after this session), reported short interest had collapsed to a third of its November level: the unwind that this day's prices forced is visible in the fortnightly data. What the daily tape adds is the texture: the squeeze's climax was not a smooth ascent but a hall of mirrors — halts, gaps between prints, a top and a crash occupying the same morning.

What this day teaches

For all its meme-era costume, January 28 is a classical liquidity lesson. A stock's price is set by its most urgent marginal order, and when position-closing urgency (shorts buying) collides with access restrictions (brokers limiting buys) and mechanical pauses (LULD halts), price discovery happens in staccato jumps rather than curves. The $483 and $112 prints were both "the market price" that morning, minutes apart. Anyone modeling markets as continuous should keep this tape pinned above their desk.

GameStop January 28 FAQ

What was GameStop's highest price ever?

$483.00, printed in the premarket-adjacent opening frenzy of January 28, 2021 (intraday, as-traded). Split-adjusted for the 2022 four-for-one split, that corresponds to $120.75 on today's share count.

Why did GME trade $483 and $112 on the same day?

The tape shows the sequence: the all-time high printed early, brokerage buying restrictions were announced mid-morning, and the price collapsed to $112.25 by 11:24 ET through repeated volatility halts — then recovered partially into the close. Which ingredient mattered most remains argued to this day; the prints themselves are not in dispute.

How many times was GME halted on January 28, 2021?

The minute tape is missing roughly 314-vs-390 worth of session — about seventy-six minutes lost to repeated Limit Up/Limit Down halts, the heaviest halt day of the entire squeeze.


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.

#market history#gamestop#short squeeze#halts