The screened names ranked by short interest against shares outstanding (not float)
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-08, from Short Squeeze Candidates This Week.
| ticker | si_pct_shares_out | shares_short_m | shares_out_m | days_to_cover |
|---|---|---|---|---|
| RXRX | 33.3 | 178.7 | 536 | 12.6 |
| HTZ | 32.5 | 115.9 | 356 | 8.5 |
| NVAX | 30.2 | 49.9 | 165 | 9.3 |
| RUN | 29.5 | 71.1 | 241 | 10.1 |
| AI | 26.4 | 42.4 | 161 | 6.9 |
| RIG | 24.9 | 277.8 | 1117 | 6.1 |
| SOC | 24.3 | 46.6 | 192 | 6.6 |
| ARRY | 22.9 | 35.3 | 154 | 6.4 |
| LCID | 22.8 | 89.8 | 394 | 8.1 |
| HIMS | 22.7 | 52.9 | 233 | 6.1 |
- Rows × columns
- 10 × 5
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
ticker |
text | 10 distinct values (AI, ARRY, HIMS…) | |
si_pct_shares_out |
number | 22.7 to 33.3 | percent |
shares_short_m |
number | 35.3 to 277.8 | count |
shares_out_m |
number | 154 to 1,117 | count |
days_to_cover |
number | 6.1 to 12.6 |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
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
),
rising 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
),
share_count AS (
SELECT ticker, market_cap / price AS shares_out
FROM global_markets.stocks_ratios
WHERE date = (SELECT max(date) FROM global_markets.stocks_ratios)
AND market_cap > 0
AND price > 0
)
SELECT c.ticker AS ticker,
round(100.0 * c.short_interest / s.shares_out, 1) AS si_pct_shares_out,
round(c.short_interest / 1e6, 1) AS shares_short_m,
round(s.shares_out / 1e6, 0) AS shares_out_m,
round(c.days_to_cover, 1) AS days_to_cover
FROM crowded c
INNER JOIN rising r ON r.ticker = c.ticker
INNER JOIN share_count s ON s.ticker = c.ticker
ORDER BY si_pct_shares_out DESC, c.ticker
LIMIT 10
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.