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

أكبر الأسهم الرابحة والخاسرة في 2026

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

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

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

اجتاز كل سهم أدناه حداً أدنى للسيولة قبل إدراجه في الترتيب: متوسط تداول لا يقل عن 100 مليون دولار من قيمة الأسهم في كل جلسة مكتملة خلال الشهر الماضي. أما النسبة الكبيرة على سهم لا يتداوله أحد تقريباً فهي مجرد تسعير، وليست نتيجة فعلية.

الاستعلامأكبر الرابحين في الأسهم لعام 2026: أفضل عشرة منذ بداية العام بين الأسهم كثيرة التداول
tickerالعائد منذ بداية السنة (%)متوسط القيمة اليومية بالدولار (مليون)
MRNA692.83002
SNDK47111073
TWST355.2476
TXG343.5334
MXL338.4246
DELL2683100
AXTI236.9499
AEHR229.3203
PBF218.3195
KOD215.7389
استعلام 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
جرّب هذا الاستعلام بنفسك

يتصدر MRNA مكاسب العام بنسبة 692.8%، يليه SNDK عند 471%، ثم TWST في المركز الثالث عند 355.2%. وحتى السهم الذي يحتل المركز العاشر في القائمة، KOD، ارتفع بنسبة 215.7%، ما يعني أن جميع الأسهم الواردة في الجدول تفوقت بفارق كبير على أي مؤشر واسع النطاق.

يحمل عمود قيمة التداول بالدولار إلى جانب كل حركة سعرية قدراً من المعلومات يوازي ما تحمله النسبة المئوية. يبلغ متوسط قيمة التداول اليومية في KOD نحو 389 مليون دولار. أما MRNA، المتصدر للقائمة، فيسجل متوسطاً يومياً قدره 3002 مليون دولار. يتجاوز حجم التداول اليومي لكل سهم هنا 100 مليون دولار، كما أن النطاق فوق هذا الحد واسع بما يكفي لجعل النسبة المئوية نفسها تعني أمرين مختلفين عند طرفيه. فمن الأسهل دفع سهم منخفض السيولة، ويصعب الخروج منه بالسعر الظاهر على الشاشة.

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

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

الاستعلامأكبر الخاسرين في الأسهم لعام 2026: أسوأ عشرة منذ بداية العام بين الأسهم كثيرة التداول
tickerالعائد منذ بداية السنة (%)متوسط القيمة اليومية بالدولار (مليون)
CTVA-80.8410
TTD-65.7176
FLUT-64.8159
JOBY-64.3114
STLA-61.5126
OKLO-59.4288
APP-59.11168
SMR-57.8217
FICO-54.5998
Z-54.1114
استعلام 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
جرّب هذا الاستعلام بنفسك

سجّل CTVA أكبر انخفاض منذ بداية العام بنسبة -80.8%، يليه TTD بنسبة -65.7%. ويأتي Z في المرتبة العاشرة، عند -54.1%. بعض الأسهم الواردة هنا لشركات كبيرة وواسعة الملكية، وليست لأسهم متناهية الصغر مضاربية، وهذا هو الجانب المفاجئ في قوائم الخاسرين. فالسيولة وتغطية المحللين لا تضعان حداً أدنى لسعر السهم. ومن كان يحتفظ بأحد هذه الأسهم باعتباره حصة كبيرة من محفظته، تحمّل كامل الانخفاض. وتقيس صفحة مخاطر الاحتفاظ بسهم واحد ذلك من خلال أرقام التقلب والتراجع.

ما مقدار ارتفاع السوق في عام 2026

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

الاستعلاماتساع السوق منذ بداية العام: توزيع الأسهم المفحوصة حسب نطاقات العائد
الفئةالأسماءحصة الجانب (%)
Down 40%+3741.2
Down 20-40%8441.2
Down 10-20%10441.2
Down 0-10%18741.2
Up 0-10%16258.8
Up 10-25%19458.8
Up 25-50%11658.8
Up 50%+11658.8
استعلام 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
جرّب هذا الاستعلام بنفسك

ارتفع 58.8% من الأسماء الخاضعة للفحص منذ بداية العام، بينما انخفض 41.2% منها. ويكشف التوزيع ما يخفيه جدول أكبر عشرة أسماء. يقع 37 اسماً ضمن شريحة Down 40%+ في أحد الطرفين، و116 اسماً ضمن شريحة Up 50%+ في الطرف الآخر، مقابل 187 اسماً ضمن شريحة Down 0-10% و162 اسماً ضمن شريحة Up 0-10% على جانبي مستوى عدم التغير. يؤدي معظم السوق حركة عادية في أي عام، أما الأسماء الواردة في الجدولين أعلاه فهي الاستثناءات التي تتكوّن منها المتوسطات.

