Strasmore Research
تحلیل بازار Matt Connorتوسط Matt Connor · به‌روزرسانی شده در 2026-07-24 · data as of July 24, 2026 · refreshed weekly

لیست سهام در بالاترین و پایین‌ترین سطح 52 هفته

بررسی سهم‌هایی که در آخرین جلسه معاملاتی در بالاترین یا پایین‌ترین سطح قیمت 52 هفته‌ای خود بسته شده‌اند؛ داده‌های استخراج شده از تِپ بورس برای تحلیل breadth.

بیشترین قیمت بسته شده در یک سال گذشته، «بیشترین قیمت 52 هفته‌ای» و کمترین آن، «کمترین قیمت 52 هفته‌ای» نامیده می‌شود. در آخرین جلسه معاملاتی تکمیل شده، یعنی Jul 21, 2026، تعداد 26 سهم در این صفحه در سطح یا در محدوده 1 درصدی از بیشترین قیمت 52 هفته‌ای بسته شدند و 7 سهم در سطح یا در محدوده 1 درصدی از کمترین قیمت 52 هفته‌ای بسته شدند. این لیست شامل شرکت‌های بزرگ و با نقدینگی بالا در بازار آمریکا است که داده‌های آن از تِپ (tape) بورس استخراج می‌شود.

سهام در بالاترین سطح 52 هفته اخیر

در ادامه، قوی‌ترین سودهای سالانه (YTD) در لیست سهم‌های با بالاترین قیمت مشاهده می‌شوند که تعداد آن‌ها به دوازده مورد می‌رسد. هر یک از این سهام‌ها، جلسه معاملاتی را در بالاترین سطح بسته‌شده در 52 هفته گذشته یا در فاصله 1 درصدی از آن، به پایان رساندند.

