Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-08-07

क्या स्टॉक गैप हमेशा भर जाते हैं? डेटा का विश्लेषण

क्या स्टॉक गैप हमेशा भर जाते हैं? किसी निश्चित समय सीमा में ऐसा नहीं होता है। लार्ज कैप शेयरों के लिए पांच, बीस और साठ सत्रों के फिल रेट और इसके पीछे का डेटा यहाँ विस्तार से देखें।

34%
क्या स्टॉक गैप हमेशा भर जाते हैं?

ट्रेडिंग के लिए पर्याप्त छोटी समय-सीमा के भीतर ऐसा हमेशा नहीं होता है। यह दावा तभी टिक पाता है जब कोई इसकी समय-सीमा स्पष्ट न करे।

गैप आज के ओपन और कल के रेगुलर-सेशन क्लोज के बीच की दूरी है।

फिल (fill) वह क्षण है जब कीमत वापस उस पिछले क्लोज के स्तर पर ट्रेड करती है।

पूरा तर्क इस बात पर निर्भर करता है कि पाठक इसके लिए कितना इंतजार करने को तैयार है।

बाजार की वास्तविकता
बाजार की गतिशीलता
गैप का भरना किसी निश्चित समय सीमा में अनिवार्य नहीं है। बाजार की अस्थिरता और लिक्विडिटी अक्सर इस प्रक्रिया को प्रभावित करती है। ट्रेडर्स को यह ध्यान रखना चाहिए कि गैप फिलिंग एक सांख्यिकीय संभावना है, न कि कोई गारंटीकृत नियम।

गैप और फिल की परिभाषा

गैप की गणना पिछले क्लोज (prior close) के मुकाबले आज के ओपन (open) से की जाती है। पिछला सत्र एक कीमत पर समाप्त हुआ, आज का सत्र दूसरी कीमत पर खुला, और इन दोनों के बीच का अंतर ही गैप है। यह पिछले दिन के इंट्राडे हाई या लो से मापी गई दूरी नहीं है। वह एक अलग और कहीं अधिक आसान लक्ष्य है, और एक को दूसरे से बदलने का परिणाम यह होता है कि एक "गैप" चुपचाप कुछ ऐसा बन जाता है जो किसी भी सामान्य दिन दोपहर के भोजन तक भर जाता है। छोटे गैप लगभग हर सत्र में दिखाई देते हैं: अन्य टाइम ज़ोन में ट्रेडिंग, इंडेक्स में बदलाव, किसी विशेष शेयर से जुड़ी खबरें, और ex-dividend समायोजन, ये सभी अमेरिकी बाजार के बंद रहने के दौरान उचित मूल्य (fair price) को बदल देते हैं। स्टॉक रातों-रात गैप क्यों बनाते हैं में इस बात की चर्चा है कि यह ओवरनाइट रीप्राइसिंग कहाँ से आती है।

फिल (fill) वह पहला क्षण है जब स्टॉक वापस पिछले क्लोजिंग प्राइस के स्तर पर ट्रेड करता है। यह परिभाषा तब तक अधूरी है जब तक इसके साथ कोई समय-सीमा न जुड़ी हो। असीमित समय-सीमा पर, एक लिक्विड स्टॉक लगभग किसी भी स्तर को पार कर लेता है जिसका नाम कोई पाठक ले, जो "गैप हमेशा भरते हैं" (gaps always fill) वाली बात को सत्य के बजाय एक अविश्वसनीय दावा बना देता है। नीचे दिए गए प्रत्येक आंकड़े के साथ एक निर्धारित समय-सीमा दी गई है।

इस पेज पर एक नमूना लिया गया है: आठ लार्ज-कैप अमेरिकी स्टॉक, जनवरी 2021 से फरवरी 2026 तक के गैप डेज़, और रेगुलर सेशन के एक-मिनट के हाई और लो के आधार पर फिल का परीक्षण। शून्य दशमलव दो पांच प्रतिशत (0.25%) से कम के गैप को राउंडिंग मानकर हटा दिया गया है।

क्या स्टॉक गैप हमेशा उसी दिन भर जाते हैं?

गैप के आकार से शुरुआत करें। प्रत्येक गैप को उसके आकार के अनुसार वर्गीकृत करें, और फिर यह देखें कि क्या उसी सत्र के समाप्त होने से पहले पिछली क्लोजिंग कीमत को दोबारा छुआ गया था।