موقع السوق نفسه

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

الاستعلامصناديق ETFs للمؤشرات الأربعة الرئيسية منذ بداية العام خلال الفترة المقاسة نفسها
التسميةالعائد منذ بداية السنة (%)مقاسًا من تاريخمقاسًا حتى تاريخ
Nasdaq 100 (QQQ)17.42026-01-022026-10-15
S&P 500 (SPY)12.52026-01-022026-10-15
Russell 2000 (IWM)11.12026-01-022026-10-15
Dow (DIA)8.22026-01-022026-10-15
استعلام 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-10-15). وخلال هذه الفترة، حقق Nasdaq 100 (QQQ) عائداً قدره 17.4%، بينما حقق Dow (DIA) عائداً قدره 8.2%. تجاوز كل اسم في جدول الأسهم الرابحة المؤشرات الأربعة بفارق كبير. وهذا يعكس آلية احتساب المؤشر: إذ تُحتسب مئات المكونات معاً في رقم واحد، فتُلغي التحركات الفردية بعضها جزئياً. وكان الفارق بين هذه الأسهم أوسع بكثير من حركة المؤشر نفسه، بينما يرتب جدول أداء القطاعات للنصف الأول القطاعات الأحد عشر كلها مقارنةً ببعضها.

التقسيم الذي يزيّف حركة السهم منذ بداية العام

يغيّر تقسيم الأسهم عدد الأسهم وسعر السهم الواحد من دون أن يغيّر قيمة الحيازة. وخلال فترة طويلة كهذه، تُجري شركات كثيرة تقسيمات لأسهمها، بينما يقرأ حساب الأداء منذ بداية العام، إذا لم يكن معدّلاً، التغير في سعر السهم الواحد على أنه أداء. أُجري لكل من الأسماء أدناه تقسيم أو توزيع أسهم في 2026 كان كبيراً بما يكفي لتحريك ذلك السعر بنسبة لا تقل عن الخُمس، كما اجتاز كل منها الحد الأدنى نفسه للسيولة. لذلك كان كل اسم مؤهلاً للظهور في القوائم أعلاه قبل أن يستبعده مرشح التقسيم.

الاستعلامالمستبعد من القائمة: تجزئات أسهم في 2026 كبيرة بما يكفي لتزييف الحركة منذ بداية العام
tickerالنسبة منذ بداية السنة غير المعدلة (%)أثر التجزئة على السعر (%)نوع التجزئةتاريخ التجزئة
BKNG-96.9-96forward split2026-04-06
KLAC-86.2-90forward split2026-06-12
CVNA-85.6-80forward split2026-05-08
VGT-83.9-87.5forward split2026-04-21
VUG-81.7-83.3forward split2026-04-21
VOOG-81-83.3forward split2026-04-21
MGK-77.9-80forward split2026-04-21
IWF-73.9-75forward split2026-04-29
VO-72.2-75forward split2026-04-21
INTW-57.3-87.5forward split2026-06-26
CRWD-48.4-75stock dividend2026-07-02
MNST-40.9-50stock dividend2026-08-11
APH-40.6-50stock dividend2026-09-03
HON7.6100reverse split2026-06-29
ETHA141.8200reverse split2026-10-06
استعلام 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 بنسبة -96.9% على شاشة غير معدّلة بعد أن أدى forward split إلى تغيير سعر السهم الواحد بنسبة -96%، كما كان سيظهر KLAC بنسبة -86.2% بعد أن أدى forward split إلى تغيير سعره بنسبة -90%. لم يخسر أي مالك لأي من السهمين شيئاً في اليوم الذي أصبح فيه التقسيم نافذاً. فقد قُسّم سعر السهم الواحد، وضُرب عدد الأسهم، بالعامل نفسه. ويعزل عمود أثر التقسيم تغير السعر الذي يعود إلى التقسيم وحده، وهو الجزء الذي تقرأه الشاشة غير المعدّلة على أنه أداء.

يسير الصف الأخير في اللوحة بالاتجاه المعاكس: يُظهر ETHA نسبة 141.8% بعد أن أدى reverse split إلى رفع سعر السهم الواحد بنسبة 200%، فزاد السعر بدلاً من خفضه. وأي قائمة تتجاهل هذه الخطوة تنشر بيانات وهمية في القمة والقاع في الوقت نفسه. لذلك تعزل الشاشة رموز الأسهم التي خضعت لتقسيم، بدلاً من محاولة تصحيح أسعارها. وقد يظهر صندوق في هذه اللوحة بسهولة ظهور شركة فيها؛ فصناديق المؤشرات تقسّم أسهمها أيضاً، وتشمل هذه الشاشة كليهما.

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

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

