Strasmore Research
ملخص الأسواق Matt Connorبقلم Matt Connor · آخر تحديث في 2026-07-23 · data as of July 23, 2026 · refreshed weekly

أكبر الأسهم ارتفاعاً وانخفاضاً في عام 2026

تعرف على قائمة الأسهم الأفضل أداءً في عام 2026 والأكثر خسارة بناءً على بيانات البورصة المباشرة، مع استبعاد صناديق الرافعة المالية وعمليات تقسيم الأسهم.

تتصدر SNDK قائمة الأسهم الأفضل أداءً في عام 2026 حتى الآن، حيث ارتفعت بنسبة 550.2% منذ جلسة افتتاح العام وحتى آخر جلسة مكتملة. تصنف هذه الصفحة الأسهم الأكثر ارتفاعاً وانخفاضاً في عام 2026 من بين الأسهم النشطة فعلياً، ويتم القياس بناءً على سجلات البورصة المباشرة وليس ملخصات الموردين، مع تحديث البيانات طوال العام. يتم استبعاد عمليات تقسيم الأسهم وصناديق الرافعة المالية قبل إجراء أي تصنيف، وهو الخطأ الذي تقع فيه معظم القوائم السنوية الحالية.

أكبر الأسهم ارتفاعاً في عام 2026

تجاوز كل اسم مدرج أدناه حد السيولة الأدنى قبل تصنيفه؛ حيث بلغ متوسط تداول الأسهم 100 مليون دولار على الأقل في الجلسة الواحدة خلال الشهر الماضي. إن نسبة مئوية كبيرة على سهم يفتقر للتداول تُعد مجرد اقتباس وليس نتيجة فعلية.

الاستعلامأكبر الرابحين في 2026: أفضل عشرة أسهم من حيث التداول حتى الآن
استعلام SQL الدقيق وراء كل رقم
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 d
    HAVING count() >= 380
),
universe AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING adv >= 100000000
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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 NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT e.ticker AS ticker,
    round((e.latest_close / e.year_open - 1) * 100, 1) AS ytd_return_pct,
    round(u.adv / 1e6, 0) AS avg_daily_dollar_m
FROM edges AS e
INNER JOIN universe AS u ON e.ticker = u.ticker
WHERE e.year_open >= 10
ORDER BY (e.latest_close / e.year_open) DESC
LIMIT 10

تتصدر SNDK العام بنسبة 550.2%، تليها MXL بنسبة 382.4%، بينما تأتي AEHR في المركز الثالث بنسبة 370.6%. أما المركز العاشر في القائمة، وهو SYRE، فلا يزال مرتفعاً بنسبة 213.2%، مما يعني أن الجدول بأكمله قد تجاوز أداء أي مؤشر عام.

تحمل خانة القيمة الدولارية بجانب كل حركة معلومات لا تقل أهمية عن النسبة المئوية. يبلغ متوسط حجم التداول اليومي لـ SYRE حوالي 100 مليون دولار. أما SNDK في صدارة القائمة، فيبلغ متوسط تداولها 18782 مليون دولار. يتجاوز كل اسم هنا حاجز الـ 100 مليون دولار يومياً، ويتسع النطاق فوق هذا الحد بما يجعل نفس النسبة المئوية تعني شيئين مختلفين عند طرفيها. فالسهم قليل السيولة يسهل تحريك سعره، لكن يصعب الخروج منه بالسعر المعروض على الشاشة.

أكبر الخاسرين في سوق الأسهم لعام 2026

المقياس ذاته ولكن بالعكس: أكبر التراجعات منذ بداية العام بين الأسهم التي تجاوزت حد السيولة نفسه.

الاستعلامأكبر الخاسرين في 2026: أسوأ عشرة أسهم من حيث التداول حتى الآن
استعلام SQL الدقيق وراء كل رقم
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 d
    HAVING count() >= 380
),
universe AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING adv >= 100000000
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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 NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT e.ticker AS ticker,
    round((e.latest_close / e.year_open - 1) * 100, 1) AS ytd_return_pct,
    round(u.adv / 1e6, 0) AS avg_daily_dollar_m
FROM edges AS e
INNER JOIN universe AS u ON e.ticker = u.ticker
WHERE e.year_open >= 10
ORDER BY (e.latest_close / e.year_open) ASC
LIMIT 10