क्वेरीगैप आकार के अनुसार सेम-सेशन गैप फिल दर, आठ लार्ज कैप, 2021 से 2026
हर आंकड़े के पीछे का पूरा SQL
WITH sessions AS
(
    SELECT
        ticker,
        toDate(toTimeZone(window_start, 'America/New_York')) AS d,
        argMin(toFloat64(open), window_start)                AS session_open,
        argMax(toFloat64(close), window_start)               AS session_close,
        toFloat64(max(high))                                 AS session_high,
        toFloat64(min(low))                                  AS session_low
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'JPM', 'KO', 'WMT', 'XOM')
      AND window_start >= '2021-01-01'
      AND window_start <  '2026-07-01'
      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, d
),
gapped AS
(
    SELECT
        d,
        session_open,
        session_high,
        session_low,
        lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY d ASC
            ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prior_close
    FROM sessions
),
measured AS
(
    SELECT
        abs(100 * (session_open / prior_close - 1)) AS gap_pct,
        toUInt8(if(session_open > prior_close,
                   session_low  <= prior_close,
                   session_high >= prior_close))    AS filled_same_session
    FROM gapped
    WHERE prior_close > 0
      AND d <= toDate('2026-02-28')
      AND abs(100 * (session_open / prior_close - 1)) >= 0.25
)
SELECT
    multiIf(gap_pct < 0.5, '0.25 to 0.5%',
            gap_pct < 1,   '0.5 to 1%',
            gap_pct < 2,   '1 to 2%',
            gap_pct < 4,   '2 to 4%',
                           '4% or more')         AS gap_bucket,
    count()                                      AS gap_days,
    round(100 * avg(filled_same_session), 1)     AS same_session_fill_pct
FROM measured
GROUP BY gap_bucket
ORDER BY min(gap_pct) ASC
Run this yourself

नमूने में सबसे छोटे गैप, जो शून्य दशमलव दो पांच प्रतिशत से शून्य दशमलव पांच प्रतिशत के बीच थे, वे 74.6% बार उसी सत्र में भर गए, जिसके लिए 2381 उदाहरण देखे गए। चार प्रतिशत या उससे अधिक के गैप 14.8% बार उसी सत्र में भर गए। चार्ट पर नीचे की ओर ढलान ही इस विश्लेषण का मुख्य निष्कर्ष है: गैप जितना छोटा होता है, स्टॉक के दिन के दौरान वापस उस स्तर पर आने की संभावना उतनी ही अधिक होती है। इसे दूसरे शब्दों में कहें तो छोटे गैप केवल बाजार का शोर (noise) होते हैं और शोर अक्सर उलट जाता है।

गैप भरने में कितना समय लगता है?

समय सीमा बढ़ाने पर फिल रेट केवल बढ़ सकता है। एक लंबी अवधि अधिक फिल जोड़ती है, उन्हें कभी कम नहीं करती। प्रश्न यह है कि कुल वॉल्यूम का कितना हिस्सा इतना देर से आता है कि वह बेकार हो जाता है।