الاستعلامالفحص مرحلةً بمرحلة: عدد الأسهم التي تجتاز كل مرشح
خطوة الفحصالأسماء
Traded the first and the last full session4543
Averaging $100m+ a day over the past month1082
Opened 2026 above $10 a share1049
Not on the excluded-fund list1017
No split or stock dividend in 20261000
استعلام 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 يوماً تقويمياً، مع احتساب الجلسات التي امتدت من البداية إلى النهاية فقط. وإلا فإن الجلسة الجزئية ستقسم قيمة تداول يوم كامل جزئياً على يوم كامل، ما يقلل من قيمة التداول المحسوبة لكل اسم. يخفض هذا المرشح الواحد عدد الأسماء من 4543 ticker إلى 1082.
  • الحد الأدنى للسعر. يجب أن يكون السهم قد افتتح العام بسعر يتجاوز 10 دولارات للسهم. إذ تحقق الأسهم التي يقل سعرها عن 10 دولارات نسباً كبيرة نتيجة تحركات سعرية صغيرة.
  • تُستبعد الصناديق ذات الرافعة المالية والصناديق العكسية عبر قائمة منتقاة، وتُطبع القائمة كاملة في استعلام SQL أسفل كل جدول. وتشمل صناديق المؤشرات ذات الرافعة والصناديق المرتبطة بسهم واحد التي تضاعف الحركة اليومية لشركة واحدة. وقد يتصدر صندوق ذو رافعة أي قائمة للتحركات السعرية الخام من دون صدور خبر واحد عن الشركة. وتُحدَّث القائمة يدوياً، وهذه نقطة ضعفها: فلا يُستبعد الصندوق الذي أُطلق هذا الشهر إلا بعد أن يضيفه أحد إلى القائمة.
  • لا تُستبعد الصناديق العادية. فإذا اجتاز ETF غير مرفوع الرافعة، يتتبع مؤشراً أو قطاعاً، حدي السيولة والسعر، يُرتَّب هنا إلى جانب الشركات التشغيلية، ويُحتسب أيضاً ضمن أعداد اتساع السوق. والصندوق سلة من الأسماء المحتسبة أصلاً في الكون نفسه، لذا اقرأ هذه الصفوف باعتبارها أداء السلة، لا أداء شركة واحدة خلال العام.
  • التجزئات. يُستبعد أي ticker شهد تجزئة أو توزيع أسهم دخل حيز التنفيذ خلال عام 2026، مهما كانت النسبة صغيرة. وهذا هو الخيار المحافظ: فهو يحرم عدداً قليلاً من الأسهم ذات الأداء الحقيقي من الظهور في القائمة، لكنه لا ينشر قط تغيراً في عدد الأسهم على أنه عائد. وتعرض اللوحة أعلاه الأسماء المستبعدة التي كانت تجزئتها كبيرة بما يكفي لإيهام القارئ بوجود حركة سعرية.
  • الإدراجات المتأخرة. لا يملك أي شركة أُدرجت بعد أول جلسة في العام سعراً لشهر يناير، ولذلك تغيب عن هذه الجداول. ويمثل ذلك فجوة فعلية في عام اتسم بجدول مزدحم من الإدراجات الجديدة.
  • النتيجة. يُرتَّب 1000 اسماً، ويمثل أعلاها وأدناها، عشرة أسماء في كل مجموعة، القائمتين المعروضتين في هذه الصفحة.

السؤال نفسه عبر ثلاث فترات

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

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

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

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

ما الأسهم التي تراجعت بأكبر قدر في 2026؟

يُعد CTVA الأسوأ أداءً في 2026 ضمن هذه العينة، عند -80.8%، متقدماً عليه TTD عند -65.7%. وتظهر القائمة الكاملة لأكبر الأسهم خسارةً في 2026 في الجدول الثاني أعلاه، مع تحديثها خلال العام.

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

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

هل تشمل قائمة الأسهم الرابحة في 2026 صناديق ETF ذات الرفع المالي؟

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


كل جدول هنا عبارة عن استعلام مخزّن مرفق به SQL. وسّع أي لوحة لمراجعة معايير العينة، أو أعد بناءها باستخدام حدودك الخاصة على منصة Strasmore.

#market movers#gainers and losers#year to date#stock splits#market breadth