Strasmore Research
Ringkasan pasaran Matt ConnorOleh Matt Connor · Dikemas kini 2026-07-24 · data as of July 24, 2026 · refreshed weekly

Calon Short Squeeze Minggu Ini

Senarai saham berpotensi short squeeze berdasarkan days to cover, jumlah shares short dan kenaikan harga dengan nisbah kebarangkalian yang dinyatakan jelas.

Saham short squeeze disaring berdasarkan dua mekanik: kedudukan short yang besar berbanding jumlah dagangan saham, dan harga yang sedang meningkat. Halaman ini menjalankan saringan tersebut menggunakan fail short-interest terkini yang dilaporkan oleh bursa, yang diselesaikan pada Jun 30, 2026, dan mengukur pergerakan harga sepanjang lima sesi yang berakhir pada Jul 22, 2026. Ini adalah mekanik yang menyerupai squeeze yang lalu. Tiada apa yang dinyatakan di sini merupakan ramalan, dan kebanyakan saham dengan shorted yang tinggi tidak pernah mengalami squeeze.

Baca tarikh sebelum nama. Bahagian short-interest pada halaman ini adalah berusia beberapa minggu mengikut peraturan, bukan disebabkan ralat pada suapan data: broker melaporkan kedudukan short mereka kepada FINRA dua kali sebulan pada tarikh penyelesaian yang dijadualkan, dan fail yang dikumpul akan menjadi awam kira-kira lapan hari bekerja kemudian. Data terbaharu yang tersedia untuk sesiapa pun bertarikh Jun 30, 2026, iaitu 24 hari yang lalu, manakala pergerakan harga adalah sehingga Jul 22, 2026. Apa sahaja yang dilakukan oleh pihak short dalam tempoh jurang tersebut tidak dapat dilihat oleh mana-mana penyaring, termasuk penyaring ini. Mengapa data short interest sentiasa berusia dua minggu lama menerangkan kitaran pelaporan langkah demi langkah.

PertanyaanSetiap input di skrin ini, dan usia hari
SQL tepat di sebalik setiap nombor
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

Dua cetakan penyelesaian tersebut adalah 39 dan 24 hari yang lalu, iaitu kitaran pengiraan dua kali sebulan ditambah dengan kelewatan pengumpulan. Rekod harga adalah 2 hari di belakang, dan itu adalah disebabkan kelewatan kemasukan gudang dan bukannya peraturan. Kedua-dua tempoh ini mempunyai had, jadi jika suapan data terhenti, halaman ini akan mengekalkan data lama daripada menerbitkan semula tarikh lama di bawah tajuk baharu.

Senarai saham short squeeze: skrin semasa

Setiap nama di bawah telah melepasi kriteria yang sama: purata volum harian sebanyak lima juta saham, lima hari atau lebih untuk cover, dan pergerakan positif merentasi lima sesi yang berakhir pada Jul 22, 2026. Nama-nama 31 telah melepasi semua kriteria tersebut, dan 12 yang paling sesak dipaparkan di sini. Days to cover adalah jumlah saham yang dijual short dibahagi dengan purata volum harian: berapa banyak hari penuh perdagangan saham tersebut diperlukan untuk membeli semula kedudukan tersebut.

PertanyaanMekanik bentuk Squeeze: short yang sesak dalam nama cair, dengan harga meningkat
SQL tepat di sebalik setiap nombor
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

Nama yang paling sesak di sini, MPT, menunjukkan 16.9 days to cover daripada 138.1 juta saham yang dijual short, dan ia meningkat sebanyak 2.8% merentasi lima sesi yang berakhir pada Jul 22, 2026. Baris terakhir yang dipaparkan menunjukkan 6.4 days to cover, iaitu di mana paparan dipotong dan bukannya di mana had bawah skrin. Kedudukan adalah mengikut tahap kesesakan dan bukannya saiz, jadi kedudukan sederhana pada volum rendah mendahului kedudukan yang jauh lebih besar pada volum tinggi. Untuk kedudukan saiz, the most shorted stocks right now memaparkan kedua-dua papan pendahulu secara bersebelahan.