क्वेरी1%+ गैप का फिल शेयर, प्रतीक्षा अवधि के अनुसार
हर आंकड़े के पीछे का पूरा SQL
WITH sessions AS
(
    SELECT
        ticker,
        toDate(toTimeZone(window_start, 'America/New_York')) AS d,
        argMin(toFloat64(open), window_start)                AS session_open,
        argMax(toFloat64(close), window_start)               AS session_close,
        toFloat64(max(high))                                 AS session_high,
        toFloat64(min(low))                                  AS session_low
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'JPM', 'KO', 'WMT', 'XOM')
      AND window_start >= '2021-01-01'
      AND window_start <  '2026-07-01'
      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, d
),
paths AS
(
    SELECT
        d,
        session_open,
        session_high,
        session_low,
        lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY d ASC
            ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)                                                          AS prior_close,
        min(session_low)  OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING)   AS low_5,
        max(session_high) OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING)   AS high_5,
        min(session_low)  OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN CURRENT ROW AND 19 FOLLOWING)  AS low_20,
        max(session_high) OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN CURRENT ROW AND 19 FOLLOWING)  AS high_20,
        min(session_low)  OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN CURRENT ROW AND 59 FOLLOWING)  AS low_60,
        max(session_high) OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN CURRENT ROW AND 59 FOLLOWING)  AS high_60
    FROM sessions
),
gaps AS
(
    SELECT
        session_open > prior_close AS gap_up,
        prior_close,
        session_low,
        session_high,
        low_5,
        high_5,
        low_20,
        high_20,
        low_60,
        high_60
    FROM paths
    WHERE prior_close > 0
      AND d <= toDate('2026-02-28')
      AND abs(100 * (session_open / prior_close - 1)) >= 1
),
flags AS
(
    SELECT arrayJoin([
        (1, '1 session',   toUInt8(if(gap_up, session_low <= prior_close, session_high >= prior_close))),
        (2, '5 sessions',  toUInt8(if(gap_up, low_5  <= prior_close, high_5  >= prior_close))),
        (3, '20 sessions', toUInt8(if(gap_up, low_20 <= prior_close, high_20 >= prior_close))),
        (4, '60 sessions', toUInt8(if(gap_up, low_60 <= prior_close, high_60 >= prior_close)))
    ]) AS f
    FROM gaps
)
SELECT
    tupleElement(f, 2)                        AS horizon,
    count()                                   AS gaps_measured,
    round(100 * avg(tupleElement(f, 3)), 1)   AS filled_pct
FROM flags
GROUP BY horizon
ORDER BY min(tupleElement(f, 1)) ASC
Run this yourself

2191 प्रतिशत या उससे अधिक के गैप में, 34% उसी सत्र के भीतर भर गए और 88.7% ने 60 sessions के भीतर फिल पूरा कर लिया। दूसरा आंकड़ा वह है जिसे आमतौर पर उद्धृत किया जाता है, जिसमें समय सीमा का उल्लेख छोड़ दिया जाता है। साठ सत्र लगभग तीन ट्रेडिंग महीनों के बराबर होते हैं, जो एक दिन के उतार-चढ़ाव पर आधारित पोजीशन के लिए बहुत लंबी अवधि है। यदि कोई गैप सैंतालीसवें दिन भरता है, जबकि स्टॉक पहले ही दूसरी दिशा में काफी दूर जा चुका है, तो भी वह उस आंकड़े में भरे हुए गैप के रूप में गिना जाता है।

नॉइज़ गैप और इंफॉर्मेशन गैप दो अलग-अलग स्थितियां हैं

शांत दिन पर सामान्य वॉल्यूम के साथ आने वाला गैप केवल कीमत का एक छोटा समायोजन होता है। कमाई की खबरों या अधिग्रहण के प्रस्ताव पर आने वाला गैप कंपनी के मूल्यांकन में बदलाव को दर्शाता है, और ऐसी स्थिति में वापस लौटने के लिए कोई पुरानी कीमत मौजूद नहीं होती। वॉल्यूम इन दोनों के बीच स्पष्ट अंतर करता है: जब पूरा बाजार किसी शेयर की कीमत को फिर से निर्धारित करना चाहता है, तो उस पर सामान्य से कई गुना अधिक ट्रेड होते हैं।

क्वेरीगैप डे के वॉल्यूम के अनुसार गैप फिल दर
हर आंकड़े के पीछे का पूरा SQL
WITH sessions AS
(
    SELECT
        ticker,
        toDate(toTimeZone(window_start, 'America/New_York')) AS d,
        argMin(toFloat64(open), window_start)                AS session_open,
        argMax(toFloat64(close), window_start)               AS session_close,
        toFloat64(max(high))                                 AS session_high,
        toFloat64(min(low))                                  AS session_low,
        sum(toFloat64(volume))                               AS session_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'JPM', 'KO', 'WMT', 'XOM')
      AND window_start >= '2021-01-01'
      AND window_start <  '2026-07-01'
      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, d
),
paths AS
(
    SELECT
        d,
        session_open,
        session_high,
        session_low,
        session_volume,
        lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY d ASC
            ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)                                                         AS prior_close,
        avg(session_volume) OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN 21 PRECEDING AND 2 PRECEDING) AS normal_volume,
        min(session_low)  OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN CURRENT ROW AND 19 FOLLOWING) AS low_20,
        max(session_high) OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN CURRENT ROW AND 19 FOLLOWING) AS high_20
    FROM sessions
),
measured AS
(
    SELECT
        session_volume / normal_volume AS volume_ratio,
        toUInt8(if(session_open > prior_close, session_low <= prior_close, session_high >= prior_close)) AS filled_same_session,
        toUInt8(if(session_open > prior_close, low_20 <= prior_close, high_20 >= prior_close))           AS filled_20_sessions
    FROM paths
    WHERE prior_close > 0
      AND normal_volume > 0
      AND d >= toDate('2021-03-01')
      AND d <= toDate('2026-02-28')
      AND abs(100 * (session_open / prior_close - 1)) >= 1
)
SELECT
    multiIf(volume_ratio < 1.5, 'Under 1.5x normal',
            volume_ratio < 3,   '1.5x to 3x normal',
                                '3x or more')        AS volume_regime,
    count()                                          AS gap_days,
    round(100 * avg(filled_same_session), 1)         AS same_session_fill_pct,
    round(100 * avg(filled_20_sessions), 1)          AS within_20_sessions_fill_pct
