Strasmore Research
市場概況 Matt Connor著者: Matt Connor ・更新: 2026-09-05 · data as of September 5, 2026 · refreshed weekly

今週のショートスクイーズ候補銘柄

空売り残高と株価上昇で銘柄を抽出します。決済日やデータの遅れ、各しきい値と測定オッズも確認でき、候補の比較に役立ちます。

空売りスクイーズ銘柄は、二つの指標でスクリーニングします。株式の売買高に対して空売りポジションが大きいこと、そして株価がすでに上昇していることです。このページでは、最新の取引所報告による空売り残高ファイルを使ってスクリーニングします。決済日はAug 14, 2026です。株価の動きは、Sep 3, 2026までの五セッションで測定します。これらは、過去のスクイーズに似た値動きの特徴です。ここで予測を示しているわけではありません。空売り残高が多い銘柄の大半で、スクイーズは起きません。

銘柄名の前にある日付を確認してください。このページの空売り残高データが古いのは、フィードの問題ではなく、規制上の理由によるものです。ブローカーは月二回、定められた決済日にFINRAへ空売りポジションを報告します。集計ファイルが公開されるのは、そのおよそ八営業日後です。誰でも利用できる最新のプリントはAug 14, 2026付で、22日前のデータです。一方、株価の動きはSep 3, 2026までを対象としています。その間に空売り側で起きたことは、このスクリーナーを含め、どのスクリーナーからも確認できません。空売り残高データが常に二週間古い理由では、報告サイクルを順を追って説明しています。

クエリこの画面のすべての入力データと、その経過日数
基準日レッグ経過日数
Jul 31, 2026Short interest, previous settlement36
Aug 14, 2026Short interest, latest settlement22
Sep 3, 2026Price tape, last fully loaded session2
各数値の背後にある正確な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
自分で実行する

二つの決済時点のプリントは、それぞれ36日前と22日前です。これは、月二回の集計サイクルに集計ファイルの作成遅延を加えた期間です。株価データは2日前のもので、こちらは規制ではなく、データ倉庫への取り込み遅延です。いずれの経過日数にも上限と下限があります。そのためフィードが停止した場合、このページは古い日付を新しい見出しで再公開せず、更新を保留します。

ショートスクイーズ銘柄リスト:現在のスクリーニング

以下の全銘柄は、同じファイルで同じ条件を通過しています。1日平均出来高500万株以上、空売り残高の買い戻しに要する日数が5日以上、そしてSep 3, 2026までの5セッションで上昇していることです。36銘柄がすべての条件を満たし、そのうち空売りが最も集中している12銘柄をここに示します。空売り残高の買い戻しに要する日数とは、空売り株数を1日平均出来高で割った値です。空売り方がポジションをすべて買い戻すのに必要な、銘柄全体の売買高ベースの日数を示します。

クエリ流動性の高い銘柄で空売りが集中し、株価が上昇する、スクイーズ型の仕組み
ティッカーカバー日数空売り株数(百万)5日リターン(%)
ENB9.869.81.2
MRNA9.252.84.3
CNQ8.457.62.7
FOXA8.145.30.8
AUR7.6174.911.1
GOSS7.486.82.9
SAN7.3107.73.4
STLA7.1130.73.8
AVTR6.952.24
SBET6.9391.1
INFY6.8130.31.7
ACI6.751.73
各数値の背後にある正確な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
自分で実行する

ここで空売りが最も集中しているENBは、空売り株数69.8百万株に対して、買い戻しに要する日数が9.8日です。Sep 3, 2026までの5セッションでは1.2%上昇しました。表示されている最後の行は買い戻しに要する日数6.7日であり、これは表示上の下限であって、スクリーニング条件の下限ではありません。順位は空売り株数ではなく、空売りの集中度で並べています。そのため、薄商いの銘柄にある中規模のポジションが、活発に取引される銘柄のはるかに大きなポジションを上回ることがあります。空売り株数による順位については、現在、空売り残高が最も多い銘柄で両方のランキングを並べて確認できます。

株価上昇を条件に含めるのには、機械的な理由があります。スクイーズとは、空売り方がポジションを手仕舞うために強いられる買い戻しです。空売りの手仕舞いは株式の買い戻しを意味し、価格がポジションに逆行して初めて始まります。ショートスクイーズの仕組みでは、GameStopの2021年の記録を追いながら、この一連の動きを数字で示しています。

ルールと、それぞれが除外するもの

スクリーニングは、数値を伴う意見です。ここでは、その条件を示します。

クエリ全決済ファイルからスクリーニング済みリストまで、ルールを一つずつ適用
ラベル銘柄
Every name in the settlement file22480
Liquid: five million shares a day, no leveraged funds697
Crowded: five or more days to cover87
Rising: a positive move over the price window36
各数値の背後にある正確な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
)
自分で実行する

