Strasmore Research
Resúmenes de mercado Matt ConnorPor Matt Connor · Actualizado 2026-07-23 · data as of July 23, 2026 · refreshed weekly

Acciones con potencial de short squeeze

Análisis de acciones con alto interés corto y tendencia alcista. Filtramos tickers con días para cubrir y volumen de ventas en corto para medir probabilidades.

Las acciones con potencial de short squeeze se filtran bajo dos mecánicas: una posición corta que es grande en relación con el volumen de negociación de la acción, y un precio que ya está en ascenso. Esta página aplica ese filtro al último archivo de interés de posiciones cortas reportado por la bolsa, con liquidación al Jun 30, 2026, y mide el movimiento del precio durante las cinco sesiones que terminaron el Jul 21, 2026. Estas mecánicas se asemejan a squeezes pasados. Nada de lo aquí presentado es un pronóstico, y la mayoría de las acciones con mayor interés corto nunca experimentan un squeeze.

Lea las fechas antes que los nombres. La sección de interés de posiciones cortas de esta página tiene semanas de antigüedad por regulación, no por un error en el flujo de datos: los brókers reportan sus posiciones cortas a FINRA dos veces al mes en fechas de liquidación programadas, y el archivo compilado se hace público aproximadamente ocho días hábiles después. El dato más reciente disponible para cualquier usuario tiene fecha de hace Jun 30, 2026, 23 días, mientras que el movimiento del precio llega hasta el Jul 21, 2026. Cualquier actividad de las posiciones cortas dentro de ese intervalo es invisible para todos los screeners, incluido este. Por qué los datos de interés de posiciones cortas siempre tienen dos semanas de antigüedad explica paso a paso el ciclo de reporte.

ConsultaCada entrada en pantalla y su antigüedad en días
El SQL exacto detrás de cada cifra
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

Los dos registros de liquidación tienen 38 y 23 días de antigüedad, lo que representa el ciclo de conteo quincenal más el retraso de compilación. La cinta de precios tiene 2 días de retraso, y este se debe al desfase de ingesta de almacén en lugar de a la regulación. Ambos periodos tienen límites, por lo que si un flujo de datos se detiene, esta página se mantiene estática en lugar de republicar una fecha antigua bajo un titular nuevo.

Lista de acciones con short squeeze: el filtro actual

Cada nombre en la siguiente lista cumplió con los mismos criterios: un volumen diario promedio de cinco millones de acciones, cinco o más días para cubrir la posición y un movimiento positivo durante las cinco sesiones que terminaron el Jul 21, 2026. Los nombres 36 cumplieron con todos estos requisitos, y aquí se muestran los 12 más congestionados. El Days to cover es el número de acciones vendidas en corto dividido por el volumen diario promedio: cuántos días completos de la negociación total de la acción necesitaría el lado corto para recomprar su posición.

ConsultaMecánica de squeeze: cortos concentrados en nombres líquidos con alza de precio
El SQL exacto detrás de cada cifra
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

El nombre más congestionado aquí, MPT, muestra 16.9 días para cubrir de un total de 138.1 millones de acciones vendidas en corto, y subió un 5.4% durante las cinco sesiones que terminaron el Jul 21, 2026. La última fila mostrada indica 6.5 días para cubrir, que es donde se corta la visualización y no donde termina el filtro. El ranking se basa en la congestión en lugar del tamaño, por lo que una posición moderada en un volumen bajo tiene prioridad sobre una mucho mayor en un volumen alto. Para el ranking por tamaño, las acciones más vendidas en corto ahora mismo presenta ambos rankings de forma paralela.

El criterio de aumento de precio tiene una razón mecánica. Un squeeze es una compra forzada debido al cierre de posiciones de los vendedores en corto, y cerrar una posición corta implica recomprar la acción, lo cual solo comienza una vez que el precio se mueve en contra de la posición. Cómo funciona un short squeeze, analizado a través de los registros de GameStop de 2021, muestra la secuencia en números.

Las reglas y lo que elimina cada una

Un filtro es una opinión con números asociados; aquí es donde se define el campo.

ConsultaDel archivo de settlement a la lista filtrada, regla por regla
El SQL exacto detrás de cada cifra
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
)

El archivo Jun 30, 2026 contiene 22207 valores. El piso de liquidez y la lista de exclusión dejan 885, el umbral de congestión reduce eso a 96, y el filtro de aumento de precio deja 36. Cada umbral es una elección, y una elección distinta produce una lista distinta. Por eso las reglas se presentan en el cuerpo del texto y no en una nota al pie.

