How liquid US stocks distribute by short interest as a percent of shares outstanding
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-08-22, from What Is FINRA Short Interest? Days to Cover.
| short_pct_bucket | tickers | pct_of_tickers | median_days_to_cover |
|---|---|---|---|
| Under 2% | 172 | 13 | 2.37 |
| 2-5% | 382 | 28.8 | 3.36 |
| 5-10% | 401 | 30.2 | 4.67 |
| 10-20% | 272 | 20.5 | 6.22 |
| 20%+ | 101 | 7.6 | 7.4 |
- Rows × columns
- 5 × 4
- 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 |
|---|---|---|---|
short_pct_bucket |
text | 5 distinct values (10-20%, 2-5%, 20%+…) | |
tickers |
number | 101 to 401 | |
pct_of_tickers |
number | 7.6 to 30.2 | percent |
median_days_to_cover |
number | 2.37 to 7.4 |
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.
the exact SQL behind every number
WITH (SELECT max(settlement_date) FROM global_markets.stocks_short_interest) AS latest,
si AS
(
SELECT ticker,
max(short_interest) AS shares_short,
max(avg_daily_volume) AS adv,
max(days_to_cover) AS dtc
FROM global_markets.stocks_short_interest
WHERE settlement_date = latest
GROUP BY ticker
HAVING adv >= 1000000
),
shares AS
(
SELECT tk AS ticker,
argMax(basic_shares_outstanding, (filing_date, period_end)) AS shares_out
FROM global_markets.stocks_income_statements
ARRAY JOIN tickers AS tk
WHERE timeframe = 'quarterly'
AND filing_date >= today() - INTERVAL 9 MONTH
AND basic_shares_outstanding > 0
GROUP BY tk
HAVING shares_out >= 10000000
),
joined AS
(
SELECT si.ticker AS ticker,
100.0 * si.shares_short / shares.shares_out AS short_pct,
si.dtc AS dtc
FROM si
INNER JOIN shares ON si.ticker = shares.ticker
WHERE 100.0 * si.shares_short / shares.shares_out <= 50
)
SELECT multiIf(short_pct < 2, 'Under 2%',
short_pct < 5, '2-5%',
short_pct < 10, '5-10%',
short_pct < 20, '10-20%',
'20%+') AS short_pct_bucket,
count() AS tickers,
round(100.0 * count() / sum(count()) OVER (), 1) AS pct_of_tickers,
round(quantileExact(0.5)(dtc), 2) AS median_days_to_cover
FROM joined
GROUP BY short_pct_bucket
ORDER BY min(short_pct)
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysisWhat Is FINRA Short Interest? Days to Cover
TSLA short interest vs. average daily volume, bi-monthly (last 2 years)
series 47×3
→
GameStop, Nov 2020 – Mar 2021: short interest, days to cover and the closing price at each settlement
series 10×4
→
Short interest reporting dates: recent settlements, weekday, coverage and publication lag
series 9×5
→
Six household names at the latest settlement: shares short, percent of shares outstanding, days to cover
table 6×6
→
The latest FINRA short interest file: one snapshot of the whole market
scalar 1×4
→
Days to cover across all liquid US tickers, latest settlement (min 1M shares/day)
scalar 1×6
→
See all 2,170 queries →