Strasmore Research
मार्केट रीकैप Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-07-23 · data as of July 23, 2026 · refreshed weekly

इस हफ्ते के short squeeze stocks

इस सप्ताह के संभावित Short Squeeze स्टॉक्स की सूची देखें। इसमें Days to Cover और बढ़ती कीमतों के आधार पर सटीक डेटा और विश्लेषण दिया गया है।

Short squeeze stocks को दो मापदंडों पर परखा जाता है: पहला, स्टॉक के ट्रेडिंग वॉल्यूम की तुलना में बड़ी short position, और दूसरा, पहले से बढ़ती हुई कीमत। यह पेज Jun 30, 2026 को settle हुए नवीनतम exchange-reported short-interest file पर यह screen चलाता है, और Jul 21, 2026 को समाप्त होने वाले पांच sessions के दौरान price leg को मापता है। ये प्रक्रियाएं पिछले squeezes के समान हैं। यहाँ दी गई कोई भी जानकारी पूर्वानुमान नहीं है, और अत्यधिक short किए गए stocks में से अधिकांश कभी squeeze नहीं होते।

नामों से पहले तारीखें पढ़ें। नियमों के कारण इस पेज का short-interest वाला हिस्सा हफ्तों पुराना है, यह feed की कोई गलती नहीं है: brokers अपनी short positions FINRA को महीने में दो बार निर्धारित settlement dates पर रिपोर्ट करते हैं, और संकलित (compiled) file लगभग आठ business days बाद सार्वजनिक हो जाती है। किसी के लिए भी उपलब्ध सबसे ताज़ा डेटा Jun 30, 2026, 23 दिन पुराना है, जबकि price leg Jul 21, 2026 तक चलता है। उस अंतराल (gap) के भीतर short side ने क्या किया, वह इस screener सहित हर screener के लिए अदृश्य है। Why short interest data is always two weeks old रिपोर्टिंग चक्र को विस्तार से समझाता है।

क्वेरीप्रत्येक इनपुट और उसकी आयु (दिनों में)
हर आंकड़े के पीछे का पूरा 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

दो settlement prints 38 और 23 दिन पुराने हैं, जो कि twice-monthly counting cycle और compilation lag का योग है। Price tape 2 दिन पीछे है, और यह regulation के बजाय warehouse ingest lag के कारण है। दोनों की समय सीमा (bounds) होती है, इसलिए यदि कोई feed रुक जाता है, तो यह पेज पुराने डेटा को नए headline के साथ दोबारा प्रकाशित करने के बजाय वहीं रुक जाता है।

Short squeeze stocks की सूची: वर्तमान स्क्रीन

नीचे दिए गए सभी नाम एक ही मानदंडों को पूरा करते हैं: पांच मिलियन का औसत दैनिक वॉल्यूम, कवर करने के लिए पांच या अधिक दिन, और Jul 21, 2026 को समाप्त होने वाले पांच सत्रों में सकारात्मक उतार-चढ़ाव। 36 नाम इन सभी मानदंडों को पूरा करते हैं, और यहाँ उनमें से 12 सबसे अधिक भीड़भाड़ वाले नाम दिखाए गए हैं। Days to cover का अर्थ है कुल शॉर्ट सेल किए गए शेयरों को औसत दैनिक वॉल्यूम से विभाजित करना: यानी शॉर्ट साइड को अपनी पोजीशन वापस खरीदने के लिए स्टॉक के पूरे वॉल्यूम के कितने पूर्ण दिनों की आवश्यकता होगी।

क्वेरीSqueeze-shaped mechanics: तरल नामों में बढ़ता शॉर्ट इंटरेस्ट और बढ़ती कीमत
हर आंकड़े के पीछे का पूरा 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

यहाँ सबसे अधिक भीड़भाड़ वाला नाम, MPT, 138.1 मिलियन शॉर्ट सेल किए गए शेयरों पर 16.9 दिन का 'days to cover' दिखाता है, और यह Jul 21, 2026 को समाप्त होने वाले पांच सत्रों में 5.4% बढ़ा है। दिखाई गई अंतिम पंक्ति में 6.5 दिन का 'days to cover' है, जो स्क्रीन की सीमा के कारण है। रैंकिंग आकार के बजाय भीड़भाड़ (crowding) के आधार पर है, इसलिए कम वॉल्यूम वाले स्टॉक में एक मध्यम पोजीशन, अधिक वॉल्यूम वाले स्टॉक की बहुत बड़ी पोजीशन से ऊपर रहती है। आकार की रैंकिंग के लिए, the most shorted stocks right now दोनों लीडरबोर्ड को एक साथ दिखाता है।

