Strasmore Research
시장 요약 Matt Connor작성자 Matt Connor · 업데이트됨 2026-07-24 · data as of July 24, 2026 · refreshed weekly

이번 주 숏 스퀴즈 후보 종목

Days to cover와 공매도 잔고 및 주가 상승률을 기준으로 선별한 숏 스퀴즈(Short Squeeze) 후보 종목 목록입니다.

숏 스퀴즈(Short Squeeze) 종목은 두 가지 메커니즘을 기준으로 선별됩니다. 첫째는 거래량 대비 공매도 잔고(Short position)가 큰 경우이며, 둘째는 주가가 이미 상승 중인 경우입니다. 이 페이지는 Jun 30, 2026에 결제된 최신 거래소 보고 공매도 잔고 파일을 바탕으로 해당 기준을 적용하며, Jul 22, 2026에 종료된 5거래일 동안의 주가 상승폭을 측정합니다. 이러한 메커니즘은 과거의 스퀴즈 사례와 유사합니다. 본 데이터는 예측치가 아니며, 공매도 잔고가 매우 높은 종목이라도 실제 스퀴즈로 이어지지 않는 경우가 대부분입니다.

종목명보다 날짜를 먼저 확인하십시오. 이 페이지의 공매도 잔고 데이터는 규정에 따라 몇 주 전의 데이터입니다. 이는 데이터 피드의 오류가 아닙니다. 브로커는 정해진 결제일에 한 달에 두 번 FINRA(미국 금융산업규제기구)에 공매도 포지션을 보고하며, 취합된 파일은 약 8영업일 후에 공개됩니다. 현재 이용 가능한 가장 최신 데이터는 Jun 30, 2026 기준이며, 이는 24 전의 데이터입니다. 주가 상승폭은 Jul 22, 2026까지 계산됩니다. 해당 기간 내의 공매도 움직임은 이 페이지를 포함한 모든 스크리너에서 확인할 수 없습니다. 공매도 잔고 데이터가 항상 2주 전 데이터인 이유에서 보고 주기를 단계별로 확인할 수 있습니다.

조회모든 입력 데이터 및 경과 일수
모든 수치 뒤에 숨겨진 정확한 SQL
WITH prints AS (
    SELECT DISTINCT settlement_date AS d
    FROM global_markets.stocks_short_interest
    ORDER BY d DESC
    LIMIT 2
),
loaded AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= now() - INTERVAL 20 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY session
    HAVING count() >= 380
),
legs AS (
    SELECT arrayJoin([
        ('Short interest, previous settlement', (SELECT min(d) FROM prints)),
        ('Short interest, latest settlement', (SELECT max(d) FROM prints)),
        ('Price tape, last fully loaded session', (SELECT max(session) FROM loaded))]) AS row
)
SELECT formatDateTime(row.2, '%b %e, %Y') AS as_of_date,
       row.1 AS leg,
       dateDiff('day', row.2, today()) AS age_days
FROM legs

두 번의 결제 데이터는 3924 전의 것이며, 이는 월 2회 보고 주기와 취합 지연 시간을 합산한 결과입니다. 주가 데이터는 2 전의 데이터이며, 이는 규정이 아닌 데이터 저장소의 입력 지연 때문입니다. 두 데이터 모두 유효 기간이 있으므로, 데이터 피드가 중단될 경우 새로운 제목으로 과거 날짜를 다시 게시하는 대신 페이지 업데이트를 중단합니다.

Short squeeze stocks list: 현재 스크린

아래의 모든 종목은 동일한 기준을 충족했습니다. 평균 일일 거래량 500만 주 이상, Days to cover(공매도 상환 소요 일수) 5일 이상, 그리고 Jul 22, 2026에 종료된 최근 5거래일 동안의 양의 수익률입니다. 31 종목이 이 조건을 모두 충족했으며, 그중 가장 매수세가 몰린 12 종목을 여기에 소개합니다. Days to cover는 공매도 주식 수를 평균 일일 거래량으로 나눈 값입니다. 이는 공매도 포지션을 모두 청산하기 위해 해당 주식의 전체 거래량을 기준으로 며칠이 소요되는지를 나타냅니다.

