Short Squeeze Score Methodology
// formula · weights · sources · limitations
Tapeboard's Short Squeeze Score is a 0-100 composite computed daily from seven normalized components, short interest as a percentage of float (25% weight), IBKR borrow fee (20%), float utilization (15%), FINRA CNMS daily short-volume ratio (15%), days to cover (10%), 5-day price momentum (10%), and borrow-fee 5-day change (5%), z-score normalized across a universe of roughly 500 active US equities.
What the score measures
The Tapeboard Short Squeeze Score is a 0-100 composite that ranks roughly 500 actively-traded US equities by squeeze potential each trading day. A score of 70+ means the ticker shows multiple squeeze conditions simultaneously, high short interest as a percentage of float, heavy daily short-sale volume, an elevated and rising borrow fee, tight float utilization, an extended cover ratio, and constructive recent price action. A score below 30 means the ticker has none of those; the rest of the distribution sits in between.
The score is descriptive, not predictive. It tells you which tickers are loaded with the structural conditions a squeeze needs to ignite, it does not tell you which ones will. Squeezes require a catalyst (earnings beat, news catalyst, trapped seller covering size). The score quantifies the powder keg; the catalyst is the spark.
Seven components, fixed weights
How the 100 points are allocated
The total score is the weighted sum of seven components. Weights are fixed and disclosed below, they do not adapt per ticker. We chose these weights from the squeeze literature and from cross-sectional analysis of the GME, AMC, BBBY, KOSS, and BBIG events of 2021-2023. Borrow fee, fee trend, and utilization together carry 40% because, in retrospect, those were the leading signals on every named squeeze, short-interest-percentage on its own would have flagged dozens of false positives.
| COMPONENT | WEIGHT | SOURCE | WHAT IT TELLS YOU |
|---|---|---|---|
| SI % Float | 25% | FINRA via Yahoo | Short interest divided by free float. The headline squeeze metric, what fraction of tradable shares are sold short. |
| Borrow Fee | 20% | IBKR Stock Loan | Annualized cost to borrow shares for shorting. High fees mean low share availability and crowded short positioning. |
| Float Utilization | 15% | IBKR Stock Loan | Percentage of available borrowable shares already lent out. 90%+ means the next short has nowhere to source shares. |
| Daily Short Volume | 15% | FINRA CNMS | Daily short sale volume divided by total reported volume (the daily short-volume ratio). Sustained readings above 50% mean shorts are pressing the tape right now, refreshed every trading day, not on the settlement calendar. |
| Days to Cover | 10% | FINRA SI / Avg Vol | Short interest divided by average daily volume. Higher = harder for shorts to exit without driving price up. |
| 5-Day Momentum | 10% | Price feed | Trailing 5-trading-day price change percent. Catches the early rip phase before retail attention arrives. |
| Borrow Fee 5-Day Change | 5% | IBKR fee history | Today's borrow fee minus its trailing 5-day average, in percentage points. A rising fee means borrow supply is tightening today, the leading edge of the fee signal. |
Why v2 added two daily components. In v1, 70% of the score's weight sat on FINRA settlement inputs that publish on a bi-monthly schedule, so the leaderboard could sit visually frozen for weeks between readings even while real squeeze pressure was building or unwinding. v2 moves 20% of the weight onto two inputs that refresh every trading day: the daily short-volume ratio (FINRA CNMS daily short sale volume divided by total volume) and the borrow-fee 5-day change. The structural settlement inputs still carry the majority of the score; the daily components make the score honest about what changed today.
Why momentum is only 10%. Momentum is included so the score isn't entirely lagging, the SI and borrow inputs are days to weeks delayed (see §03). But weighting momentum higher would turn this into a momentum scanner, which Tapeboard already provides separately under /scanner. The squeeze score's job is to surface structural setups; the momentum component is a tiebreaker.
Z-score normalization across the universe
Why raw values aren't the score
Raw values for each component are not added directly, a 40% SI/Float and a 4% borrow fee live on different scales. Each component is normalized to a z-score across the same-day universe of approximately 500 active US equities (the universe is defined as US-listed common stock with average daily dollar volume above $5M and a current market cap above $50M). The z-score for ticker T on component C is:
z(T, C) = (raw(T, C) - μ(C)) / σ(C)
where μ(C) is the universe mean of component C and σ(C) is the universe standard deviation. The weighted score is then:
score(T) = clamp(50 + 10 · Σ w(C) · z(T, C), 0, 100)
The 50 anchor + scale-by-10 transform maps a "perfectly average" ticker to score 50 and roughly +/- 5 standard deviations to the 0/100 endpoints. Clamping ensures the score never falls outside [0, 100]. The component breakdown shown on each ticker page (the weight × z-score bars) is the per-component contribution to that final number.
Where each input comes from and how often it refreshes
Sources, citations, and update cadence
Every input is documented below with its source, the legal basis for our use of it, and the cadence at which it refreshes. We do not hide vendor identities behind generic labels like "leading exchange feed", the row-level source is named.
| INPUT | SOURCE | CADENCE |
|---|---|---|
| Short Interest | FINRA bi-monthly settlement data (mirrored through a market-data aggregator) | Bi-monthly. FINRA publishes mid-month and end-of-month settlement files with a ~10-business-day delay; our snapshot refreshes within 24 hours of release. |
| Daily Short Volume Ratio | FINRA Consolidated NMS (CNMS) daily short sale volume files: reported short sale volume divided by total reported volume per symbol | Daily. FINRA publishes the file each trading evening; we ingest it in the nightly run. Note this is exchange-reported tape volume, not the settlement-based short interest figure. |
| Borrow Fee & Utilization | IBKR Stock Loan Availability dataset (the broker's real-time view of its shortable inventory) | Daily. Refreshed once per trading session shortly after the open. |
| Borrow Fee 5-Day Change | Computed: today's IBKR borrow fee minus its trailing 5-day average, in percentage points | Daily, derived from our stored IBKR fee history. |
| Days to Cover | Computed: (FINRA short interest) / (trailing 30-day average daily volume) | Recomputed daily as ADV updates; SI numerator changes only on FINRA settlement. |
| 5-Day Momentum | Schwab Market Data closes (primary), Finnhub fallback | Daily, after US market close. |
| FINRA Threshold List | FINRA Threshold Securities List (regulatory file published EOD) | Daily. Tickers earn the threshold flag after five consecutive settlement days of failures-to-deliver above the regulatory threshold. |
Threshold flag. The "T" badge next to a ticker on the leaderboard means the symbol appears on the current FINRA Threshold Securities List. Inclusion requires aggregate fails-to-deliver of at least 10,000 shares and at least 0.5% of total shares outstanding for five consecutive settlement days. The list is a backward-looking regulatory signal, it confirms covering pressure already exists, it does not predict it.
What this score cannot tell you
Known limitations and honest caveats
Short interest is settlement-delayed. FINRA reports SI on a bi-monthly cadence with a ~10-business-day delay. The "SI %Float" you see can be up to three weeks stale. Real-time short interest does not exist publicly in US markets, the SEC has been studying a daily-reporting rule (Rule 13f-2, adopted 2023) but enforcement has been delayed. Until that rule activates, every public squeeze score is working off the same delayed FINRA inputs.
Daily short volume is not short interest. The CNMS daily short-volume ratio counts every trade reported as a short sale, which includes market-maker and liquidity-provider hedging shorts that are typically closed intraday. A ratio in the 35-50% band is a normal baseline for most liquid US equities, that is why the component scores the ratio relative to the universe rather than treating 50% as alarming on its own. Sustained multi-day readings well above the universe norm are the signal; a single elevated print is noise.
Borrow data is IBKR-only. Borrow fees and utilization come from Interactive Brokers' stock-loan inventory. IBKR is one of the largest retail-and-prop borrow providers, but it is not the entire borrow market. Prime-broker rates (Goldman, JPM, Morgan Stanley) are not in the dataset, and they sometimes diverge, a ticker can be cheap to borrow at IBKR while being expensive or hard-to-borrow at a prime broker, or vice versa. We disclose the source rather than synthesize a market-wide rate we cannot see.
Float Utilization caps near 100%. When IBKR runs out of shares to lend (utilization 100%), the data series flattens. Our z-score normalization treats those tickers as the maximum tail of the distribution, which is correct in practice, but the score loses ability to differentiate between two 100%-utilization names. The borrow-fee component takes over as the discriminator at that ceiling.
Universe matters. Z-scores are computed against the ~500-stock active universe. A ticker added to the universe today suddenly has a z-score relative to that universe; if the universe drifts (e.g., during an IPO wave or a delisting cluster), comparable scores across time can shift. We rebuild the universe daily but do not retroactively re-rank historical scores.
No catalyst detection. The score is structural. It will not light up because earnings drop tomorrow, an analyst upgrade hits, or a short report from a known activist names a ticker. Pair the score with the news feed, options-flow surface, and earnings calendar, those are where catalysts live.
How to use the score in your workflow
Suggested reading order
Step 1. Open the leaderboard at /scanner/squeeze and sort by score descending. Anything 70+ has multiple squeeze conditions simultaneously.
Step 2. For each top-of-list ticker, click through to the research page. The Squeeze Score Card on /research/:symbol breaks the total into the seven component contributions, that's where you see whether a 78 score came from "all components moderate" or "SI %Float is enormous, others are average." Watch the Δ5d column on the leaderboard too, a score that is climbing day over day means the daily inputs (short volume, fee trend) are heating up.
Step 3. Cross-reference with the news feed and SEC filings on the same research page. The score tells you the powder is dry; the news feed tells you whether a spark is on the way.
Step 4. Size positions with the daily price-action context, not the score alone. A 95-score ticker that just printed a -8% day is in a different setup than a 95-score ticker that just broke out to new highs on rising volume.
Last reviewed and changelog
Last reviewed: 2026-06-16
This methodology is reviewed when weights change, when a data source changes, or quarterly, whichever comes first. Material changes are stamped here and reflected in the page's dateModified JSON-LD field.
2026-06-09, v2. Added two daily components: daily short-volume ratio (FINRA CNMS daily short sale volume / total volume, 15%) and borrow-fee 5-day change (5%). Rebalanced weights to SI 25 / Fee 20 / Util 15 / DSV 15 / DTC 10 / Momo 10 / FeeΔ 5. Rationale: 70% of the v1 weight sat on bi-monthly FINRA settlement inputs, so scores barely moved between settlements; v2 keeps the structural inputs dominant while letting the score reflect what changed today. Historical scores were not retroactively re-scored.
2026-05-03, initial publication (v1). Weights set at SI 35 / Fee 25 / Util 20 / DTC 15 / Momo 5. Universe is ~500 active US equities. Z-score anchored at 50 with σ-multiplier of 10.
If a data source changes (e.g., FINRA migrates SI reporting cadence, IBKR alters its borrow API), we'll log it here and re-score the affected universe. We do not retroactively rewrite historical scores.