Strasmore Research
Récap des marchés Matt ConnorPar Matt Connor · data as of July 22, 2026 · refreshed weekly

Candidats au short squeeze cette semaine

Candidats au short squeeze filtrés sur le days to cover, les actions à découvert et un cours en hausse, avec chaque seuil énoncé et les probabilités mesurées.

Les actions candidates au short squeeze sont filtrées sur deux mécanismes : une position vendeuse importante par rapport au volume négocié de l'action, et un cours déjà en hausse. Cette page applique ce filtre au dernier fichier de short interest publié par les places de marché, réglé le Jun 30, 2026, et mesure le volet du cours sur les cinq séances se terminant le Jul 20, 2026. Ce sont des mécanismes qui ressemblent à ceux des squeezes passés. Rien ici n'est une prévision, et la plupart des actions fortement vendues à découvert ne squeezent jamais.

Lisez les dates avant les noms. Le volet short interest de cette page a plusieurs semaines de retard par réglementation, non par un défaut du flux : les courtiers déclarent leurs positions vendeuses à la FINRA deux fois par mois à des dates de règlement planifiées, et le fichier compilé devient public environ huit jours ouvrés plus tard. La publication la plus récente disponible pour quiconque est datée du Jun 30, 2026, soit 22 jours en arrière, tandis que le volet du cours court jusqu'au Jul 20, 2026. Quoi que le camp vendeur ait fait dans cet intervalle reste invisible pour tout filtre, celui-ci compris. Pourquoi les données de short interest ont toujours deux semaines de retard retrace le cycle de déclaration étape par étape.

RequêteChaque entrée derrière ce filtre, et son âge en jours
Le SQL exact derrière chaque chiffre
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

Les deux publications de règlement se situent 37 et 22 jours en arrière, soit le cycle de comptage bimensuel plus le délai de compilation. La bande de prix a 2 jours de retard, et celui-ci relève du délai d'ingestion de l'entrepôt de données plutôt que de la réglementation. Ces deux délais portent des bornes de cohérence, si bien qu'un flux qui cale retient cette page plutôt que de republier une ancienne date sous un titre neuf.

Liste des candidats au short squeeze : le filtre actuel

Chaque valeur ci-dessous a franchi les mêmes portes sur le même fichier : cinq millions d'actions de volume quotidien moyen, cinq jours de rachat ou plus, et un mouvement positif sur les cinq séances se terminant le Jul 20, 2026. 36 valeurs ont franchi l'ensemble, et les 12 plus encombrées d'entre elles sont montrées ici. Le days to cover est le nombre d'actions vendues à découvert divisé par le volume quotidien moyen : le nombre de journées complètes de toute la bande de l'action dont le camp vendeur aurait besoin pour racheter sa position.

RequêteMécanique en forme de squeeze : positions vendeuses encombrées parmi les valeurs liquides, avec un cours en hausse
Le SQL exact derrière chaque chiffre
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

La valeur la plus encombrée ici, MPT, affiche 16.9 jours de rachat sur 138.1 millions d'actions vendues à découvert, et elle a progressé de 5.8% sur les cinq séances se terminant le Jul 20, 2026. La dernière ligne affichée indique 6.5 jours de rachat, ce qui marque la coupure de l'affichage plutôt que le plancher du filtre. Le classement se fait par encombrement plutôt que par taille, si bien qu'une position modérée sur une bande peu liquide devance une position bien plus grande sur une bande active. Pour le classement par taille, les actions les plus vendues à découvert en ce moment présente les deux classements côte à côte.

La porte du cours en hausse a une raison mécanique. Un squeeze est un rachat forcé par des vendeurs à découvert qui se couvrent, et se couvrir signifie racheter l'action, ce qui ne commence que lorsque le cours a déjà évolué contre la position. Le fonctionnement d'un short squeeze, retracé à travers les registres de GameStop en 2021, montre la séquence en chiffres.

Les règles, et ce que chacune retire

Un filtre est une opinion assortie de chiffres, voici donc où va le champ.

RequêteDu fichier de règlement complet jusqu'à la liste filtrée, règle par règle
Le SQL exact derrière chaque chiffre
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
)

Le fichier du Jun 30, 2026 porte 22207 titres. Le plancher de liquidité et la liste d'exclusion en laissent 885, le seuil d'encombrement réduit ce chiffre à 96, et la porte du cours en hausse en laisse 36. Chaque seuil est un choix, et un choix différent produit une liste différente. C'est pourquoi les règles figurent sur la page plutôt que dans une note de bas de page.

