Strasmore Research
Recap di mercato Matt ConnorDi Matt Connor · Aggiornato 2026-07-24 · data as of July 24, 2026 · refreshed weekly

Stock con potenziale short squeeze

Analisi dei titoli con elevato short interest e prezzi in rialzo. Screening basato su days to cover e volumi per identificare possibili squeeze di mercato.

Gli stock soggetti a short squeeze vengono selezionati in base a due meccanismi: una posizione short elevata rispetto al volume di scambi del titolo e un prezzo già in fase rialzista. Questa pagina applica tale screen all'ultimo file sul short-interest riportato dalle borse, con settlement al Jun 30, 2026, e misura l'andamento del prezzo nelle cinque sessioni concluse il Jul 22, 2026. Questi meccanismi sono simili a quelli osservati in passati squeeze. Il contenuto non costituisce una previsione; la maggior parte degli stock con il più alto short-interest non va mai in squeeze.

Leggere le date prima dei nomi. I dati sul short-interest in questa pagina hanno settimane di ritardo per motivi normativi, non per errori del feed: i broker riportano le proprie posizioni short a FINRA due volte al mese in date di settlement prestabilite, e il file compilato viene reso pubblico circa otto giorni lavorativi dopo. Il dato più recente disponibile per chiunque è datato Jun 30, 2026, ovvero 24 giorni fa, mentre l'andamento del prezzo arriva fino al Jul 22, 2026. Qualsiasi movimento della componente short avvenuto in quell'intervallo è invisibile a ogni screener, incluso questo. Perché i dati sul short interest hanno sempre due settimane di ritardo analizza passo dopo passo il ciclo di reporting.

QueryOgni input visualizzato e la sua età in giorni
L'esatto SQL dietro ogni numero
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

I due dati di settlement risalgono a 39 e 24 giorni fa, corrispondenti al ciclo di conteggio bisettimanale più il ritardo di compilazione. Il listino dei prezzi è in ritardo di 2 giorni; in questo caso si tratta di un ritardo di ingestione del warehouse piuttosto che di un vincolo normativo. Entrambi i ritardi hanno dei limiti: un feed che si blocca mantiene la data attuale invece di pubblicare una data vecchia sotto un nuovo titolo.

Lista dei titoli in short squeeze: lo screening attuale

Ogni nome nell'elenco ha superato i medesimi criteri: cinque milioni di azioni di volume medio giornaliero, cinque o più giorni per coprire la posizione (days to cover) e un movimento positivo nelle cinque sessioni concluse il Jul 22, 2026. I titoli 31 hanno superato tutti questi requisiti; qui sono mostrati i 12 più affollati. Days to cover è il rapporto tra le azioni vendute allo scoperto e il volume medio giornaliero: indica quanti giorni di trading completi servirebbero per ricomprare l'intera posizione short.

QueryMeccaniche di squeeze: short crowded su liquid names con prezzo in rialzo
L'esatto SQL dietro ogni numero
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

Il titolo più affollato in questa lista, MPT, presenta 16.9 giorni di copertura su 138.1 milioni di azioni vendute allo scoperto, con un rialzo del 2.8% nelle cinque sessioni concluse il Jul 22, 2026. L'ultima riga visualizzata indica 6.4 giorni di copertura; il limite è dovuto al taglio della visualizzazione e non alla fine della lista. La classifica è basata sull'affollamento piuttosto che sulla dimensione, pertanto una posizione moderata su un volume di scambi ridotto ha una priorità maggiore rispetto a una posizione molto più grande su un volume elevato. Per la classifica basata sulla dimensione, i titoli più shortati al momento presenta entrambe le classifiche affiancate.

Il criterio del rialzo dei prezzi ha una ragione meccanica. Uno squeeze è un acquisto forzato causato dalla chiusura delle posizioni da parte degli short seller; chiudere uno short significa ricomprare il titolo, operazione che inizia solo quando il prezzo si muove contro la posizione. Come funziona uno short squeeze, analizzato attraverso i dati di GameStop del 2021, mostra la sequenza in numeri.

Le regole e ciò che ogni singola regola esclude

Uno screen è un'opinione supportata da numeri; di seguito sono riportati i dettagli.

QueryDal settlement file alla lista filtrata, una regola alla volta
L'esatto SQL dietro ogni numero
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
)

Il file Jun 30, 2026 contiene 22207 titoli. Il limite minimo di liquidità e la lista di esclusione lasciano 883, la soglia di crowding riduce il numero a 96, e il filtro sul rialzo dei prezzi lascia 31. Ogni soglia è una scelta; una scelta differente produce una lista differente. Per questo motivo le regole sono esposte chiaramente e non sono relegati a una nota a piè di pagina.

