بزرگترین برندگان و بازندگان بازار سهام در سال 2026
فهرست برترین و ضعیفترین سهام سال 2026 بر اساس نقدینگی واقعی در بورس. این رتبهبندی با حذف صندوقهای اهرمی و شکافهای سهام، دادههای دقیق معاملاتی را ارائه میدهد.
MRNA
بهترین عملکرد سهام در سال 2026 تاکنون با پیشتازی MRNA رقم خورده است که از ابتدای جلسات معاملاتی سال تا آخرین جلسه تکمیلشده، 692.8% رشد داشته است. این صفحه بزرگترین برندگان و بازندگان سهام در سال 2026 را در میان نمادهایی که بهطور واقعی معامله میشوند، رتبهبندی میکند. این دادهها مستقیماً از نوار معاملات بورس (exchange tape) استخراج شده و نه از خلاصههای ارائهشده توسط فروشندگان داده، و همزمان با پیشرفت سال بهروزرسانی میشود. در این رتبهبندی، شکافهای سهام (stock splits) و صندوقهای اهرمی حذف شدهاند؛ این همان بخشی است که اکثر فهرستهای بازدهی سالانه (YTD) در آن دچار خطا میشوند.
بزرگترین برندگان بازار سهام در سال 2026
تمامی نامهای ذکرشده در فهرست زیر، پیش از رتبهبندی، از حداقل حد نصاب نقدینگی عبور کردهاند: میانگین دستکم 100 میلیون دلار جابهجایی سهام در هر جلسه معاملاتی تکمیلشده طی ماه گذشته. درصد بالا برای سهمی که هیچکس آن را معامله نمیکند، تنها یک مظنه قیمت است، نه یک نتیجه معاملاتی.
| نماد | بازدهی YTD (%) | میانگین ارزش روزانه (میلیون $) |
|---|---|---|
| MRNA | 692.8 | 3002 |
| SNDK | 471 | 11073 |
| TWST | 355.2 | 476 |
| TXG | 343.5 | 334 |
| MXL | 338.4 | 246 |
| DELL | 268 | 3100 |
| AXTI | 236.9 | 499 |
| AEHR | 229.3 | 203 |
| PBF | 218.3 | 195 |
| KOD | 215.7 | 389 |
کد دقیق 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 10MRNA با بازدهی 692.8% پیشتاز سال است، پس از آن SNDK با 471% و TWST با 355.2% در جایگاه سوم قرار دارند. دهمین رتبه در این جدول، یعنی KOD، همچنان 215.7% رشد داشته است؛ بنابراین کل این فهرست عملکردی بسیار فراتر از هر شاخص کلی بازار داشته است.
ستون دلار در کنار هر تغییر، به اندازه درصدها حاوی اطلاعات است. KOD بهطور میانگین روزانه حدود 389 میلیون دلار گردش مالی دارد. MRNA که در صدر جدول قرار دارد، بهطور میانگین 3002 میلیون دلار گردش مالی ثبت کرده است. هر نام در این فهرست روزانه بیش از 100 میلیون دلار نقدینگی دارد و دامنه نوسان بالاتر از این حد نصاب به اندازهای گسترده است که یک درصدِ مشابه در دو انتهای این طیف، دو معنای متفاوت دارد. جابهجایی قیمت در سهمی با نقدینگی پایین آسانتر است، اما خروج از موقعیت معاملاتی با قیمت درجشده روی صفحه نمایش دشوارتر خواهد بود.
بزرگترین بازندگان بازار سهام در سال 2026
همان معیار، اما در جهت معکوس: شدیدترین افتهای سال تا به امروز در میان نمادهایی که از حداقل نقدینگی یکسانی برخوردارند.
| نماد | بازدهی YTD (%) | میانگین ارزش روزانه (میلیون $) |
|---|---|---|
| CTVA | -80.8 | 410 |
| TTD | -65.7 | 176 |
| FLUT | -64.8 | 159 |
| JOBY | -64.3 | 114 |
| STLA | -61.5 | 126 |
| OKLO | -59.4 | 288 |
| APP | -59.1 | 1168 |
| SMR | -57.8 | 217 |
| FICO | -54.5 | 998 |
| Z | -54.1 | 114 |
کد دقیق 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% ایستاده است. برخلاف تصور عموم، چندین مورد از این نمادها شرکتهای بزرگ و پرطرفداری هستند و نه شرکتهای کوچک و سوداگرانه؛ این همان بخشی از فهرست بازندگان است که باعث تعجب میشود. نقدینگی و پوشش تحلیلگران، هیچ کف قیمتی برای ارزش سهام ایجاد نمیکند. هر کسی که یکی از این نمادها را به عنوان بخش بزرگی از سبد دارایی خود نگهداری کرده باشد، تمام این نوسان را متحمل شده است؛ موضوعی که صفحه ریسک نگهداری تکسهم آن را با استفاده از ارقام نوسانپذیری و افت ارزش (drawdown) اندازهگیری میکند.
چه بخشی از بازار در سال 2026 صعودی است
جدول پیشتازان تنها دو انتهای طیف را نشان میدهد. شاخصهای پهنای بازار (Breadth) بدنه اصلی را به تصویر میکشند: اینکه کل مجموعه سهام بررسیشده، از جمله صندوقهای شاخصی، چگونه میان نمادهای صعودی و نزولی تقسیم شدهاند، که بر اساس اندازه تغییرات دستهبندی میشوند.
| دسته | نامها | سهم از سمت (%) |
|---|---|---|
| Down 40%+ | 37 | 41.2 |
| Down 20-40% | 84 | 41.2 |
| Down 10-20% | 104 | 41.2 |
| Down 0-10% | 187 | 41.2 |
| Up 0-10% | 162 | 58.8 |
| Up 10-25% | 194 | 58.8 |
| Up 25-50% | 116 | 58.8 |
| Up 50%+ | 116 | 58.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 ord58.8% از نمادهای بررسیشده در سال جاری رشد داشته و 41.2% نزولی بودهاند. این توزیع همان چیزی است که جدول ده نماد برتر پنهان میکند. 37 نماد در دسته Down 40%+ در یک سو و 116 نماد در دسته Up 50%+ در سوی دیگر قرار دارند، در حالی که 187 نماد در دسته Down 0-10% و 162 نماد در دسته Up 0-10% در دو طرف نقطه بدون تغییر جای گرفتهاند. بخش عمده بازار در هر سال عملکردی عادی دارد و نمادهای موجود در دو جدول بالا، استثنائاتی هستند که میانگینها از آنها ساخته میشوند.
وضعیت فعلی بازار
عملکرد سالانه یک سهم در مقایسه با وضعیت کلی بازار، معنای متفاوتی دارد. چهار ETF اصلی شاخص، در همان بازه زمانی دقیق:
| برچسب | بازدهی YTD (%) | تاریخ شروع اندازهگیری | تاریخ پایان اندازهگیری |
|---|---|---|---|
| Nasdaq 100 (QQQ) | 17.4 | 2026-01-02 | 2026-10-15 |
| S&P 500 (SPY) | 12.5 | 2026-01-02 | 2026-10-15 |
| Russell 2000 (IWM) | 11.1 | 2026-01-02 | 2026-10-15 |
| Dow (DIA) | 8.2 | 2026-01-02 | 2026-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% را ثبت کردهاند. تمامی نامهای موجود در جدول برندگان، با اختلاف قابلتوجهی از هر چهار شاخص پیشی گرفتهاند؛ این ماهیت محاسباتی یک شاخص است: میانگینگیری از صدها دارایی در یک خط، که در آن نوسانات انفرادی تا حدی یکدیگر را خنثی میکنند. دامنه نوسان در زیر آن خط، بسیار گستردهتر از خودِ خط شاخص بود و کارت امتیاز بخشها برای نیمه اول، تمامی یازده بخش را در مقایسه با یکدیگر رتبهبندی میکند.
شکاف سهامی که بازدهی سالانه را مخدوش میکند
شکاف سهام (Stock split) تعداد سهام و قیمت هر سهم را تغییر میدهد، بدون آنکه ارزش دارایی سهامدار تغییری کند. در بازههای زمانی طولانی، بسیاری از شرکتها اقدام به شکاف سهام میکنند و محاسبات بازدهی سالانه (YTD) بدون تعدیل، تغییر در قیمت هر سهم را به اشتباه بهعنوان عملکرد معاملاتی تلقی میکند. نامهای زیر همگی در سال 2026 شاهد شکاف سهام یا سود سهام (Stock dividend) به اندازهای بودند که قیمت هر سهم را حداقل یکپنجم تغییر داده است. تمامی این موارد از حداقل نقدینگی لازم برخوردار بودند و پیش از آنکه فیلتر شکاف سهام آنها را حذف کند، واجد شرایط حضور در جداول بالا بودند.
| نماد | بازدهی YTD تعدیلنشده (%) | اثر قیمتی تقسیم (%) | نوع تقسیم | تاریخ تقسیم |
|---|---|---|---|---|
| BKNG | -96.9 | -96 | forward split | 2026-04-06 |
| KLAC | -86.2 | -90 | forward split | 2026-06-12 |
| CVNA | -85.6 | -80 | forward split | 2026-05-08 |
| VGT | -83.9 | -87.5 | forward split | 2026-04-21 |
| VUG | -81.7 | -83.3 | forward split | 2026-04-21 |
| VOOG | -81 | -83.3 | forward split | 2026-04-21 |
| MGK | -77.9 | -80 | forward split | 2026-04-21 |
| IWF | -73.9 | -75 | forward split | 2026-04-29 |
| VO | -72.2 | -75 | forward split | 2026-04-21 |
| INTW | -57.3 | -87.5 | forward split | 2026-06-26 |
| CRWD | -48.4 | -75 | stock dividend | 2026-07-02 |
| MNST | -40.9 | -50 | stock dividend | 2026-08-11 |
| APH | -40.6 | -50 | stock dividend | 2026-09-03 |
| HON | 7.6 | 100 | reverse split | 2026-06-29 |
| ETHA | 141.8 | 200 | reverse split | 2026-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 ASCBKNG پس از آنکه یک forward split قیمت هر سهم آن را -96% تغییر داد، در یک نمایشگر بدون تعدیل، بازدهی -96.9% را ثبت میکند و KLAC نیز پس از آنکه یک forward split قیمت آن را -90% تغییر داد، بازدهی -86.2% را نشان میدهد. هیچیک از سهامداران این دو نماد در روز اجرای شکاف سهام، متحمل زیانی نشدند. قیمت هر سهم تقسیم و تعداد سهام با همان ضریب ضرب شد. ستون «اثر شکاف» (Split effect)، تغییر قیمتی را که صرفاً ناشی از شکاف سهام است تفکیک میکند؛ همان بخشی که نمایشگرهای بدون تعدیل به اشتباه بهعنوان عملکرد (بازدهی) میخوانند.
ردیف آخر این پنل در جهت معکوس عمل میکند: ETHA پس از آنکه یک reverse split قیمت هر سهم آن را 200% افزایش داد، بازدهی 141.8% را نشان میدهد؛ در اینجا قیمت بهجای کاهش، افزایش یافته است. هر فهرستی که این مرحله را نادیده بگیرد، در واقع در صدر و ذیل خود اطلاعات نادرست منتشر میکند؛ به همین دلیل است که این غربالگر، نمادهای دارای شکاف سهام را کنار میگذارد و بهجای تلاش برای اصلاح قیمتها، آنها را حذف میکند. یک صندوق سرمایهگذاری نیز به همان سادگی یک شرکت میتواند در این پنل قرار گیرد: صندوقهای شاخصی نیز سهام خود را شکاف میدهند و این غربالگر هر دو گروه را پوشش میدهد.
نحوه محاسبه این غربالگری
هر مرحله از غربالگری، به همراه تعداد نمادهایی که پس از آن باقی ماندهاند:
| مرحله غربالگری | نامها |
|---|---|
| Traded the first and the last full session | 4543 |
| Averaging $100m+ a day over the past month | 1082 |
| Opened 2026 above $10 a share | 1049 |
| Not on the excluded-fund list | 1017 |
| No split or stock dividend in 2026 | 1000 |
کد دقیق 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 به 1082 کاهش میدهد.
- کف قیمتی. قیمت بازگشایی سهم در ابتدای سال باید بالاتر از 10 دلار باشد. نمادهای زیر 10 دلار به دلیل تغییرات قیمتی کوچک، درصدهای بزرگی ایجاد میکنند.
- صندوقهای اهرمی و معکوس از طریق یک فهرست گزینششده که بهطور کامل در کدهای SQL زیر هر جدول درج شده، حذف میشوند. این فهرست شامل صندوقهای متصل به شاخص و صندوقهای تکسهمی است که حرکت روزانه یک شرکت را چند برابر میکنند. یک صندوق اهرمی میتواند بدون هیچ خبر شرکتی، در صدر هر فهرست از پرنوسانترینها قرار گیرد. این فهرست بهصورت دستی بهروزرسانی میشود که نقطه ضعف آن محسوب میشود: صندوقی که در ماه جاری راهاندازی شده، تنها پس از اضافه شدن توسط یک فرد، حذف خواهد شد.
- صندوقهای عادی فیلتر نمیشوند. یک ETF شاخصی یا بخشی بدون اهرم که از فیلترهای نقدینگی و قیمت عبور کند، در اینجا در کنار شرکتهای عملیاتی رتبهبندی شده و در شمارشهای کلی نیز لحاظ میشود. یک صندوق، سبدی از نمادهایی است که قبلاً در همان جهان آماری شمارش شدهاند؛ بنابراین، آن ردیفها را بهعنوان عملکرد سبد بخوانید، نه بهعنوان عملکرد یک شرکت در طول سال.
- تجزیه سهام (Split). هر نمادی که در طول سال 2026 دچار تجزیه سهام یا سود سهام بهصورت سهم شده باشد، صرفنظر از نسبت آن، کنار گذاشته میشود. این رویکرد محافظهکارانه است: باعث میشود تعدادی از عملکردهای واقعی از جدول حذف شوند، اما هرگز تغییر در تعداد سهام را بهعنوان بازدهی منتشر نمیکند. پنل بالا نمادهای حذفشدهای را نشان میدهد که نسبت تجزیه آنها بهقدری بزرگ بوده که میتوانست حرکت قیمت را بهاشتباه نشان دهد.
- عرضههای اولیه دیررس. شرکتی که پس از اولین جلسه معاملاتی سال عرضه شده، قیمت ماه ژانویه را ندارد و در این جداول غایب است؛ این یک شکاف واقعی در سالی با تقویم سنگین عرضههای اولیه است.
- نتیجه. 1000 نماد رتبهبندی میشوند و ده نماد برتر و ده نماد انتهایی، دو تابلوی این صفحه را تشکیل میدهند.
پرسش مشابه در سه پنجره زمانی
بازده از ابتدای سال تا به امروز (YTD) تنها یک پله از نردبان عملکرد است و هر حرکت در بازههای زمانی مختلف، جلوه متفاوتی دارد. نمای هفتگی شامل بیشترین رشد و افت قیمت سهام در هفته جاری، نمای ماهانه شامل بیشترین تغییرات قیمت سهام در ماه جاری و این صفحه شامل عملکرد سالانه است. مبنای غربالگری در هر پله متفاوت است: این صفحه بر اساس میانگین ارزش معاملات روزانه 100 میلیون دلار در ماه گذشته فیلتر میشود، در حالی که صفحات هفتگی و ماهانه بر اساس مجموع دلاری معاملات در بازه زمانی خود غربال میشوند؛ بنابراین ممکن است یک نماد در یک فهرست حضور داشته و در دیگری غایب باشد. نمادی که در واکنش به گزارش سود فصلی در صدر جدول هفتگی قرار میگیرد، اغلب در مقیاس سالانه در میانه جدول جای دارد. برای درک روایت گستردهتر از وضعیت بازار در سال جاری، خلاصه بازار در نیمه نخست سال جزئیات شاخصها، نرخهای بهره و بخشهای مختلف را ارائه میدهد و نحوه عملکرد ETFهای اهرمی توضیح میدهد که چرا صندوقهای دارای اهرم در اینجا لحاظ نشدهاند.
پرسشهای متداول
بهترین عملکرد سهام در سال 2026 متعلق به کدام نماد است؟
در میان نمادهایی که میانگین حجم معاملات روزانه آنها حداقل 100 میلیون دلار است، سال را با قیمتی بالاتر از 10 دلار آغاز کردهاند، در سال 2026 هیچگونه تقسیم سهامی نداشتهاند و در فهرست صندوقهای اهرمی قرار ندارند، MRNA بهترین عملکرد را در سال 2026 تا به امروز داشته و نسبت به اولین جلسه معاملاتی سال، 692.8% رشد کرده است. SNDK با بازدهی 471% در جایگاه دوم قرار دارد.
کدام سهام در سال 2026 بیشترین افت را داشتهاند؟
CTVA با افت -80.8%، بدترین عملکرد را در این غربالگری برای سال 2026 ثبت کرده و پس از آن TTD با کاهش -65.7% قرار دارد. فهرست کامل بزرگترین بازندگان بازار سهام در سال 2026 در جدول دوم در بالا آمده است که همگام با پیشرفت سال بهروزرسانی میشود.
بازدهی سالانه (YTD) سهام چگونه محاسبه میشود؟
بازدهی سالانه، آخرین قیمت را با قیمت آغازین سال تقویمی مقایسه کرده و تغییرات را بهصورت درصد بیان میکند. در اینجا، قیمت بازگشایی اولین جلسه معاملاتی عادی سال 2026 با قیمت بسته شدن آخرین جلسه معاملاتی تکمیلشده مقایسه شده است. سهامی که در طول سال دچار تقسیم سهام شدهاند، بهجای تعدیل شدن، از فهرست کنار گذاشته میشوند تا هیچ ضریب تعدیلی میان خواننده و دادههای معاملاتی قرار نگیرد.
آیا صندوقهای قابلمعامله (ETF) اهرمی در فهرست برندگان سال 2026 گنجانده شدهاند؟
خیر. یک صندوق اهرمی یا معکوس، حرکت روزانه یک شاخص یا یک سهم واحد را چند برابر میکند؛ بنابراین، چنین صندوقهایی بهطور معمول بدون وجود اخبار شرکتی خاص، در صدر فهرست پرنوسانترینها قرار میگیرند. این صندوقها پیش از رتبهبندی بر اساس نام حذف میشوند و فهرست آنها در کدهای SQL زیر هر جدول قابلمشاهده است. صندوقهای شاخصی و بخشی عادی وضعیت متفاوتی دارند: آنها از همان فیلترهای سایر سهام عبور میکنند و در اینجا رتبهبندی میشوند، بنابراین یک صندوق میتواند در هر یک از دو فهرست (برندگان یا بازندگان) ظاهر شود.
هر جدول در اینجا یک پرسوجوی ذخیرهشده با کدهای SQL پیوستشده است. برای بررسی غربالگری، هر پنل را باز کنید یا با استفاده از فیلترهای شخصی خود در پایانه Strasmore، آن را بازسازی نمایید.