조회Squeeze(숏 스퀴즈) 메커니즘: 유동성 종목 내 공매도 집중 및 가격 상승
모든 수치 뒤에 숨겨진 정확한 SQL
WITH latest AS (
    SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest
),
sessions AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= now() - INTERVAL 20 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY session
    HAVING count() >= 380
    ORDER BY session DESC
    LIMIT 6
),
crowded AS (
    SELECT ticker, days_to_cover, short_interest
    FROM global_markets.stocks_short_interest
    WHERE settlement_date = (SELECT d FROM latest)
      AND avg_daily_volume >= 5000000
      AND days_to_cover >= 5
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 60 AND today())
),
tape AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(close, window_start) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN (SELECT ticker FROM crowded)
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT session FROM sessions)
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY ticker, session
),
moves AS (
    SELECT ticker,
           round((argMax(rth_close, session) / argMin(rth_close, session) - 1) * 100, 1) AS return_5d_pct
    FROM tape
    GROUP BY ticker
    HAVING count() = 6 AND return_5d_pct > 0
)
SELECT c.ticker AS ticker,
       round(c.days_to_cover, 1) AS days_to_cover,
       round(c.short_interest / 1e6, 1) AS shares_short_m,
       m.return_5d_pct AS return_5d_pct
FROM crowded c
INNER JOIN moves m ON m.ticker = c.ticker
ORDER BY c.days_to_cover DESC, c.ticker
LIMIT 12

이 목록에서 가장 매수세가 몰린 종목인 MPT138.1백만 주의 공매도 잔고를 보유하고 있으며, Days to cover는 16.9일입니다. 또한 이 종목은 Jul 22, 2026에 종료된 5거래일 동안 2.8% 상승했습니다. 마지막 행은 6.4일의 Days to cover를 나타내며, 이는 화면 하단이 아닌 표시 범위의 끝을 의미합니다. 순위는 규모가 아닌 매수세 밀집도를 기준으로 결정됩니다. 따라서 거래량이 적은 종목의 적당한 포지션이 거래량이 많은 종목의 훨씬 큰 포지션보다 높은 순위를 차지합니다. 규모별 순위를 확인하려면 the most shorted stocks right now에서 두 순위표를 나란히 확인할 수 있습니다.

가격 상승 조건에는 기계적인 이유가 있습니다. Short squeeze(숏 스퀴즈)는 공매도 투자자들이 포지션을 청산하면서 발생하는 강제 매수 현상입니다. 공매도를 청산하려면 주식을 다시 사야 하며, 이는 주가가 포지션에 불리한 방향으로 움직이기 시작할 때 발생합니다. GameStop의 2021년 기록을 통해 살펴본 How a short squeeze works는 이러한 과정을 수치로 보여줍니다.

규칙 및 각 규칙에 따른 제외 항목

스크린(Screen)은 수치가 결합된 하나의 의견이므로, 아래에 해당 분야를 기술한다.

조회전체 결제 파일에서 스크리닝 리스트까지, 단계별 규칙 적용
모든 수치 뒤에 숨겨진 정확한 SQL
WITH latest AS (
    SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest
),
sessions AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= now() - INTERVAL 20 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY session
    HAVING count() >= 380
    ORDER BY session DESC
    LIMIT 6
),
reported AS (
    SELECT ticker, days_to_cover, avg_daily_volume
    FROM global_markets.stocks_short_interest
    WHERE settlement_date = (SELECT d FROM latest)
),
liquid AS (
    SELECT ticker, days_to_cover
    FROM reported
    WHERE avg_daily_volume >= 5000000
      AND days_to_cover IS NOT NULL
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 60 AND today())
),
crowded AS (
    SELECT ticker FROM liquid WHERE days_to_cover >= 5
),
tape AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(close, window_start) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN (SELECT ticker FROM crowded)
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT session FROM sessions)
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY ticker, session
),
rising AS (
    SELECT ticker,
           round((argMax(rth_close, session) / argMin(rth_close, session) - 1) * 100, 1) AS return_5d_pct
    FROM tape
    GROUP BY ticker
    HAVING count() = 6 AND return_5d_pct > 0
),
tally AS (
    SELECT (SELECT count() FROM reported) AS all_names,
           (SELECT count() FROM liquid) AS liquid_names,
           (SELECT count() FROM crowded) AS crowded_names,
           (SELECT count() FROM rising) AS rising_names
)
SELECT step.1 AS label, step.2 AS names
FROM (
    SELECT arrayJoin([
        ('Every name in the settlement file', all_names),
        ('Liquid: five million shares a day, no leveraged funds', liquid_names),
        ('Crowded: five or more days to cover', crowded_names),
        ('Rising: a positive move over the price window', rising_names)]) AS step
    FROM tally
)

