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

האם גאפים במניות תמיד נסגרים? ניתוח נתונים

האם גאפים במניות תמיד נסגרים? לא בטווח זמן קבוע. בדקו את שיעורי הסגירה בתוך היום, חמישה, עשרים ושישים ימי מסחר עבור מניות גדולות, כולל שאילתות SQL לביצוע הבדיקה.

האם גאפים (פערים) במניות תמיד נסגרים? לא בטווח זמן קצר מספיק לצורכי מסחר, והטענה הזו שורדת בעיקר כל עוד איש אינו מנסה להוכיח אותה. גאפ הוא המרחק בין מחיר הפתיחה של היום לבין מחיר הסגירה של יום המסחר הקודם. סגירת גאפ היא הרגע שבו מחיר המניה חוזר ונסחר מעבר לאותו מחיר סגירה קודם, וכל הוויכוח נסוב סביב השאלה כמה זמן הקורא מוכן להמתין לכך.

מה נחשב לגאפ ומה נחשב לסגירה

גאפ נמדד מול מחיר הסגירה הקודם. יום המסחר אתמול הסתיים במחיר מסוים, היום נפתח במחיר אחר, וההפרש הוא הגאפ. זהו אינו המרחק מהשיא או מהשפל התוך-יומי של אתמול. זהו יעד שונה וקל בהרבה, והחלפת האחד בשני היא הדרך שבה "גאפ" הופך בשקט למשהו שנסגר עד ארוחת הצהריים בכל יום רגיל. גאפים קטנים מופיעים כמעט בכל יום מסחר: מסחר באזורי זמן אחרים, שינויים במדדים, חדשות על מניות ספציפיות והתאמות דיבידנד (ex-dividend) – כולם מזיזים את מחיר השוק בזמן שהבורסה בארה"ב סגורה. מדוע מניות יוצרות גאפים בלילה מסביר מהיכן מגיע תמחור מחדש זה.

סגירה היא הרגע הראשון שבו המניה נסחרת בחזרה מעבר למחיר הסגירה הקודם. הגדרה זו אינה שלמה ללא הגדרת לוח זמנים. בטווח זמן בלתי מוגבל, מניה נזילה תחצה כמעט כל רמה שהקורא יציין בנקודה כלשהי, מה שהופך את הטענה ש"גאפים תמיד נסגרים" לבלתי ניתנת להפרכה, ולאו דווקא לנכונה. כל נתון להלן מלווה בטווח זמן מוגדר.

דגימה אחת מלווה את העמוד: שמונה מניות Large-cap אמריקאיות, ימי גאפ מינואר 2021 ועד פברואר 2026, עם בדיקת סגירות מול שיאי ושפלי דקה בתוך יום המסחר הרגיל. גאפים הקטנים מ-0.25% הושמטו כעיגול נתונים.

האם גאפים במניות תמיד נסגרים באותו יום?

נתחיל בגודל. נקבץ כל גאפ לפי גודלו, ונבדוק האם מחיר הסגירה הקודם נגע שוב לפני סיום אותו יום מסחר.

שאילתהשיעור סגירת גאפ באותו יום לפי גודל הגאפ, שמונה מניות Large Cap, 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

הגאפים הקטנים ביותר במדגם, 0.25% עד 0.5%, נסגרו באותו יום מסחר ב-74.6% מהמקרים מתוך 2381 אירועים. גאפים של 4% ומעלה נסגרו באותו יום מסחר ב-14.8% מהמקרים. השיפוע במורד התרשים הוא עיקר הלקח: ככל שהגאפ קטן יותר, כך המניה נוטה לחזור ולחצות אותו במהלך היום לעיתים קרובות יותר – דרך אחרת לומר שגאפים קטנים הם "רעש", ורעש נוטה להתהפך.

כמה זמן לוקח לגאפ להיסגר?

הארכת לוח הזמנים רק תעלה את שיעור הסגירות. חלון זמן ארוך יותר מוסיף סגירות ולעולם אינו גורע אותן. השאלה היא כמה מהסך הכולל מגיע מאוחר מדי מכדי להיות שימושי.