سجلت EOSE أكبر تراجع منذ بداية العام بنسبة -63.6%، تليها CSGP بنسبة -57.5%. وجاءت HUBS في المرتبة العاشرة بنسبة -45.2%. ومن المثير للدهشة وجود عدة شركات كبرى ذات تداول واسع في هذه القائمة بدلاً من الشركات الصغيرة ذات المضاربة. إن السيولة وتغطية المحللين لا تضمن حماية سعر السهم من الهبوط. ومن يمتلك حصة كبيرة من أي من هذه الأسهم في محفظته قد تعرض كامل التراجع، وهو ما تقيسه صفحة مخاطر امتلاك سهم واحد عبر أرقام التقلب والحد الأقصى للتراجع.

كم تبلغ نسبة الصعود في السوق خلال عام 2026

تُظهر قائمة المتصدرين الطرفين المتطرفين فقط. أما اتساع السوق فيوضح الحالة العامة: أي كيف تنقسم جميع الأسهم التي شملها الفحص، بما في ذلك صناديق المؤشرات، بين الأسهم الصاعدة والهابطة، مقسمة حسب حجم الحركة.

الاستعلامنطاق الأداء منذ بداية العام: توزيع الأسهم المختارة حسب فئات العائد
استعلام SQL الدقيق وراء كل رقم
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 d
    HAVING count() >= 380
),
universe AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING adv >= 100000000
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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 NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
),
rets AS (
    SELECT e.ticker AS ticker, (e.latest_close / e.year_open - 1) * 100 AS ret
    FROM edges AS e
    INNER JOIN universe AS u ON e.ticker = u.ticker
    WHERE e.year_open >= 10
)
SELECT bucket,
       names,
       round(100 * sum(names) OVER (PARTITION BY side) / sum(names) OVER (), 1) AS side_share_pct
FROM (
    SELECT tup.1 AS bucket, tup.2 AS names, tup.3 AS ord, tup.4 AS side
    FROM (
        SELECT arrayJoin([
            ('Down 40%+',   countIf(ret < -40),               1, 'down'),
            ('Down 20-40%', countIf(ret >= -40 AND ret < -20), 2, 'down'),
            ('Down 10-20%', countIf(ret >= -20 AND ret < -10), 3, 'down'),
            ('Down 0-10%',  countIf(ret >= -10 AND ret < 0),   4, 'down'),
            ('Up 0-10%',    countIf(ret >= 0 AND ret < 10),    5, 'up'),
            ('Up 10-25%',   countIf(ret >= 10 AND ret < 25),   6, 'up'),
            ('Up 25-50%',   countIf(ret >= 25 AND ret < 50),   7, 'up'),
            ('Up 50%+',     countIf(ret >= 50),                8, 'up')
        ]) AS tup
        FROM rets
    )
)
ORDER BY ord

ارتفعت 61.8% من الأسهم التي شملها الفحص خلال العام، بينما انخفضت 38.2%. التوزيع هو ما تخفيه جداول العشرة الأوائل. يوجد 25 من الأسهم في فئة Down 40%+ عند أحد الطرفين، و132 في فئة Up 50%+ عند الطرف الآخر، مقابل 144 في فئة Down 0-10% و173 في فئة Up 0-10% على جانبي الأسهم غير المتغيرة. معظم السوق يشهد تحركات عادية في أي عام، والأسهم الموجودة في الجدولين أعلاه هي الاستثناءات التي تُبنى عليها المتوسطات.

وضع السوق الحالي

تختلف أداء السهم الفردي عن أداء السوق العام. إليك أداء صناديق المؤشرات المتداولة الأربعة الرئيسية خلال نفس الفترة الزمنية تماماً:

الاستعلامأهم 4 صناديق ETFs للمؤشرات، منذ بداية العام، خلال نفس الفترة
استعلام SQL الدقيق وراء كل رقم
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 d
    HAVING count() >= 380
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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 ('SPY', 'QQQ', 'DIA', 'IWM')
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT multiIf(ticker = 'SPY', 'S&P 500 (SPY)', ticker = 'QQQ', 'Nasdaq 100 (QQQ)',
               ticker = 'DIA', 'Dow (DIA)', ticker = 'IWM', 'Russell 2000 (IWM)', ticker) AS label,
    round((latest_close / year_open - 1) * 100, 1) AS ytd_return_pct,
    (SELECT toString(min(d)) FROM complete) AS measured_from_date,
    (SELECT toString(max(d)) FROM complete) AS measured_through_date
FROM edges
ORDER BY ytd_return_pct DESC