پرس‌وجوسهام در سقف ۵۲ هفته‌ای، مرتب شده بر اساس بازده YTD
کد دقیق SQL پشت هر عدد
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE 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
      AND ticker IN (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','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() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt > (SELECT d FROM last_session) - 365
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT ticker,
       round(last_close, 2) AS close,
       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct
FROM ranged
WHERE last_close >= hi * 0.99
ORDER BY ytd_return_pct DESC, ticker ASC
LIMIT 12

DAVE با رشد 99.6% در سال جاری، در صدر لیست با قیمت 439.18 قرار دارد. در این لیست، به دلیل ساختار داده‌ها، قیمت بسته‌شده در فاصله 1 درصدی از بالاترین سطح 52 هفته اخیر قرار دارد؛ بنابراین ستون قیمت، همزمان نشان‌دهنده سطح مورد آزمایش نیز هست. DINO با رشد 99% در رتبه بعدی و MPC با رشد 96.6% قرار دارند. در انتهای جدول، ROKU با رشد 33% در سال جاری ثبت شده است.

هدف، بررسی این فاصله است. عبارت «بالاترین سطح 52 هفته اخیر» صرفاً نشان می‌دهد که قیمت در کجای محدوده یک‌ساله‌ای خود قرار دارد و معنای دیگری ندارد. سهامی که تابستان گذشته سقوط شدیدی داشت و سپس مسیر بازگشت را طی کرد، همان برچسب را با سهامی که هرگز توقف به صعود نداشته است، حمل می‌کند.

سهام در پایین‌ترین سطح 52 هفته اخیر

همان فیلتر، اما برعکس. این نام‌ها در قیمت بسته‌شدن، در سطح یا حداکثر 1٪ بالاتر از پایین‌ترین قیمت بسته‌شدن در 52 هفته گذشته بوده‌اند. این لیست شامل دوازده مورد است که از ضعیف‌ترین عملکرد سال جاری تا قوی‌تر مرتب شده‌اند.

پرس‌وجوسهام در کف ۵۲ هفته‌ای، مرتب شده بر اساس بازده YTD
کد دقیق SQL پشت هر عدد
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE 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
      AND ticker IN (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','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() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt > (SELECT d FROM last_session) - 365
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT ticker,
       round(last_close, 2) AS close,
       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct
FROM ranged
WHERE last_close <= lo * 1.01
ORDER BY ytd_return_pct ASC, ticker ASC
LIMIT 12

PNR با عملکرد سالانه -41%، ضعیف‌ترین وضعیت را در این لیست دارد. قیمت بسته‌شدن آن 61.48 دلار بود که در فاصله 1٪ از پایین‌ترین قیمت بسته‌شدن 52 هفته اخیر خود قرار دارد. مورد بعدی CPRT با عملکرد -30.6% است.

قیمت در پایین‌ترین سطح 52 هفته اخیر، صرفاً یک موقعیت در محدوده قیمتی است و به معنای قضاوت درباره وضعیت کسب‌وکار نیست. شرکت‌های سودده ممکن است در دوره‌های طولانی و آرام به این لیست اضافه شوند؛ همان‌طور که شرکت‌های درگیر مشکلات واقعی نیز وارد آن می‌شوند. قیمت بسته‌شدن به تنهایی نمی‌تواند این دو گروه را از هم متمایز کند. برای بررسی نسخه مربوط به کل بازار، نحوه بازیابی بازارها پس از سقوط‌ها را مطالعه کنید.

تحلیل شاخص‌های سقف و کف در بازتاب وسعت بازار

وسعت بازار به جای میزان حرکت شاخص، میزان مشارکت سهام‌ها در آن حرکت را می‌سنجد. شمارش سهام‌های با سقف‌های جدید در مقابل سهام‌های با کف‌های جدید، یکی از قدیمی‌ترین شاخص‌های وسعت بازار است که در این صفحه، عدد مورد توجه برای رصد کردن محسوب می‌شود.

پرس‌وجوسقف‌های جدید ۵۲ هفته‌ای در برابر کف‌های جدید، روزانه، در ۶ هفته گذشته
کد دقیق SQL پشت هر عدد
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE 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
      AND ticker IN (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','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() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 425 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt <= (SELECT d FROM last_session)
),
rolled AS (
    SELECT ticker, dt, c,
           max(c) OVER w AS hi,
           min(c) OVER w AS lo,
           count() OVER w AS n_sessions,
           min(dt) OVER (PARTITION BY ticker) AS first_dt
    FROM daily
    WINDOW w AS (PARTITION BY ticker ORDER BY dt RANGE BETWEEN 364 PRECEDING AND CURRENT ROW)
)
SELECT formatDateTime(dt, '%b %e, %Y') AS date,
       countIf(c >= hi * 0.99) AS at_52w_high,
       countIf(c <= lo * 1.01) AS at_52w_low,
       countIf(c >= hi * 0.99) - countIf(c <= lo * 1.01) AS net_highs
FROM rolled
WHERE n_sessions >= 200
  AND first_dt <= dt - 350
  AND dt > (SELECT d FROM last_session) - 43
GROUP BY dt
ORDER BY dt

در تاریخ Jul 21, 2026، این شاخص 26 نماد را در سطح یا نزدیکی سقف 52 هفته‌ای در مقابل 7 نماد در سطح یا نزدیکی کف ثبت کرد که خالص عدد برابر با 19 است. شش هفته پیش‌تر، در تاریخ Jun 9, 2026، همین شاخص نشان‌دهنده 35 سقف و 3 کف بود.

در طول 29 جلسه معاملاتی ترسیم‌شده، هر دو شمارش در روزهای متوالی نوسان شدیدی دارند؛ بنابراین سطح در هر جلسه معاملاتی به تنهایی اهمیت کمتری نسبت به روند حرکت در طول هفته‌ها دارد. اگر شاخصی ثابت بماند در حالی که تعداد سهام‌های با سقف جدید کاهش می‌یابد، بازار محدودتر از آنچه شاخص به تنهایی نشان می‌دهد، است. افزایش تعداد سهام‌های با کف جدید، شرایطی را ایجاد می‌کند که پشتوانه خرید در زمان ترس دیگران است؛ موضوعی که ما آن را در برابر جو خبری آزمایش کردیم.

فاصله سایر بخش‌های بازار از سقف قیمتی خود

سقف‌ها و کف‌ها دو انتهای یک توزیع هستند؛ اکثر سهام در محدوده میانی قرار دارند. این پنل تمامی نمادها را بر اساس فاصله از سقف 52 هفته‌ای مرتب کرده و میانه بازده سالانه (year-to-date) را در هر باند گزارش می‌دهد.

پرس‌وجومیزان فاصله کل بازار تا سقف ۵۲ هفته‌ای
کد دقیق SQL پشت هر عدد
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE 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
      AND ticker IN (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','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() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt > (SELECT d FROM last_session) - 365
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT multiIf(p < 1, 'At the high (under 1%)',
               p < 5, '1% to 5% below',
               p < 10, '5% to 10% below',
               p < 20, '10% to 20% below',
               p < 35, '20% to 35% below',
               'More than 35% below') AS bucket,
       count() AS stocks,
       round(100.0 * count() / sum(count()) OVER (), 1) AS share_pct,
       round(quantileExact(0.5)(ytd), 1) AS median_ytd_pct
FROM (
    SELECT (1 - last_close / hi) * 100 AS p,
           (last_close / base_close - 1) * 100 AS ytd,
           multiIf(p < 1, 0, p < 5, 1, p < 10, 2, p < 20, 3, p < 35, 4, 5) AS ord
    FROM ranged
)
GROUP BY bucket, ord
ORDER BY ord

5.3% از نمادها، یعنی 26 مورد، در فاصله کمتر از 1٪ از سقف 52 هفته‌ای بسته شدند. در نقطه مقابل، 17% با کاهشی بیش از 35٪ نسبت به سقف، بسته شدند. میانه بازده سالانه در باند بالایی 32.8% است؛ در باند پایین این مقدار -28.9% می‌باشد و نمودار، شکل توزیع بین این دو را ترسیم می‌کند.

این روند بیشتر به یک واقعیت ریاضی شباهت دارد تا یک کشف: سهامی که نزدیک به سقف 52 هفته‌ای خود قرار دارد، طبق ساختار بازار، بخش زیادی از سال را در روند صعودی سپری کرده است. اهمیت این پنل در مقیاس آن است: اینکه این نقاط حدی چقدر غیرمعمول هستند و چه بخش بزرگی از بازار در فاصله زیادی از بهترین قیمت خود قرار دارد. داشتن حجم بالای یکی از این نمادها، همان ریسکی است که در ریسک واقعی یک تک‌سهم اندازه‌گیری می‌شود.

موقعیت فعلی بازار در محدوده 52 هفته‌ای خود

وضعیت یک سهم در نزدیکی سقف قیمتی، در مقایسه با بازاری که در نزدیکی سقف خود قرار دارد، با وضعیتی که بازار از سقف خود فاصله دارد، متفاوت است. پنج ETF بازار گسترده در ادامه، دقیقاً مشابه سهام بالا اندازه‌گیری شده‌اند.

پرس‌وجوموقعیت پنج ETF بازار گسترده در محدوده ۵۲ هفته‌ای خود
کد دقیق SQL پشت هر عدد
WITH last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM', 'RSP')
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20
       AND dt > (SELECT d FROM last_session) - 365
       AND dt <= (SELECT d FROM last_session)
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT multiIf(ticker = 'SPY', 'S&P 500 (SPY)',
               ticker = 'QQQ', 'Nasdaq 100 (QQQ)',
               ticker = 'DIA', 'Dow 30 (DIA)',
               ticker = 'RSP', 'S&P 500 equal weight (RSP)',
               'Russell 2000 (IWM)') AS label,
       round((1 - last_close / hi) * 100, 2) AS pct_below_high,
       round((last_close / lo - 1) * 100, 1) AS pct_above_low,
       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct
FROM ranged
ORDER BY pct_below_high ASC

S&P 500 equal weight (RSP) با فاصله 1.08% از سقف 52 هفته‌ای خود، نزدیک‌ترین حالت را در میان این پنج مورد دارد و 17.2% بالاتر از کف 52 هفته‌ای خود قرار گرفته است. Nasdaq 100 (QQQ) با فاصله 4.98% از سقف خود، بیشترین فاصله را دارد. از ابتدای سال تا کنون، این دو عدد 11.1% و 15.4% هستند.

اختلاف بین نسخه هم‌وزن (equal-weighted) و نسخه با وزن بازار (cap-weighted) از یک شاخص واحد، خود نشانه‌ای از وسعت بازار (breadth) محسوب می‌شود. زمانی که خط هم‌وزن به سقف خود نزدیک‌تر است، میانگین اعضای شاخص از بزرگ‌ترین اعضا پیشی می‌گیرند. زمانی که خط با وزن بازار به سقف نزدیک‌تر است، تعداد معدودی از شرکت‌های بسیار بزرگ، شاخص را بالا نگه می‌دارند. هیچ‌کدام از این وضعیت‌ها پیش‌بینی‌کننده نیستند و خروج از بازار در بازه زمانی اشتباه، هزینه‌ی از دست دادن بهترین روزهای بازار را به همراه دارد.

نحوه اندازه‌گیری

تمام ارقام این صفحه از نمودارهای یک دقیقه‌ای در تابلوی بورس ایالات متحده استخراج شده و در قیمت‌های بسته‌شده روزانه تجمیع شده‌اند. قوانین کامل به شرح زیر است:

  • محدوده بررسی. تنها شرکت‌های عملیاتی پذیرفته‌شده در بورس ایالات متحده بررسی می‌شوند. این شرکت‌ها باید با ارائه صورت سود و زیان به SEC برای دوره‌ای که پایان آن در 400 روز گذشته بوده، شناسایی شوند؛ بنابراین ETFها و صندوق‌ها از هر دو لیست حذف می‌شوند. همچنین برای اطمینان بیشتر، ETFهای اهرمی و معکوس نیز صراحتاً مستثنی شده‌اند.
  • حداقل نقدینگی. یک سهم باید در 20 روز تقویمی گذشته، حداقل 2 میلیارد دلار معامله شده باشد. با حذف آخر هفته‌ها و تعطیلات، این بازه شامل حدود 12 جلسه معاملاتی است که میانگین هر جلسه را به حدود 150 میلیون دلار می‌رساند. این معیار باعث می‌شود لیست‌ها شامل نام‌هایی باشد که معامله‌گران واقعاً می‌توانند در آن‌ها فعالیت کنند و از ایجاد مقادیر افراطی ناشی از حجم معاملات کم جلوگیری می‌کند.
  • عدم تعدیل در تقسیم سهام. هر نمادی که در 460 روز گذشته تقسیم سهام انجام داده باشد، از صفحه نمایش حذف می‌شود. این بازه عمداً بیش از یک سال کامل در نظر گرفته شده تا قدیمی‌ترین قیمت‌های نمودار وسعت بازار را پوشش دهد. این محتمل‌ترین دلیل برای انتشار اطلاعات نادرست در صفحاتی از این دست است: یک تقسیم معکوس 1 به 20، قیمت اعلام‌شده را بدون وجود معامله واقعی، بیست برابر می‌کند و یک صفحه تعدیل‌نشده، یک سقف 52 هفته‌ای جدید و خیره‌کننده را گزارش خواهد داد. تقسیم سهام مستقیم نیز عکس این حالت را ایجاد کرده و یک کف 52 هفته‌ای کاذب می‌سازد.
  • قیمت‌های بسته‌شده، نه نوسانات درون‌جلسه‌ای. قیمت‌های بالا و پایین بر اساس قیمت‌های بسته‌شده اندازه‌گیری می‌شوند. یک سهم ممکن است در طول روز از سقف 52 هفته‌ای خود عبور کند، اما در قیمت بسته‌شده زیر آن بسته شود و هرگز در اینجا ظاهر نشود. صفحاتی که بر اساس قیمت‌های درون‌جلسه‌ای ساخته شده‌اند، تعداد موارد بیشتری را گزارش می‌دهند.
  • تکمیل شدن جلسه معاملاتی. قیمت بسته‌شده روزانه، آخرین نمودار یک دقیقه‌ای بین ساعت 15:30 تا 16:00 به وقت نیویورک است. جلسه‌ای که در حال بارگذاری است، هیچ نموداری در آن نیم‌ساعت ندارد، بنابراین نمی‌تواند وارد محاسبات شود و جلسات در حال اجرا هرگز وارد لیست نمی‌شوند. جلسات تعطیلات با بسته شدن زودهنگام نیز به همین دلیل حذف می‌شوند. تاریخ درج‌شده در بالا، آخرین جلسه‌ای است که این آزمون را پشت سر گذاشته است، بنابراین ممکن است یک یا دو روز از تقویم عقب‌تر باشد.
  • تاریخچه کامل یک ساله. یک سهم باید حداقل 200 جلسه معاملاتی در بازه 52 هفته‌ای داشته باشد و اولین جلسه معاملاتی آن حداقل 350 روز قبل باشد. شرکتی که سه ماه پیش وارد بورس شده است، نمی‌تواند سقف 52 هفته‌ای در اینجا ثبت کند.
  • بازه 1 درصدی. عبارت «در سقف 52 هفته‌ای» به این معناست که قیمت بسته‌شده در سطح یا در محدوده 1 درصدی بالاترین قیمت بسته‌شده در 52 هفته گذشته قرار دارد؛ لیست کف‌ها نیز دقیقاً مشابه آن است. بازدهی Year-to-date نیز از آخرین قیمت بسته‌شده در سال 2025 اندازه‌گیری می‌شود.

سوالات متداول

آیا خرید در سقف 52 هفته‌ای ایده خوبی است؟

هیچ پاسخ کلی وجود ندارد و مطالب این صفحه به معنای توصیه سرمایه‌گذاری نیست. آنچه این صفحه نشان می‌دهد، نگاه به گذشته است: سهامی که در فاصله 1 درصدی از سقف 52 هفته‌ای خود هستند، میانگین بازدهی سالانه 32.8% داشته‌اند، در حالی که این رقم برای سهامی که بیش از 35 درصد پایین‌تر از سقف خود هستند، -28.9% بوده است. این آمار عملکرد سال گذشته آن سهام را توصیف می‌کند، نه عملکرد سال آینده را. این برچسب نشان‌دهنده موقعیت قیمت در یک محدوده است، نه ارزش‌گذاری بنیادی.

رسیدن سهم به کف 52 هفته‌ای به چه معناست؟

این بدان معناست که قیمت بسته شدن سهم، از تمامی قیمت‌های ثبت شده در 52 هفته گذشته کمتر بوده است. در تاریخ Jul 21, 2026، این وضعیت برای 7 مورد در این صفحه صدق می‌کرد. رسیدن به کف می‌تواند ناشی از تضعیف وضعیت کسب‌وکار یا کاهش تدریجی قیمت در یک شرکت سودده باشد؛ قیمت به تنهایی علت را مشخص نمی‌کند.

در حال حاضر چه تعداد سهم در سقف 52 هفته‌ای هستند؟

تا زمان بسته شدن بازار در Jul 21, 2026، تعداد 26 سهم در این صفحه در سطح سقف 52 هفته‌ای یا در فاصله 1 درصدی از آن بسته شده‌اند، در حالی که 7 سهم در سطح کف 52 هفته‌ای یا در فاصله 1 درصدی از آن بوده‌اند. این لیست شامل شرکت‌های عملیاتی بزرگ و با نقدینگی بالا در ایالات متحده است که در 20 روز تقویمی گذشته، حداقل گردش مالی 2 میلیارد دلاری داشته‌اند؛ بنابراین این آمار کمتر از آنچه در یک لیست جامع از تمامی نمادها گزارش می‌شود، خواهد بود.

سقف 52 هفته‌ای چگونه محاسبه می‌شود؟

تمام قیمت‌های بسته شدن در 52 هفته گذشته را در نظر گرفته و بزرگترین آن‌ها را پیدا کنید. اگر آخرین قیمت بسته شدن با آن برابر باشد، سهم یک سقف بسته شدن 52 هفته‌ای ثبت کرده است. این صفحه همچنین هر سهمی را که در فاصله 1 درصدی از آن سطح باشد محاسبه می‌کند و هر نمادی را که در 460 روز گذشته دچار تقسیم سهام (split) شده باشد، حذف می‌کند؛ زیرا تقسیم سهام قیمت اعلام شده را تغییر می‌دهد بدون اینکه ارزش واقعی دارایی را تغییر دهد.


هر پنل در بالا، کد SQL مربوط به خود را ذخیره کرده است. برای بررسی دقیق لیست، کوئری زیر هر جدول را باز کنید یا آن را در ترمینال Strasmore اجرا کنید. برای مشاهده بزرگترین تغییرات قیمتی هفته به جای نقاط حدی سال، به بیشترین سودده‌ترین‌ها و زیان‌ده‌ترین‌های هفته مراجعه کنید.

#52-week high#52-week low#market breadth#stock screener#market data