Strasmore Research
למידה Matt Connorמאת Matt Connor

מהו מדד High-Low? מדד רוחב השוק

מדד High-Low הוא ממוצע 10 ימים של Record High Percent. כך מחשבים אותו במספרים עגולים ומזהים כיצד מדגם קטן עלול לעוות קריאה שנראית חד-משמעית.

מדד High-Low הוא מדד לרוחב השוק, המבוסס על שני נתונים: זהו הממוצע הנע הפשוט ל-10 ימים של Record High Percent, כאשר Record High Percent הוא מספר השיאים החדשים ל-52 שבועות חלקי סכום השיאים החדשים לשיאים החדשים ולשפלים החדשים ל-52 שבועות, כפול 100. קריאה מעל 50 פירושה שיותר מניות רושמות שיאים חדשים מאשר שפלים חדשים, וקריאה מתחת ל-50 פירושה ההפך. זו כל הנוסחה. בהמשך מוצגים החישוב במספרים עגולים והחיסרון של גודל המדגם, שמאפשר לקריאה הנראית חד-משמעית להישען על קומץ מניות.

כיצד מחשבים את מדד High-Low?

שני שלבים, שכל אחד מהם נכנס בשורה אחת.

  1. Record High Percent עבור סשן יחיד: סופרים את המניות ביקום שהגיעו לסגירה בשיא חדש ל-52 שבועות, סופרים את אלה שהגיעו לסגירה בשפל חדש ל-52 שבועות, מחלקים את מספר השיאים בסכום שני הנתונים, ואז מכפילים ב-100.
  2. מדד High-Low: מחשבים את הממוצע של עשר קריאות Record High Percent היומיות האחרונות.

מספרים עגולים ממחישים את החישוב. השוק רושם 90 שיאים חדשים ו-30 שפלים חדשים. סכום השיאים והשפלים הוא 120, ו-90 חלקי 120 הם 0.75, ולכן Record High Percent לאותו סשן הוא 75. כעת נניח עשרה סשנים עם הקריאות הבאות: 75, 70, 65, 60, 55, 50, 45, 40, 35 ו-30. סכומן הוא 525, ו-525 חלקי 10 הם 52.5. מדד High-Low עומד על 52.5 ביום שבו Record High Percent של אותו יום היה 75.

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

מה נחשב לשיא חדש ל-52 שבועות?

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

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