تُقاس كل من لوحة البيانات واللوحة أعلاه خلال فترة زمنية واحدة: من أول جلسة كاملة لعام 2026 (2026-01-02) حتى آخر جلسة مكتملة (2026-07-21). وخلال هذه الفترة، حقق Russell 2000 (IWM) عائداً بنسبة 19.7% وحقق Dow (DIA) عائداً بنسبة 8.2%. وقد تجاوزت جميع الأسهم المدرجة في قائمة الرابحين هذه المؤشرات الأربعة بفارق كبير، وهو ما يفسره عمل المؤشر؛ حيث يتم دمج مئات الأصول في خط واحد، مما يؤدي إلى إلغاء التحركات الفردية لبعضها البعض جزئياً. وكان التفاوت تحت هذا الخط أوسع بكثير من الخط نفسه، وتُظهر بطاقة أداء القطاعات للنصف الأول ترتيب جميع القطاعات الأحد عشر مقارنة ببعضها البعض.

The stock split that fakes a year-to-date move

A split changes the share count and the per-share price without changing what a holding is worth. Over a window this long many companies split, and an unadjusted year-to-date calculation reads the change in the per-share price as performance. The names below each carried a 2026 split or stock dividend large enough to move that price by at least a fifth, and each cleared the same liquidity floor, so each was eligible for the boards above before the split filter removed it.

الاستعلاممستبعد من القوائم: عمليات split في 2026 قد تزيّف حركة السعر السنوية
استعلام SQL الدقيق وراء كل رقم
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 d
    HAVING count() >= 380
),
universe AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING adv >= 100000000
),
split_terms AS (
    SELECT ticker,
        argMax(split_to, execution_date) AS new_shares,
        argMax(split_from, execution_date) AS old_shares,
        round((old_shares / new_shares - 1) * 100, 1) AS split_price_effect_pct,
        replaceAll(argMax(adjustment_type, execution_date), '_', ' ') AS split_type,
        toString(max(execution_date)) AS split_date
    FROM global_markets.stocks_splits
    WHERE execution_date BETWEEN toDate('2026-01-01') AND today()
    GROUP BY ticker
    HAVING new_shares > 0 AND old_shares > 0
       AND greatest(new_shares / old_shares, old_shares / new_shares) >= 1.25
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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 NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
      AND ticker IN (SELECT ticker FROM split_terms)
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
),
ranked AS (
    SELECT e.ticker AS ticker,
        round((e.latest_close / e.year_open - 1) * 100, 1) AS unadjusted_ytd_pct,
        s.split_price_effect_pct AS split_price_effect_pct,
        s.split_type AS split_type,
        s.split_date AS split_date
    FROM edges AS e
    INNER JOIN split_terms AS s ON e.ticker = s.ticker
    WHERE e.year_open >= 10 AND e.ticker IN (SELECT ticker FROM universe)
)
SELECT ticker, unadjusted_ytd_pct, split_price_effect_pct, split_type, split_date
FROM (
    SELECT ticker, unadjusted_ytd_pct, split_price_effect_pct, split_type, split_date,
           row_number() OVER (ORDER BY unadjusted_ytd_pct ASC) AS rn_low,
           row_number() OVER (ORDER BY unadjusted_ytd_pct DESC) AS rn_high
    FROM ranked
)
WHERE rn_low <= 14 OR rn_high = 1
ORDER BY unadjusted_ytd_pct ASC

BKNG would print -96.7% on an unadjusted screen after a forward split moved its per-share price -96%, and VGT would print -84.8% after a forward split moved its price -87.5%. No holder of either lost anything on the day the split took effect. The per-share price was divided and the share count was multiplied by the same factor. The split effect column isolates the price change the split alone accounts for, which is the part an unadjusted screen reads as performance.

The last row of the panel runs the other way: DD shows 243.4% after a reverse split lifted its per-share price 200%, raising the price instead of cutting it. Any list that skips this step publishes fiction at the top and the bottom simultaneously, which is why the screen sets split tickers aside rather than trying to patch their prices. A fund can land in this panel as easily as a company: index funds split their shares too, and this screen covers both.

كيفية قياس هذه الشاشة

كل مرحلة من مراحل الشاشة، مع عدد الأسماء المتبقية بعد كل مرحلة:

الاستعلاممراحل الفلترة: عدد الأسهم التي تجتاز كل مرحلة
استعلام SQL الدقيق وراء كل رقم
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 d
    HAVING count() >= 380
),
universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) >= 100000000
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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

    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
),
flagged AS (
    SELECT ticker,
        year_open,
        ticker IN (SELECT ticker FROM universe) AS liquid,
        ticker NOT IN ('SPCX','KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL') AS not_geared,
        ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                       WHERE execution_date BETWEEN toDate('2026-01-01') AND today()) AS no_split
    FROM edges
)
SELECT tup.1 AS screen_step, tup.2 AS names
FROM (
    SELECT arrayJoin([
        ('Traded the first and the last full session', count()),
        ('Averaging $100m+ a day over the past month', countIf(liquid)),
        ('Opened 2026 above $10 a share', countIf(liquid AND year_open >= 10)),
        ('Not on the excluded-fund list', countIf(liquid AND year_open >= 10 AND not_geared)),
        ('No split or stock dividend in 2026', countIf(liquid AND year_open >= 10 AND not_geared AND no_split))
    ]) AS tup
    FROM flagged
)

المنهجية، بالتفصيل:

  • النطاق الزمني. أول جلسة تداول كاملة لعام 2026 وحتى أحدث جلسة كاملة مسجلة. تُستخرج نقطتا البداية والنهاية من الشموع السعرية الدقيقة. تُحتسب الجلسة فقط إذا كانت تحتوي على عدد كامل من شموع ساعات التداول العادية، لذا لا تُعتبر اليوم الذي لا يزال قيد التنفيذ منتهياً.
  • العائد. سعر الافتتاح لأول جلسة عادية في السنة مقابل سعر الإغلاق لآخر جلسة عادية، ويُحتسب من الشموع السعرية الدقيقة. يتم تجاهل أسعار ما قبل السوق وما بعد السوق. هذه عوائد سعرية؛ ولم تُضف التوزيعات النقدية، لذا تظهر الأسهم ذات العائد المرتفع بنتائج أقل قليلاً مما تظهره أرقام إجمالي العائد.
  • الحد الأدنى للسيولة. متوسط تداول لا يقل عن 100 مليون دولار خلال ساعات التداول العادية لكل جلسة على مدار آخر 20 يوماً تقويمياً، مع احتساب الجلسات التي تمت من البداية إلى النهاية فقط. إن احتساب الجلسات غير المكتملة قد يؤدي إلى قسمة جزء من قيمة اليوم على يوم كامل، مما يقلل من قيمة تداول كل سهم. هذا الفلتر وحده يقلص القائمة من 4516 رمزاً إلى 1039.
  • الحد الأدنى للسعر. يجب أن يكون سعر افتتاح السهم في بداية العام أعلى من 10 دولارات للسهم الواحد. الأسهم التي يقل سعرها عن 10 دولارات تُنتج نسباً مئوية كبيرة من تغيرات سعرية صغيرة.
  • الصناديق الرافعة والمنافسة. يتم استبعاد الصناديق الرافعة (Leveraged) والمنافسة (Inverse) عبر قائمة مختارة، تظهر كاملة في قاعدة بيانات SQL أسفل كل جدول. تشمل القائمة الصناديق المرتبطة بالمؤشرات والصناديق التي تضاعف حركة السهم اليومية. يمكن للصندوق الرافعة أن يتصدر أي قائمة للتحركات القوية دون وجود أي أخبار عن الشركة. تُدار هذه القائمة يدوياً، وهذا هو مكمن ضعفها: فالصندوق الذي أُطلق هذا الشهر لن يُستبعد إلا بعد إضافته يدوياً.
  • الصناديق العادية لا تُستبعد. يتم ترتيب صناديق المؤشرات أو صناديق القطاعات (ETF) غير الرافعة التي تجتاز حدود السيولة والسعر هنا جنباً إلى جنب مع الشركات التشغيلية، كما تُحتسب ضمن إحصائيات اتساع السوق. الصندوق هو سلة من الأسماء المحتسبة بالفعل في نفس النطاق، لذا اقرأ تلك الصفوف على أنها أداء السلة وليس أداء شركة واحدة.
  • تجزئة الأسهم. يتم استبعاد أي رمز يتضمن تجزئة للأسهم أو توزيعات أسهم ناتجة عن تجزئة خلال عام 2026، بغض النظر عن نسبة التجزئة. هذا هو الخيار الأكثر تحفظاً؛ فهو يحرم بعض الشركات ذات الأداء الحقيقي من مكان في القائمة، ويمنع اعتبار التغير في عدد الأسهم عائداً سعرياً. تعرض اللوحة أعلاه الأسماء المستبعدة التي كانت تجزئتها كبيرة بما يكفي لتزييف حركة السعر.
  • الإدراجات المتأخرة. الشركات التي أُدرجت بعد أول جلسة في العام ليس لها سعر في يناير وتغيب عن هذه الجداول، وهو نقص حقيقي في السنوات التي تشهد وتيرة إدراجات جديدة عالية.
  • النتيجة. يتم ترتيب 956 اسماً، وأعلى وأدنى عشرة أسماء منها هي اللوحتان المعروضتان في هذه الصفحة.

