Strasmore Research
تعلیمی مواد Matt Connorاز Matt Connor · اپ ڈیٹ شدہ 2026-08-08

High-Low Index کیا ہے؟ Market Breadth اور فارمولا

High-Low Index کی 10-day average اور formula سمجھیں، round numbers کی مثال دیکھیں، اور جانیں کہ quiet tape میں sample size trap reading کو کیوں گمراہ کر سکتا ہے۔

High-Low Index market breadth کا ایک پیمانہ ہے جو دو شمار پر مبنی ہوتا ہے۔ یہ Record High Percent کی 10-day simple moving average ہے۔ Record High Percent کا حساب یوں کیا جاتا ہے: نئے 52-week highs کو نئے 52-week highs اور نئے 52-week lows کے مجموعے سے تقسیم کر کے 100 سے ضرب دی جاتی ہے۔ 50 سے زیادہ reading کا مطلب ہے کہ نئے highs بنانے والے stocks کی تعداد، نئے lows بنانے والے stocks سے زیادہ ہے۔ 50 سے کم reading اس کے برعکس صورتِ حال ظاہر کرتی ہے۔ Formula اتنا ہی مختصر ہے۔ آگے round numbers میں arithmetic اور sample size کی وہ خامی بیان کی گئی ہے جس کے باعث بظاہر فیصلہ کن reading محض چند stocks پر قائم ہو سکتی ہے۔

High-Low Index کا حساب کیسے لگایا جاتا ہے؟

اس کے دو مراحل ہیں، اور دونوں ایک ہی سطر میں آ جاتے ہیں۔

  1. کسی ایک trading session کے لیے Record High Percent ریکارڈ کریں: اپنے universe میں ان stocks کو شمار کریں جو نئی 52-week high پر بند ہوئے، پھر ان stocks کو شمار کریں جو نئی 52-week low پر بند ہوئے۔ Highs کو دونوں کی مجموعی تعداد سے تقسیم کریں، پھر 100 سے ضرب دیں۔
  2. High-Low Index: گزشتہ 10 روزانہ Record High Percent readings کا اوسط نکالیں۔

گول اعداد سے بات واضح ہو جاتی ہے۔ مارکیٹ میں 90 نئے highs اور 30 نئے lows ریکارڈ ہوئے۔ Highs اور lows کا مجموعہ 120 ہے، اور 90 کو 120 سے تقسیم کرنے پر 0.75 آتا ہے، اس لیے اس session کا Record High Percent 75 ہے۔ اب 10 sessions کی readings لیں: 75، 70، 65، 60، 55، 50، 45، 40، 35 اور 30۔ ان کا مجموعہ 525 بنتا ہے، اور 525 کو 10 سے تقسیم کرنے پر 52.5 آتا ہے۔ جس دن اپنا Record High Percent 75 تھا، اس دن High-Low Index کی reading 52.5 ہوگی۔

یہ فرق moving average کی قیمت ہے۔ 10 دن کی یادداشت ایسی series کو ہموار کرتی ہے جو ایک ہی رات میں 100 سے 0 تک جا سکتی ہے، لیکن اس کے نتیجے میں index دیر سے حرکت کرتا ہے۔ یہ index بتاتا ہے کہ گزشتہ دو ہفتوں کے دوران market breadth کہاں رہی ہے۔ یہ کبھی نہیں بتاتا کہ آج دوپہر کیا ہوا۔

نئی 52-week high سے کیا مراد ہے؟

کسی stock کی قیمت اس وقت نئی 52-week high بناتی ہے جب وہ گزشتہ 52 ہفتوں کے دوران درج ہونے والی ہر قیمت سے اوپر چلی جائے۔ Data providers اس کی بنیاد کے بارے میں مختلف طریقے اپناتے ہیں: کچھ intraday highs اور lows کا موازنہ کرتے ہیں، جبکہ کچھ صرف closing prices دیکھتے ہیں۔ اس لیے ایک ہی session کے لیے دونوں طریقوں سے مختلف counts حاصل ہو سکتے ہیں۔ اس پورے صفحے پر closing prices کو بنیاد بنایا گیا ہے۔ نئی 52-week highs اور lows خود فہرست کی وضاحت کرتی ہے۔