कीमत बढ़ने के मानदंड का एक तकनीकी कारण है। शॉर्ट सेलर द्वारा अपनी पोजीशन बंद करने से होने वाली अनिवार्य खरीदारी को 'squeeze' कहा जाता है, और शॉर्ट पोजीशन बंद करने का अर्थ है स्टॉक को वापस खरीदना, जो तभी शुरू होता है जब कीमत पोजीशन के विपरीत दिशा में बढ़ती है। GameStop के 2021 के रिकॉर्ड के माध्यम से How a short squeeze works इस प्रक्रिया को अंकों में समझाता है।

नियम, और प्रत्येक नियम क्या हटाता है

एक स्क्रीन अंकों के साथ एक राय होती है, इसलिए डेटा यहाँ दिया गया है।

क्वेरीसेटलमेंट फ़ाइल से लेकर स्क्रीन की गई सूची तक, एक-एक नियम के अनुसार
हर आंकड़े के पीछे का पूरा 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 प्रतिभूतियाँ (securities) होती हैं। लिक्विडिटी फ्लोर (liquidity floor) और एक्सक्लूजन लिस्ट (exclusion list) 885 छोड़ती हैं, क्राउडिंग थ्रेशोल्ड (crowding threshold) इसे घटाकर 96 कर देता है, और राइजिंग-प्राइस गेट (rising-price gate) 36 छोड़ता है। प्रत्येक थ्रेशोल्ड एक विकल्प है, और अलग विकल्प से अलग सूची प्राप्त होती है। यही कारण है कि नियम फुटनोट के बजाय मुख्य पृष्ठ पर दिए गए हैं।

प्रत्येक कंपनी की कितनी मात्रा शॉर्ट सेल की गई है

अधिकांश लोग 'float' के प्रतिशत के रूप में 'short interest' खोजते हैं, लेकिन इस डेटा में वह उपलब्ध नहीं है। एक्सचेंज फाइल में शॉर्ट किए गए शेयरों और औसत दैनिक वॉल्यूम की रिपोर्ट दी गई है, इसमें किसी भी प्रकार की शेयर संख्या नहीं है। इससे केवल कुल 'shares outstanding' के मुकाबले पोजीशन का पता लगाया जा सकता है, जिसके लिए प्रत्येक कंपनी के मार्केट वैल्यू को उसके शेयर मूल्य से विभाजित किया जाता है।

क्वेरीShort interest और 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 इस सूची में सबसे ऊपर है, जिसमें 'shares outstanding' का 26.3% हिस्सा शॉर्ट सेल किया गया है: 113 मिलियन कुल शेयरों के मुकाबले 29.9 मिलियन शेयर। दिखाए गए 10 पंक्तियाँ उन चुनिंदा नामों में सबसे अधिक रीडिंग हैं जिनके पास प्रकाशित शेयर संख्या है, और अंतिम रीडिंग 15.5% है। इस कॉलम को एक न्यूनतम सीमा (floor) के रूप में देखें, इसे 'float' संख्या न मानें। Float में केवल वे शेयर शामिल होते हैं जो वास्तव में हाथों बदलते हैं, इसमें 'insider stakes' और अन्य 'locked-up holdings' को हटा दिया जाता है। 'Float' का मान कम होता है, इसलिए 'float' के मुकाबले शॉर्ट सेल किए गए शेयरों का वास्तविक प्रतिशत यहाँ दिखाए गए सभी आंकड़ों से अधिक है। यह अंतर प्रत्येक कंपनी के स्वामित्व पर निर्भर करता है, जिसका डेटा इस डेटाबेस में उपलब्ध नहीं है।

क्या शॉर्ट क्राउडिंग बढ़ रही है या घट रही है?

एक डेटा पॉइंट केवल एक स्थिर चित्र है। चूंकि वही डेटा वर्षों पुराना है, इसलिए बाजार-व्यापी प्रश्न का उत्तर डेटा में मौजूद है।

क्वेरी5+ और 10+ दिनों के days to cover वाले तरल नाम, प्रत्येक सेटलमेंट के अनुसार
हर आंकड़े के पीछे का पूरा 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 सेटलमेंट्स में, पांच या अधिक दिनों के 'days to cover' वाले लिक्विड नामों की संख्या 58 से बढ़कर 96 हो गई है। वितरण का दुर्लभ सिरा काफी पतला बना हुआ है: नवीनतम डेटा के अनुसार 5 नाम ऐसे थे जिनका 'days to cover' दस या उससे अधिक था। मीडियन लिक्विड नाम 1.87 दिन है, जो पांच-दिन की सीमा को मनमाना बनाने के बजाय सार्थक बनाता है। सबसे अधिक days-to-cover वाले स्टॉक्स पेज इस चरम सिरे को अलग से ट्रैक करता है।

इसके बाद आमतौर पर क्या हुआ