Quelle part de chaque société est vendue à découvert

Le chiffre que la plupart des gens recherchent est le short interest en pourcentage du flottant, et il n'est pas dans ces données. Le fichier des places de marché déclare les actions à découvert et le volume quotidien moyen, sans aucun nombre d'actions. Ce qui peut être dérivé, c'est la position mesurée face au total des actions en circulation, en prenant la valeur boursière de chaque société divisée par son cours.

RequêteLes valeurs filtrées classées par short interest rapporté aux actions en circulation (pas le flottant)
Le SQL exact derrière chaque chiffre
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 mène cette coupe à 26.3% des actions en circulation vendues à découvert : 29.9 millions d'actions contre 113 millions d'actions existantes. Les 10 lignes affichées sont les lectures les plus élevées parmi les valeurs filtrées portant un nombre d'actions publié, et la dernière d'entre elles affiche encore 15.5%. Lisez cette colonne comme un plancher, jamais comme le chiffre du flottant. Le flottant ne compte que les actions qui changent réellement de mains, en retirant les participations des initiés et les autres blocs bloqués. Le flottant est le dénominateur le plus petit, si bien que le pourcentage réel du flottant vendu à découvert est plus élevé que chaque chiffre montré ici. De combien de plus dépend de l'actionnariat de chaque société, que cet entrepôt de données ne porte pas.

L'encombrement vendeur se renforce-t-il ou s'estompe-t-il ?

Une seule publication n'est qu'une image figée. Le même fichier remonte sur plusieurs années, si bien que la question à l'échelle du marché a une réponse chiffrée.

RequêteValeurs liquides à 5j+ et 10j+ de rachat, règlement par règlement
Le SQL exact derrière chaque chiffre
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

Sur les 12 règlements montrés, le compte des valeurs liquides à cinq jours de rachat ou plus est passé de 58 à 96. L'extrémité rare de la distribution reste bien plus mince : 5 valeurs se situaient à dix jours de rachat ou plus à la dernière publication. La valeur liquide médiane affiche 1.87 jours, ce qui rend un seuil de cinq jours significatif plutôt qu'arbitraire. La page des actions au days to cover le plus élevé suit cette queue extrême à part.

Ce qui s'est généralement passé ensuite

Des filtres comme celui-ci sont faciles à construire et faciles à surinterpréter, voici donc le même filtre exécuté à rebours, au même décalage par rapport au fichier. Pour chaque publication de règlement de l'année écoulée, prenez les valeurs qui ont franchi la porte d'encombrement sur cette publication et qui étaient en hausse sur les six séances se terminant vingt jours calendaires plus tard, ce qui correspond à l'endroit où se situe cette page aujourd'hui, puis mesurez ce que chacune a fait au cours des 30 jours calendaires suivants.

RequêteChaque valeur filtrée passée, selon ce qu'elle a fait sur les 30 jours suivants
Le SQL exact derrière chaque chiffre
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.5% de ces observations valeur-règlement se négociaient plus bas 30 jours plus tard. C'est proche d'un tirage à pile ou face, et c'est le titre honnête de cette page : les vendeurs à découvert ont souvent raison, et « encombré et en hausse » décrit une configuration, pas un avantage. Les queues de distribution sont l'endroit où un squeeze se manifesterait, et les deux sont minces. 59 observations ont chuté de plus d'un cinquième ; 70 ont gagné plus d'un cinquième, la tranche où atterrirait un véritable squeeze. 87.3% de l'échantillon n'y est jamais arrivé.

Traitez ce panneau comme une distribution, pas comme un résultat de trading. Il ignore les coûts, les frais d'emprunt de titres et le dimensionnement des positions, et il pondère chaque valeur signalée à l'identique. Les deux volets sont ancrés vingt jours calendaires après chaque date de règlement, le même décalage que celui utilisé par cette page, si bien que chaque valeur signalée repose sur des prix qu'un lecteur aurait pu voir. Une année de règlements est un échantillon court.

Comment cette mesure est construite