ذیل کا panel یکم اپریل سے 31 جولائی 2026 تک 40 بڑی market capitalization والی US names کے مقررہ basket میں ہر session کے دوران دونوں extremes شمار کرتا ہے۔ اس حجم کا basket counts کو اتنا کم رکھتا ہے کہ انہیں ہاتھ سے جانچا جا سکے۔ یہی بات بعد میں formula کی خامی کو نمایاں کرتی ہے۔

استفسار کریںہر سیشن میں نئے 52-week highs اور lows: 40 large-cap US نام، اپریل تا جولائی 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 sessions کے دوران دونوں counts شاذونادر ہی ایک ساتھ بڑھتے ہیں۔ Jul 29، یعنی اس window کے آخری session میں، 40 names میں سے 3 کی closing price 52-week high پر رہی، جبکہ 0 52-week low پر بند ہوئے۔ Apr 1، یعنی پہلے session میں، highs کی تعداد 1 اور lows کی تعداد 1 تھی۔ Basket میں شامل ہر دوسرے نام کی قیمت اپنی range کے اندر رہی اور calculation میں شامل نہیں ہوئی۔

High-Low Index کی اچھی reading کیا ہوتی ہے؟

50 کی سطح pivot ہے، جہاں highs اور lows متوازن ہوتے ہیں۔ روایتی طور پر مضبوط reading 70 سمجھی جاتی ہے۔ اس سطح پر پورے 10-day average میں new highs کی تعداد new lows سے two-to-one سے بھی زیادہ ہوتی ہے۔ روایتی کمزور reading 30 ہے، جو اس کی عکس صورت ہے۔ 30 اور 70 کے درمیان index یہ ظاہر کرتا ہے کہ market کے extremes ملے جلے ہیں۔ زیادہ تر وقت index اسی دائرے میں رہتا ہے۔

ذیل کا panel اسی basket کے لیے raw daily Record High Percent کو اس کے اپنے 10-day average کے مقابل plot کرتا ہے۔ lag کو بیان کرنے کے بجائے chart میں نمایاں کیا گیا ہے۔

استفسار کریںRecord High Percent اور اس کی 10-day اوسط (High-Low Index)، 40 ناموں کی basket
ہر عدد کے پیچھے موجود درست 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

plot کی گئی range 100 کے Record High Percent سے Apr 15 کو شروع ہوتی ہے، جبکہ index 52.5 پر ہے۔ یہ 100 کے Record High Percent پر Jul 29 کو ختم ہوتی ہے، اور index 64 پر ہے۔ ہر reading کو 70 اور 30 کے markers کے مقابل پڑھیں۔ دونوں lines کے درمیان فاصلے کو smoothing کی قیمت سمجھیں: کسی بھی دن average میں پچھلے نو sessions شامل رہتے ہیں۔ window کے پہلے نو sessions کو panel سے خارج کیا گیا ہے، کیونکہ 10-day average کے لیے 10 دن درکار ہوتے ہیں۔

Denominator مارکیٹ کے بیشتر حصے کو نظرانداز کرتا ہے

یہ وہ حد ہے جسے ذہن میں رکھنا چاہیے۔ Record High Percent کا denominator نئے highs اور نئے lows پر مشتمل ہوتا ہے، اور اس کے علاوہ کچھ نہیں۔ 52-week range کے وسط میں موجود stock نہ numerator میں شامل ہوتا ہے، نہ denominator میں۔ یہ index اس session میں فرق نہیں کر سکتا جس میں 3,000 names میں سے 900 نے extreme level چھوا ہو، اور اس session میں بھی نہیں جس میں صرف 9 names نے ایسا کیا ہو۔ دونوں صورتوں میں یہ ایک ہی پُراعتماد دو ہندسوں والا نمبر دکھاتا ہے۔

