Strasmore Research
Огляди ринку Matt ConnorВід Matt Connor · Оновлено 2026-07-24 · data as of July 24, 2026 · refreshed weekly

акції з потенціалом short squeeze цього тижня

Пошук акцій для short squeeze за показниками days to cover та зростанням ціни. Аналіз коротких позицій та ймовірність сплеску вартості активів.

Акції з потенціалом для short squeeze відбираються за двома механізмами: велика короткі позиція відносно обсягу торгів акціями та вже зростаюча ціна. Ця сторінка застосовує цей фільтр до останнього звіту про short interest, що був розрахований на Jun 30, 2026, і вимірює динаміку ціни за п'ять сесій, що завершилися Jul 22, 2026. Ці механізми схожі на попередні випадки squeeze. Дані не є прогнозом; більшість акцій з великим short interest ніколи не демонструють squeeze.

Звертайте увагу на дати перед назвами. Згідно з правилами, дані про short interest на цій сторінці є двотижневої давнини, і це не є помилкою системи: брокери звітують про свої короткі позиції перед FINRA двічі на місяць у встановлені дати розрахунку, а зведений файл стає публічним приблизно через вісім робочих днів. Найактуальніші дані, доступні будь-якій особі, датовані Jun 30, 2026, що становить 24 днів тому, тоді як динаміка ціни охоплює період до Jul 22, 2026. Будь-які зміни в коротких позиціях протягом цього проміжку часу невидимі для жодного скринера, включно з цим. Чому дані про short interest завжди мають двотижневу затримку детально описує цикл звітності.

ЗапитВалюта всіх вхідних даних та кількість днів з моменту оновлення
Точний SQL-код для кожного числа
WITH prints AS (
    SELECT DISTINCT settlement_date AS d
    FROM global_markets.stocks_short_interest
    ORDER BY d DESC
    LIMIT 2
),
loaded 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
),
legs AS (
    SELECT arrayJoin([
        ('Short interest, previous settlement', (SELECT min(d) FROM prints)),
        ('Short interest, latest settlement', (SELECT max(d) FROM prints)),
        ('Price tape, last fully loaded session', (SELECT max(session) FROM loaded))]) AS row
)
SELECT formatDateTime(row.2, '%b %e, %Y') AS as_of_date,
       row.1 AS leg,
       dateDiff('day', row.2, today()) AS age_days
FROM legs

Дві дати розрахунку припадають на 39 та 24 днів тому, що відповідає дворазовому циклу підрахунку плюс затримка на зведення даних. Цінова динаміка відстає на 2 днів, що зумовлено затримкою при отриманні даних зі сховищ, а не нормативними актами. Обидва показники мають межі; якщо потік даних зупиняється, сторінка не оновлює дату, а залишає старі дані під новим заголовком.

Список акцій зі сценарієм short squeeze: поточний скринінг

Кожна назва в списку нижче відповідає однаковим критеріям: середній щоденний обсяг торгів становить п'ять мільйонів акцій, кількість днів для покриття позиції (days to cover) — п'ять або більше, а ціна продемонструвала зростання протягом п'яти сесій, що завершилися у Jul 22, 2026. Назви 31 пройшли всі ці перевірки, а 12 найбільш перевантажених позиціями акцій наведено нижче. Days to cover — це кількість акцій, проданих у коротку позицію, поділена на середній щоденний обсяг торгів: це кількість повних торгових днів, які знадобляться шорт-стороні, щоб викупити свою позицію.

ЗапитМеханіка squeeze: велика концентрація short-позицій серед ліквідних активів при зростанні ціни
Точний SQL-код для кожного числа
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
),
moves 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
)
SELECT c.ticker AS ticker,
       round(c.days_to_cover, 1) AS days_to_cover,
       round(c.short_interest / 1e6, 1) AS shares_short_m,
       m.return_5d_pct AS return_5d_pct
FROM crowded c
INNER JOIN moves m ON m.ticker = c.ticker
ORDER BY c.days_to_cover DESC, c.ticker
LIMIT 12

Найбільш перевантажена акція у списку, MPT, має 16.9 днів для покриття при 138.1 мільйонах акцій, проданих у коротку позицію, і зросла на 2.8% протягом п'яти сесій, що завершилися у Jul 22, 2026. Останній рядок у списку — це 6.4 днів для покриття; це межа відображення, а не фактичний кінець списку. Ранжування здійснюється за рівнем перевантаженості, а не за обсягом позицій, тому помірна позиція на малоактивному ринку стоїть вище за набагато більшу позицію на активному ринку. Для порівняння за обсягом the most shorted stocks right now надає обидва рейтинги поруч.