Aug 14, 2026ファイルには22480銘柄が含まれています。流動性の下限と除外リストによって697銘柄となり、混雑度のしきい値で87銘柄まで絞り込まれ、上昇価格の条件を満たすのは36銘柄です。各しきい値は選択の結果であり、選択が異なればリストも変わります。だからこそ、ルールを脚注ではなく本文に明記しています。

各社の空売り比率

多くの人が確認するのは、浮動株に占める空売り残高の比率です。しかし、このデータには含まれていません。取引所のファイルにあるのは空売り株数と一日平均出来高で、発行済み株式数に関する情報は一切ありません。算出できるのは、各社の時価総額を株価で割って発行済み株式数を求め、それに対する空売り残高の比率です。

クエリ発行済み株式数(浮動株ではありません)に対する空売り比率で順位付けしたスクリーニング銘柄
ティッカー発行済み株式数に対する空売り比率(%)空売り株数(百万)発行済み株式数(百万)カバー日数
RIG24.1268.911176.1
SOC24.146.21925.7
CORZ19.763.43215.1
SBET18392176.9
GOSS17.886.84897.4
CLF14.281.15715.8
PTON13.9614395.5
MRNA13.252.83999.2
GME12544495.3
FOXA10.845.34208.1
各数値の背後にある正確な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
自分で実行する

RIGでは、発行済み株式数に対する空売り株数が24.1%に達した銘柄が上位を占めています。空売り株数は268.9百万株、発行済み株式数は1117百万株です。10行は、抽出対象のうち発行済み株式数が公表されている銘柄で、数値が大きいものを示しています。最後の銘柄でも10.8%となっています。この列は下限として読み取り、浮動株数そのものとみなしてはいけません。浮動株は、実際に市場で売買される株式だけを数え、インサイダー保有分やその他のロックアップ株を除外します。浮動株は分母が小さいため、浮動株に占める実際の空売り比率は、表示されたすべての数値を上回ります。どの程度上回るかは各社の株主構成によって異なり、このデータベースにはその情報がありません。

ショートの混雑は強まっているのか、解消しているのか

一つの約定は、一時点を切り取った静止画です。同じデータは数年前までさかのぼれるため、市場全体の動向はデータで確認できます。

クエリカバー日数が5日以上および10日以上の流動性の高い銘柄を、決済ごとに表示
決済日カバー日数5日以上の銘柄カバー日数10日以上の銘柄流動性の高い銘柄のカバー日数中央値
2026-02-275451.83
2026-03-135871.54
2026-03-317391.62
2026-04-156961.75
2026-04-3082111.85
2026-05-158382.02
2026-05-298441.88
2026-06-1597121.8
2026-06-309651.87
2026-07-1510362.27
2026-07-319232.15
2026-08-148882.16
各数値の背後にある正確な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回の決済では、カバーに五日以上かかる流動性の高い銘柄数が54から88へと動きました。分布の極端な側は依然としてかなり薄く、直近の約定ではカバーに十日以上かかる銘柄は8銘柄でした。流動性の高い銘柄の中央値は2.16日であり、五日という基準が恣意的ではなく意味を持つ理由はここにあります。カバー日数が最も長い銘柄のページでは、この極端な裾野を独自に追跡しています。

その後に通常起きたこと

このような画面は簡単に作れる一方、結果を過大解釈しやすいものです。そこで、ファイル内の同じ位置から同じ画面を逆向きに実行します。過去一年間の各決済時点について、その時点で混雑度の基準を通過し、そこから二十暦日後までの六セッションに上昇していた銘柄を抽出します。これは現在このページが示している位置に当たります。その後、各銘柄が続く三十暦日でどのように推移したかを測定します。

クエリ過去にスクリーニングされた全銘柄を、その後30日間の値動き別に表示
30日間の変動銘柄数累積構成比(%)
Fell more than 20%7211.5
Fell 10% to 20%9727
Fell 0% to 10%15852.2
Rose 0% to 10%16578.5
Rose 10% to 20%6188.2
Rose more than 20%74100
各数値の背後にある正確な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
自分で実行する

52.2%の銘柄・決済時点の組み合わせは、三十日後に下落していました。これはほぼコイントスと同じ確率です。このページの率直な結論は、空売りはしばしば正しく、混雑度が高く上昇している状態は投資機会ではなく、単なる局面を示すということです。ショートスクイーズが起きれば、分布の両端に表れます。しかし、どちらの端も薄い分布です。72の観測では、下落率が五分の一を超えました。74は五分の一を超えて上昇しました。これは、本格的なショートスクイーズが起きた場合に入る範囲です。88.2%はそこまで到達しませんでした。

このパネルは、売買結果ではなく分布として捉えてください。取引コスト、借株料、ポジションサイズを考慮しておらず、抽出された各銘柄を同じ比重で扱っています。両方の計測は各決済日の二十暦日後を起点としており、このページで使っている位置と同じです。そのため、抽出された各銘柄の価格は、読者が確認できた時点のものです。決済データ一年分では、サンプルは少数です。