Cuánto se vende en corto de cada empresa

El dato que la mayoría busca es el interés en corto como porcentaje del float, pero este no se encuentra en estos datos. El archivo de la bolsa reporta las acciones en corto y el volumen diario promedio, sin incluir ningún tipo de conteo de acciones. Lo que se puede derivar es la posición medida frente al total de acciones en circulación, dividiendo el valor de mercado de cada empresa entre el precio de su acción.

ConsultaNombres filtrados por short interest vs. shares outstanding (no float)
El SQL exacto detrás de cada cifra
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 encabeza esa lista con un 26.3% de acciones en circulación vendidas en corto: 29.9 millones de acciones frente a 113 millones de acciones existentes. Las 10 filas mostradas son las lecturas más altas entre los nombres filtrados que cuentan con un número de acciones publicado, y la última de ellas sigue siendo de 15.5%. Interprete esa columna como un límite inferior y nunca como el número del float. El Float contabiliza solo las acciones que realmente cambian de manos, excluyendo las participaciones de insiders y otras tenencias bloqueadas. El float es el denominador más pequeño, por lo que el porcentaje real de float vendido en corto es mayor que todas las cifras mostradas. Qué tan mayor sea depende de la estructura de propiedad de cada empresa, la cual este almacén de datos no contiene.

¿Se está acumulando o disipando el short crowding?

Un reporte es una imagen estática. El mismo archivo tiene años de antigüedad, por lo que la pregunta del mercado tiene una respuesta basada en datos.

ConsultaNombres líquidos con 5+ y 10+ días de days to cover, por settlement
El SQL exacto detrás de cada cifra
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

A través de los liquidaciones de 12 mostradas, el conteo de nombres líquidos con cinco o más días para cubrir pasó de 58 a 96. El extremo poco frecuente de la distribución sigue siendo mucho más delgado: 5 nombres se situaron en diez o más días para cubrir en el último reporte. La mediana de nombres líquidos es de 1.87 días, lo que hace que el umbral de cinco días sea significativo y no arbitrario. La página las acciones con más días para cubrir monitorea ese extremo de la distribución por separado.

Qué ha sucedido habitualmente después

Este tipo de pantallas son fáciles de construir y fáciles de malinterpretar, por lo que aquí presentamos la misma pantalla ejecutada de forma inversa, con el mismo desfase respecto al archivo. Para cada impresión de liquidación en el último año, tomamos los nombres que superaron el filtro de congestión en dicha impresión y que estuvieron al alza durante las seis sesiones que terminaron veinte días calendario después (que es donde se sitúa esta página hoy); luego, medimos el desempeño de cada uno durante los siguientes 30 días calendario.

ConsultaRendimiento de nombres filtrados en los siguientes 30 días
El SQL exacto detrás de cada cifra
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% de esas observaciones de nombre y liquidación cotizaron a la baja 30 días después. Eso es similar a lanzar una moneda, y es el titular honesto de esta página: los vendedores en corto suelen tener razón, y la combinación de "congestión más tendencia alcista" describe una configuración técnica en lugar de una ventaja estadística. Los extremos son donde aparecería un squeeze, y ambos son delgados. 68 observaciones cayeron más de una quinta parte; 73 ganaron más de una quinta parte, el segmento donde caería un squeeze genuino. 87.8% de la muestra nunca alcanzó ese nivel.

Considere ese panel como una distribución, no como un resultado de trading. Ignora costos, comisiones de préstamo y el tamaño de la posición, y asigna el mismo peso a cada nombre marcado. Ambos extremos están anclados veinte días calendario después de cada fecha de liquidación, el mismo desfase que utiliza esta página, por lo que cada nombre marcado se basa en precios que un lector podría haber visto. Un año de liquidaciones es una muestra pequeña.

Cómo se mide esto