Критерій зростання ціни має механічне пояснення. Short squeeze — це примусовий викуп акцій через закриття коротких позицій шорт-селлерами. Закриття шорт-позиції означає зворотний викуп акцій, що починається лише після того, як ціна починає рухатися проти позиції. How a short squeeze works, на прикладі даних GameStop за 2021 рік, демонструє цю послідовність у цифрах.

Правила та те, що виключає кожна з них

Екран — це думка, підкріплена цифрами, тому саме тут визначається склад активів.

ЗапитПроцес фільтрації: від повного файлу розрахунків до відібраного списку за кожним правилом
Точний SQL-код для кожного числа
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
),
reported AS (
    SELECT ticker, days_to_cover, avg_daily_volume
    FROM global_markets.stocks_short_interest
    WHERE settlement_date = (SELECT d FROM latest)
),
liquid AS (
    SELECT ticker, days_to_cover
    FROM reported
    WHERE avg_daily_volume >= 5000000
      AND days_to_cover IS NOT NULL
      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())
),
crowded AS (
    SELECT ticker FROM liquid WHERE days_to_cover >= 5
),
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
),
tally AS (
    SELECT (SELECT count() FROM reported) AS all_names,
           (SELECT count() FROM liquid) AS liquid_names,
           (SELECT count() FROM crowded) AS crowded_names,
           (SELECT count() FROM rising) AS rising_names
)
SELECT step.1 AS label, step.2 AS names
FROM (
    SELECT arrayJoin([
        ('Every name in the settlement file', all_names),
        ('Liquid: five million shares a day, no leveraged funds', liquid_names),
        ('Crowded: five or more days to cover', crowded_names),
        ('Rising: a positive move over the price window', rising_names)]) AS step
    FROM tally
)

Файл Jun 30, 2026 містить 22207 цінних паперів. Поріг ліквідності та список виключень залишають 883, поріг концентрації зменшує цей показник до 96, а фільтр зростання ціни залишає 31. Кожен поріг є вибором, і різні вибори створюють різні списки. Саме тому правила наведені в основному тексті, а не у примітках.

Яка частка кожної компанії продана в шорт

Найчастіше шукають показник short interest як відсоток від float, проте в цих даних він відсутній. Файли бірж містять дані про кількість коротких позицій та середній щоденний обсяг торгів, але не містять загальної кількості акцій. Можна розрахувати позицію відносно загальної кількості акцій в обігу (shares outstanding), поділивши ринкову капіталізацію компанії на ціну її акцій.

ЗапитРейтинг відібраних активів за показником short interest відносно shares outstanding (не float)
Точний SQL-код для кожного числа
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

KSS займає перше місце з показником 26.3% акцій в обігу, проданих у шорт: 29.9 мільйонів акцій проти 113 мільйонів акцій в обігу. Наведених 10 рядків — це найбільші показники серед відфільтрованих компаній, для яких опубліковано кількість акцій; останній із них становить 15.5%. Сприймайте цей стовпець як мінімальне значення, а не як показник float. Float враховує лише ті акції, які фактично змінюють власника, виключаючи частки інсайдерів та інші заблоковані активи. Оскільки float є меншим знаменником, справжній відсоток акцій у шорті від float вищий за всі наведені цифри. Наскільки вищий показник, залежить від структури власності кожної компанії, яку цей сховище даних не містить.

Наростає чи зменшується концентрація коротких позицій?

Один звіт — це лише статичний знімок. Оскільки ці дані доступні за багато років, на загальноринкове питання можна відповісти за допомогою аналізу даних.

ЗапитТенденція скупченості: ліквідні активи з показником days to cover 5+ та 10+ за кожним розрахунком
Точний SQL-код для кожного числа
WITH dates AS (
    SELECT DISTINCT settlement_date AS d
    FROM global_markets.stocks_short_interest
    ORDER BY d DESC
    LIMIT 12
)
SELECT toString(settlement_date) AS settlement_date,
       countIf(days_to_cover >= 5) AS names_5plus_dtc,
       countIf(days_to_cover >= 10) AS names_10plus_dtc,
       round(quantileExact(0.5)(days_to_cover), 2) AS median_dtc_liquid
FROM global_markets.stocks_short_interest
WHERE settlement_date IN (SELECT d FROM dates)
  AND avg_daily_volume >= 5000000
  AND days_to_cover IS NOT NULL
  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')
GROUP BY settlement_date
ORDER BY settlement_date

Згідно з наведеними даними за 12 розрахунків, кількість ліквідних активів, термін повного покриття яких становить п'ять або більше днів, змінилася з 58 до 96. Рідкісний край розподілу залишається значно менш щільним: згідно з останнім звітом, 5 активів мали термін покриття десять або більше днів. Медіанне значення для ліквідних активів становить 1.87 днів, що робить поріг у п'ять днів значущим, а не довільним. Сторінка акції з найвищим показником днів до покриття окремо відстежує цей екстремальний сегмент.

