GameStop koersverloop 28 januari 2021
Op 28 januari 2021 noteerde GME tussen $483 en $112. Robinhood beperkte posities tot position-close-only en er vonden talloze trading halts plaats.
28 januari 2021 was het hoogtepunt van de GameStop squeeze — in de ochtend noteerde GME binnen twee uur $483 en $112.25, de dag dat Robinhood en andere brokers de aankoop van het aandeel beperkten, en — volgens de eigen minute bars, hieronder vermeld — de dag met de meeste handelsstops tijdens de squeeze zelf. De mechanica van de squeeze wordt uitgelegd in de uitleg over de short squeeze, met dit aandeel als casestudy; deze pagina richt zich op de dag zelf — de stijging die de situatie creëerde, de koersverloop per minuut, de beperkingen door brokers, de options flow en de daaropvolgende daling. Elk getal is een opgeslagen query; open elk paneel voor de SQL.
De stijging: december 2020 tot 27 januari
De meest extreme dag in dit verhaal is niet te verklaren zonder de acht weken die eraan voorafgingen. GME sloot 2020-12-01 op $15.81. Dit is een zwaar geshortte winkelketen die normaal gesproken enkele miljoenen aandelen per dag verhandelt — 6.2 miljoen tijdens een normale sessie in begin december. De dag vóór de sessie waarover deze pagina gaat, sloot de koers op $345 — 21.8 keer de prijs van 1 december.
De exacte SQL achter elk getal
SELECT
toString(et_date) AS session,
close_usd,
round(close_usd / first_value(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 1) AS mult_from_dec1,
shares_m
FROM (
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
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 close_usd,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'GME'
AND window_start >= toDateTime('2020-12-01 00:00:00') AND window_start < toDateTime('2021-01-27 23:59:00')
GROUP BY et_date
)
WHERE et_date >= toDate('2020-12-01') AND et_date <= toDate('2021-01-27')
ORDER BY et_dateHet verloop lijkt op een trap in plaats van een helling. Tot medio januari steeg het aandeel langzaam in de teens; op 2021-01-13 sloot het op $31.44 met 144.4 miljoen shares — een volume dat meer dan twintig keer de norm van december was. Vanaf dat punt was elke stijging groter dan de vorige, tot aan de slotkoers van $64.85 op 2021-01-22 en de bijna verdubbeling richting 27 januari. Short sellers waren gedurende de hele periode gepositioneerd: de settlement-date receipts verderop op deze pagina laten zien wat deze stijging met hen deed.
De dag in één overzicht — het aantal bars
De exacte SQL achter elk getal
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 min(bars)
FROM (
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'GME'
AND window_start >= toDateTime('2021-01-25 04:00:00') AND window_start < toDateTime('2021-02-05 04:00:00')
GROUP BY et_date
HAVING et_date != toDate('2021-01-28')
)
) AS thinnest_other
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,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS day_notional_bn,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth_minute_bars,
round(maxIf(toFloat64(high), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 4, 2) AS rth_high_splitadj,
thinnest_other AS thinnest_other_session_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')Begin met het aantal bars: 314 regular-session minute bars in plaats van 390. De ontbrekende zeventig-zes minuten werden veroorzaakt door herhaaldelijke Limit Up/Limit Down volatility halts terwijl de prijs versnelde; geen enkele andere sessie tijdens de squeeze tussen 25 januari en 4 februari had minder dan 348 regular-session bars. Tussen de halts: een opening op $265 — al -23.2% lager dan de vorige officiële close, doordat de handel tijdens de overnight en premarket extreem volatiel werd na de aankondiging van beperkingen bij brokers — gevolgd door een stijging naar de all-time high van $483 in het eerste handelsuur, een daling naar $112.25 om 11:24 ET — -67.5% onder de vorige close — en een closing op $197.44, een daling van -42.8% op de dag. Alle prijzen zijn gebaseerd op de handelskoersen vóór de four-for-one split van 2022.
Het volume is opmerkelijk: 57.4 miljoen shares wisselden van eigenaar tijdens de extended day, met een dollar volume van ongeveer $16.7 miljard — een omzet van megacap-omvang geconcentreerd in een retailer in videogames die acht weken eerder tijdens een rustige sessie 6.2 miljoen shares had verhandeld.
Wat een Limit Up/Limit Down halt precies inhoudt
De halts waren geen besluit van de beurs; ze zijn automatisch. Een Limit Up/Limit Down (LULD) halt is de circuit breaker voor individuele aandelen die werd ingevoerd na de flash crash van 2010. Elk aandeel heeft een prijsband rond een referentieprijs — een voortschrijdend gemiddelde van de eigen transacties over vijf minuten — van 5% aan beide zijden voor de grootste namen, 10% voor de meeste andere aandelen, en een bredere band voor aandelen met een lage prijs, waarbij de banden in de laatste 25 minuten van de sessie worden verdubbeld. Als de beste bid of offer 15 seconden lang op de rand van de band staat, wordt de handel in dat aandeel op elke beurs voor vijf minuten gepauzeerd, waarna de handel via een auction op de beurs waar het aandeel genoteerd staat, wordt hervat; wanneer de auction niet binnen het toegestane bereik kan worden afgewikkeld, wordt de pauze verlengd. Bij een koersverloop zoals die van GME die ochtend herhaalt deze cyclus zich: hervatten, binnen enkele seconden de breedte van een band overschrijden, opnieuw pauzeren. Zo verliest een sessie tweeënzeventig minuten zonder dat iemand op een knop drukt — het mechanisme werkt precies zoals ontworpen, waarbij het handelsverkeer consumeert terwijl het functioneert.
De ochtend, per bucket
De exacte SQL achter elk getal
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_timeDe buckets van 09:30 en 10:00 bevatten de piek; het lage punt van $112.25 in de 11:00 bucket vormt het dal — een round trip die tens of billions aan marktwaarde wist en deels herstelde voor de lunch. Let op het ontbrekende volume binnen de halt-vensters: de buckets met weinig shares zijn de momenten waarop de handel herhaaldelijk werd onderbroken. De prints van $483 en $112.25 waren die ochtend beide "the market price", slechts enkele minuten uit elkaar — iedereen die markten als continu modelleert, zou deze tape boven het bureau moeten hangen.
De brokers: Robinhood en position-close-only
Een andere cruciale gebeurtenis van 28 januari is niet terug te vinden in de koersen. Vóór de opening verplaatste Robinhood — de broker waar een groot deel van de retail-kopers van de squeeze actief was — GME en een lijst met andere namen naar position-closing only: klanten konden de aandelen die zij bezaten verkopen, maar geen nieuwe posities meer openen. Interactive Brokers had GME-opties op het middaguur van de vorige dag, 27 januari, al in liquidation-only gezet, en verschillende andere brokers verhoogden de margin requirements of beperkten het openen van posities. Robinhood gaf als reden voor de beperking een oproep tot storting van de clearinghouse in de vroege ochtend. Dit bedrag werd geschat op ongeveer $3 miljard — een bedrag dat daalde nadat de beperkingen werden ingevoerd — en de firma haalde die nacht meer dan een miljard dollar op bij haar investeerders. De congreszitting van februari 2021 en het rapport van de SEC uit oktober 2021 beschrijven dit verloop in detail.
De koersgegevens tonen gelijktijdigheid aan, geen oordeel: beperkingen die vóór de opening werden aangekondigd, een -23.2% gap down om 9:30, de $483 print, de handelsstops en de $112.25 low. De lijst met beperkingen bewoog als één blok:
De exacte SQL achter elk getal
SELECT
ticker,
round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) = '2021-01-27' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS close_jan27,
round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) = '2021-01-28' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS close_jan28,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) = '2021-01-28' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) = '2021-01-27' AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('GME', 'AMC', 'BB', 'NOK', 'KOSS')
AND window_start >= toDateTime('2021-01-27 00:00:00') AND window_start < toDateTime('2021-01-29 04:00:00')
GROUP BY ticker
ORDER BY change_pct ASCElk aandeel op de lijst sloot fors lager, met een spreiding van -56.3% voor de zwaarst getroffen (AMC) tot -29.1% voor de minst getroffen (Nokia), waarbij GME zelf op -42.8% stond. Vijf aandelen met vijf verschillende bedrijfsactiviteiten vertoonden op dezelfde dag hetzelfde verloop — de gemeenschappelijke factor was de lijst zelf.
De options tape: de hedging machine op volle toeren
Tijdens de squeeze-week behoorde de optionsmarkt van GameStop tot de drukste van alle beursgenoteerde bedrijven. Een standaardkenmerk is een gamma loop — een dealer die een call option verkoopt, koopt doorgaans aandelen om te hedge, en naarmate de prijs richting de strike stijgt, moet deze hedge groeien, wat zorgt voor mechanische koopdruk tijdens de stijging. Handelsgegevens tonen de hedging niet direct, maar wel de omvang van het volume:
De exacte SQL achter elk getal
SELECT
toString(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) AS session,
round(sumIf(size, substring(ticker, 12, 1) = 'C') / 1e6, 2) AS call_contracts_m,
round(sumIf(size, substring(ticker, 12, 1) = 'P') / 1e6, 2) AS put_contracts_m,
round(100.0 * sumIf(size, substring(ticker, 12, 1) = 'C') / sum(size), 1) AS call_share_pct,
round(sum(toFloat64(price) * size * 100) / 1e9, 2) AS premium_bn,
round(count() / 1e3, 0) AS prints_k
FROM global_markets.options_trades
WHERE ticker >= 'O:GME21' AND ticker < 'O:GME22'
AND sip_timestamp >= toDateTime('2021-01-25 00:00:00') AND sip_timestamp < toDateTime('2021-01-29 00:00:00')
GROUP BY session
ORDER BY sessionOp 2021-01-27, de avond voor deze sessie, veranderde er alleen al in GME-contracten $7.99 miljard aan option premium, verspreid over 351 duizend individuele prints; de 28e voegde daar $3.97 miljard aan toe. En één detail dat in de verslaglegging vaak wordt overgeslagen: de tape was put-heavy aan de top. Calls vormden op de 27e slechts 24% van het contractvolume (1.05 miljoen puts tegenover 0.33 miljoen calls) en 29.5% op de 28e. Naast de groep die op de stijging speculeerde, betaalde een andere groep voor de downside terwijl de top werd gevormd.
De nasleep: de reis naar beneden
28 januari was niet het einde. De volgende sessie, 29 januari, zag beperkte koopactiviteiten bij de beperkte brokers — de positie-limieten bij Robinhood werden op een gegeven moment gemeten in een enkel cijfer aan aandelen — en GME sloot op $328.24, een stijging van 66.2% op die dag. Dit was de laatste sluiting in de buurt van de hoogste koersen.
De exacte SQL achter elk getal
SELECT
toString(et_date) AS session,
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(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS close_usd,
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-27 00:00:00') AND window_start < toDateTime('2021-02-09 23:59:00')
GROUP BY et_date
)
)
WHERE et_date >= toDate('2021-01-29') AND et_date <= toDate('2021-02-09')
ORDER BY et_dateDe daling was even steil als de stijging: -30.8% op 2021-02-01, -60.1% op 2021-02-02, en tegen 2021-02-04 was de sluiting $53.38 — in een aandeel dat vijf sessies eerder $483 had genoteerd. Het tweewekelijkse short-interest rapport laat zien wat de squeeze tot die tijd had bereikt:
De exacte SQL achter elk getal
SELECT toString(settlement_date) AS settled,
round(short_interest / 1e6, 1) AS shares_short_m,
round(days_to_cover, 1) AS days_to_cover
FROM global_markets.stocks_short_interest
WHERE ticker = 'GME'
AND settlement_date >= '2020-11-01'
AND settlement_date <= '2021-02-28'
ORDER BY settlement_dateVan 71.2 miljoen short aandelen bij de 2020-12-31 settlement, stortte de gerapporteerde short interest in tot 21.4 miljoen tegen 2021-01-29 — de settlement één sessie na de datum van deze pagina — en de days to cover daalden van 14 op het hoogtepunt in november naar 1. De shorts wiens posities de setup bepaalden, waren volgens deze maatstaf tegen het einde van de maand grotendeels verdwenen; de anatomie van die unwind staat in de short squeeze uitleg, en het verschil tussen dit tweewekelijkse cijfer en de dagelijkse short-sale volume wordt behandeld in short interest vs short volume.
Wat deze dag leert
Ondanks de kenmerken van het meme-tijdperk is 28 januari een klassieke les in liquidity. De prijs van een aandeel wordt bepaald door de meest dringende marginale order. Wanneer de urgentie om posities te sluiten (shorts die kopen), beperkingen op de toegang (brokers die aankopen beperken) en mechanische pauzes (LULD halts) gelijktijdig optreden, vindt prijsontdekking plaats in staccato sprongen in plaats van vloeiende curves. Niets aan de dag vereist een schurk om de vorm ervan te verklaren — en niets in de minutenkaarten kan een schurk bevestigen of uitsluiten. De bovenstaande gegevens zijn wat er daadwerkelijk is geregistreerd.
GameStop 28 januari FAQ
Wat was de hoogste koers van GameStop ooit?
$483 (intraday, as-traded), genoteerd op de ochtend van 28 januari 2021. Na correctie voor de four-for-one split van 2022 komt dit overeen met $120.75 op basis van de huidige aandelenaantallen.
Waarom heeft Robinhood de handel in GameStop beperkt?
Robinhood heeft GME en andere aandelen op 28 januari 2021 beperkt tot uitsluitend het sluiten van posities. De beslissing werd toegeschreven aan een deposit call van een clearinghouse van ongeveer $3 miljard die ochtend. Er werd in de loop van de nacht meer dan een miljard dollar bij de beleggers opgehaald en de beperkte koopmogelijkheid werd de volgende sessie hersteld. Getuigenissen voor het Congres en het rapport van de SEC uit 2021 documenteren deze gebeurtenis.
Heeft Robinhood de crash van GameStop veroorzaakt?
De marktgegevens registreren de volgorde, niet het oordeel: de beperkingen werden aangekondigd vóór de opening, GME gapped -23.2% down, bereikte de recordkoers van $483 en de laagste koers van $112.25 binnen twee uur, en alle beperkte aandelen sloten die dag met een daling van double digits. Welke factor de grootste impact had, blijft onderwerp van discussie; het rapport van de SEC heeft dit niet definitief vastgesteld.
Hoe vaak werd de handel in GME op 28 januari 2021 geschorst?
De minute tape laat 314 regular-session bars zien in plaats van 390 — ongeveer zeventig-zes minuten verloren door herhaalde Limit Up/Limit Down halts. Dit maakte 28 januari tot de dag met de meeste halts tijdens de gehele squeeze: geen enkele andere sessie van 25 januari tot en met 4 februari had minder dan 348 regular-session bars.
Wat gebeurde er met GME na 28 januari 2021?
Nog één stijging — een slotkoers van $328.24 op 29 januari — en daarna de daling: tegen 2021-02-04 sloot het aandeel op $53.38, en de gerapporteerde short interest was op de settlement van 29 januari al gedaald naar 21.4 miljoen shares.
Elk paneel hierboven is een opgeslagen, versiespecifieke query over de historische tape — breid de SQL uit om elke meting te zien. Wilt u deze dag ervaren in plaats van erover te lezen? Het is een van de speelbare scenario's in de Strasmore Labs trading simulator(https://labs.strasmore.com/g1).