Cada regla y exclusión detrás de las cifras anteriores.

  • El reporte de short-interest es informado por la bolsa y se publica dos veces al mes. El registro utilizado aquí cerró hace Jun 30, 2026, 23 días. En los EE. UU. no existe un número diario de short interest divulgado; solo existen estimaciones de proveedores modeladas a partir de datos de préstamo de valores.
  • Piso de liquidez: cinco millones de acciones de volumen diario promedio, según se reporta en el mismo archivo. Sin este límite, la lista se llenaría de microcaps cuyo enorme days-to-cover es solo un artefacto de un volumen cercano a cero.
  • Umbral de crowding: cinco o más days to cover, muy por encima de la mediana líquida mostrada arriba.
  • Tramo de momentum: el cambio entre los precios de cierre de las últimas seis sesiones regulares completas, lo que representa un retorno de cinco sesiones. Una sesión entra en el periodo de medición solo cuando la cinta de referencia cuenta con un día completo de barras de un minuto. Si una sesión aún se está procesando en el feed, se retiene en lugar de medirse incompleta; por ello, el periodo puede terminar una sesión después del calendario, incluso si esa sesión ya cerró. Los precios corresponden a los cierres de la sesión regular.
  • Ambas fechas tienen límites. El panel superior almacena la antigüedad de cada dato en días, y esas antigüedades tienen límites de validación. Un registro de cierre con más de un mes de antigüedad, o una cinta de precios con un retraso mayor al desfase normal de ingesta, retiene esta página para revisión en lugar de publicar una fecha obsoleta bajo un titular reciente.
  • Exclusiones. Los ETF apalancados e inversos se eliminan de todos los paneles (su short interest es mayormente un artefacto de cobertura), junto con un símbolo ambiguo que los feeds de proveedores han reutilizado en dos empresas distintas. Los paneles que miden movimientos de precio también eliminan un nombre cuyo split de acciones ocurre dentro del periodo de medición del panel, ya que un split simula un movimiento grande. En el backtest, esa prueba se ejecuta por cierre, por lo que un split en un mes no elimina las observaciones de un nombre en los otros meses.
  • Los fondos aparecen en este archivo junto con las empresas operativas. Un ETF de bonos o de un índice puede tener una posición corta grande que proviene de la mecánica de creación y redención, en lugar de apuestas en contra del activo.
  • No hay float ni recuento de acciones en este archivo, ni open interest de opciones en la base de datos. La columna de acciones en circulación de arriba proviene de una tabla de fundamentales distinta, por lo que un nombre sin valor de mercado publicado queda fuera de ese panel.
  • Nada de lo aquí expuesto es una predicción o una recomendación. Describe condiciones medibles, junto con el panel de resultados correspondiente.

Preguntas frecuentes

¿Cómo se encuentran candidatos a short squeeze?

Se debe filtrar el archivo de posiciones cortas reportado por la bolsa para buscar posiciones grandes en relación con el volumen diario de la acción, mantener solo nombres con suficiente liquidez para operar y verificar si el precio ya está subiendo. Este filtro del archivo de short-interest Jun 30, 2026 utiliza cinco o más días para cubrir, cinco millones de acciones de volumen diario promedio y un movimiento positivo de cinco sesiones, lo que dejó 36 nombres.

¿Qué porcentaje de short interest causa un squeeze?

No existe un número mágico, y cualquier cifra que se cite es una conjetura. Los squeezes han comenzado con lecturas en todo el rango, y con mucha más frecuencia no ocurre nada: a través de un año de registros de liquidación pasados, el 51.7% de los nombres que este filtro habría marcado estaban más bajos 30 días después. Un short interest alto es una condición previa, nunca un detonante.

¿Qué tan antigua es la información de short interest?

La liquidación más reciente en este archivo tiene fecha de Jun 30, 2026, hace 23 días, y los datos de precio llegan hasta Jul 21, 2026. Esa brecha se debe al ciclo de reporte y no a una alimentación de datos desactualizada: las posiciones se contabilizan dos veces al mes y se publican aproximadamente ocho días hábiles después de cada fecha de liquidación, por lo que cualquier cifra de short-interest tiene semanas de antigüedad al llegar.

¿Qué acciones tienen el mayor short interest en este momento?

Las tablas de clasificación sin filtrar, una por días para cubrir y otra por número bruto de acciones en corto, se encuentran en la página de las acciones más vendidas en corto. Esta página responde a una pregunta más específica: entre los nombres del archivo Jun 30, 2026 cuyo precio también está subiendo, el más congestionado es MPT con 16.9 días para cubrir, lo cual es un líder del filtro en lugar de la acción más vendida en corto del mercado.


Cada panel es una consulta almacenada y versionada sobre el archivo reportado por la bolsa. Expanda el SQL debajo de cualquier tabla o ejecute el filtro con sus propios umbrales en la terminal Strasmore.