Strasmore Research
Ringkasan pasaran Matt ConnorOleh Matt Connor · Dikemas kini 2026-10-11 · data as of October 11, 2026 · refreshed weekly

Saham dengan kenaikan dan kerugian terbesar 2026

Senarai saham berprestasi terbaik dan terburuk bagi tahun 2026 berdasarkan kecairan sebenar. Data ini mengecualikan stock splits serta dana berleveraj untuk ketepatan.

MRNA menerajui senarai saham berprestasi terbaik bagi tahun 2026 setakat ini, dengan kenaikan sebanyak 561.1% dari sesi pembukaan tahun ini sehingga sesi lengkap yang terkini. Halaman ini menyenaraikan saham dengan keuntungan dan kerugian terbesar bagi tahun 2026 dalam kalangan kaunter yang benar-benar diniagakan, berdasarkan data transaksi bursa dan bukannya ringkasan vendor, serta dikemas kini sepanjang tahun berjalan. Pecahan saham (stock splits) dan dana berleveraj disingkirkan sebelum sebarang kedudukan dibuat, yang merupakan kesilapan lazim dalam kebanyakan senarai prestasi tahun-ke-tarikh (year-to-date).

Saham dengan kenaikan terbesar bagi tahun 2026

Setiap nama di bawah melepasi ambang kecairan sebelum disenaraikan: purata sekurang-kurangnya $100 juta nilai saham bertukar tangan bagi setiap sesi lengkap sepanjang bulan lalu. Peratusan besar pada saham yang tidak didagangkan oleh sesiapa hanyalah sebut harga, bukan hasil sebenar.

PertanyaanPencapaian saham tertinggi 2026: sepuluh teratas tahun setakat ini dalam kalangan saham dagangan aktif
tickerpulangan YTD (%)purata harian ($m)
MRNA561.12829
SNDK558.712525
MXL425.1253
TWST378.9497
TXG373.5325
DELL347.63129
AXTI316.9496
AEHR315205
PENG260242
MU250.822982
SQL tepat di sebalik setiap nombor
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
Jalankan sendiri

MRNA mendahului tahun ini pada 561.1%, diikuti oleh SNDK di tempat kedua pada 558.7%, dan MXL di tempat ketiga pada 425.1%. Tempat kesepuluh dalam carta, MU, masih mencatatkan kenaikan 250.8%, justeru keseluruhan jadual ini telah jauh mendahului mana-mana indeks pasaran luas.

Lajur dolar di sebelah setiap pergerakan membawa maklumat yang sama penting dengan peratusan. MU mencatatkan purata pusing ganti harian sekitar $22982 juta. MRNA yang berada di puncak carta mencatatkan purata $2829 juta. Setiap nama di sini melepasi $100 juta sehari, dan julat di atas ambang tersebut cukup luas sehingga peratusan tajuk utama yang sama membawa maksud yang berbeza di kedua-dua hujungnya. Saham yang didagangkan secara nipis lebih mudah ditolak harganya dan lebih sukar untuk keluar pada harga yang tertera di skrin.

Saham dengan penurunan terbesar bagi tahun 2026

Ukuran yang sama, tetapi secara terbalik: penurunan tahun-setakat-ini (year-to-date) paling curam dalam kalangan nama yang melepasi ambang kecairan yang sama.

PertanyaanPencapaian saham terendah 2026: sepuluh terburuk tahun setakat ini dalam kalangan saham dagangan aktif
tickerpulangan YTD (%)purata harian ($m)
CTVA-79.5401
TTD-67.7199
FLUT-62.3186
STLA-60124
PLNT-59.8116
APP-591297
FICO-58.2860
Z-57.4114
JOBY-57.2113
BSX-56.1562
SQL tepat di sebalik setiap nombor
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
Jalankan sendiri

Penurunan tahun-setakat-ini paling curam dicatatkan oleh CTVA pada -79.5%, diikuti oleh TTD pada -67.7%. Di tempat kesepuluh dalam senarai, BSX, berada pada -56.1%. Beberapa nama di sini merupakan syarikat besar yang dimiliki secara meluas dan bukannya syarikat mikro spekulatif, iaitu bahagian dalam senarai saham rugi yang mengejutkan ramai orang. Kecairan dan liputan penganalisis tidak memberikan lantai sokongan bagi harga saham. Sesiapa yang memegang salah satu saham ini sebagai bahagian yang terlalu besar dalam portfolio telah menanggung pergerakan penuh tersebut, yang diukur oleh halaman risiko memegang satu saham dengan angka volatiliti dan penurunan nilai (drawdown).

Sejauh mana pasaran telah meningkat pada tahun 2026