FROM measured
WHERE isFinite(volume_ratio)
GROUP BY volume_regime
ORDER BY min(volume_ratio) ASC
Run this yourself

सामान्य टर्नओवर के डेढ़ गुना से कम वॉल्यूम पर एक प्रतिशत या उससे अधिक के गैप उसी सत्र में 35.9% बार भर गए। तीन गुना या उससे अधिक के सामान्य वॉल्यूम पर इसी आकार के गैप उसी सत्र में 15.3% बार भरे, और 45.8% बार वे बीस सत्रों के भीतर भरे, जो कुल मामलों का 59 हिस्सा था। भारी वॉल्यूम वाला समूह वह है जहां कमाई से जुड़े गैप और सौदों से जुड़े गैप आते हैं। दोनों समूहों का औसत निकालकर एक संख्या बताना किसी भी स्थिति का सही वर्णन नहीं करता है।

सत्र के शुरुआती मिनट गैप आंकड़ों को क्यों बिगाड़ते हैं

सुबह नौ बजकर इकतीस मिनट पर दर्ज किया गया एक ट्रेड (fill) काफी अस्थिर होता है। शुरुआती कीमत एक नीलामी प्रक्रिया से निकलती है, जो एक एकल बैच क्रॉस है और रात भर कतार में लगे सभी ऑर्डर्स के लिए एक ही कीमत तय करती है। हमारी ओपनिंग ऑक्शन व्याख्या इस प्रक्रिया के तंत्र को विस्तार से समझाती है। उस क्रॉस के बाद के मिनटों में, कोटेड स्प्रेड दिन के सबसे चौड़े स्तर पर होते हैं और एक छोटा सा ट्रेड (print) ऐसा हाई या लो दर्ज कर सकता है जिस पर कोई वास्तविक वॉल्यूम ट्रेड नहीं हुआ हो। ओपनिंग पर स्प्रेड का चौड़ा होना इस बात को कवर करता है कि वहां कोटेशन इतना कम क्यों होता है।

नीचे दिया गया चार्ट बास्केट के अपने टेप पर स्थिति को दर्शाता है: वर्ष दो हजार पच्चीस तक, पंद्रह मिनट के क्लॉक बकेट के अनुसार, औसत एक-मिनट हाई-लो रेंज बेसिस पॉइंट्स में (एक बेसिस पॉइंट एक प्रतिशत का सौवां हिस्सा होता है)।

क्वेरीदिन के समय के अनुसार औसत वन-मिनट रेंज और वॉल्यूम, 2025
हर आंकड़े के पीछे का पूरा SQL
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 15 MINUTE), '%H:%i') AS et_time,
    round(10000 * avg(toFloat64(high) / toFloat64(low) - 1), 1) AS avg_range_bps,
    round(avg(toFloat64(volume)) / 1000, 1)                     AS avg_volume_k
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'JPM', 'KO', 'WMT', 'XOM')
  AND window_start >= '2025-01-01'
  AND window_start <  '2026-01-01'
  AND toFloat64(low) > 0
  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 et_time
ORDER BY et_time ASC
Run this yourself

