Crowding leaders vs. their own price: about one month of sessions
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 Most Shorted Stocks Right Now, Measured.
| ticker | days_to_cover | return_pct | from_session | to_session |
|---|---|---|---|---|
| CNQ | 22.1 | -6.7 | 2026-09-03 | 2026-10-07 |
| IAUX | 15.9 | -12.3 | 2026-09-03 | 2026-10-07 |
| IBRX | 15.9 | 19.3 | 2026-09-03 | 2026-10-07 |
| MPT | 15.1 | -20 | 2026-09-03 | 2026-10-07 |
| RXRX | 12.6 | 24.2 | 2026-09-03 | 2026-10-07 |
- Rows × columns
- 5 × 5
- Period covered
- 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 | 5 distinct values (CNQ, IAUX, IBRX…) | |
days_to_cover |
number | 12.6 to 22.1 | |
return_pct |
number | -20 to 24.2 | percent |
from_session |
date | 2026-09-03 | |
to_session |
date | 2026-10-07 |
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 top5 AS (
SELECT ticker, round(days_to_cover, 1) AS dtc
FROM global_markets.stocks_short_interest
WHERE settlement_date = (SELECT max(settlement_date) FROM global_markets.stocks_short_interest)
AND avg_daily_volume >= 5000000
AND days_to_cover IS NOT NULL
AND ticker NOT IN ('SPCX')
ORDER BY days_to_cover DESC, ticker
LIMIT 5
),
daily 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 top5)
AND window_start >= now() - INTERVAL 35 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) BETWEEN 570 AND 959
GROUP BY ticker, session
),
moves AS (
SELECT ticker,
count() AS sessions,
toString(min(session)) AS from_session,
toString(max(session)) AS to_session,
round((argMax(rth_close, session) / argMin(rth_close, session) - 1) * 100, 1) AS return_pct
FROM daily
GROUP BY ticker
HAVING sessions >= 15
)
SELECT m.ticker AS ticker,
t.dtc AS days_to_cover,
m.return_pct AS return_pct,
m.from_session AS from_session,
m.to_session AS to_session
FROM moves m
INNER JOIN top5 t ON m.ticker = t.ticker
ORDER BY t.dtc DESC, m.ticker
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.