Papan pendahulu hanya menunjukkan dua bahagian ekstrem. Keluasan pasaran (breadth) menunjukkan keseluruhan badan: bagaimana seluruh alam semesta yang disaring, termasuk dana indeks, terbahagi antara saham yang meningkat dan menurun, dikategorikan mengikut saiz pergerakan.

PertanyaanKeluasan pasaran tahun setakat ini: taburan alam semesta tersaring merentas kumpulan pulangan
baldinamabahagian sisi (%)
Down 40%+4244.8
Down 20-40%9444.8
Down 10-20%10344.8
Down 0-10%21644.8
Up 0-10%16055.2
Up 10-25%17055.2
Up 25-50%10955.2
Up 50%+12155.2
SQL tepat di sebalik setiap nombor
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
Jalankan sendiri

55.2% daripada nama yang disaring lebih tinggi pada tahun ini dan 44.8% lebih rendah. Taburan ini adalah perkara yang disembunyikan oleh jadual sepuluh teratas. 42 nama berada dalam kategori Down 40%+ pada satu hujung dan 121 dalam kategori Up 50%+ pada hujung yang satu lagi, berbanding 216 dalam Down 0-10% dan 160 dalam Up 0-10% di kedua-dua belah paras tidak berubah. Kebanyakan pasaran melakukan sesuatu yang biasa pada mana-mana tahun tertentu, dan nama-nama dalam dua jadual di atas adalah pengecualian yang membentuk purata tersebut.

Kedudukan pasaran semasa

Prestasi tahunan sesuatu saham dilihat berbeza apabila dibandingkan dengan pasaran secara keseluruhan. Berikut adalah empat ETF indeks utama bagi tempoh yang sama:

PertanyaanEmpat ETF indeks utama, tahun setakat ini, dalam tempoh ukuran yang sama
labelpulangan YTD (%)diukur dari tarikhdiukur hingga tarikh
Nasdaq 100 (QQQ)20.62026-01-022026-10-08
S&P 500 (SPY)12.92026-01-022026-10-08
Russell 2000 (IWM)12.12026-01-022026-10-08
Dow (DIA)6.22026-01-022026-10-08
SQL tepat di sebalik setiap nombor
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
Jalankan sendiri

Kedua-dua papan dan panel di atas diukur sepanjang satu tempoh: sesi penuh pertama tahun 2026 (2026-01-02) sehingga sesi lengkap yang terkini (2026-10-08). Sepanjang tempoh tersebut, Nasdaq 100 (QQQ) mencatatkan pulangan sebanyak 20.6% dan Dow (DIA) mencatatkan pulangan sebanyak 6.2%. Setiap nama dalam jadual saham untung mengatasi keempat-empat indeks tersebut dengan margin yang besar. Inilah hasil pengiraan indeks: ratusan pegangan dipuratakan menjadi satu baris, di mana pergerakan individu saling menampung antara satu sama lain. Spread di bawah baris tersebut adalah jauh lebih luas daripada baris itu sendiri, dan kad skor sektor bagi separuh tahun pertama menyenaraikan kesemua sebelas sektor mengikut prestasi masing-masing.

Pecahan saham yang memalsukan pergerakan tahun-setakat-ini

Pecahan saham mengubah bilangan saham dan harga sesaham tanpa mengubah nilai pegangan. Dalam tempoh yang panjang ini, banyak syarikat melakukan pecahan saham, dan pengiraan tahun-setakat-ini yang tidak diselaraskan akan membaca perubahan harga sesaham sebagai prestasi. Nama-nama di bawah masing-masing melaksanakan pecahan saham atau dividen saham tahun 2026 yang cukup besar untuk menggerakkan harga sekurang-kurangnya satu perlima, dan setiap satunya melepasi had kecairan yang sama, justeru setiap satunya layak untuk papan di atas sebelum penapis pecahan saham mengeluarkannya.

PertanyaanDikecualikan daripada carta: pecahan saham 2026 yang cukup besar untuk menjejaskan pergerakan tahun setakat ini
tickerYTD tidak diselaras (%)kesan harga split (%)jenis splittarikh split
BKNG-97-96forward split2026-04-06
CVNA-85-80forward split2026-05-08
KLAC-84.4-90forward split2026-06-12
VGT-83.3-87.5forward split2026-04-21
VUG-81.4-83.3forward split2026-04-21
VOOG-80.7-83.3forward split2026-04-21
MGK-77.5-80forward split2026-04-21
IWF-73.3-75forward split2026-04-29
VO-72.4-75forward split2026-04-21
INTW-45.7-87.5forward split2026-06-26
CRWD-44.5-75stock dividend2026-07-02
MNST-43.1-50stock dividend2026-08-11
APH-37.7-50stock dividend2026-09-03
HON5.6100reverse split2026-06-29
ETHA143.1200reverse split2026-10-06
SQL tepat di sebalik setiap nombor
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
Jalankan sendiri