Jun 30, 2026 파일에는 22207 증권이 포함된다. 유동성 하한선(liquidity floor)과 제외 목록(exclusion list)을 적용하면 883가 남으며, 밀집도 임계값(crowding threshold)을 적용하면 96로 줄어든다. 마지막으로 상승 가격 게이트(rising-price gate)를 적용하면 31가 남는다. 각 임계값은 선택 사항이며, 선택에 따라 결과 목록이 달라진다. 이것이 규칙이 각주가 아닌 본문에 명시되는 이유다.

각 기업의 공매도 규모

대부분의 사람들이 찾는 지표는 유통 주식 수 대비 공매도 비율(short interest as a percent of float)이지만, 본 데이터에는 포함되어 있지 않다. 거래소 파일은 공매도 주식 수와 일평균 거래량을 보고하며, 어떠한 형태의 주식 수도 제공하지 않는다. 본 데이터에서 도출할 수 있는 것은 각 기업의 시가총액을 주가로 나눈 값을 기준으로 측정한 발행 주식 총수 대비 포지션이다.

조회발행주식수(Shares outstanding) 대비 공매도 비중 순위
모든 수치 뒤에 숨겨진 정확한 SQL
WITH latest AS (
    SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest
),
sessions AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= now() - INTERVAL 20 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY session
    HAVING count() >= 380
    ORDER BY session DESC
    LIMIT 6
),
crowded AS (
    SELECT ticker, days_to_cover, short_interest
    FROM global_markets.stocks_short_interest
    WHERE settlement_date = (SELECT d FROM latest)
      AND avg_daily_volume >= 5000000
      AND days_to_cover >= 5
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 60 AND today())
),
tape AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(close, window_start) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN (SELECT ticker FROM crowded)
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT session FROM sessions)
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY ticker, session
),
rising AS (
    SELECT ticker,
           round((argMax(rth_close, session) / argMin(rth_close, session) - 1) * 100, 1) AS return_5d_pct
    FROM tape
    GROUP BY ticker
    HAVING count() = 6 AND return_5d_pct > 0
),
share_count AS (
    SELECT ticker, market_cap / price AS shares_out
    FROM global_markets.stocks_ratios
    WHERE date = (SELECT max(date) FROM global_markets.stocks_ratios)
      AND market_cap > 0
      AND price > 0
)
SELECT c.ticker AS ticker,
       round(100.0 * c.short_interest / s.shares_out, 1) AS si_pct_shares_out,
       round(c.short_interest / 1e6, 1) AS shares_short_m,
       round(s.shares_out / 1e6, 0) AS shares_out_m,
       round(c.days_to_cover, 1) AS days_to_cover
FROM crowded c
INNER JOIN rising r ON r.ticker = c.ticker
INNER JOIN share_count s ON s.ticker = c.ticker
ORDER BY si_pct_shares_out DESC, c.ticker
LIMIT 10

KSS은 발행 주식 수 대비 공매도 비율이 26.3%으로 가장 높다. 이는 총 113백만 주 중 29.9백만 주가 공매도되었음을 의미한다. 표시된 10개 행은 공개된 주식 수를 보유한 스크리닝 대상 종목 중 가장 큰 수치이며, 마지막 항목조차 15.5%에 달한다. 해당 열은 하한선으로 해석해야 하며, 유통 주식 수로 해석해서는 안 된다. 유통 주식 수(Float)는 내부자 지분과 기타 보호예수 물량을 제외하고 실제로 거래되는 주식만을 집계한다. 유통 주식 수는 분모가 더 작으므로, 실제 유통 주식 수 대비 공매도 비율은 표시된 모든 수치보다 높다. 정확히 얼마나 더 높은지는 각 기업의 지분 구조에 따라 다르며, 본 데이터베이스는 이 정보를 보유하고 있지 않다.

공매도 과열이 심화되고 있는가, 아니면 완화되고 있는가?

단일 데이터는 정지된 화면과 같다. 동일한 파일이 수년간 지속되었으므로, 시장 전체의 질문에 대한 데이터 기반의 해답이 존재한다.