6,000 names والی exchange میں اگست کے ایک سست session کا تصور کریں: 40 stocks نے نئے highs بنائے اور 20 نے نئے lows۔ Record High Percent، 40 کو 60 سے تقسیم کرنے کے برابر، 66.7 بنتا ہے، جو ایک وسیع advance کا تاثر دیتا ہے۔ یہ calculation listings کے صرف 1% سے کی گئی تھی۔ باقی 5,940 names نے کوئی رائے نہیں دی۔

40-name basket اس حقیقت کو قابلِ شمار شکل میں سامنے لاتا ہے۔ window کے ہر session کو اس بنیاد پر ایک bucket میں رکھا جاتا ہے کہ کتنے names نے کسی بھی extreme level پر print کیا۔

استفسار کریںDenominator کتنا کم ہو جاتا ہے: 52-week extreme پر موجود ناموں کے حساب سے sessions کی درجہ بندی
ہر عدد کے پیچھے موجود درست 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 sessions میں جو 1 to 3 names bucket میں شامل تھے، پوری reading اوسطاً 40 میں سے 2 names پر منحصر تھی۔ ان sessions میں Record High Percent کا median 100 تھا، اور یہ 50 کی line سے median 50 points کے فاصلے پر رہے۔ 10 or more names sessions، جن میں سے 1 کا average 10 names تھا، کا median 70 رہا اور یہ درمیانی سطح سے 20 points کے فاصلے پر رہے۔

یہ arithmetic اس بات کو محدود کرتی ہے کہ ایک thin session کیا print کر سکتا ہے۔ جب تین names extreme level پر ہوں تو ممکنہ readings صرف 0، 33.3، 66.7 اور 100 ہوتی ہیں۔ دو names کی صورت میں صرف 0، 50 اور 100 ممکن ہیں۔ دو highs اور ایک low کی بنیاد پر بننے والی 66.7 کی reading ایسا decimal point دکھاتی ہے جسے اس کا sample support نہیں کرتا۔ اس مسئلے کو دور کرنے کا طریقہ واضح ہے: index کے ساتھ highs اور lows کی raw counts بھی پڑھیں، صرف index کو اکیلا نہ دیکھیں۔

Market breadth: High-Low Index بمقابلہ advance/decline

دونوں پیمانے یہ جانچتے ہیں کہ کتنے stocks مارکیٹ میں حصہ لے رہے ہیں۔ تاہم ان کے time horizons مختلف ہیں۔ advance/decline breadth ہر اس نام کو شمار کرتا ہے جو گزشتہ روز کے مقابلے میں اوپر یا نیچے بند ہوا۔ اس کا denominator پوری universe پر مشتمل ہوتا ہے، اور یہ ایک دن کی تصویر پیش کرتا ہے۔ High-Low Index صرف ان ناموں کو شمار کرتا ہے جو 52-week extreme پر پہنچے ہوں۔ اس کا denominator چھوٹا ہوتا ہے، اور یہ بتاتا ہے کہ prices پورے ایک سال کی history کے مقابلے میں کہاں کھڑی ہیں۔ کسی دن tape وسیع پیمانے پر اوپر جا سکتی ہے، جبکہ بہت کم نام 52-week high کے قریب ہوں۔

ذیل کا panel دونوں measures کو ایک ہی basket پر یکساں 10 sessions میں smooth کرتا ہے، جس سے دونوں ایک ہی scale پر آ جاتے ہیں۔

استفسار کریںBreadth کے دو پیمانے، ایک ہی basket: 10-day High-Low Index بمقابلہ 10-day advancing share
ہر عدد کے پیچھے موجود درست 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

plotted range کا آغاز High-Low Index کے لیے 52.5 اور 10-day advancing share کے لیے 52.8 پر Apr 15 کو ہوتا ہے، جبکہ اختتام بالترتیب 64 اور 52.5 پر Jul 29 کو ہوتا ہے۔ یہ range 68 plotted sessions پر مشتمل ہے۔ advancing share ایک محدود band میں رہتا ہے۔ ایک عام session میں تقریباً آدھا basket زیادہ قیمت پر بند ہوتا ہے، اور ان دس readings کا average line کو scale کے درمیانی حصے کے قریب رکھتا ہے۔ High-Low Index کے لیے ایسا کوئی مستقل anchor نہیں ہوتا۔ جب مسلسل دس sessions تک basket کا کوئی نام 52-week low print نہ کرے، تو ہر daily reading 100 ہوتی ہے اور average بھی 100 رہتا ہے۔