BKNG akan mencatatkan -97% pada skrin yang tidak diselaraskan selepas forward split menggerakkan harga sesahamnya sebanyak -96%, dan CVNA akan mencatatkan -85% selepas forward split menggerakkan harganya sebanyak -80%. Tiada pemegang bagi kedua-dua saham tersebut mengalami kerugian pada hari pecahan saham berkuat kuasa. Harga sesaham dibahagikan dan bilangan saham didarabkan dengan faktor yang sama. Lajur kesan pecahan saham mengasingkan perubahan harga yang berpunca semata-mata daripada pecahan saham, iaitu bahagian yang dibaca oleh skrin tidak diselaraskan sebagai prestasi.

Baris terakhir panel menunjukkan arah sebaliknya: ETHA menunjukkan 143.1% selepas reverse split menaikkan harga sesahamnya sebanyak 200%, meningkatkan harga dan bukannya mengurangkannya. Mana-mana senarai yang melangkau langkah ini akan menerbitkan maklumat palsu di bahagian atas dan bawah serentak, itulah sebabnya skrin ini mengetepikan ticker yang mengalami pecahan saham dan bukannya cuba membetulkan harganya. Dana boleh tersenarai dalam panel ini semudah syarikat: dana indeks juga memecahkan sahamnya, dan skrin ini merangkumi kedua-duanya.

Cara saringan ini diukur

Setiap peringkat saringan, dengan bilangan nama yang masih kekal selepasnya:

PertanyaanProses saringan, peringkat demi peringkat: jumlah saham yang melepasi setiap penapis
langkah saringannama
Traded the first and the last full session4499
Averaging $100m+ a day over the past month1097
Opened 2026 above $10 a share1067
Not on the excluded-fund list1032
No split or stock dividend in 20261015
SQL tepat di sebalik setiap nombor
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
)
Jalankan sendiri

Kaedah tersebut, dinyatakan sepenuhnya:

  • Tetingkap. Sesi dagangan penuh pertama tahun 2026 sehingga sesi penuh terkini pada pita. Kedua-dua titik akhir dibaca daripada bar seminit, dan sesuatu sesi hanya dikira apabila ia mempunyai kiraan bar waktu dagangan biasa yang lengkap, jadi hari yang masih berjalan tidak pernah dianggap selesai.
  • Pulangan. Harga buka sesi biasa pertama tahun ini berbanding harga tutup sesi biasa terakhir, dikira daripada bar seminit. Transaksi pasaran pra-pembukaan dan selepas waktu dagangan diabaikan. Ini adalah pulangan harga; dividen tidak ditambah semula, jadi nama yang mempunyai hasil tinggi kelihatan sedikit lebih buruk di sini berbanding angka jumlah pulangan.
  • Lantai kecairan. Purata sekurang-kurangnya $100 juta nilai dagangan waktu biasa setiap sesi sepanjang 20 hari kalendar yang lalu, hanya mengira sesi yang berjalan dari mula hingga tamat. Sesi separa akan menyebabkan pembahagian nilai dolar sebahagian hari dengan satu hari penuh dan merendahkan nilai dagangan setiap nama. Penapis tunggal itu mengurangkan bidang daripada 4499 ticker kepada 1097.
  • Lantai harga. Saham dibuka pada tahun ini melebihi $10 sesaham. Nama di bawah $10 menghasilkan peratusan besar daripada langkah harga yang kecil.
  • Dana berleveraj dan songsang dikecualikan melalui senarai yang disusun, dicetak sepenuhnya dalam SQL di bawah setiap jadual. Ia merangkumi dana yang dipacu indeks dan dana saham tunggal yang mendarabkan pergerakan harian satu syarikat. Dana berleveraj boleh mendahului mana-mana senarai penggerak utama tanpa sebarang berita syarikat. Senarai ini diselenggara secara manual, yang merupakan kelemahannya: dana yang dilancarkan bulan ini hanya dikecualikan sebaik sahaja seseorang menambahnya.
  • Dana biasa tidak ditapis keluar. ETF indeks atau sektor tanpa leveraj yang melepasi lantai kecairan dan harga disenaraikan di sini bersama syarikat operasi, dan ia juga termasuk dalam kiraan keluasan. Dana ialah bakul nama yang sudah dikira dalam alam semesta yang sama, jadi baca baris tersebut sebagai prestasi bakul itu dan bukannya sebagai tahun satu syarikat.
  • Pecahan saham. Mana-mana ticker dengan pecahan saham atau dividen saham yang berkuat kuasa sepanjang 2026 diketepikan, tidak kira betapa kecil nisbonya. Itu adalah pilihan konservatif: ia menyebabkan segelintir syarikat berprestasi tinggi kehilangan tempat di papan, dan ia tidak pernah menerbitkan perubahan kiraan saham sebagai pulangan. Panel di atas menunjukkan nama yang dikecualikan yang pecahan sahamnya cukup besar untuk memalsukan pergerakan.
  • Penyenaraian lewat. Syarikat yang disenaraikan selepas sesi pertama tahun ini tidak mempunyai harga Januari dan tiada dalam jadual ini, yang merupakan jurang sebenar dalam tahun dengan kalendar penyenaraian baharu yang padat.
  • Hasilnya. 1015 nama disenaraikan, dan sepuluh yang teratas serta sepuluh yang terbawah adalah dua papan di halaman ini.