Chaque règle et chaque exclusion derrière les chiffres ci-dessus.

  • Le fichier de short interest est publié par les places de marché et bimensuel. La publication utilisée ici a été réglée le Jun 30, 2026, il y a 22 jours. Il n'existe aucun chiffre de short interest déclaré quotidiennement aux États-Unis, seulement des estimations de fournisseurs modélisées à partir des données de prêt de titres.
  • Plancher de liquidité : cinq millions d'actions de volume quotidien moyen, tel que déclaré dans le même fichier. Sans cela, la liste se remplit de micro-capitalisations dont l'énorme lecture de days to cover est un artefact d'un volume quasi nul.
  • Seuil d'encombrement : cinq jours de rachat ou plus, bien au-dessus de la médiane liquide montrée plus haut.
  • Volet de momentum : la variation entre les cours de clôture des six dernières séances régulières intégralement chargées, soit un rendement sur cinq séances. Une séance n'entre dans la fenêtre qu'une fois que la bande de référence porte une journée complète de barres à la minute pour elle. Une séance encore en cours d'arrivée dans le flux est retenue plutôt que mesurée à moitié formée, si bien que la fenêtre peut se terminer une séance derrière le calendrier même quand cette séance est déjà terminée. Les prix sont des cours de clôture de séance régulière.
  • Les deux dates sont bornées. Le panneau du haut conserve l'âge de chaque entrée en jours, et ces âges portent des bornes de cohérence. Une publication de règlement plus vieille qu'un mois, ou une bande de prix plus en retard que le délai d'ingestion normal, retient cette page pour examen plutôt que de publier une date périmée sous un titre neuf.
  • Exclusions. Les ETF à effet de levier et inverses sont retirés de chaque panneau (leur short interest est en grande partie un artefact de couverture), ainsi qu'un symbole ambigu que les flux de fournisseurs ont réutilisé entre deux sociétés. Les panneaux qui mesurent un mouvement de cours écartent aussi une valeur dont le fractionnement d'actions tombe à l'intérieur de la propre fenêtre de mesure de ce panneau, car un fractionnement simule un mouvement important. Dans le backtest, ce test s'exécute par règlement, si bien qu'un fractionnement un mois ne retire jamais les observations d'une valeur des autres mois.
  • Les fonds figurent dans ce fichier aux côtés des sociétés d'exploitation. Un ETF obligataire ou indiciel peut porter une position vendeuse importante qui provient de la mécanique de création-rachat plutôt que de quiconque pariant contre lui.
  • Aucun flottant ni nombre d'actions dans ce fichier, et aucun open interest d'options nulle part dans l'entrepôt de données. La colonne des actions en circulation ci-dessus provient d'une table de fondamentaux distincte, si bien qu'une valeur sans valeur boursière publiée sort de ce panneau.
  • Rien ici n'est une prédiction ni une recommandation. Cela décrit des conditions mesurables, avec le panneau de résultats attaché.

FAQ

Comment trouver des candidats au short squeeze ?

Filtrez le fichier de short interest publié par les places de marché à la recherche d'une position importante par rapport au volume quotidien de l'action, ne gardez que les valeurs assez liquides pour être négociées, puis vérifiez si le cours est déjà en hausse. Ce filtre du fichier de short interest du Jun 30, 2026 utilise cinq jours de rachat ou plus, cinq millions d'actions de volume quotidien moyen, et un mouvement positif sur cinq séances, ce qui a laissé 36 valeurs.

Quel pourcentage de short interest déclenche un squeeze ?

Il n'existe aucun chiffre magique, et quiconque en cite un devine. Des squeezes ont démarré à partir de lectures sur toute l'étendue de la fourchette, et bien plus souvent, rien ne se passe du tout : sur une année de publications de règlement passées, 51.5% des valeurs que ce filtre aurait signalées se négociaient plus bas 30 jours plus tard. Un short interest élevé est une condition préalable, jamais un déclencheur.

Quelles actions sont les plus vendues à découvert en ce moment ?

Les classements bruts, l'un par days to cover et l'autre par actions à découvert brutes, se trouvent sur la page des actions les plus vendues à découvert. Cette page répond à une question plus étroite : parmi les valeurs du fichier du Jun 30, 2026 dont le cours est aussi en hausse, la plus encombrée est MPT à 16.9 jours de rachat, ce qui en fait la tête de ce filtre plutôt que l'action la plus vendue à découvert du marché.


Chaque panneau est une requête stockée et versionnée sur le fichier publié par les places de marché. Dépliez le SQL sous n'importe quel tableau, ou exécutez le filtre avec vos propres seuils sur le terminal Strasmore.