Що зазвичай відбувалося далі

Такі екрани легко створювати, але їх легко невірно інтерпретувати. Нижче наведено той самий екран, але з іншим напрямком аналізу та тим самим відступом від файлу. Для кожного розрахункового звіту за останній рік ми беремо назви активів, які пройшли поріг переповненості (crowding gate) на момент звіту та демонстрували зростання протягом шести сесій, що закінчуються двадцять календарних днів після цієї дати (саме на цей момент побудовано сторінку). Потім ми вимірюємо динаміку кожного з цих активів протягом наступних 30 календарних днів.

ЗапитРезультати попередніх фільтрацій: динаміка активів протягом наступних 30 днів
Точний SQL-код для кожного числа
WITH screened AS (
    SELECT settlement_date, ticker
    FROM global_markets.stocks_short_interest
    WHERE settlement_date >= today() - 400
      AND settlement_date <= today() - 55
      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')
),
split_hits AS (
    SELECT s.settlement_date AS sd, s.ticker AS tkr
    FROM screened s
    INNER JOIN global_markets.stocks_splits sp ON sp.ticker = s.ticker
    WHERE sp.execution_date > s.settlement_date + 11
      AND sp.execution_date <= s.settlement_date + 50
),
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 DISTINCT ticker FROM screened)
      AND window_start >= now() - INTERVAL 400 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 ticker, session
),
paired AS (
    SELECT s.settlement_date AS sd,
           s.ticker AS tkr,
           (argMaxIf(d.rth_close, d.session, d.session <= s.settlement_date + 20)
            / argMinIf(d.rth_close, d.session, d.session <= s.settlement_date + 20) - 1) * 100 AS prior_pct,
           (argMaxIf(d.rth_close, d.session, d.session >= s.settlement_date + 20)
            / argMinIf(d.rth_close, d.session, d.session >= s.settlement_date + 20) - 1) * 100 AS next_pct
    FROM screened s
    INNER JOIN daily d ON d.ticker = s.ticker
    WHERE d.session > s.settlement_date + 11
      AND d.session <= s.settlement_date + 50
    GROUP BY sd, tkr
    HAVING countIf(d.session <= s.settlement_date + 20) >= 4
       AND countIf(d.session >= s.settlement_date + 20) >= 15
),
outcomes AS (
    SELECT multiIf(next_pct < -20, 1,
                   next_pct < -10, 2,
                   next_pct < 0, 3,
                   next_pct < 10, 4,
                   next_pct < 20, 5, 6) AS bucket,
           multiIf(next_pct < -20, 'Fell more than 20%',
                   next_pct < -10, 'Fell 10% to 20%',
                   next_pct < 0, 'Fell 0% to 10%',
                   next_pct < 10, 'Rose 0% to 10%',
                   next_pct < 20, 'Rose 10% to 20%', 'Rose more than 20%') AS move_over_30_days
    FROM paired
    WHERE prior_pct > 0
      AND (sd, tkr) NOT IN (SELECT sd, tkr FROM split_hits)
),
tallied AS (
    SELECT bucket, move_over_30_days, count() AS name_count
    FROM outcomes
    GROUP BY bucket, move_over_30_days
)
SELECT move_over_30_days,
       name_count,
       round(100.0 * sum(name_count) OVER (ORDER BY bucket) / sum(name_count) OVER (), 1) AS cumulative_share_pct
FROM tallied
ORDER BY bucket

51.7% таких спостережень за назвою та розрахунком показали зниження через 30 днів. Це майже як підкидання монети, і це є чесним висновком цієї сторінки: короткі продавці часто мають рацію, а комбінація «переповненість плюс зростання» описує ситуацію, а не ринкову перевагу. Сквиз (squeeze) проявляється на краях розподілу, але обидва вони дуже вузькі. 68 спостережень впали більш ніж на п'яту частину; 73 зросли більш ніж на п'яту частину — саме в цю категорію потрапляє справжній сквиз. 87.8% вибірки так і не досягли цих показників.

Розглядайте цю панель як розподіл, а не як торговий результат. Вона не враховує витрати, комісії за позицію та розмір позиції, а кожна позначена назва має однакову вагу. Обидва етапи прив'язані до дати через двадцять календарних днів після кожного розрахункового дня, як і на цій сторінці, тому ціни для кожного активу є реальними на момент перегляду. Рік розрахунків — це коротка вибірка.

Як це вимірюється