조회Days to cover(상환 소요 일수) 5일 및 10일 이상 유동성 종목의 결제별 추이
모든 수치 뒤에 숨겨진 정확한 SQL
WITH dates AS (
    SELECT DISTINCT settlement_date AS d
    FROM global_markets.stocks_short_interest
    ORDER BY d DESC
    LIMIT 12
)
SELECT toString(settlement_date) AS settlement_date,
       countIf(days_to_cover >= 5) AS names_5plus_dtc,
       countIf(days_to_cover >= 10) AS names_10plus_dtc,
       round(quantileExact(0.5)(days_to_cover), 2) AS median_dtc_liquid
FROM global_markets.stocks_short_interest
WHERE settlement_date IN (SELECT d FROM dates)
  AND avg_daily_volume >= 5000000
  AND days_to_cover IS NOT NULL
  AND ticker NOT IN ('SPCX')
  AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
GROUP BY settlement_date
ORDER BY settlement_date

표시된 12 결제 건을 살펴보면, 5일 이상의 days-to-cover(상환 소요 일수)를 기록한 유동성 종목 수는 58에서 96으로 변화했다. 분포의 희소한 끝단은 여전히 매우 얇다. 최근 데이터 기준, 10일 이상의 days-to-cover를 기록한 종목은 5개였다. 유동성 종목의 중앙값은 1.87일이며, 이 수치가 5일이라는 기준점을 임의적인 것이 아닌 의미 있는 지표로 만든다. days-to-cover가 가장 높은 종목 페이지에서 해당 극단적 꼬리 부분을 별도로 추적한다.

일반적인 이후 흐름

이러한 화면은 구축하기 쉽지만 과잉 해석하기도 쉽습니다. 따라서 동일한 파일 오프셋을 사용하여 역방향으로 실행한 화면을 제시합니다. 지난 1년 동안 발생한 모든 결제(settlement) 데이터를 대상으로, 해당 시점에 과밀도 관문(crowding gate)을 통과하고 이후 20일(calendar days)이 지난 시점까지 6거래일 동안 상승한 종목들을 추출합니다. 이 시점은 현재 페이지가 나타내는 시점과 동일합니다. 그 후 각 종목의 이후 30일간의 성과를 측정합니다.

조회과거 스크리닝 종목의 향후 30일간 수익률
모든 수치 뒤에 숨겨진 정확한 SQL
WITH screened AS (
    SELECT settlement_date, ticker
    FROM global_markets.stocks_short_interest
    WHERE settlement_date >= today() - 400
      AND settlement_date <= today() - 55
      AND avg_daily_volume >= 5000000
      AND days_to_cover >= 5
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
),
split_hits AS (
    SELECT s.settlement_date AS sd, s.ticker AS tkr
    FROM screened s
    INNER JOIN global_markets.stocks_splits sp ON sp.ticker = s.ticker
    WHERE sp.execution_date > s.settlement_date + 11
      AND sp.execution_date <= s.settlement_date + 50
),
daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(close, window_start) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN (SELECT DISTINCT ticker FROM screened)
      AND window_start >= now() - INTERVAL 400 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
        + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY ticker, session
),
paired AS (
    SELECT s.settlement_date AS sd,
           s.ticker AS tkr,
           (argMaxIf(d.rth_close, d.session, d.session <= s.settlement_date + 20)
            / argMinIf(d.rth_close, d.session, d.session <= s.settlement_date + 20) - 1) * 100 AS prior_pct,
           (argMaxIf(d.rth_close, d.session, d.session >= s.settlement_date + 20)
            / argMinIf(d.rth_close, d.session, d.session >= s.settlement_date + 20) - 1) * 100 AS next_pct
    FROM screened s
    INNER JOIN daily d ON d.ticker = s.ticker
    WHERE d.session > s.settlement_date + 11
      AND d.session <= s.settlement_date + 50
    GROUP BY sd, tkr
    HAVING countIf(d.session <= s.settlement_date + 20) >= 4
       AND countIf(d.session >= s.settlement_date + 20) >= 15
),
outcomes AS (
    SELECT multiIf(next_pct < -20, 1,
                   next_pct < -10, 2,
                   next_pct < 0, 3,
                   next_pct < 10, 4,
                   next_pct < 20, 5, 6) AS bucket,
           multiIf(next_pct < -20, 'Fell more than 20%',
                   next_pct < -10, 'Fell 10% to 20%',
                   next_pct < 0, 'Fell 0% to 10%',
                   next_pct < 10, 'Rose 0% to 10%',
                   next_pct < 20, 'Rose 10% to 20%', 'Rose more than 20%') AS move_over_30_days
    FROM paired
    WHERE prior_pct > 0
      AND (sd, tkr) NOT IN (SELECT sd, tkr FROM split_hits)
),
tallied AS (
    SELECT bucket, move_over_30_days, count() AS name_count
    FROM outcomes
    GROUP BY bucket, move_over_30_days
)
SELECT move_over_30_days,
       name_count,
       round(100.0 * sum(name_count) OVER (ORDER BY bucket) / sum(name_count) OVER (), 1) AS cumulative_share_pct