शुरुआती बकेट में प्रति मिनट औसत 24.4 बेसिस पॉइंट्स की रेंज होती है, जबकि 12:30 बकेट में यह 6.9 बेसिस पॉइंट्स है। शुरुआती बकेट में प्रति मिनट 303.9 हजार शेयर ट्रेड होते हैं, जबकि दूसरे बकेट में यह संख्या 69.6 हजार है। उस पहले बकेट के भीतर दर्ज किया गया कोई भी ट्रेड दिन की सबसे कम विश्वसनीय कीमतों पर आधारित होता है। ऊपर दिए गए सेम-सेशन आंकड़ों में वे मिनट शामिल हैं, जो उन्हें थोड़ा अधिक (high) दिखाते हैं, और यह चेतावनी हर सेम-डे ट्रेड आंकड़े पर लागू होती है, जिसमें यह भी शामिल है।

गैप को ट्रेड के रूप में देखने से पहले क्या जांचें

  1. समय-सीमा (Horizon)। बिना किसी समय-सीमा के फिल रेट (fill rate) कोई सांख्यिकीय डेटा नहीं है।
  2. जनसंख्या (Population)। क्या समाचारों के कारण आए गैप को सामान्य गैप से अलग किया गया था, और यह अंतर कैसे तय किया गया।
  3. मापन (Measurement)। क्या फिल की जांच वास्तविक ट्रेडेड रेंज के आधार पर की गई थी, और क्या सत्र के शुरुआती मिनटों को इसमें शामिल किया गया था।
  4. सर्वाइवर्स (Survivors)। क्या सैंपल में केवल वे शेयर शामिल हैं जो आज भी ट्रेड होते हैं, जिससे वे गैप चुपचाप हट जाते हैं जो कभी फिल नहीं हुए।

दावे का ईमानदार संस्करण नारे से कहीं अधिक सीमित है। सामान्य वॉल्यूम पर छोटे गैप अक्सर और जल्दी वापस अपनी पुरानी स्थिति में आ जाते हैं। भारी वॉल्यूम पर बड़े गैप कीमतों का पुनर्मूल्यांकन होते हैं जो अक्सर महीनों तक बने रहते हैं। कौन से शेयर गैप दिखा रहे हैं, इसका लाइव दृश्य देखने के लिए इस सप्ताह के सबसे बड़े स्टॉक मूवर्स पेज वर्तमान सप्ताह को ट्रैक करता है, और बाजार क्रैश से कैसे उबरते हैं इंडेक्स में गिरावट के लिए इसी समय-सीमा के अनुशासन को लागू करता है।

FAQ

Do stock gaps always get filled?

No. In the sample here, 88.7% of gaps of 1% or more traded back through the prior close within 60 sessions, which leaves a real share of them unfilled after about three trading months. The "always" version works only with no time limit attached, at which point it stops being testable.

How long does it take for a gap to fill?

It depends on the gap. Here, 34% of gaps of 1% or more filled inside the same session, and the remaining fills arrive across the following weeks and months. Small gaps concentrate in the same-day bucket, and the heavy-volume ones are the slowest.

What is the difference between a common gap and a breakaway gap?

Chart vocabulary splits gaps by context. A common gap opens on an ordinary day with ordinary volume and no specific news, while a breakaway gap opens on heavy volume alongside new information, often out of a price range the stock has held for a while. The volume split in the panel above is a measurable version of that same distinction.

Why do gap fill statistics vary so much between sources?

Four choices move the number a long way: the fill horizon, the basket of stocks, the period covered, and whether the gap is measured from the prior close or from the prior high and low. A quoted fill rate missing any of the four cannot be compared with another one.


How these numbers were measured

Sessions are built from one-minute bars inside regular trading hours in New York time. The opening price is the first regular-session bar's open, the close is the last bar's close, and the day's high and low are the extremes of those bars. Each gap is measured against the same ticker's previous session close.

The 5, 20 and 60 session horizons include the gap day itself. Gap days stop at the end of February 2026 while the tape runs through June 2026, so every gap in the horizon panel has at least sixty later sessions available and none is scored unfilled for want of data.

Normal volume in the third panel is the average regular-session volume over the 20 sessions ending two days before the gap, which keeps the gap day and the day before it out of their own benchmark.

The basket is eight liquid large caps. Thinner names gap more often and fill differently, so these rates do not carry over to small caps without re-running the same test on them.

Every panel here ships with the exact SQL beneath it. To run the same test on a ticker you follow, ask the question in plain English on the Strasmore terminal.

#gaps#gap fill#opening auction#overnight returns#technical analysis