Short Squeeze Candidates This Week
Squeeze-shaped mechanics: crowded shorts among liquid names, with a rising priceranking ·
2026-10-08 · 12×4
The screened names ranked by short interest against shares outstanding (not float)table ·
2026-10-08 · 10×5
Every past screened name, by what it did over the next 30 daysranking ·
2026-10-08 · 6×3
From the whole settlement file down to the screened list, one rule at a timeranking ·
2026-10-08 · 4×2
Every input behind this screen, and how many days old it isseries ·
2026-10-08 · 3×3
Liquid names at 5+ and 10+ days to cover, settlement by settlementseries ·
2026-10-08 · 12×4
Why Short Interest Data Is Always Two Weeks Old
The pipeline lag in one row: plus the bulk backfill these figures deliberately excludescalar ·
2026-10-04 · 1×613
Every incrementally-delivered settlement: measured on one date, on file days laterseries ·
2026-10-04 · 13×3
GME, winter 2020-21: each short interest print and the price move before it went public (as-traded prices)table ·
2026-10-04 · 6×5
GME days to cover: as reported in the file, and recomputed on the volume that traded while the print was pendingscalar ·
2026-10-04 · 1×839.1
The current state of the cycle: the newest print on file, and the one still in the pipelinescalar ·
2026-10-04 · 1×622,593
The blind window: what five stocks did between the settlement date and the day its short interest was publishedtable ·
2026-10-04 · 5×6
Biggest Short Squeezes in History, Ranked
Peak multiple: highest print divided by the last close before the squeezeranking ·
2026-09-12 · 5×4
Market value swing: capitalization before the squeeze and at the peak, billionstable ·
2026-09-12 · 2×5
Documented short-seller losses, billions, as estimated at the timetable ·
2026-09-12 · 3×5
GameStop, Jan 28, 2021: $483 to $112 by Noon
GME reported short interest by settlement date: November 2020 to February 2021ranking ·
2026-07-26 · 8×3
GME daily close and volume: December 1, 2020 to January 27, 2021 (as-traded prices)series ·
2026-07-26 · 39×4
GME by half-hour: January 28, 2021 regular sessionseries ·
2026-07-26 · 13×4
GME options trades by session: January 25–28, 2021series ·
2026-07-26 · 4×6
GME on January 28, 2021: receipted (as-traded, pre-2022-split prices)scalar ·
2026-07-26 · 1×14345
The restricted names on January 28, 2021: prior close vs close (ET regular session)ranking ·
2026-07-26 · 5×4
GME daily close and volume: January 29 to February 9, 2021series ·
2026-07-26 · 8×4
Squeeze-shaped mechanics: crowded shorts among liquid names, with a rising price
Squeeze-shaped mechanics: crowded shorts among liquid names, with a rising price
| ticker | days_to_cover | shares_short_m | return_5d_pct |
|---|---|---|---|
| CNQ | 22.1 | 182.9 | 2 |
| IBRX | 15.9 | 125.4 | 10 |
| RXRX | 12.6 | 178.7 | 15.4 |
| URG | 11.4 | 57.5 | 0.9 |
| WIT | 10.8 | 103.6 | 3.4 |
| QS | 10.5 | 97.8 | 1.4 |
| CVNA | 10.2 | 62.2 | 0.4 |
| RUN | 10.1 | 71.1 | 0.4 |
| NVAX | 9.3 | 49.9 | 4.5 |
| CVE | 9 | 59.6 | 0.8 |
| UUUU | 8.9 | 55.7 | 2.4 |
| KDP | 8.9 | 79 | 0.3 |
the exact SQL behind every number
WITH latest AS (
SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest
),
sessions AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= now() - INTERVAL 20 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY session
HAVING count() >= 380
ORDER BY session DESC
LIMIT 6
),
crowded AS (
SELECT ticker, days_to_cover, short_interest
FROM global_markets.stocks_short_interest
WHERE settlement_date = (SELECT d FROM latest)
AND avg_daily_volume >= 5000000
AND days_to_cover >= 5
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 60 AND today())
),
tape AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session,
argMax(close, window_start) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM crowded)
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT session FROM sessions)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker, session
),
moves AS (
SELECT ticker,
round((argMax(rth_close, session) / argMin(rth_close, session) - 1) * 100, 1) AS return_5d_pct
FROM tape
GROUP BY ticker
HAVING count() = 6 AND return_5d_pct > 0
)
SELECT c.ticker AS ticker,
round(c.days_to_cover, 1) AS days_to_cover,
round(c.short_interest / 1e6, 1) AS shares_short_m,
m.return_5d_pct AS return_5d_pct
FROM crowded c
INNER JOIN moves m ON m.ticker = c.ticker
ORDER BY c.days_to_cover DESC, c.ticker
LIMIT 12
More from this analysisShort Squeeze Candidates This Week
Every past screened name, by what it did over the next 30 days
ranking 6×3
→
From the whole settlement file down to the screened list, one rule at a time
ranking 4×2
→
Liquid names at 5+ and 10+ days to cover, settlement by settlement
series 12×4
→
The screened names ranked by short interest against shares outstanding (not float)
table 10×5
→
See all 3,256 queries →