FROM tallied
ORDER BY bucket

해당 종목 및 결제 관측치 중 51.7%은 30일 후 주가가 하락했습니다. 이는 동전 던지기와 유사한 확률이며, 이 페이지의 정직한 결론입니다. 즉, 공매도 세력이 빈번하게 옳으며, '과밀 및 상승' 상태는 우위(edge)라기보다 하나의 셋업(setup)을 의미합니다. 스퀴즈(squeeze)가 나타날 수 있는 구간은 양 끝단(tails)이지만, 두 구간 모두 희소합니다. 68의 관측치는 5분의 1 이상 하락했으며, 73은 5분의 1 이상 상승했습니다. 후자가 실제 스퀴즈가 발생하는 구간입니다. 87.8%의 표본은 해당 구간에 도달하지 못했습니다.

이 패널을 매매 결과가 아닌 분포(distribution)로 간주하십시오. 이 데이터는 비용, 차입 수수료(borrow fees) 및 포지션 규모(position sizing)를 고려하지 않으며, 표시된 모든 종목에 동일한 가중치를 부여합니다. 양측 데이터 모두 각 결제일로부터 20일이 지난 시점을 기준으로 하며, 이는 이 페이지가 사용하는 오프셋과 동일합니다. 따라서 표시된 모든 종목은 독자가 실제로 확인할 수 있었던 가격을 기준으로 합니다. 1년치 결제 데이터는 표본이 짧습니다.

측정 방식

위 수치에 적용된 모든 규칙과 제외 기준은 다음과 같습니다.

  • Short-interest(공매도 잔고) 파일은 거래소 보고 자료이며 격주로 업데이트됩니다. 본문에 사용된 수치는 Jun 30, 2026, 24일 전의 결제 데이터를 기준으로 합니다. 미국 시장에는 매일 공시되는 공매도 잔고 수치가 없으며, 증권 대차 데이터를 모델링한 벤더 추정치만 존재합니다.
  • 유동성 하한선: 동일 파일에 보고된 일평균 거래량(ADV) 500만 주를 적용합니다. 이 기준이 없다면 거래량이 거의 없어 days-to-cover(공매도 과열 지표) 수치가 비정상적으로 높게 나타나는 microcap(초소형주)들이 목록에 포함됩니다.
  • Crowding(수급 밀집) 임계값: five or more days to cover(5일 이상의 공매도 과열)를 적용합니다. 이는 위에 표시된 유동성 중앙값보다 훨씬 높은 수준입니다.
  • Momentum leg(모멘텀 동력): 최근 6개의 완전한 정규 세션 종가 간의 변화량이며, 이는 5개 세션의 수익률을 의미합니다. 세션은 벤치마크 테이프에 해당 일자의 분 단위 바(bar) 데이터가 모두 기록된 후에만 분석 범위에 포함됩니다. 데이터 피드에 실시간으로 입력 중인 세션은 불완전한 상태로 측정하지 않고 제외하므로, 해당 세션이 종료되었더라도 분석 범위는 달력보다 한 세션 뒤처질 수 있습니다. 가격은 정규 세션 종가를 기준으로 합니다.
  • 모든 날짜에는 제한 범위가 있습니다. 상단 패널은 각 입력 데이터의 경과 일수를 저장하며, 이 일수에는 유효성 검증을 위한 제한 범위가 적용됩니다. 결제 데이터가 한 달보다 오래되었거나 가격 테이프가 일반적인 수집 지연보다 더 뒤처진 경우, 최신 헤드라인 아래에 오래된 날짜를 게시하는 대신 검토를 위해 페이지를 유지합니다.
  • 제외 대상. Leveraged(레버리지) 및 inverse(인버스) ETF는 모든 패널에서 제외됩니다(이들의 공매도 잔고는 대부분 헤지 목적의 결과물입니다). 또한 벤더 피드에서 두 기업에 중복 사용된 모호한 심볼도 제외됩니다. 가격 변동을 측정하는 패널은 주식 분할이 측정 기간 내에 포함된 종목을 제외합니다. 주식 분할은 큰 가격 변동을 인위적으로 만들어내기 때문입니다. 백테스트의 경우 테스트가 결제 단위로 실행되므로, 특정 달의 주식 분할이 다른 달의 관측 데이터에 영향을 주지는 않습니다.
  • 운영 기업과 함께 펀드 데이터도 이 파일에 포함됩니다. 채권 또는 index ETF는 실제 하락에 베팅하는 것이 아니라, creation-and-redemption(설정 및 환매) 프로세스로 인해 대규모 공매도 포지션을 가질 수 있습니다.
  • 이 파일에는 float(유통 주식 수) 및 전체 발행 주식 수가 포함되지 않으며, 데이터 저장소 어디에도 options open interest(옵션 미결제 약정)는 포함되지 않습니다. 위의 shares-outstanding(발행 주식 수) 열은 별도의 fundamentals(기초 여건) 테이블에서 가져오므로, 공시된 market value(시가총액)가 없는 종목은 해당 패널에서 제외됩니다.
  • 이 데이터는 예측이나 권고 사항이 아닙니다. 이는 측정 가능한 상태를 설명하며, 결과 패널이 함께 제공됩니다.