測定方法

上記の数値の基礎となるルールと除外条件を示します。

  • 空売り残高ファイルは取引所の報告に基づき、月二回更新されます。 ここで使用した取引記録の決済日はAug 14, 2026で、22日前です。米国では、日次で開示される空売り残高はありません。公表されているのは、証券貸借データからベンダーがモデル算出した推計値だけです。
  • 流動性の下限は、平均日次出来高五百万株です。 同じファイルに記載された数値を使います。この条件がないと、出来高がほぼゼロであるために「カバー日数」が異常に大きく見える小型株でリストが埋まります。
  • 混雑度の基準は、カバー日数五日以上です。 上記に示した流動性銘柄の中央値を大きく上回る水準です。
  • モメンタム要因は、直近の完全な通常取引セッション六回の終値間の変化です。 これは五セッションのリターンに相当します。ベンチマークのティックデータに一日分の分足データが完全に取り込まれた時点で、そのセッションを対象期間に含めます。データフィードへの取り込み途中のセッションは、未完成の状態で測定せず、保留します。そのため、そのセッションが終了していても、対象期間の終点が暦日上の直近セッションより一つ後ろになる場合があります。価格は通常取引セッションの終値です。
  • 両方の日付には上限と下限を設けています。 上部パネルには各入力データの経過日数が保存され、その経過日数にも妥当性の範囲を設定しています。決済日の記録が一カ月を超えて古い場合、または価格データが通常の取り込み遅延を超えて遅れている場合、このページは確認待ちとなります。古い日付を新しい見出しの下で公表することはありません。
  • 除外条件があります。 レバレッジ型およびインバース型のETFは、空売り残高の大部分がヘッジ目的によるものと考えられるため、すべてのパネルから除外します。また、ベンダーのフィードが二社で再利用している曖昧な銘柄コードも一つ除外します。価格変動を測定するパネルでは、そのパネルの測定期間内に株式分割が行われる銘柄も除外します。株式分割によって大幅な値動きが生じたように見えるためです。バックテストでは、この判定を決済日ごとに実施します。したがって、ある月の株式分割によって、他の月におけるその銘柄の観測値まで除外されることはありません。
  • このファイルには、事業会社とともにファンドも含まれます。 債券ETFや指数ETFの大きな空売りポジションは、誰かが下落を見込んでいる結果ではなく、設定・解約の決済実務から生じている場合があります。
  • このファイルには浮動株数も発行済み株式数もなく、データウェアハウス内のどこにもオプションの建玉はありません。 上記の発行済み株式数の列は、別のファンダメンタルズ・テーブルに基づいています。そのため、公表時価総額のない銘柄は、このパネルから除外されます。
  • ここに示す内容は、予測でも推奨でもありません。 測定可能な条件を示し、結果パネルを併記したものです。

よくある質問

ショートスクイーズ候補はどのように見つけますか?

取引所が公表する空売り残高ファイルを調べ、株式の一日当たり出来高に対して空売り残高が大きい銘柄を抽出します。次に、売買に十分な流動性があり、株価がすでに上昇しているかを確認します。Aug 14, 2026の空売り残高ファイルを使い、カバー日数が五日以上、平均一日出来高が500万株、五セッションの値動きがプラスという条件でスクリーニングした結果、36銘柄が残りました。

どの程度の空売り比率でスクイーズが起きますか?

決まった数値はありません。特定の数値を挙げる人は、推測しているにすぎません。スクイーズはさまざまな水準から始まっていますが、実際には何も起きないケースの方がはるかに多いです。過去一年間の決済時点の約定データでは、このスクリーニングで抽出された銘柄のうち、30日後に下落していた割合は52.2%でした。高い空売り残高は前提条件であって、引き金ではありません。

空売り残高のデータはどの程度古いものですか?

ここで確認できる最新の決済日はAug 14, 2026で、22日前です。株価データはSep 3, 2026までを対象としています。この間隔はデータ配信の遅れではなく、報告サイクルによるものです。空売り残高は月二回集計され、各決済日からおよそ八営業日後に公表されます。そのため、どの市場の空売り残高も公表時点ですでに数週間前のデータです。

現在、最も空売りされている銘柄はどれですか?

未加工のランキングは、カバー日数別と空売り株数別の二種類があり、最も空売りされている銘柄のページに掲載しています。このページは、より限定された問いに答えるものです。Aug 14, 2026のファイルに含まれ、かつ株価も上昇している銘柄の中では、ENBがカバー日数9.8日で最も空売りが集中しています。ただし、これはスクリーニング上の首位であり、市場全体で最も空売りされている銘柄を意味するものではありません。


各パネルは、取引所が公表するファイルを対象とした、保存・バージョン管理済みのクエリです。各テーブルの下にあるSQLを展開するか、Strasmore terminalで独自の条件を設定してスクリーニングを実行できます。