Kriteria kenaikan harga mempunyai sebab mekanikal. Squeeze adalah pembelian paksa apabila penjual short menutup kedudukan mereka, dan menutup short bermaksud membeli semula saham tersebut, yang hanya bermula sebaik sahaja harga bergerak melawan kedudukan tersebut. How a short squeeze works, yang dikesan melalui rekod GameStop tahun 2021, menunjukkan urutan tersebut dalam bentuk angka.

Peraturan, dan apa yang dikeluarkan oleh setiap satunya

Skrin adalah satu pendapat yang disertakan dengan angka, jadi di sinilah bidang tersebut bermula.

PertanyaanDaripada fail penyelesaian penuh ke senarai skrin, satu peraturan pada satu masa
SQL tepat di sebalik setiap nombor
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
)

Fail Jun 30, 2026 mengandungi 22207 sekuriti. Lantai kecairan dan senarai pengecualian meninggalkan 883, ambang kesesakan mengurangkan jumlah tersebut kepada 96, dan pintu kenaikan harga meninggalkan 31. Setiap ambang adalah satu pilihan, dan pilihan yang berbeza akan menghasilkan senarai yang berbeza. Itulah sebabnya peraturan tersebut diletakkan pada halaman utama dan bukannya dalam nota kaki.

Berapakah jumlah pegangan jualan singkat bagi setiap syarikat

Data yang paling kerap dicari adalah kadar jualan singkat sebagai peratusan daripada float, namun ia tidak terdapat dalam data ini. Fail bursa melaporkan jumlah saham jualan singkat dan purata volum harian, tanpa sebarang jumlah saham. Apa yang boleh dikira adalah kedudukan yang diukur berbanding jumlah saham luar (shares outstanding), dengan membahagikan nilai pasaran setiap syarikat dengan harga sahamnya.

PertanyaanNama yang diskrin mengikut short interest berbanding shares outstanding (bukan float)
SQL tepat di sebalik setiap nombor
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 mendahului senarai tersebut dengan 26.3% daripada saham luar yang dijual singkat: 29.9 juta saham berbanding 113 juta saham yang wujud. Baris 10 yang dipaparkan adalah bacaan terbesar dalam kalangan nama yang ditapis yang mempunyai jumlah saham yang diterbitkan, dan yang terakhir masih menunjukkan 15.5%. Anggap kolum tersebut sebagai nilai minimum dan jangan sesekali menganggapnya sebagai jumlah float. Float hanya mengira saham yang benar-benar bertukar tangan, dengan mengeluarkan pegangan orang dalam dan pegangan terkunci yang lain. Float adalah pembahagi yang lebih kecil, jadi peratusan sebenar float yang dijual singkat adalah lebih tinggi daripada setiap angka yang ditunjukkan. Berapa tinggi perbezaannya bergantung pada pemilikan setiap syarikat, yang mana gudang data ini tidak menyimpannya.

Adakah penumpuan short sedang meningkat atau berkurangan?

Satu laporan data hanyalah satu paparan statik. Fail yang sama merangkumi data selama bertahun-tahun, maka persoalan pasaran secara menyeluruh mempunyai jawapan berasaskan data.

PertanyaanNama cair pada 5+ dan 10+ hari untuk cover, mengikut penyelesaian
SQL tepat di sebalik setiap nombor
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

Merentasi 12 penyelesaian yang ditunjukkan, jumlah saham cair dengan tempoh lima hari atau lebih untuk cover telah berubah daripada 58 kepada 96. Bahagian hujung taburan yang jarang berlaku kekal jauh lebih nipis: 5 saham berada pada tempoh sepuluh hari atau lebih untuk cover pada laporan terbaru. Median saham cair adalah 1.87 hari, yang menjadikan ambang lima hari sebagai ukuran yang bermakna dan bukannya rawak. Halaman Saham dengan days-to-cover tertinggi menjejaki bahagian ekstrem tersebut secara berasingan.