שאילתהשיעור סגירת גאפים של 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 גאפים של 1% ומעלה, 34% נסגרו בתוך אותו יום מסחר ו-88.7% נסגרו בתוך 60 sessions. הנתון השני הוא זה שמצוטט בדרך כלל, ללא ציון טווח הזמן. שישים ימי מסחר הם בערך שלושה חודשי מסחר – החזקה ארוכה לפוזיציה המבוססת על סטייה של יום אחד. גאפ שנסגר ביום ה-47, לאחר שהמניה כבר נעה רחוק לכיוון השני, עדיין נספר כסגור בסטטיסטיקה הזו.

גאפי רעש וגאפי מידע הם שתי אוכלוסיות שונות

גאפ ביום שקט עם מחזור מסחר רגיל הוא התאמת מחיר קטנה. גאפ על רקע חדשות רווחים או הצעת רכש נושא בחובו שינוי בשווי החברה, ואין מחיר ישן לחזור אליו. מחזור המסחר מפריד בין השניים היטב: תמחור מחדש שהשוק כולו רוצה לסחור בו מייצר מחזורים הגבוהים פי כמה מהרגיל.

שאילתהשיעור סגירת גאפ לפי עוצמת מחזור המסחר ביום הגאפ
ה-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

גאפים של 1% ומעלה במחזור מסחר הנמוך מפי 1.5 ממחזור המניה הרגיל נסגרו באותו יום מסחר ב-35.9% מהמקרים. גאפים באותו גודל במחזור מסחר הגבוה פי שלושה מהרגיל או יותר נסגרו באותו יום מסחר ב-15.3% מהמקרים, ו-45.8% מהם נסגרו בתוך 20 ימי מסחר, מתוך 59 אירועים. קבוצת המחזור הגבוה היא המקום שבו נמצאים גאפי הרווחים וגאפי המיזוגים. ממוצע של שתי הקבוצות למספר אחד אינו מתאר אף אחת מהן.

מדוע הדקות הראשונות של יום המסחר מעוותות את סטטיסטיקת הגאפים

סגירה שנרשמה ב-9:31 בבוקר היא דבר שברירי. מחיר הפתיחה נובע ממכרז, הצלבה מרוכזת אחת שקובעת מחיר אחד לכל פקודה שהמתינה במהלך הלילה, והמדריך שלנו ל-מכרז הפתיחה מסביר את המכניקה הזו. בדקות שלאחר ההצלבה, מרווחי הציטוט (spreads) הם הרחבים ביותר ביום, וביצוע אחד קטן יכול לרשום שיא או שפל שאף כמות משמעותית לא נסחרה בו. המרווחים מתרחבים בפתיחה מסביר מדוע הציטוט דליל כל כך בשלב זה.

התרשים להלן מציג את התמונה על סרט המסחר של הסל: טווח שיא-שפל ממוצע לדקה בנקודות בסיס (נקודת בסיס אחת היא מאית האחוז), לפי חלונות זמן של 15 דקות, לאורך שנת 2025.

שאילתהממוצע טווח דקה ומחזור מסחר לפי שעה, 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 נקודות בסיס של טווח לדקה, לעומת 6.9 נקודות בסיס בחלון ה-12:30, על 303.9 אלף מניות לדקה לעומת 69.6 אלף. סגירה שנרשמה בתוך חלון הזמן הראשון נשענת על המחירים הפחות אמינים של היום. נתוני אותו יום מסחר לעיל כוללים את הדקות הללו, מה שמטה אותם מעט כלפי מעלה, והסתייגות זו תקפה לכל סטטיסטיקה של סגירה באותו יום, כולל זו.

מה לבדוק לפני שמתייחסים לגאפ כאל הזדמנות מסחר

  1. טווח הזמן. שיעור סגירה ללא מועד סיום אינו סטטיסטיקה.
  2. האוכלוסייה. האם גאפי חדשות הופרדו מגאפים שקטים, וכיצד נקבע הגבול ביניהם.
  3. המדידה. האם הסגירות נבדקו מול טווחי מסחר אמיתיים, והאם הדקות הראשונות של יום המסחר נכללו.
  4. השורדים. האם המדגם כולל רק מניות שנסחרות גם היום, מה שמוחק בשקט את הגאפים שמעולם לא נסגרו.