Quale percentuale di ogni società è venduta allo scoperto

Il dato più ricercato è lo short interest come percentuale del float, ma non è incluso in questi dati. Il file della borsa riporta le azioni short e il volume medio giornaliero, senza indicare il numero di azioni. È possibile derivare la posizione misurata rispetto al totale delle azioni outstanding, dividendo il market value di ogni società per il prezzo delle azioni.

QueryNomi filtrati per short interest rispetto a shares outstanding (non float)
L'esatto SQL dietro ogni numero
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 guida la classifica con il 26.3% di azioni outstanding vendute allo scoperto: 29.9 milioni di azioni su 113 milioni di azioni esistenti. Le 10 righe mostrate sono i valori più alti tra i nomi selezionati che riportano un numero di azioni pubblicato; l'ultimo di essi è pari a 15.5%. Considerate quella colonna come un limite minimo e mai come il valore del float. Il Float conta solo le azioni che effettivamente cambiano mano, escludendo le partecipazioni degli insider e altre quote vincolate. Il float è un denominatore più piccolo, quindi la reale percentuale di float venduto allo scoperto è superiore a ogni cifra indicata. L'entità di questa differenza dipende dalla struttura proprietaria di ogni società, dato che questo database non lo contiene.

Lo short crowding sta aumentando o diminuendo?

Un singolo dato è un'istantanea. Lo stesso file copre diversi anni, quindi la domanda che riguarda l'intero mercato ha una risposta basata sui dati.

QueryLiquid names con 5+ e 10+ days to cover, per settlement
L'esatto SQL dietro ogni numero
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

Tra i regolamenti 12 mostrati, il numero di titoli liquidi con un days-to-cover pari a cinque o più giorni è passato da 58 a 96. La parte rara della distribuzione rimane molto più sottile: 5 titoli presentavano dieci o più giorni di days-to-cover nell'ultimo dato disponibile. Il valore mediano per i titoli liquidi è di 1.87 giorni, il che rende la soglia dei cinque giorni significativa e non arbitraria. La pagina I titoli con il maggior days-to-cover monitora separatamente quella coda estrema.

Cosa è successo solitamente in seguito

Schermate come questa sono facili da costruire ma anche da interpretare erroneamente. Per questo motivo, presentiamo la stessa analisi eseguita al contrario, con lo stesso offset rispetto al file. Per ogni settlement avvenuto nell'ultimo anno, selezioniamo i nomi che hanno superato il crowding gate in quella data e che erano in rialzo nelle sei sessioni concluse venti giorni solari dopo (la data odierna di questa pagina). Successivamente, misuriamo l'andamento di ciascuno nei 30 giorni solari successivi.

QueryPerformance a 30 giorni di ogni nome filtrato in passato
L'esatto SQL dietro ogni numero
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% di quelle osservazioni di nome e settlement hanno registrato un calizzamento dopo 30 giorni. Il risultato è simile a un lancio di moneta; questa è la conclusione onesta di questa pagina: gli short seller hanno spesso ragione, e la combinazione crowded-plus-rising descrive un setup piuttosto che un edge. Le code sono dove si manifesterebbe uno squeeze, ma entrambe sono sottili. 68 osservazioni sono scese di più di un quinto; 73 hanno guadagnato più di un quinto, il bucket in cui si verificherebbe un vero squeeze. 87.8% del campione non ha mai raggiunto tali livelli.

Considerate quel pannello come una distribuzione, non come un risultato di trading. L'analisi ignora i costi, i borrow fees e il position sizing, e assegna lo stesso peso a ogni nome segnalato. Entrambe le fasi sono ancorate a venti giorni solari dopo ogni data di settlement, lo stesso offset utilizzato da questa pagina, quindi ogni nome segnalato si basa su prezzi che un lettore avrebbe potuto vedere. Un anno di settlement rappresenta un campione limitato.

Come viene misurato