इस तरह के स्क्रीन बनाना और इनका गलत अर्थ निकालना आसान है। इसलिए, यहाँ वही स्क्रीन पीछे की ओर (backward) से दिखाई गई है, जो फ़ाइल से समान ऑफ़सेट पर है। पिछले एक वर्ष के प्रत्येक settlement print के लिए, उन नामों को चुनें जिन्होंने उस print पर crowding gate पार किया था और जो उसके बीस कैलेंडर दिन बाद समाप्त होने वाले छह सत्रों (sessions) में बढ़ रहे थे। यह वही समय है जब यह पेज आज स्थित है। इसके बाद, अगले 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

उन name-and-settlement observations में से 51.7% का मूल्य 30 दिनों बाद कम हो गया। यह लगभग 50-50 (coin flip) के बराबर है। इस पेज का वास्तविक निष्कर्ष यही है: short sellers अक्सर सही होते हैं, और crowded-plus-rising एक सेटअप को दर्शाता है, न कि किसी edge को। squeeze वहीं दिखाई देगा जहाँ tails होती हैं, और दोनों ही बहुत कम हैं। 68 observations में एक-तिहाई से अधिक की गिरावट आई; 87.8% observations कभी उस स्तर तक नहीं पहुँचे; जबकि 73 में एक-तिहाई से अधिक की वृद्धि हुई, जो कि एक वास्तविक squeeze की श्रेणी है।

इस पैनल को ट्रेडिंग परिणाम के बजाय एक distribution के रूप में देखें। इसमें लागत, borrow fees और position sizing को शामिल नहीं किया गया है, और यह प्रत्येक चिह्नित नाम को समान महत्व देता है। दोनों हिस्से प्रत्येक settlement date के बीस कैलेंडर दिन बाद के हैं, जो कि इसी पेज द्वारा उपयोग किया जाने वाला समान ऑफ़सेट है। इसलिए, प्रत्येक चिह्नित नाम उन कीमतों पर आधारित है जिन्हें एक पाठक देख सकता था। एक वर्ष के settlements का नमूना (sample) छोटा है।

इसे कैसे मापा जाता है

ऊपर दिए गए आंकड़ों के पीछे के प्रत्येक नियम और अपवर्जन (exclusion) का विवरण।

  • Short-interest फ़ाइल एक्सचेंज द्वारा रिपोर्ट की जाती है और महीने में दो बार आती है। यहाँ उपयोग किया गया डेटा Jun 30, 2026, 23 दिन पहले का है। US में शॉर्ट इंटरेस्ट का कोई दैनिक घोषित नंबर नहीं होता है, केवल प्रतिभूति-ऋण (securities-lending) डेटा से मॉडल किए गए वेंडर अनुमान होते हैं।
  • Liquidity floor: औसत दैनिक वॉल्यूम के पांच मिलियन शेयर, जैसा कि उसी फ़ाइल में रिपोर्ट किया गया है। इसके बिना, सूची में ऐसी microcaps भर जाएंगी जिनका अत्यधिक 'days-to-cover' डेटा शून्य वॉल्यूम के कारण गलत संकेत देता है।
  • Crowding threshold: पांच या अधिक days to cover, जो ऊपर दिखाए गए लिक्विड मीडियन से काफी अधिक है।
  • Momentum leg: पिछले छह पूर्ण नियमित सत्रों के क्लोजिंग प्राइस के बीच का परिवर्तन, जो कि पांच-सत्र रिटर्न है। एक सत्र विंडो में तभी शामिल होता है जब बेंचमार्क टेप में उसके लिए पूरे दिन के मिनट बार (minute bars) उपलब्ध हों। यदि कोई सत्र अभी डेटा फीड में आ रहा है, तो उसे अधूरा मापने के बजाय रोक दिया जाता है, ताकि विंडो कैलेंडर से एक सत्र पीछे रह सके, भले ही वह सत्र बंद हो चुका हो। कीमतें नियमित सत्र के क्लोजिंग प्राइस हैं।
  • दोनों तिथियां सीमित (bounded) हैं। ऊपर दिया गया पैनल प्रत्येक इनपुट की आयु दिनों में संग्रहीत करता है, और उन आयु सीमाओं में तर्कसंगतता (sanity bounds) होती है। एक महीने से अधिक पुराना सेटलमेंट प्रिंट, या सामान्य डेटा अंतराल (ingest lag) से अधिक पीछे का प्राइस टेप, इस पेज को समीक्षा के लिए रोक देता है, ताकि ताज़ा हेडलाइन के नीचे पुराना डेटा प्रकाशित न हो।
  • Exclusions (अपवर्जन)। Leveraged और inverse exchange-traded funds को प्रत्येक पैनल से हटा दिया जाता है (उनका शॉर्ट इंटरेस्ट मुख्य रूप से हेजिंग का परिणाम है), साथ ही एक संदिग्ध सिंबल को भी हटा दिया जाता है जिसका वेंडर फीड दो कंपनियों के लिए उपयोग किया गया है। जो पैनल प्राइस मूव को मापते हैं, वे उस नाम को भी हटा देते है जिसका स्टॉक स्प्लिट उसी पैनल की माप विंडो के भीतर आता है, क्योंकि स्प्लिट एक बड़े मूव का भ्रम पैदा करता है। बैकटेस्ट में, यह टेस्ट प्रति सेटलमेंट चलता है, इसलिए एक महीने में होने वाला स्प्लिट दूसरे महीनों से किसी नाम के ऑब्जर्वेशन को कभी नहीं हटाता है।
  • Funds इस फ़ाइल में ऑपरेटिंग कंपनियों के साथ रहते हैं। एक बॉन्ड या इंडेक्स ETF में एक बड़ी शॉर्ट पोजीशन हो सकती है जो किसी के दांव लगाने के बजाय creation-and-redemption प्रक्रिया का परिणाम होती है।
  • इस फ़ाइल में कोई float या share count नहीं है, और डेटाबेस में कहीं भी options open interest नहीं है। ऊपर दिया गया shares-outstanding कॉलम एक अलग fundamentals टेबल से आता है, इसलिए बिना प्रकाशित मार्केट वैल्यू वाला नाम उस पैनल से बाहर हो जाता है।
  • यहाँ दी गई कोई भी चीज़ भविष्यवाणी या सिफारिश नहीं है। यह मापने योग्य स्थितियों का वर्णन करता है, जिसके साथ परिणाम पैनल (outcome panel) जुड़ा हुआ है।