הגרסה הכנה של הטענה צרה יותר מהסיסמה. גאפים קטנים במחזור רגיל נוטים להתהפך לעיתים קרובות ובמהירות. גאפים גדולים במחזור גבוה הם תמחורים מחדש שלעיתים קרובות נשארים על כנם חודשים. לתצוגה חיה של המניות שיוצרות גאפים, דף התנודות הגדולות ביותר השבוע עוקב אחר השבוע הנוכחי, ו-כיצד שווקים מתאוששים מקריסות מיישם את אותה משמעת טווח זמן על ירידות במדדים.

שאלות נפוצות

האם גאפים במניות תמיד נסגרים?

לא. במדגם כאן, 88.7% מהגאפים של 1% ומעלה חזרו להיסחר מעבר למחיר הסגירה הקודם בתוך 60 sessions, מה שמותיר חלק ניכר מהם לא סגורים לאחר כשלושה חודשי מסחר. גרסת ה"תמיד" עובדת רק ללא הגבלת זמן, ובנקודה זו היא מפסיקה להיות ניתנת לבדיקה.

כמה זמן לוקח לגאפ להיסגר?

זה תלוי בגאפ. כאן, 34% מהגאפים של 1% ומעלה נסגרו בתוך אותו יום מסחר, והסגירות הנותרות מגיעות במהלך השבועות והחודשים הבאים. גאפים קטנים מתרכזים בחלון של אותו יום, בעוד גאפים במחזור גבוה הם האיטיים ביותר.

מה ההבדל בין גאפ רגיל (Common Gap) לגאפ פריצה (Breakaway Gap)?

הטרמינולוגיה של הניתוח הטכני מחלקת גאפים לפי הקשר. גאפ רגיל נפתח ביום רגיל עם מחזור רגיל וללא חדשות ספציפיות, בעוד גאפ פריצה נפתח במחזור גבוה לצד מידע חדש, לעיתים קרובות מחוץ לטווח מחירים שהמניה החזיקה בו זמן מה. הפיצול לפי מחזור מסחר בלוח לעיל הוא גרסה מדידה של אותה הבחנה.

מדוע סטטיסטיקות סגירת גאפים משתנות כל כך בין מקורות שונים?

ארבע בחירות משנות את המספר באופן משמעותי: טווח זמן הסגירה, סל המניות, התקופה שנבדקה, והאם הגאפ נמדד ממחיר הסגירה הקודם או מהשיא והשפל הקודמים. שיעור סגירה מצוטט שחסר בו אחד מארבעת המשתנים הללו אינו בר-השוואה לאחר.


כיצד נמדדו נתונים אלו

ימי המסחר מורכבים מנרות של דקה בתוך שעות המסחר הרגילות לפי שעון ניו יורק. מחיר הפתיחה הוא הפתיחה של הנר הראשון ביום המסחר הרגיל, הסגירה היא הסגירה של הנר האחרון, והשיא והשפל של היום הם הקיצונים של אותם נרות. כל גאפ נמדד מול מחיר הסגירה של אותו טיקר ביום המסחר הקודם.

טווחי הזמן של 5, 20 ו-60 ימי מסחר כוללים את יום הגאפ עצמו. ימי הגאפ מסתיימים בסוף פברואר 2026 בעוד סרט המסחר נמשך עד יוני 2026, כך שלכל גאפ בלוח טווחי הזמן יש לפחות שישים ימי מסחר עוקבים זמינים, ואף אחד מהם אינו מסומן כ"לא נסגר" מחוסר נתונים.

מחזור מסחר רגיל בלוח השלישי הוא ממוצע מחזור המסחר ביום רגיל לאורך 20 ימי המסחר המסתיימים יומיים לפני הגאפ, מה ששומר על יום הגאפ והיום שלפניו מחוץ למדד הייחוס שלהם.

הסל מורכב משמונה מניות Large-cap נזילות. מניות דלילות יותר יוצרות גאפים בתדירות גבוהה יותר ונסגרות אחרת, לכן שיעורים אלו אינם תקפים למניות Small-cap ללא הרצת הבדיקה מחדש עליהן.

כל לוח כאן מגיע עם קוד ה-SQL המדויק שמתחתיו. כדי להריץ את אותה בדיקה על טיקר שאתה עוקב אחריו, שאל את השאלה באנגלית פשוטה במסוף Strasmore.

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