Усі правила та виключення, що стоять за наведеними вище показниками.

  • Звіт про короткі позиції подається біржами двічі на місяць. Дані, використані тут, були зафіксовані Jun 30, 2026, 24 днів тому. У США немає щоденних публічних даних про короткі позиції; існують лише оцінки постачальників, побудовані на основі даних про кредитування цінних паперів.
  • Поріг ліквідності: п'ять мільйонів акцій середнього щоденного обсягу, згідно з тим самим звітом. Без цього правила список наповнився б мікрокапіталізаціями, чиї величезні показники днів покриття є лише наслідком майже нульового обсягу торгів.
  • Поріг скученості: п'ять або більше днів покриття, що значно перевищує показник медіани ліквідності, наведений вище.
  • Компонент моментуму: зміна ціни закриття за останні шість повних регулярних торгових сесій, що відповідає прибутку за п'ять сесій. Сесія потрапляє у вікно розрахунку лише після того, як у біржовій стрічці з'являються повні хвилинні графіки за цей день. Якщо дані за сесію ще надходять у стрічку, вона не враховується частково, а очікує повної інформації; тому вікно розрахунку може відставати від календаря на одну сесію, навіть якщо вона вже закрилася. Ціни базуються на цінах закриття регулярних сесій.
  • Обидві дати мають обмеження. Панель у верхній частині зберігає вік кожного вхідного показника в днях, і ці значення мають межі допустимих значень. Якщо дата розрахунку старіша за місяць або цінова стрічка відстає від нормальної затримки надходження даних, сторінка відправляється на перевірку, а не публікується застаріла дата під новим заголовком.
  • Виключення. Біржами торгувані ETF з кредитним плечем та зворотні ETF виключені з усіх панелей (їхні короткі позиції є переважно інструментами хеджування), а також один неоднозначний тикер, який постачальники даних використовують для двох різних компаній. Панелі, що вимірюють зміну ціни, також виключають компанію, чий спліт акцій припадає на період вимірювання, оскільки спліт створює імітацію значного руху ціни. У бектесті цей тест виконується за кожну дату розрахунку, тому спліт в одному місяці не видаляє дані компанії за інші місяці.
  • Фонди включені до цього файлу разом з операційними компаніями. Облигаційна або індексна ETF може мати велику коротку позицію, яка виникає через механізми створення та погашення паїв, а не через ставки на падіння.
  • У цьому файлі немає даних про вільний обіг (float) та кількість акцій, а також немає відкритого інтересу за опціонами. Стовпець акцій в обігу наведено вище з окремої таблиці фундаментальних показників, тому компанія без опублікованої ринкової капіталізації випадає з цієї панелі.
  • Нічого з наведеного не є прогнозом або рекомендацією. Тут описано вимірювані умови з відповідною панеллю результатів.

FAQ

Як знайти акції з потенціалом для short squeeze?

Необхідно проаналізувати звітність біржі щодо коротких позицій (short interest) на предмет позицій, які є великими відносно щоденного обсягу торгів акціями. Потрібно залишити лише достатньо ліквідні активи та перевірити, чи вже спостерігається зростання ціни. Цей фільтр за даними файлу Jun 30, 2026 використовує критерії: кількість днів для покриття (days to cover) — п'ять або більше, середній щоденний обсяг торгів — п'ять мільйонів акцій, та позитивна динаміка ціни за п'ять сесій, що дозволило виділити 31 назв.

Який відсоток коротких позицій спричиняє squeeze?

Магічного числа не існує, тому будь-які конкретні цифри є лише припущеннями. Squeezes можуть починатися при будь-яких показниках, проте найчастіше нічого не відбувається: за рік минулих розрахункових даних 51.7% назв, які пройшли б цей фільтр, мали нижчу ціну через 30 днів. Високий short interest є передумовою, а не тригером.

Наскільки застаріли дані про short interest?

Останній доступний розрахунковий звіт датований Jun 30, 2026, що було 24 днів тому; дані про ціни актуальні станом на Jul 22, 2026. Ця затримка зумовлена циклом звітності, а не застарілим каналом передачі даних: позиції підраховуються двічі на місяць і публікуються приблизно через вісім робочих днів після кожної дати розрахунків. Отже, будь-які дані про short interest є застарілими на момент отримання на кілька тижнів.

Які акції мають найбільший обсяг коротких позицій зараз?

Нефільтровані рейтинги — за кількістю днів для покриття та за загальною кількістю коротких позицій у акціях — доступні на сторінці найбільш короткопроданих акцій. Ця сторінка відповідає на вужче питання: серед назв у файлі Jun 30, 2026, ціна яких також зростає, найбільш переповненою є MPT з показником 16.9 днів для покриття, що є лідером за даними цього фільтра, а не найбільш короткопроданою акцією на ринку.


Кожна панель є збереженим версіонним запитом до звітності біржі. Ви можете розгорнути SQL-код під будь-якою таблицею або запустити фільтр зі власними порогами на терміналі Strasmore.