Breadth کو participation measures کے ساتھ دیکھنے سے اس کی تشریح بہتر ہوتی ہے۔ Relative volume یہ جانچتا ہے کہ آیا کوئی نام اپنے معمول کے مقابلے میں آج غیرمعمولی طور پر زیادہ trade ہو رہا ہے۔ اس ہفتے کے سب سے بڑے stock movers دکھاتا ہے کہ حقیقتاً کن ناموں نے نمایاں move کیا، جبکہ اس ہفتے کے unusual volume stocks بتاتا ہے کہ trading کہاں ہوئی۔

High-Low Index کے اکثر پوچھے جانے والے سوالات

High-Low Index کی reading 70 سے زیادہ ہونے کا کیا مطلب ہے؟

اس کا مطلب ہے کہ گزشتہ ten sessions کی اوسط میں نئے 52-week highs کی تعداد، نئے 52-week lows سے two-to-one سے زیادہ رہی۔ یہ مضبوط market breadth کی روایتی علامت ہے۔ اس سے یہ معلوم نہیں ہوتا کہ مجموعی طور پر کتنے stocks نے کسی extreme سطح کو چھوا۔ یہ وہ تعداد ہے جسے اس reading کے ساتھ ضرور دیکھنا چاہیے۔

Record High Percent اور High-Low Index میں کیا فرق ہے؟

Record High Percent ایک single-session figure ہے: نئے highs کو نئے highs اور نئے lows کے مجموعے سے تقسیم کر کے 100 سے ضرب دی جاتی ہے۔ High-Low Index اسی figure کا 10-day simple moving average ہے۔ ایک آج کی صورتِ حال بیان کرتا ہے، جبکہ دوسرا گزشتہ دو ہفتوں کی تصویر پیش کرتا ہے۔

کیا High-Low Index 0 یا 100 ہو سکتا ہے؟

ہاں۔ اگر universe میں مسلسل ten sessions تک کوئی stock نیا 52-week low نہ بنائے تو ہر daily reading 100 ہو گی اور average بھی 100 رہے گی۔ جب کوئی stock نہ نیا high بنائے اور نہ نیا low، تو fraction کا denominator صفر ہو جاتا ہے، اس لیے اس session کی reading defined نہیں ہوتی۔

کیا High-Low Index، advance/decline breadth کے برابر ہے؟

نہیں۔ advance/decline breadth پورے universe کو denominator بناتا ہے اور ایک دن کی market direction بیان کرتا ہے۔ High-Low Index صرف ان stocks کے نسبتاً چھوٹے گروپ کو denominator بناتا ہے جو 52-week extremes پر موجود ہوں، اور ایک سال کی قیمتوں کے مقابلے میں ان کی پوزیشن بیان کرتا ہے۔

High-Low Index کے denominator میں عموماً کتنے stocks شامل ہوتے ہیں؟

اپریل سے جولائی 2026 تک یہاں ناپے گئے 40-name basket میں، 1 to 3 names bucket کے sessions کے دوران denominator میں اوسطاً 2 names شامل تھے۔ Exchange-wide counts absolute terms میں زیادہ ہوتے ہیں، لیکن تمام listings کے مقابلے میں پھر بھی ایک چھوٹا حصہ رہتے ہیں۔ اسی لیے raw counts کو index کے ساتھ screen پر دکھانا ضروری ہے۔


اس صفحے پر موجود ہر count closing prices پر مبنی ایک stored، versioned query سے حاصل کیا گیا ہے۔ کسی بھی panel کو کھول کر اس کے پیچھے موجود SQL دیکھیں، یا Strasmore terminal پر اپنی پسند کے basket کے لیے یہی breadth series دوبارہ تیار کریں۔

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