FAQ

숏 스퀴즈(Short Squeeze) 후보 종목은 어떻게 찾습니까?

거래소에서 보고하는 공매도 잔고(Short-interest) 파일을 사용하여 일일 거래량 대비 공매도 포지션이 큰 종목을 선별하십시오. 그 후 거래가 가능한 수준의 유동성을 가진 종목만 남기고, 주가가 이미 상승 중인지 확인하십시오. 본 Jun 30, 2026 공매도 잔고 스크린은 상환 기간(Days to cover) 5일 이상, 평균 일일 거래량 500만 주 이상, 5거래일 연속 상승 종목을 기준으로 하며, 이를 통해 31 종목을 추출했습니다.

어떤 공매도 비율이 스퀴즈를 유발합니까?

특정 수치는 존재하지 않으며, 이를 인용하는 것은 추측에 불과합니다. 스퀴즈는 다양한 수치 범위에서 발생하며, 실제로는 아무 일도 일어나지 않는 경우가 훨씬 더 많습니다. 지난 1년간의 결제 데이터에 따르면, 본 스크린이 포착했을 종목 중 51.7%은 30일 후 주가가 더 낮았습니다. 높은 short interest는 전제 조건일 뿐, 트리거(Trigger)는 아닙니다.

공매도 데이터는 얼마나 오래되었습니까?

현재 기록된 가장 최신 결제일은 Jun 30, 2026이며, 이는 24일 전의 데이터입니다. 가격 데이터는 Jul 22, 2026까지 제공됩니다. 이러한 시차는 데이터의 노후화가 아니라 보고 주기 때문입니다. 포지션은 한 달에 두 번 집계되며, 각 결제일로부터 약 8영업일 후에 발표됩니다. 따라서 모든 공매도 수치는 발표 시점에 이미 몇 주 전의 데이터입니다.

현재 가장 공매도 잔고가 많은 주식은 무엇입니까?

상환 기간 기준 및 총 공매도 주식 수 기준의 필터링되지 않은 순위는 가장 공매도가 많은 주식 페이지에서 확인할 수 있습니다. 본 페이지는 더 구체적인 질문에 답합니다. Jun 30, 2026 파일 종목 중 주가가 상승 중인 종목 가운데, 가장 과열된 종목은 상환 기간이 16.9일인 MPT입니다. 이는 시장 전체에서 가장 공매도가 많은 주식이 아니라, 본 스크린의 필터링 결과입니다.


모든 패널은 거래소 보고 파일을 대상으로 저장된 버전별 쿼리(Query)입니다. 각 표 아래의 SQL을 확장하거나, Strasmore 터미널에서 사용자 정의 임계값으로 스크린을 실행하십시오.