نفس السؤال عبر ثلاث فترات زمنية

تعد الفترة منذ بداية العام بمثابة درجة في سلم، وتختلف طبيعة الحركة باختلاف المدة الزمنية. تعرض الرؤية الأسبوعية أكبر الأسهم ارتفاعاً وانخفاضاً هذا الأسبوع، بينما تعرض الرؤية الشهرية أكبر الأسهم تحركاً هذا الشهر، أما هذه الصفحة فتعرض بيانات العام. تختلف معايير الفرز حسب الفترة؛ حيث تعتمد هذه الصفحة على متوسط تداول يومي قدره 100 مليون دولار خلال الشهر الماضي، بينما تعتمد الصفحتان الأسبوعية والشهرية على إجمالي المبالغ المتداولة ضمن فترتهما الزمنية الخاصة، لذا قد يتصدر سهم ما قائمة معينة ويغيب عن أخرى. فالسهم الذي يتصدر القائمة الأسبوعية نتيجة رد فعل على الأرباح قد يحل في منتصف القائمة على مدار العام. وللحصول على صورة أشمل لما حدث خلال العام حتى الآن، يقدم ملخص السوق للنصف الأول تفاصيل حول المؤشرات وأسعار الفائدة والقطاعات، بينما يوضح كيفية عمل صناديق الاستثمار المتداولة الرافعة سبب استبعاد الصناديق ذات الرافعة المالية من هذه القائمة.

الأسئلة الشائعة

ما هو السهم الأفضل أداءً في عام 2026؟

من بين الأسهم التي يبلغ متوسط تداولها اليومي 100 مليون دولار على الأقل، والتي بدأت العام بسعر أعلى من 10 دولارات، ولم تشهد أي عملية تقسيم أسهم في عام 2026، ولم تكن مدرجة في قائمة الصناديق الرافعة، يعد SNDK السهم الأفضل أداءً في عام 2026 حتى الآن، حيث ارتفع بنسبة 550.2% منذ أول جلسة في العام. ويأتي MXL في المرتبة الثانية بنسبة 382.4%.

ما هي الأسهم الأكثر انخفاضاً في عام 2026؟

سجل EOSE أسوأ أداء في عام 2026 ضمن هذه المعايير بنسبة -63.6%، يليه CSGP بنسبة -57.5%. يمكنك العثور على القائمة الكاملة لأكبر الأسهم الخاسرة في عام 2026 في الجدول الثاني أعلاه، والتي يتم تحديثها مع استمرار العام.

كيف يتم حساب عائد السهم منذ بداية العام؟

يقارن العائد منذ بداية العام بين السعر الأخير والسعر عند بداية السنة التقويمية، ويعبر عن التغيير كنسبة مئوية. في هذا السياق، تتم المقارنة بين سعر الافتتاح في أول جلسة عادية لعام 2026 وسعر الإغلاق في أحدث جلسة مكتملة. يتم استبعاد الأسهم التي أجرت عملية تقسيم أسهم خلال العام بدلاً من تعديل بياناتها، لضمان دقة البيانات المقدمة للقارئ.

هل تشمل قائمة الرابحين لعام 2026 صناديق الاستثمار المتداولة (ETFs) الرافعة؟

لا. تضاعف الصناديق الرافعة أو العكسية حركة المؤشر أو السهم اليومية، لذا فهي تتصدر عادةً قوائم المتحركات دون وجود أخبار مؤسسية خلفها. يتم استبعاد هذه الصناديق بالاسم قبل عملية التصنيف، وتظهر قائمة هذه الصناديق في كود SQL أسفل كل جدول. أما صناديق الاستثمار المتداولة العادية للمؤشرات والقطاعات فهي حالة مختلفة؛ حيث تخضع لنفس معايير أي سهم ويتم تصنيفها هنا، لذا يمكن أن يظهر الصندوق في أي من القائمتين.


كل جدول هنا هو استعلام مخزن مع كود SQL الخاص به. يمكنك توسيع أي لوحة لمراجعة المعايير، أو إعادة بنائها باستخدام معاييرك الخاصة عبر محطة Strasmore.