Ogni regola ed esclusione alla base dei dati sopra riportati.

  • Il file dello short-interest è riportato dalle borse e viene aggiornato due volte al mese. Il dato utilizzato qui si è regolato Jun 30, 2026, 24 giorni fa. Negli Stati Uniti non esiste un numero giornaliero divulgato per lo short interest; esistono solo stime dei vendor modellate sui dati del securities-lending.
  • Soglia di liquidità: cinque milioni di azioni di volume medio giornaliero, come riportato nello stesso file. Senza questo limite, l'elenco sarebbe pieno di microcap il cui enorme days-to-cover è solo un artefatto dovuto a volumi quasi nulli.
  • Soglia di crowding: cinque o più giorni per coprire (days to cover), valore ben superiore alla mediana di liquidità indicata sopra.
  • Componente momentum: la variazione tra i prezzi di chiusura delle ultime sei sessioni regolari complete, che corrisponde a un rendimento di cinque sessioni. Una sessione entra nella finestra temporale solo quando il benchmark tape contiene un intero giorno di minute bars. Una sessione ancora in fase di ricezione viene trattenuta invece di essere misurata parzialmente, quindi la finestra può terminare con una sessione di ritardo rispetto al calendario anche se tale sessione è già chiusa. I prezzi sono le chiusure delle sessioni regolari.
  • Entrambe le date sono limitate. Il pannello in alto memorizza l'età di ogni input in giorni, e tali età hanno limiti di validità. Un dato di regolamento più vecchio di un mese, o un price tape con un ritardo superiore alla normale latenza di ingestione, blocca la pagina per la revisione invece di pubblicare una data obsoleta sotto un titolo recente.
  • Esclusioni. Gli ETF leveraged e inverse vengono rimossi da ogni pannello (il loro short interest è in gran parte un artefatto di hedging), insieme a un simbolo ambiguo che i feed dei vendor hanno riutilizzato per due società diverse. I pannelli che misurano il movimento dei prezzi escludono anche un titolo il cui stock split avviene all'interno della finestra di misurazione del pannello stesso, poiché uno split simula un grande movimento. Nel backtest, il test viene eseguito per ogni regolamento, quindi uno split in un mese non rimuove mai le osservazioni di un titolo dagli altri mesi.
  • I fondi sono presenti in questo file insieme alle società operative. Un bond o un ETF indicizzato può avere una grande posizione short che deriva dalle dinamiche di creation-and-redemption piuttosto che da qualcuno che scommette contro di esso.
  • Nessun dato su float o sul numero di azioni in questo file, e nessun open interest delle opzioni nel database. La colonna delle azioni in circolazione sopra deriva da una tabella separata sui fondamentali; pertanto, un titolo senza un market value pubblicato viene escluso da quel pannello.
  • Nulla di quanto riportato è una previsione o una raccomandazione. Descrive condizioni misurabili, con il relativo pannello dei risultati.

FAQ

Come si individuano i candidati a short squeeze?

Analizzare il file dello short-interest riportato dal mercato per trovare posizioni ampie rispetto al volume giornaliero del titolo. Selezionare solo i nomi con liquidità sufficiente per operare e verificare se il prezzo è già in rialzo. Questo screen del file dello short-interest Jun 30, 2026 utilizza cinque o più giorni per coprire la posizione, cinque milioni di azioni di volume medio giornaliero e un movimento positivo di cinque sessioni, il che ha lasciato 31 nomi.

Quale percentuale di short interest causa uno squeeze?

Non esiste un numero magico e chiunque ne citi uno sta tirando a indovinare. Gli squeeze sono iniziati da valori distribuiti su tutto l'intervallo, ma molto più spesso non accade nulla: analizzando i dati di settlement dell'ultimo anno, il 51.7% dei nomi che questo screen avrebbe segnalato era più basso dopo trenta giorni. Un alto short interest è una precondizione, mai un trigger.

Quanto sono recenti i dati sullo short interest?

Il settlement più recente presente in archivio è datato Jun 30, 2026, ovvero 24 giorni fa, e i dati sui prezzi arrivano fino al Jul 22, 2026. Quel divario è dovuto al ciclo di reporting e non a un feed obsoleto: le posizioni vengono conteggiate due volte al mese e pubblicate circa otto giorni lavorativi dopo ogni data di settlement; pertanto, ogni dato sullo short-interest risulta vecchio di settimane al momento della pubblicazione.

Quali sono i titoli più shortati in questo momento?

Le classifiche non filtrate, una per giorni per coprire e una per numero assoluto di azioni shortate, si trovano sulla pagina dei titoli più shortati. Questa pagina risponde a una domanda più specifica: tra i nomi nel file Jun 30, 2026 il cui prezzo è in rialzo, il più affollato è MPT con 16.9 giorni per coprire, che rappresenta un leader dello screen piuttosto che il titolo più shortato del mercato.


Ogni pannello è una query salvata e versionata sul file riportato dal mercato. Espandere la query SQL sotto ogni tabella o eseguire lo screen con le proprie soglie sul terminale Strasmore.