FAQ

आप short squeeze उम्मीदवारों की पहचान कैसे करते हैं?

एक्सचेंज द्वारा रिपोर्ट किए गए short-interest फ़ाइल को स्कैन करें। ऐसी पोजीशन खोजें जो स्टॉक के दैनिक वॉल्यूम के मुकाबले बड़ी हो। केवल उन्हीं नामों को चुनें जिनमें ट्रेड करने के लिए पर्याप्त liquidity हो, फिर जांचें कि क्या कीमत पहले से बढ़ रही है। Jun 30, 2026 short-interest फ़ाइल के इस स्क्रीन में पांच या अधिक दिनों के cover, पांच मिलियन औसत दैनिक वॉल्यूम और पांच सत्रों की सकारात्मक बढ़त का उपयोग किया गया है, जिससे 36 नाम प्राप्त हुए।

किस short interest प्रतिशत से squeeze होता है?

इसके लिए कोई निश्चित संख्या नहीं है, और जो कोई भी कोई संख्या बताता है वह केवल अनुमान लगा रहा है। Squeezes विभिन्न स्तरों से शुरू हुए हैं, और अक्सर कुछ भी नहीं होता है: पिछले एक वर्ष के settlement prints के अनुसार, इस स्क्रीन द्वारा चिह्नित किए गए 51.7% नाम 30 दिनों बाद कम कीमत पर थे। उच्च short interest एक पूर्व शर्त है, यह कभी भी trigger नहीं होता।

short interest डेटा कितना पुराना है?

यहाँ उपलब्ध नवीनतम settlement Jun 30, 2026 का है, जो 23 दिन पुराना है, और price data Jul 21, 2026 तक है। यह अंतर reporting cycle के कारण है, न कि पुराने डेटा के कारण: पोजीशन की गिनती महीने में दो बार की जाती है और प्रत्येक settlement date के लगभग आठ व्यावसायिक दिनों के बाद प्रकाशित की जाती है। इसलिए, कहीं भी कोई भी short-interest आंकड़ा मिलने पर वह हफ्तों पुराना होता है।

वर्तमान में सबसे अधिक short किए गए स्टॉक कौन से हैं?

बिना फिल्टर वाले leaderboard, एक days to cover के आधार पर और दूसरा raw shares short के आधार पर, the most shorted stocks page पर उपलब्ध हैं। यह पेज एक सीमित प्रश्न का उत्तर देता है: Jun 30, 2026 फ़ाइल के उन नामों में जिनकी कीमत भी बढ़ रही है, सबसे अधिक crowded MPT है जिसमें 16.9 days to cover हैं, जो कि market का सबसे अधिक short किया गया स्टॉक होने के बजाय एक screen leader है।


प्रत्येक पैनल एक्सचेंज द्वारा रिपोर्ट की गई फ़ाइल पर एक संग्रहीत, versioned query है। किसी भी table के नीचे SQL को विस्तार से देखें, या Strasmore terminal पर अपने स्वयं के thresholds के साथ screen चलाएं।