Soalan yang sama merentasi tiga tetingkap

Prestasi tahun setakat ini (year to date) merupakan satu anak tangga, dan pergerakan kelihatan berbeza pada setiap panjang tempoh. Paparan mingguan adalah saham dengan keuntungan dan kerugian terbesar minggu ini, paparan bulanan adalah saham dengan pergerakan terbesar bulan ini, dan halaman ini adalah untuk tempoh setahun. Asas saringan berbeza mengikut anak tangga: halaman ini menyaring berdasarkan purata seratus juta dolar sehari sepanjang bulan lalu, manakala halaman mingguan dan bulanan menyaring berdasarkan jumlah dolar yang didagangkan dalam tempoh masing-masing, jadi sesuatu nama boleh melepasi satu papan tetapi terlepas di papan yang lain. Nama yang mendahului papan mingguan akibat reaksi pendapatan sering kali berada di kedudukan pertengahan bagi tempoh setahun. Untuk naratif yang lebih luas di sebalik prestasi tahun ini, ringkasan pasaran separuh pertama mengandungi perincian indeks, kadar dan sektor, dan cara ETF berleveraj berfungsi menjelaskan sebab dana bergearan diketepikan di sini.

Soalan Lazim

Apakah saham dengan prestasi terbaik bagi tahun 2026?

Dalam kalangan nama yang mencatatkan purata dagangan sekurang-kurangnya $100 juta sehari, dibuka pada harga melebihi $10 pada awal tahun, tidak mempunyai sebarang pecahan saham (split) pada tahun 2026, dan tidak tersenarai dalam dana berleveraj, MRNA merupakan saham dengan prestasi terbaik bagi tahun 2026 setakat ini, dengan kenaikan sebanyak 561.1% daripada sesi pertama tahun tersebut. SNDK berada di tempat kedua dengan kenaikan 558.7%.

Saham manakah yang mencatatkan kejatuhan paling besar pada tahun 2026?

CTVA merupakan saham dengan prestasi terburuk bagi tahun 2026 dalam saringan ini dengan kejatuhan -79.5%, mendahului TTD pada -67.7%. Senarai penuh saham yang mencatatkan kerugian terbesar bagi tahun 2026 terdapat dalam jadual kedua di atas, yang dikemas kini sepanjang tahun berjalan.

Bagaimanakah pulangan saham dari awal tahun (year-to-date) dikira?

Pulangan dari awal tahun membandingkan harga terkini dengan harga pada permulaan tahun kalendar dan menyatakan perubahan tersebut sebagai peratusan. Dalam konteks ini, ia adalah harga buka sesi dagangan biasa yang pertama bagi tahun 2026 berbanding harga tutup sesi lengkap yang paling terkini. Saham yang mengalami pecahan saham sepanjang tahun diketepikan dan bukannya diselaraskan, supaya tiada faktor pelarasan yang memisahkan pembaca daripada data pasaran sebenar.

Adakah ETF berleveraj disertakan dalam senarai saham untung tahun 2026?

Tidak. Dana berleveraj atau songsang menggandakan pergerakan harian sesuatu indeks atau saham tunggal, justeru ia lazimnya mendahului senarai penggerak pasaran tanpa sebarang berita syarikat yang mendasarinya. Dana tersebut dikeluarkan mengikut nama sebelum proses penarafan dilakukan, dan senarai itu boleh dilihat dalam SQL di bawah setiap jadual. ETF indeks dan sektor biasa adalah kes yang berbeza: ia melepasi syarat lantai dagangan yang sama seperti mana-mana saham dan disenaraikan di sini, maka sesuatu dana boleh muncul dalam mana-mana papan carta.


Setiap jadual di sini merupakan pertanyaan tersimpan (stored query) dengan SQL yang dilampirkan. Kembangkan mana-mana panel untuk mengaudit saringan tersebut, atau bina semula dengan syarat lantai dagangan anda sendiri pada terminal Strasmore.

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