Apa yang biasanya berlaku seterusnya

Paparan seperti ini mudah dibina tetapi mudah disalah tafsir, jadi berikut adalah paparan yang sama dijalankan secara terbalik, pada jarak yang sama dari fail tersebut. Bagi setiap cetakan penyelesaian dalam setahun yang lalu, ambil nama-nama yang melepasi pintu kesesakan (crowding gate) pada cetakan tersebut dan sedang meningkat dalam enam sesi yang berakhir dua puluh hari kalendar kemudian, iaitu kedudukan halaman ini hari ini, kemudian ukur prestasi setiap satu daripadanya dalam tempoh 30 hari kalendar berikutnya.

PertanyaanSetiap nama yang pernah diskrin, mengikut prestasi dalam 30 hari seterusnya
SQL tepat di sebalik setiap nombor
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% daripada pemerhatian nama-dan-penyelesaian tersebut berdagang lebih rendah 30 hari kemudian. Itu hampir sama dengan kebarangkalian lima puluh-lima puluh, dan itulah rumusan sebenar halaman ini: penjual singkat (short sellers) kerap kali betul, dan keadaan "crowded-plus-rising" lebih menggambarkan corak berbanding kelebihan pasaran (edge). Bahagian hujung (tails) adalah tempat di mana squeeze akan muncul, dan kedua-duanya adalah nipis. 68 pemerhatian jatuh lebih daripada satu perlima; 73 meningkat lebih daripada satu perlima, kategori di mana squeeze sebenar akan berlaku. 87.8% daripada sampel tersebut tidak pernah mencapainya.

Anggap panel tersebut sebagai satu taburan, bukan sebagai keputusan dagangan. Ia tidak mengambil kira kos, yuran pinjaman dan saiz posisi, dan ia memberikan pemberatan yang sama kepada setiap nama yang ditanda. Kedua-dua bahagian ditetapkan pada dua puluh hari kalendar selepas setiap tarikh penyelesaian, iaitu jarak yang sama seperti yang digunakan oleh halaman ini, supaya setiap nama yang ditanda berdasarkan harga yang boleh dilihat oleh pembaca. Setahun penyelesaian adalah sampel yang singkat.

Cara ini diukur

Setiap peraturan dan pengecualian di sebalik angka di atas.

  • Fail short-interest dilaporkan oleh bursa dua kali sebulan. Data cetakan yang digunakan di sini telah selesai Jun 30, 2026, 24 hari yang lalu. Tiada angka short interest harian yang didedahkan di AS, hanya anggaran vendor yang dimodelkan daripada data pinjaman sekuriti.
  • Lantai kecairan: lima juta saham purata volum harian, seperti yang dilaporkan dalam fail yang sama. Tanpa ini, senarai akan dipenuhi dengan syarikat mikrocap yang mempunyai bacaan days-to-cover yang sangat tinggi akibat volum yang hampir sifar.
  • Ambang kesesakan: lima atau lebih days to cover, jauh lebih tinggi daripada median kecairan yang ditunjukkan di atas.
  • Momentum leg: perubahan antara harga penutup bagi enam sesi biasa yang lengkap, iaitu pulangan lima sesi. Sesi hanya masuk ke dalam tetingkap setelah pita penanda aras mempunyai bar minit penuh untuk sesi tersebut. Sesi yang masih dalam proses penghantaran data akan ditangguhkan daripada diukur secara tidak lengkap, supaya tetingkap boleh berakhir satu sesi di belakang kalendar walaupun sesi tersebut telah ditutup. Harga adalah penutup sesi biasa.
  • Kedua-dua tarikh adalah terhad. Panel di bahagian atas menyimpan usia setiap input dalam hari, dan usia tersebut mempunyai had semakan. Data penempatan yang lebih lama daripada sebulan, atau pita harga yang lebih lewat daripada lengah penghantaran biasa, akan menahan halaman ini untuk semakan dan bukannya menerbitkan tarikh lama di bawah tajuk baharu.
  • Pengecualian. Dana ETF leveraged dan inverse dikeluarkan daripada setiap panel (short interest mereka sebahagian besarnya adalah kesan lindung nilai), bersama dengan satu simbol kabur yang telah digunakan semula oleh suapan vendor untuk dua syarikat. Panel yang mengukur pergerakan harga juga mengeluarkan nama syarikat yang pembahagian sahamnya (stock split) berlaku dalam tetingkap pengukuran panel tersebut, kerana pembahagian saham memberikan kesan pergerakan besar yang palsu. Dalam backtest, ujian itu dijalankan mengikut penempatan, jadi pembahagian saham dalam satu bulan tidak akan mengeluarkan pemerhatian nama tersebut daripada bulan-bulan lain.
  • Dana berada dalam fail ini bersama syarikat operasi. ETF bon atau indeks boleh membawa kedudukan short yang besar yang berpunca daripada proses penciptaan-dan-penebusan (creation-and-redemption) dan bukannya daripada sesiapa yang bertaruh menentangnya.
  • Tiada float dan tiada jumlah saham dalam fail ini, dan tiada open interest opsyen di mana-mana dalam gudang data. Lajur shares-outstanding di atas datang daripada jadual fundamental yang berasingan, jadi nama tanpa nilai pasaran yang diterbitkan akan dikeluarkan daripada panel tersebut.
  • Tiada apa-apa di sini yang merupakan ramalan atau cadangan. Ia menerangkan keadaan yang boleh diukur, bersama dengan panel keputusan yang disertakan.