שאילתהשיאים ושפלים חדשים ב־52 השבועות האחרונים בכל יום מסחר: 40 מניות אמריקאיות בעלות שווי שוק גדול, אפריל–יולי 2026
ה-SQL המדויק מאחורי כל מספר
WITH daily_close AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
      AND window_start >= toDateTime('2025-03-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 05:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
extremes AS (
    SELECT cur.ticker AS ticker,
           cur.session_date AS session_date,
           cur.close_px AS close_px,
           max(hist.close_px) AS high_52w,
           min(hist.close_px) AS low_52w
    FROM daily_close AS cur
    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
    WHERE cur.session_date >= toDate('2026-04-01')
      AND hist.session_date <= cur.session_date
      AND hist.session_date > cur.session_date - 364
    GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
    SELECT session_date,
           countIf(close_px >= high_52w) AS new_highs,
           countIf(close_px <= low_52w) AS new_lows,
           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
    FROM extremes
    GROUP BY session_date
    HAVING names_at_extreme > 0
)
SELECT session_date AS date,
       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
       new_highs,
       new_lows
FROM daily
ORDER BY session_date
Run this yourself

לאורך 77 הסשנים, שתי הספירות כמעט שאינן עולות יחד. ב-Jul 29, הסשן האחרון בחלון, 3 מתוך 40 המניות נסגרו בשיא ל-52 שבועות ו-0 נסגרו בשפל ל-52 שבועות. ב-Apr 1, הסשן הראשון, החלוקה הייתה 1 שיאים לעומת 1 שפלים. כל יתר המניות בסל נותרו בתוך הטווח שלהן ולא נכנסו לחישוב.

מהי קריאה טובה במדד High-Low?

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

התרשים שלהלן מציג את Record High Percent היומי הגולמי מול הממוצע הנע שלו ל-10 ימים עבור אותו סל. הפיגור ניכר בתרשים ואינו דורש תיאור נוסף.

שאילתהאחוז השיאים החדשים והממוצע הנע שלו ל־10 ימים (מדד השיאים–שפלים), סל של 40 מניות
ה-SQL המדויק מאחורי כל מספר
WITH daily_close AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
      AND window_start >= toDateTime('2025-03-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 05:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
extremes AS (
    SELECT cur.ticker AS ticker,
           cur.session_date AS session_date,
           cur.close_px AS close_px,
           max(hist.close_px) AS high_52w,
           min(hist.close_px) AS low_52w
    FROM daily_close AS cur
    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
    WHERE cur.session_date >= toDate('2026-04-01')
      AND hist.session_date <= cur.session_date
      AND hist.session_date > cur.session_date - 364
    GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
    SELECT session_date,
           countIf(close_px >= high_52w) AS new_highs,
           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
    FROM extremes
    GROUP BY session_date
    HAVING names_at_extreme > 0
),
rhp AS (
    SELECT session_date,
           round(100 * new_highs / names_at_extreme, 1) AS record_high_pct
    FROM daily
),
smoothed AS (
    SELECT session_date,
           record_high_pct,
           round(avg(record_high_pct) OVER (ORDER BY session_date
                                            ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS high_low_index_pct,
           count() OVER (ORDER BY session_date
                         ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS sessions_in_window
    FROM rhp
)
SELECT session_date AS date,
       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
       record_high_pct,
       high_low_index_pct
FROM smoothed
WHERE sessions_in_window = 10
ORDER BY session_date
Run this yourself

הטווח המוצג נפתח ב-Record High Percent של 100 ב-Apr 15, כאשר המדד עמד על 52.5. הוא נסגר ב-100 ב-Jul 29, והמדד עמד על 64. יש להשוות כל קריאה לסמנים 70 ו-30, ולקרוא את המרחק בין שני הקווים כמחיר ההחלקה: בכל יום נתון הממוצע עדיין כולל תשעה סשנים ישנים יותר. תשעת הסשנים הראשונים בחלון אינם מוצגים, משום שממוצע ל-10 ימים דורש 10 ימים.

המכנה מתעלם מרוב השוק

זו המגבלה שחשוב לזכור. המכנה של Record High Percent הוא מספר השיאים החדשים בתוספת מספר השפלים החדשים, ולא דבר מעבר לכך. מניה שנמצאת באמצע הטווח שלה ל-52 שבועות אינה נמצאת לא במונה ולא במכנה. המדד אינו יכול להבחין בין סשן שבו 900 מתוך 3,000 מניות הגיעו לנקודת קיצון לבין סשן שבו 9 מניות עשו זאת, והוא מציג לשני המקרים אותו מספר דו-ספרתי שנראה החלטי.

נניח בורסה שבה 6,000 מניות, במהלך סשן אוגוסט דל-פעילות: 40 מניות רושמות שיאים חדשים ו-20 רושמות שפלים חדשים. Record High Percent הוא 40 חלקי 60, כלומר 66.7, נתון שנראה כמו עלייה רחבה. החישוב התבסס על 1% מהמניות הרשומות. ל-5,940 המניות האחרות לא היה קולם בחישוב.

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

שאילתהכיצד המכנה מצטמצם: ימי מסחר המקובצים לפי מספר המניות בשיא או בשפל של 52 השבועות האחרונים
ה-SQL המדויק מאחורי כל מספר
WITH daily_close AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
      AND window_start >= toDateTime('2025-03-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 05:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
extremes AS (
    SELECT cur.ticker AS ticker,
           cur.session_date AS session_date,
           cur.close_px AS close_px,
           max(hist.close_px) AS high_52w,
           min(hist.close_px) AS low_52w
    FROM daily_close AS cur
    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
    WHERE cur.session_date >= toDate('2026-04-01')
      AND hist.session_date <= cur.session_date
      AND hist.session_date > cur.session_date - 364
    GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
    SELECT session_date,
           countIf(close_px >= high_52w) AS new_highs,
           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
    FROM extremes
    GROUP BY session_date
    HAVING names_at_extreme > 0
)
SELECT multiIf(names_at_extreme <= 3, '1 to 3 names',
               names_at_extreme <= 9, '4 to 9 names',
               '10 or more names') AS sample_size_bucket,
       count() AS readings,
       round(avg(names_at_extreme), 1) AS avg_names_in_denominator,
       round(quantileDeterministic(0.5)(100 * new_highs / names_at_extreme,
                                        cityHash64(session_date)), 1) AS median_record_high_pct,
       round(quantileDeterministic(0.5)(abs(100 * new_highs / names_at_extreme - 50),
                                        cityHash64(session_date)), 1) AS median_distance_from_50
FROM daily
GROUP BY sample_size_bucket
ORDER BY avg_names_in_denominator
Run this yourself

ב-39 הסשנים בקטגוריית 1 to 3 names, הקריאה כולה נשענה על ממוצע של 2 מניות מתוך 40. באותם סשנים נרשם חציון Record High Percent של 100, והם היו במרחק חציוני של 50 נקודות מקו 50. ב-10 or more names הסשנים, 1 מהם עם ממוצע של 10 מניות, נרשם חציון של 70, והם היו במרחק של 20 נקודות מהאמצע.

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

רוחב השוק: מדד High-Low לעומת רוחב advance/decline

שני המדדים בוחנים כמה מניות משתתפות בתנועת השוק. הם עושים זאת על פני אופקי זמן שונים. רוחב advance/decline סופר כל מניה שסיימה בעלייה או בירידה ביחס לאתמול. המכנה שלו הוא היקום כולו, והוא מתאר יום אחד. מדד High-Low סופר רק מניות שנמצאות בנקודת קיצון ל-52 שבועות. המכנה שלו קטן, והוא מתאר את מיקום המחירים ביחס להיסטוריה של שנה מלאה. השוק יכול לעלות באופן רחב באותו יום, בעוד שמעט מאוד מניות יהיו קרובות לשיא ל-52 שבועות.

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

שאילתהשני מדדי רוחב, אותו סל: מדד השיאים–שפלים ל־10 ימים לעומת שיעור המניות העולות ל־10 ימים
ה-SQL המדויק מאחורי כל מספר
WITH daily_close AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
      AND window_start >= toDateTime('2025-03-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 05:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
extremes AS (
    SELECT cur.ticker AS ticker,
           cur.session_date AS session_date,
           cur.close_px AS close_px,
           max(hist.close_px) AS high_52w,
           min(hist.close_px) AS low_52w
    FROM daily_close AS cur
    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
    WHERE cur.session_date >= toDate('2026-04-01')
      AND hist.session_date <= cur.session_date
      AND hist.session_date > cur.session_date - 364
    GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
    SELECT session_date,
           countIf(close_px >= high_52w) AS new_highs,
           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
    FROM extremes
    GROUP BY session_date
    HAVING names_at_extreme > 0
),
prior AS (
    SELECT ticker,
           session_date,
           close_px,
           lagInFrame(close_px, 1) OVER (PARTITION BY ticker ORDER BY session_date
                                         ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily_close
),
breadth AS (
    SELECT session_date,
           round(100 * countIf(close_px > prev_close) / count(), 1) AS advancing_pct
    FROM prior
    WHERE session_date >= toDate('2026-04-01')
      AND prev_close > 0
    GROUP BY session_date
    HAVING count() >= 20
),
combined AS (
    SELECT d.session_date AS session_date,
           round(100 * d.new_highs / d.names_at_extreme, 1) AS record_high_pct,
           b.advancing_pct AS advancing_pct
    FROM daily AS d
    INNER JOIN breadth AS b ON d.session_date = b.session_date
),
smoothed AS (
    SELECT session_date,
           round(avg(record_high_pct) OVER (ORDER BY session_date
                                            ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS high_low_index_pct,
           round(avg(advancing_pct) OVER (ORDER BY session_date
                                          ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS advancing_pct_10d,
           count() OVER (ORDER BY session_date
                         ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS sessions_in_window
    FROM combined
)
SELECT session_date AS date,
       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
       high_low_index_pct,
       advancing_pct_10d
FROM smoothed
WHERE sessions_in_window = 10
ORDER BY session_date
Run this yourself

הצמד פותח את הטווח המוצג ב-52.5 עבור מדד High-Low וב-52.8 עבור שיעור המניות העולות בממוצע ל-10 ימים, ב-Apr 15, ומסיים ב-64 וב-52.5 ב-Jul 29, על פני 68 סשנים מוצגים. שיעור המניות העולות נע בטווח צר. בסשן רגיל, כמחצית מהמניות בסל נסגרות בעלייה, וממוצע של עשרה סשנים כאלה מותיר את הקו קרוב לאמצע הסקאלה. למדד High-Low אין עוגן כזה. כאשר אף מניה בסל אינה רושמת שפל חדש ל-52 שבועות במשך עשרה סשנים רצופים, כל קריאה יומית היא 100, וגם הממוצע עומד על 100.

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

שאלות נפוצות על מדד High-Low

מה פירושה של קריאה מעל 70 במדד High-Low?

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

מה ההבדל בין Record High Percent לבין מדד High-Low?

Record High Percent הוא הנתון של סשן יחיד: מספר השיאים החדשים חלקי מספר השיאים החדשים בתוספת מספר השפלים החדשים, כפול 100. מדד High-Low הוא הממוצע הנע הפשוט ל-10 ימים של אותו נתון. הראשון מתאר את היום. השני מתאר את השבועיים האחרונים.

האם מדד High-Low יכול להיות 0 או 100?

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

האם מדד High-Low זהה לרוחב advance/decline?

לא. רוחב advance/decline מחלק את התוצאה ביקום כולו ומתאר את כיוון השוק ביום יחיד. מדד High-Low מחלק את התוצאה בקבוצה הקטנה של מניות הנמצאות בנקודות קיצון ל-52 שבועות, ומתאר את מיקומן ביחס למחירי שנה שלמה.

כמה מניות נמצאות בדרך כלל במכנה של מדד High-Low?

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


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

#market breadth#52-week highs#indicators#record high percent