أكبر الأسهم الرابحة والخاسرة في 2026
تعرّف على أفضل الأسهم أداءً في 2026 وأكبر الخاسرين، مرتبةً وفق السيولة الفعلية في البورصة، مع استبعاد تجزئات الأسهم والصناديق ذات الرافعة المالية.
تتصدر SNDK قائمة أفضل الأسهم أداءً في عام 2026 حتى الآن، بارتفاع 536.4% منذ أول جلسة تداول في العام وحتى أحدث جلسة مكتملة. تصنّف هذه الصفحة أكبر الأسهم الرابحة والخاسرة في عام 2026 بين الأوراق المالية المتداولة فعلياً، بالاعتماد على بيانات التداول في البورصة لا على ملخصات المورّدين، وتتحدّث طوال العام. تُستبعد تجزئات الأسهم والصناديق ذات الرافعة المالية قبل إجراء أي تصنيف، إذ يقع معظم الخلل في قوائم الأداء منذ بداية العام بسبب تجاهل هذه الخطوة.
أكبر الأسهم ارتفاعاً في عام 2026
اجتاز كل اسم أدناه حداً أدنى للسيولة قبل ترتيب الأسماء: إذ بلغ متوسط قيمة الأسهم المتداولة في كل جلسة مكتملة خلال الشهر الماضي 100 مليون دولار على الأقل. أما النسبة الكبيرة لسهم لا يتداوله أحد تقريباً، فهي سعر معروض لا نتيجة فعلية.
| ticker | العائد منذ بداية السنة (%) | متوسط القيمة اليومية بالدولار م |
|---|---|---|
| SNDK | 536.4 | 15431 |
| MRNA | 399 | 5598 |
| TWST | 305.4 | 202 |
| DELL | 301.8 | 3566 |
| TXG | 287.5 | 142 |
| AEHR | 262.8 | 208 |
| MXL | 233.4 | 114 |
| AXTI | 226.9 | 525 |
| MU | 224.8 | 20455 |
| AMLX | 183.5 | 131 |
استعلام 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 العام بارتفاع قدره 536.4%، يليه MRNA عند 399%، ثم TWST في المرتبة الثالثة عند 305.4%. وحتى AMLX، الذي يحتل المرتبة العاشرة في القائمة، ارتفع بنسبة 183.5%، ما يعني أن جميع الأسهم في الجدول تفوقت بفارق كبير على أي مؤشر واسع النطاق.
يحمل عمود القيمة بالدولار بجانب كل حركة سعرية قدراً من المعلومات لا يقل عن النسبة المئوية. يبلغ متوسط قيمة التداول اليومية لـ AMLX نحو 131 مليون دولار. أما SNDK، المتصدر في القائمة، فيبلغ متوسط قيمة تداوله 15431 مليون دولار يومياً. يتجاوز متوسط التداول اليومي لكل اسم هنا 100 مليون دولار، كما أن النطاق فوق هذا الحد واسع بما يكفي لأن تعني النسبة المئوية نفسها أمرين مختلفين عند طرفيه. يكون دفع سعر السهم منخفض السيولة أسهل، ويصعب الخروج منه بالسعر الظاهر على الشاشة.
أكبر الأسهم الخاسرة في 2026
المقياس نفسه، ولكن في الاتجاه المعاكس: أكبر الانخفاضات منذ بداية العام بين الأسهم التي تتجاوز الحد الأدنى نفسه للسيولة.
| ticker | العائد منذ بداية السنة (%) | متوسط القيمة اليومية بالدولار م |
|---|---|---|
| TTD | -60.5 | 192 |
| WING | -54.4 | 103 |
| APP | -54.1 | 1257 |
| CSGP | -52.8 | 144 |
| FLUT | -52.7 | 140 |
| STLA | -51.5 | 105 |
| BSX | -51 | 763 |
| KLAR | -50.4 | 145 |
| RBLX | -49.1 | 303 |
| JOBY | -48.8 | 153 |
استعلام 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يعود أكبر انخفاض منذ بداية العام إلى TTD بنسبة -60.5%، يليه WING بنسبة -54.4%. ويحتل JOBY المرتبة العاشرة في القائمة عند -48.8%. وتضم القائمة عدة شركات كبيرة وواسعة الملكية، لا أسهماً صغيرة مضاربية، وهذا هو الجانب الذي يفاجئ الناس في قوائم الخاسرين. فلا تضع السيولة وتغطية المحللين حداً أدنى لسعر السهم. ومن كان يحتفظ بأحد هذه الأسهم بوصفه حصة كبيرة من محفظته، فقد تكبّد الحركة كاملة. وتقيس صفحة مخاطر الاحتفاظ بسهم واحد ذلك باستخدام أرقام التقلب والتراجع.
كم من السوق يرتفع في عام 2026
يعرض جدول المتصدرين الطرفين فقط. أما اتساع السوق فيُظهر الصورة الكاملة: كيف يتوزع الكون بأكمله بعد الفرز، بما في ذلك صناديق المؤشرات، بين الأسهم الصاعدة والهابطة، وفقاً لحجم الحركة.
| الفئة | الأسماء | حصة الجانب (%) |
|---|---|---|
| Down 40%+ | 18 | 35.5 |
| Down 20-40% | 69 | 35.5 |
| Down 10-20% | 78 | 35.5 |
| Down 0-10% | 162 | 35.5 |
| Up 0-10% | 152 | 64.5 |
| Up 10-25% | 198 | 64.5 |
| Up 25-50% | 142 | 64.5 |
| Up 50%+ | 103 | 64.5 |
استعلام 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ارتفع 64.5% من الأسماء التي شملها الفرز منذ بداية العام، بينما انخفض 35.5% منها. ويكشف هذا التوزيع ما يخفيه جدول أفضل عشرة أسماء. يقع 18 اسماً في شريحة Down 40%+ عند أحد الطرفين، و103 في شريحة Up 50%+ عند الطرف الآخر، مقابل 162 في شريحة Down 0-10% و152 في شريحة Up 0-10% على جانبي الأسهم التي لم تتغير. تؤدي معظم مكونات السوق أداءً اعتيادياً في أي عام، أما الأسماء الواردة في الجدولين أعلاه فهي الاستثناءات التي تُبنى منها المتوسطات.
موقع السوق نفسه
تبدو نتيجة سهم واحد مختلفة عند مقارنتها بنتيجة السوق نفسه. وفي النافذة الزمنية ذاتها تماماً، جاءت نتائج صناديق ETF الأربعة الرئيسية التي تتبع المؤشرات كما يلي:
| التسمية | العائد منذ بداية السنة (%) | مقاسًا من تاريخ | مقاسًا حتى تاريخ |
|---|---|---|---|
| Russell 2000 (IWM) | 19.2 | 2026-01-02 | 2026-09-03 |
| Nasdaq 100 (QQQ) | 15.7 | 2026-01-02 | 2026-09-03 |
| S&P 500 (SPY) | 12.7 | 2026-01-02 | 2026-09-03 |
| Dow (DIA) | 11.4 | 2026-01-02 | 2026-09-03 |
استعلام 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-09-03). وخلال هذه الفترة، حقق Russell 2000 (IWM) عائداً قدره 19.2%، بينما حقق Dow (DIA) عائداً قدره 11.4%. تجاوز كل اسم في جدول الأسهم الرابحة الصناديق الأربعة بفارق واسع. وهذا يعكس آلية المؤشر حسابياً: إذ تُحتسب مئات الحيازات كمتوسط في سطر واحد، فتُلغي التحركات الفردية بعضها بعضاً جزئياً. وكان الفارق بين الأسهم أسفل ذلك السطر أوسع بكثير من حركة السطر نفسه، كما يعرض بطاقة أداء القطاعات للنصف الأول ترتيب القطاعات الأحد عشر مقارنةً بعضها ببعض.
الانقسام الذي يزيّف حركة السهم منذ بداية العام
يغيّر انقسام السهم عدد الأسهم وسعر السهم، من دون أن يغيّر قيمة الحيازة. وخلال فترة زمنية طويلة كهذه، تُجري شركات كثيرة عمليات انقسام. لذلك تقرأ حسابات الأداء منذ بداية العام غير المعدّلة التغير في سعر السهم على أنه أداء فعلي. نفّذت كل ورقة مالية أدناه عملية انقسام أو توزيعات أسهم في 2026 بحجم كافٍ لتحريك السعر بنسبة لا تقل عن الخُمس، كما اجتازت كل منها الحد الأدنى نفسه للسيولة. لذلك كانت مؤهلة للظهور في الجداول أعلاه قبل أن يستبعدها مرشح الانقسامات.
| ticker | النسبة غير المعدلة منذ بداية السنة (%) | أثر التجزئة على السعر (%) | نوع التجزئة | تاريخ التجزئة |
|---|---|---|---|---|
| BKNG | -96.4 | -96 | forward split | 2026-04-06 |
| KLAC | -86.3 | -90 | forward split | 2026-06-12 |
| VGT | -84.1 | -87.5 | forward split | 2026-04-21 |
| CVNA | -82.6 | -80 | forward split | 2026-05-08 |
| VUG | -81.9 | -83.3 | forward split | 2026-04-21 |
| HDV | -75.6 | -80 | forward split | 2026-04-29 |
| IWF | -74.1 | -75 | forward split | 2026-04-29 |
| VO | -71.7 | -75 | forward split | 2026-04-21 |
| CRWD | -54.6 | -75 | stock dividend | 2026-07-02 |
| MNST | -42.5 | -50 | stock dividend | 2026-08-11 |
| APH | -40.1 | -50 | stock dividend | 2026-09-03 |
| MVLL | 4.3 | -66.7 | forward split | 2026-06-26 |
| HON | 6.1 | 100 | reverse split | 2026-06-29 |
| DD | 224.3 | 200 | reverse split | 2026-06-24 |
استعلام 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.4% في شاشة غير معدّلة بعد أن أدت forward split إلى تحريك سعر السهم بنسبة -96%، وكانت KLAC ستظهر عند -86.3% بعد أن أدت forward split إلى تحريك سعرها بنسبة -90%. لم يخسر مالكو أيٍّ من الورقتين شيئاً في يوم سريان الانقسام. فقد قُسّم سعر السهم، وضُرب عدد الأسهم، بالعامل نفسه. ويعزل عمود أثر الانقسام التغيرَ السعري الذي يفسره الانقسام وحده، وهو الجزء الذي تقرؤه الشاشة غير المعدّلة على أنه أداء.
يسير الصف الأخير في الجدول بالاتجاه المعاكس: تُظهر DD قيمة 224.3% بعد أن رفعت reverse split سعر السهم بنسبة 200%، فزاد السعر بدلاً من أن ينخفض. وأي قائمة تتجاهل هذه الخطوة تنشر أرقاماً وهمية في القمة والقاع في الوقت نفسه. لذلك تستبعد الشاشة مؤشرات الأسهم التي شهدت انقسامات، بدلاً من محاولة تصحيح أسعارها. وقد يظهر صندوق في هذا الجدول بسهولة مثل الشركة؛ فصناديق المؤشرات تقسّم أسهمها أيضاً، وتشمل هذه الشاشة كليهما.
كيفية قياس هذه الشاشة
كل مرحلة من مراحل الشاشة، مع عدد الأسماء التي بقيت بعد تطبيقها:
| خطوة الفحص | الأسماء |
|---|---|
| Traded the first and the last full session | 4471 |
| Averaging $100m+ a day over the past month | 1000 |
| Opened 2026 above $10 a share | 970 |
| Not on the excluded-fund list | 938 |
| No split or stock dividend in 2026 | 922 |
استعلام 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 يوماً تقويمياً، مع احتساب الجلسات التي امتدت من البداية إلى النهاية فقط. وإلا فستُقسم قيمة تداول يوم جزئي على يوم كامل، ما يقلل قيمة التداول المحسوبة لكل اسم. ينقل هذا المرشح وحده القائمة من 4471 من رموز التداول إلى 1000.
- حد السعر الأدنى. يجب أن يكون السهم قد افتتح العام بسعر يتجاوز 10 دولارات للسهم. وتحقق الأسماء التي يقل سعرها عن 10 دولارات نسباً كبيرة نتيجة تحركات سعرية صغيرة.
- تُستبعد الصناديق ذات الرافعة المالية والصناديق العكسية من خلال قائمة منتقاة تُطبع كاملة في SQL أسفل كل جدول. وتشمل القائمة الصناديق المرتبطة بأداء المؤشرات والصناديق المرتبطة بسهم واحد، التي تضاعف الحركة اليومية لشركة واحدة. ويمكن لصندوق ذي رافعة مالية أن يتصدر أي قائمة للتحركات السعرية الخام من دون صدور خبر واحد عن الشركة. وتُحدَّث القائمة يدوياً، وهذه نقطة ضعفها: فلا يُستبعد الصندوق الذي أُطلق هذا الشهر إلا بعد أن يضيفه أحد إليها.
- لا تُستبعد الصناديق العادية. فإذا اجتاز ETF غير ذي الرافعة المالية، المرتبط بمؤشر أو قطاع، حدي السيولة والسعر، يُرتَّب هنا إلى جانب الشركات التشغيلية، ويُدرج أيضاً ضمن أعداد الاتساع. الصندوق سلة من الأسماء المحتسبة أصلاً في الكون نفسه، لذا ينبغي قراءة هذه الصفوف باعتبارها أداء السلة، لا أداء شركة واحدة خلال العام.
- التجزئات. يُستبعد أي رمز تداول دخلت عليه تجزئة أو توزيعات أسهم حيز التنفيذ خلال عام 2026، مهما صغر معامل التجزئة. وهذا هو الخيار التحوطي: فهو يحرم عدداً قليلاً من الأسهم الرابحة فعلاً من مكان في القائمة، لكنه لا ينشر تغيراً في عدد الأسهم على أنه عائد. وتعرض اللوحة أعلاه الأسماء المستبعدة التي كانت تجزئتها كبيرة بما يكفي لإيهام المتابع بحدوث حركة سعرية.
- الإدراجات المتأخرة. لا يملك أي شركة أُدرجت بعد أول جلسة في العام سعراً لشهر يناير، ولذلك تغيب عن هذه الجداول. وتمثل هذه فجوة فعلية في عام يتضمن تقويماً حافلاً بالإدراجات الجديدة.
- النتيجة. تُرتَّب أسماء عددها 922، وتشكل الأسماء العشرة الأولى والأسماء العشرة الأخيرة منها القائمتين المعروضتين في هذه الصفحة.
السؤال نفسه عبر ثلاث فترات
يمثل الأداء منذ بداية العام درجةً واحدةً في سلم، وتبدو الحركة مختلفة عند كل فترة زمنية. تعرض الفترة الأسبوعية أكبر الأسهم ارتفاعاً وانخفاضاً هذا الأسبوع، بينما تعرض الفترة الشهرية أكبر تحركات الأسهم هذا الشهر، وتغطي هذه الصفحة العام. وتختلف معايير الإدراج من درجة إلى أخرى: تفحص هذه الصفحة الأسهم التي بلغ متوسط تداولها اليومي 100 مليون دولار خلال الشهر الماضي، بينما تفحص صفحتا الأسبوع والشهر إجمالي قيمة التداول خلال كل فترة منهما. لذلك قد يجتاز سهمٌ معيار إحدى القائمتين ولا يجتاز معيار الأخرى. وقد يتصدر سهمٌ قائمة الأسبوع بعد رد فعل على إعلان الأرباح، ثم يحتل مركزاً متوسطاً في قائمة العام. وللاطلاع على الصورة الأوسع لأداء السوق منذ بداية العام، تعرض مراجعة السوق في النصف الأول من العام تفاصيل المؤشرات وأسعار الفائدة والقطاعات، بينما تشرح آلية عمل صناديق ETF ذات الرافعة المالية سبب استبعاد الصناديق ذات الرافعة من هذه القائمة.
الأسئلة الشائعة
ما السهم الأفضل أداءً في 2026؟
من بين الأسهم التي بلغ متوسط تداولها اليومي ما لا يقل عن 100 مليون دولار، وبدأت العام بسعر يتجاوز 10 دولارات، ولم تُجرِ أي عملية split في 2026، ولا تظهر في قائمة الصناديق ذات الرافعة المالية، يُعد SNDK السهم الأفضل أداءً في 2026 حتى الآن، بارتفاع 536.4% مقارنةً بأول جلسة في العام. ويأتي MRNA في المرتبة الثانية بارتفاع 399%.
ما الأسهم التي تراجعت أكثر من غيرها في 2026؟
يُعد TTD أسوأ الأسهم أداءً في 2026 ضمن هذه الشاشة، بتراجع -60.5%، يليه WING بتراجع -54.4%. وتظهر القائمة الكاملة لأكبر الأسهم الخاسرة في 2026 في الجدول الثاني أعلاه، مع تحديثها خلال العام.
كيف يُحسب عائد السهم منذ بداية العام؟
يقارن العائد منذ بداية العام بين أحدث سعر وسعر السهم في بداية السنة الميلادية، ويعبّر عن التغير كنسبة مئوية. وفي هذه الحالة، يُقاس سعر الافتتاح في أول جلسة عادية من 2026 مقابل سعر الإغلاق في أحدث جلسة مكتملة. وتُستبعد الأسهم التي أجرت split خلال العام بدلاً من تعديل أسعارها، لذلك لا يوجد عامل تعديل بين القارئ وبيانات التداول.
هل تشمل قائمة الأسهم الرابحة في 2026 صناديق ETF ذات الرافعة المالية؟
لا. يضاعف الصندوق ذو الرافعة المالية أو الصندوق العكسي الحركة اليومية لمؤشر أو سهم واحد، ولذلك يتصدر بانتظام قوائم الأسهم المتحركة على أساس خام من دون وجود أخبار عن الشركة تفسر ذلك. وتُزال هذه الصناديق بالاسم قبل إجراء الترتيب، وتظهر القائمة في SQL أسفل كل جدول. أما صناديق ETF العادية التي تتبع المؤشرات والقطاعات فهي حالة مختلفة؛ إذ تستوفي الحدود الدنيا نفسها المطبقة على أي سهم، وتُرتب هنا، ولذلك يمكن أن يظهر الصندوق في أي من القائمتين.
كل جدول هنا عبارة عن استعلام محفوظ مرفق به SQL. وسّع أي لوحة لمراجعة معايير الفرز، أو أعد بناءها باستخدام الحدود الدنيا التي تختارها على منصة Strasmore.