FAQ

Bagaimana cara mencari calon short squeeze?

Saring fail short-interest yang dilaporkan oleh bursa untuk mencari kedudukan yang besar berbanding volum harian saham tersebut, simpan hanya nama yang cukup cair untuk didagangkan, kemudian semak sama ada harga sedang meningkat. Saringan fail short-interest Jun 30, 2026 ini menggunakan kriteria lima hari atau lebih untuk cover, lima juta saham volum harian purata, dan pergerakan lima sesi yang positif, yang meninggalkan 31 nama.

Peratusan short interest berapakah yang menyebabkan squeeze?

Tiada angka ajaib, dan sesiapa yang memberikan angka tersebut hanyalah meneka. Squeeze telah bermula daripada bacaan di seluruh julat, dan jauh lebih kerap tiada apa-apa yang berlaku: merentasi setahun data penyelesaian lepas, 51.7% daripada nama yang akan ditanda oleh saringan ini adalah lebih rendah 30 hari kemudian. short interest yang tinggi adalah prasyarat, bukannya pencetus.

Berapakah usia data short interest?

Penyelesaian terbaharu dalam fail di sini bertarikh Jun 30, 2026, 24 hari yang lalu, dan data harga berlanjutan sehingga Jul 22, 2026. Jurang tersebut adalah disebabkan kitaran pelaporan dan bukannya suapan data yang lapuk: kedudukan dikira dua kali sebulan dan diterbitkan kira-kira lapan hari bekerja selepas setiap tarikh penyelesaian, jadi setiap angka short-interest di mana-mana sahaja sudah berusia berminggu-minggu apabila diterima.

Saham manakah yang paling banyak di-short sekarang?

Papan pendahulu tanpa penapisan, satu mengikut days to cover dan satu mengikut jumlah saham di-short, terletak di halaman saham paling banyak di-short. Halaman ini menjawab soalan yang lebih khusus: dalam kalangan nama pada fail Jun 30, 2026 yang harganya juga sedang meningkat, yang paling sesak ialah MPT dengan 16.9 days to cover, yang merupakan peneraju saringan dan bukannya saham paling banyak di-short di pasaran.


Setiap panel adalah pertanyaan (query) tersimpan dan berversi ke atas fail yang dilaporkan oleh bursa. Kembangkan SQL di bawah mana-mana jadual, atau jalankan saringan dengan ambang (threshold) anda sendiri pada terminal Strasmore.