---
title: "Highest composite short-squeeze scores — a peer-relative 0-100 rank: a weighted mean of six factor percentiles (short interest % of shares 30%, days to cover 20%, price vs trailing VWAP 15%, short-volume trend 15%, short-interest change 10%, fails-to-deliver pressure 10%) plus catalyst boosts for an unusual price spike, volume surge, or a scheduled earnings call within a few weekdays (+10 each, capped at +20, clamped to 100), highest score first. Untradeable micro-caps dominate the raw board; pass minMarketCap and/or minDollarVolume to keep only names clearing your liquidity bar (scores stay peer-relative to the full universe)."
method: GET
path: "/v1/short-squeeze-scores"
tags: ["ShortData"]
---

# Highest composite short-squeeze scores — a peer-relative 0-100 rank: a weighted mean of six factor percentiles (short interest % of shares 30%, days to cover 20%, price vs trailing VWAP 15%, short-volume trend 15%, short-interest change 10%, fails-to-deliver pressure 10%) plus catalyst boosts for an unusual price spike, volume surge, or a scheduled earnings call within a few weekdays (+10 each, capped at +20, clamped to 100), highest score first. Untradeable micro-caps dominate the raw board; pass minMarketCap and/or minDollarVolume to keep only names clearing your liquidity bar (scores stay peer-relative to the full universe).

`GET /v1/short-squeeze-scores`

## Request

- Base URL: `https://api.equibles.com`
- URL: `https://api.equibles.com/v1/short-squeeze-scores`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/equibles/apis/equibles-api/docs/v1/short-squeeze-scores/get.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

- `minMarketCap` number, double
- `minDollarVolume` number, double
- `ticker` string
- `limit` integer
- `offset` integer

## Response `200`

OK

- ShortSqueezeScoresResponse
  - `settlementDate` string, date, nullable
  - `data` ShortSqueezeScoreDto[], nullable
    - `ticker` string, nullable
    - `rank` integer, nullable: Position in the score-descending scored universe (1 = highest score), stamped before any liquidity filter — so a filtered board keeps each row's real standing instead of renumbering from 1, and the value matches what a single-ticker lookup reports for the same stock.
    - `score` number, double: Composite 0-100 score: weighted mean of the available factor percentiles (short interest 30%, days to cover 20%, price vs trailing VWAP 15%, short-volume trend 15%, short-interest change 10%, fails-to-deliver 10%; peer-relative, missing factors drop out) plus catalyst boosts, capped at +20 and clamped to 100.
    - `shortInterestPercentOfShares` number, double: Current short position as a fraction of shares outstanding (0-1 scale).
    - `daysToCover` number, double, nullable: FINRA days-to-cover; computed from the average daily volume when not reported.
    - `shortVolumeShareTrend` number, double, nullable: Change in the short share of total volume: the most recent two weeks' pooled short-volume ratio minus the prior two weeks'. Positive = rising pressure.
    - `shortInterestChangePercent` number, double, nullable: Change in the short position versus the previous FINRA report as a fraction of the previous position (0.15 = shorts grew 15%), both positions split-adjusted; null when the previous position is unknown or zero.
    - `failsToDeliverPercentOfShares` number, double, nullable: Worst single-day fails-to-deliver quantity over the trailing 30 days (split-adjusted) as a fraction of shares outstanding. Zero = the SEC feed reported no fails for the stock; null = the feed had no data.
    - `priceAboveVwap` number, double, nullable: Latest close versus the trailing volume-weighted average price (up to 65 trading days, roughly one quarter), as a fraction of that average (0.25 = price sits 25% above where recent volume traded); positive = open shorts underwater. Null without enough price history.
    - `hasPriceSpikeCatalyst` boolean: True when the last week's return is a 2-sigma outlier versus the stock's own daily volatility (+10 score boost).
    - `hasVolumeSurgeCatalyst` boolean: True when weekly dollar turnover runs at least twice the stock's baseline on a positive move (+10 score boost).
    - `hasEarningsProximityCatalyst` boolean: True when a scheduled earnings call sits within the squeeze window (5 weekdays before to 3 after; +10 score boost). False also means the calendar may simply not know the stock's date.
    - `marketCapitalization` number, double, nullable: Market capitalization in USD; null when unknown.
    - `averageDailyDollarVolume` number, double, nullable: Approximate average daily dollar volume in USD (FINRA average daily share volume, restated onto today's split basis, times the market-cap-implied share price); null when either input is unknown.
    - `baseScore` number, double: The weighted mean of the factor percentiles alone, before any catalyst boost. Separating it from catalystBoost says whether a high score rests on standing short pressure or on a transient event. Note that score is the SUM clamped to 100, so on the highest scorers it is less than baseScore + catalystBoost.
    - `catalystBoost` number, double: The catalyst boost added to baseScore (+10 per catalyst, capped at +20). Score is the clamped sum.
    - `shortInterestPercentile` number, double: Peer-relative percentile (0-100) of shortInterestPercentOfShares across the scored universe — the value that actually feeds the score, since the raw fraction alone says nothing about how extreme it is.
    - `daysToCoverPercentile` number, double, nullable: Peer-relative percentile of daysToCover; null when the factor is missing and drops out of the weighted mean.
    - `shortVolumeTrendPercentile` number, double, nullable: Peer-relative percentile of shortVolumeShareTrend; null when the factor is missing.
    - `shortInterestChangePercentile` number, double, nullable: Peer-relative percentile of shortInterestChangePercent; null when the factor is missing.
    - `failsToDeliverPercentile` number, double, nullable: Peer-relative percentile of failsToDeliverPercentOfShares; null when the factor is missing.
    - `priceAboveVwapPercentile` number, double, nullable: Peer-relative percentile of priceAboveVwap; null when the factor is missing.
  - `rank` integer, nullable: The requested ticker's rank in the full score-descending scored universe (single-ticker lookups only).
  - `scoredCount` integer, nullable: Total stocks scored at the settlement date — the universe every score, percentile and rank is relative to. Present on both the board and a single-ticker lookup; unlike total, it does not move with your liquidity filters.
  - `total` integer, nullable: Board responses only: total scored stocks clearing the liquidity floors — data is truncated whenever it holds fewer rows (additive, #7056).

## Other responses

- `400`: Invalid request — a malformed parameter value or a query parameter this endpoint does not support.
- `404`: Not Found

---

[API](https://skmtc.dev/equibles/apis/equibles-api.md) - [All operations](https://skmtc.dev/equibles/apis/equibles-api/llms.txt) - [OpenAPI document](https://skmtc.dev/equibles/apis/equibles-api/revisions/666e06778588?raw)
