Strasmore Research
Rekap pasar Matt ConnorOleh Matt Connor · Diperbarui 2026-10-18 · data as of October 18, 2026 · refreshed weekly

Saham dengan Kenaikan dan Penurunan Terbesar 2026

Daftar saham dengan kinerja terbaik dan terburuk pada 2026, berdasarkan likuiditas riil dari data bursa. Stock split dan dana leveraged dikecualikan.

Saham dengan kinerja terbaik pada 2026 sejauh ini dipimpin oleh MRNA, naik 692.8% sejak sesi pembukaan tahun ini hingga sesi terakhir yang telah selesai. Halaman ini memeringkat saham dengan kenaikan dan penurunan terbesar pada 2026 di antara saham yang benar-benar diperdagangkan. Pengukuran menggunakan data transaksi bursa, bukan ringkasan vendor. Data diperbarui selama tahun berjalan. Stock split dan dana leveraged dikeluarkan sebelum pemeringkatan dilakukan. Di sinilah sebagian besar daftar year-to-date secara diam-diam menghasilkan hasil yang keliru.

Saham dengan kenaikan terbesar pada 2026

Setiap saham di bawah ini telah melewati ambang likuiditas sebelum diperingkat: rata-rata setidaknya $100 juta saham berpindah tangan dalam setiap sesi perdagangan yang selesai selama sebulan terakhir. Persentase besar pada saham yang tidak diperdagangkan siapa pun hanyalah kuotasi, bukan hasil.

QuerySaham dengan kenaikan terbesar pada 2026: sepuluh teratas year to date di antara saham dengan volume perdagangan tinggi
tickerreturn YTD (%)rata-rata nilai harian ($ juta)
MRNA692.83002
SNDK47111073
TWST355.2476
TXG343.5334
MXL338.4246
DELL2683100
AXTI236.9499
AEHR229.3203
PBF218.3195
KOD215.7389
SQL tepat di balik setiap angka
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 memimpin tahun ini dengan 692.8%, disusul SNDK di 471% dan TWST di posisi ketiga dengan 355.2%. Posisi kesepuluh dalam daftar, KOD, masih naik 215.7%, sehingga seluruh saham dalam tabel ini telah mengungguli indeks broad market mana pun dengan selisih besar.

Kolom nilai dolar di samping setiap perubahan sama informatifnya dengan persentase. Rata-rata nilai transaksi KOD sekitar $389 juta per hari. Di posisi teratas, MRNA rata-rata mencatat $3002 juta. Setiap saham di sini mencatat nilai transaksi lebih dari $100 juta per hari. Rentang di atas ambang tersebut cukup lebar sehingga persentase yang sama memiliki arti berbeda di kedua ujungnya. Saham dengan likuiditas tipis lebih mudah didorong dan lebih sulit dijual pada harga yang terlihat di layar.

Pecundang saham terbesar pada 2026

Ukuran yang sama, tetapi dari sisi sebaliknya: penurunan year-to-date terdalam di antara saham yang memenuhi batas likuiditas yang sama.

QuerySaham dengan penurunan terbesar pada 2026: sepuluh terburuk year to date di antara saham dengan volume perdagangan tinggi
tickerreturn YTD (%)rata-rata nilai harian ($ juta)
CTVA-80.8410
TTD-65.7176
FLUT-64.8159
JOBY-64.3114
STLA-61.5126
OKLO-59.4288
APP-59.11168
SMR-57.8217
FICO-54.5998
Z-54.1114
SQL tepat di balik setiap angka
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 year-to-date terdalam tercatat pada CTVA sebesar -80.8%, disusul TTD sebesar -65.7%. Peringkat kesepuluh, Z, berada pada -54.1%. Beberapa saham dalam daftar ini berasal dari perusahaan besar dengan kepemilikan yang tersebar luas, bukan micro cap spekulatif. Hal inilah yang sering mengejutkan pembaca dalam daftar saham yang merosot. Likuiditas dan cakupan analis tidak menjadi batas bawah bagi harga saham. Investor yang memegang salah satu saham ini sebagai porsi besar dalam portofolionya menanggung seluruh pergerakan tersebut. Halaman risiko memegang satu saham mengukurnya melalui angka volatilitas dan drawdown.

Seberapa besar bagian pasar yang naik pada 2026

Leaderboard hanya menampilkan dua ekor distribusi. Breadth menunjukkan bagian tengahnya: bagaimana seluruh universe yang disaring, termasuk index funds, terbagi antara nama yang naik dan turun, berdasarkan besarnya pergerakan.

QueryBreadth year to date: distribusi universe yang disaring berdasarkan kelompok return
kelompoknamaporsi sisi (%)
Down 40%+3741.2
Down 20-40%8441.2
Down 10-20%10441.2
Down 0-10%18741.2
Up 0-10%16258.8
Up 10-25%19458.8
Up 25-50%11658.8
Up 50%+11658.8
SQL tepat di balik setiap angka
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

58.8% dari nama yang disaring berada di level lebih tinggi sepanjang tahun ini dan 41.2% berada di level lebih rendah. Distribusinya menunjukkan apa yang disembunyikan tabel sepuluh besar. Sebanyak 37 nama berada dalam bucket Down 40%+ di satu ujung, sedangkan 116 berada dalam bucket Up 50%+ di ujung lainnya. Di sekitar level tidak berubah, masing-masing terdapat 187 nama dalam bucket Down 0-10% dan 162 nama dalam bucket Up 0-10%. Pada tahun tertentu, sebagian besar pasar bergerak secara biasa saja. Nama-nama dalam kedua tabel di atas merupakan pengecualian yang membentuk rata-rata tersebut.

Posisi pasar itu sendiri

Kinerja satu saham terlihat berbeda jika dibandingkan dengan kinerja pasar secara keseluruhan. Berikut kinerja empat ETF indeks utama dalam periode yang persis sama:

QueryEmpat ETF index utama, year to date, dalam periode pengukuran yang sama
labelreturn YTD (%)diukur sejak tanggaldiukur hingga tanggal
Nasdaq 100 (QQQ)17.42026-01-022026-10-15
S&P 500 (SPY)12.52026-01-022026-10-15
Russell 2000 (IWM)11.12026-01-022026-10-15
Dow (DIA)8.22026-01-022026-10-15
SQL tepat di balik setiap angka
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 tabel dan panel di atas diukur dalam satu periode: sesi penuh pertama tahun 2026 (2026-01-02) hingga sesi terakhir yang telah selesai (2026-10-15). Dalam periode tersebut, Nasdaq 100 (QQQ) mencatat imbal hasil sebesar 17.4%, sedangkan Dow (DIA) mencatat 8.2%. Semua saham dalam tabel gainers mengungguli keempatnya dengan selisih lebar. Ini merupakan konsekuensi matematis dari indeks: ratusan kepemilikan dirata-ratakan menjadi satu angka, sehingga pergerakan masing-masing saham sebagian saling meniadakan. Rentang kinerja di balik angka tersebut jauh lebih lebar daripada angka indeks itu sendiri, dan scorecard sektor untuk paruh pertama tahun ini mengurutkan kesebelas sektor berdasarkan kinerjanya.

Stock split yang memalsukan pergerakan year-to-date

Stock split mengubah jumlah saham dan harga per saham tanpa mengubah nilai kepemilikan. Dalam periode sepanjang ini, banyak perusahaan melakukan stock split. Perhitungan year-to-date yang tidak disesuaikan akan membaca perubahan harga per saham sebagai kinerja. Nama-nama di bawah ini masing-masing melakukan stock split atau membagikan stock dividend pada 2026 dalam skala yang cukup besar untuk mengubah harga tersebut sedikitnya seperlima. Masing-masing juga memenuhi batas likuiditas yang sama. Karena itu, semuanya memenuhi syarat untuk masuk ke papan di atas sebelum filter split mengeluarkannya.

QueryDikecualikan dari papan: stock split 2026 yang cukup besar untuk memalsukan pergerakan year to date
tickerYTD (%) tanpa penyesuaianefek split terhadap harga (%)jenis splittanggal split
BKNG-96.9-96forward split2026-04-06
KLAC-86.2-90forward split2026-06-12
CVNA-85.6-80forward split2026-05-08
VGT-83.9-87.5forward split2026-04-21
VUG-81.7-83.3forward split2026-04-21
VOOG-81-83.3forward split2026-04-21
MGK-77.9-80forward split2026-04-21
IWF-73.9-75forward split2026-04-29
VO-72.2-75forward split2026-04-21
INTW-57.3-87.5forward split2026-06-26
CRWD-48.4-75stock dividend2026-07-02
MNST-40.9-50stock dividend2026-08-11
APH-40.6-50stock dividend2026-09-03
HON7.6100reverse split2026-06-29
ETHA141.8200reverse split2026-10-06
SQL tepat di balik setiap angka
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 tercatat sebesar -96.9% pada layar yang tidak disesuaikan setelah forward split mengubah harga per sahamnya sebesar -96%. Sementara itu, KLAC akan tercatat sebesar -86.2% setelah forward split mengubah harganya sebesar -90%. Tidak ada pemegang saham yang kehilangan nilai pada hari split berlaku. Harga per saham dibagi, sementara jumlah saham dikalikan dengan faktor yang sama. Kolom dampak split mengisolasi perubahan harga yang semata-mata disebabkan oleh split. Inilah bagian yang dibaca sebagai kinerja oleh layar yang tidak disesuaikan.

Baris terakhir pada panel bergerak ke arah sebaliknya: ETHA menunjukkan 141.8% setelah reverse split menaikkan harga per sahamnya sebesar 200%. Harga naik, bukan turun. Daftar apa pun yang melewati langkah ini akan memublikasikan informasi fiktif di posisi teratas dan terbawah sekaligus. Karena itu, layar memisahkan ticker yang mengalami split, alih-alih mencoba menyesuaikan harganya. Fund juga dapat masuk ke panel ini, sama seperti perusahaan. Index fund juga melakukan split atas sahamnya, dan layar ini mencakup keduanya.

Cara pengukuran screen ini

Setiap tahap screen, beserta jumlah nama yang masih lolos setelah tahap tersebut:

QueryTahapan penyaringan: jumlah saham yang lolos pada setiap filter
tahap penyaringannama
Traded the first and the last full session4543
Averaging $100m+ a day over the past month1082
Opened 2026 above $10 a share1049
Not on the excluded-fund list1017
No split or stock dividend in 20261000
SQL tepat di balik setiap angka
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

Metodenya secara lengkap:

  • Periode pengamatan. Sesi perdagangan penuh pertama pada 2026 hingga sesi penuh terbaru yang tercatat. Kedua titik batas diambil dari minute bars. Sesi hanya dihitung jika memiliki jumlah bar jam perdagangan reguler yang lengkap. Dengan demikian, hari perdagangan yang masih berlangsung tidak pernah dianggap selesai.
  • Return. Open sesi reguler pertama pada tahun ini dibandingkan dengan close sesi reguler terakhir, yang dihitung dari minute bars. Prints pada premarket dan after-hours diabaikan. Ini adalah price return; dividen tidak ditambahkan kembali. Karena itu, nama dengan yield tinggi terlihat sedikit lebih buruk dibandingkan jika diukur berdasarkan total return.
  • Batas likuiditas. Rata-rata turnover jam perdagangan reguler minimal $100 juta per sesi selama 20 hari kalender terakhir. Perhitungan hanya mencakup sesi yang berlangsung dari awal hingga akhir. Jika sesi parsial ikut dihitung, sebagian nilai transaksi satu hari akan dibagi dengan satu hari penuh dan turnover setiap nama akan terlihat lebih rendah. Filter tunggal ini mengurangi cakupan dari 4543 ticker menjadi 1082.
  • Batas harga. Saham harus membuka tahun di atas $10 per saham. Nama di bawah $10 dapat menghasilkan persentase besar dari perubahan harga yang kecil.
  • Dana leveraged dan inverse dikeluarkan melalui daftar terkurasi yang dicantumkan secara lengkap dalam SQL di bawah setiap tabel. Daftar ini mencakup dana berbasis indeks dan dana berbasis saham tunggal yang menggandakan pergerakan harian satu perusahaan. Dana leveraged dapat menduduki posisi teratas dalam daftar penggerak harga tanpa adanya satu pun berita perusahaan. Daftar ini dikelola secara manual, dan itu merupakan kelemahannya: dana yang diluncurkan bulan ini baru dikeluarkan setelah seseorang menambahkannya.
  • Dana biasa tidak dikeluarkan. ETF indeks atau sektor yang tidak leveraged dan memenuhi batas likuiditas serta harga akan diperingkat di sini bersama perusahaan operasional. ETF tersebut juga dihitung dalam jumlah breadth. Dana merupakan keranjang nama yang sudah dihitung dalam universe yang sama. Karena itu, baris tersebut harus dibaca sebagai kinerja keranjang, bukan kinerja satu perusahaan dalam setahun.
  • Stock split. Setiap ticker yang mengalami split atau stock dividend yang berlaku selama 2026 disisihkan, berapa pun kecilnya rasio tersebut. Ini merupakan pilihan konservatif. Langkah ini membuat sejumlah kecil performer yang sebenarnya tidak masuk ke papan, tetapi mencegah perubahan jumlah saham dipublikasikan sebagai return. Panel di atas menampilkan nama yang dikeluarkan karena split-nya cukup besar untuk membuat pergerakan harga terlihat tidak wajar.
  • Listing terlambat. Perusahaan yang listing setelah sesi pertama tahun ini tidak memiliki harga pada Januari dan tidak muncul dalam tabel tersebut. Ini merupakan kekosongan nyata pada tahun dengan kalender listing baru yang padat.
  • Hasil. Sebanyak 1000 nama diperingkat. Sepuluh nama teratas dan sepuluh nama terbawah menjadi dua papan di halaman ini.

Pertanyaan yang sama dalam tiga rentang waktu

Year to date adalah salah satu tingkat dalam sebuah tangga, dan suatu pergerakan terlihat berbeda pada setiap rentang waktu. Tampilan mingguan adalah saham dengan kenaikan dan penurunan terbesar minggu ini, tampilan bulanan adalah saham dengan pergerakan terbesar bulan ini, sedangkan halaman ini mencakup periode setahun. Kriteria tiap tingkat berbeda: halaman ini menyaring saham berdasarkan rata-rata nilai transaksi sebesar $100 juta per hari selama sebulan terakhir, sementara halaman mingguan dan bulanan menyaring berdasarkan total nilai transaksi dalam periode masing-masing. Karena itu, suatu saham dapat lolos di satu daftar tetapi tidak di daftar lainnya. Saham yang memimpin daftar mingguan setelah reaksi terhadap laporan laba suatu kali dapat berada di posisi tengah dalam daftar tahunan. Untuk narasi yang lebih luas mengenai perkembangan pasar sepanjang tahun ini, ulasan pasar paruh pertama tahun ini memuat detail tentang indeks, suku bunga, dan sektor. Sementara itu, cara kerja ETF berleverage menjelaskan alasan dana berleverage tidak disertakan di sini.

FAQ

Saham apa yang memiliki kinerja terbaik pada 2026?

Di antara saham dengan nilai transaksi harian rata-rata setidaknya $100 juta, harga pembukaan awal tahun di atas $10, tidak mengalami stock split pada 2026, dan tidak termasuk dalam daftar leveraged fund, MRNA merupakan saham dengan kinerja terbaik pada 2026 hingga saat ini, naik 692.8% dari sesi perdagangan pertama tahun ini. SNDK berada di posisi kedua dengan kenaikan 471%.

Saham apa yang mengalami penurunan terbesar pada 2026?

CTVA merupakan saham dengan kinerja terburuk pada 2026 dalam penyaringan ini, dengan penurunan sebesar -80.8%, diikuti TTD dengan penurunan -65.7%. Daftar lengkap saham yang mengalami kerugian terbesar pada 2026 terdapat dalam tabel kedua di atas dan diperbarui seiring berjalannya tahun.

Bagaimana return saham year-to-date dihitung?

Return year-to-date membandingkan harga terbaru dengan harga pada awal tahun kalender, lalu menyatakan perubahannya dalam persentase. Dalam data ini, perhitungannya menggunakan harga pembukaan sesi reguler pertama pada 2026 dibandingkan dengan harga penutupan sesi terakhir yang telah selesai. Saham yang mengalami stock split selama tahun berjalan tidak disertakan, bukan disesuaikan, sehingga tidak ada faktor penyesuaian di antara pembaca dan tape.

Apakah leveraged ETF termasuk dalam daftar saham dengan kenaikan terbesar pada 2026?

Tidak. Leveraged fund atau inverse fund memperbesar pergerakan harian suatu indeks atau saham individual. Karena itu, fund tersebut sering berada di posisi teratas dalam daftar pergerakan harga tanpa adanya berita perusahaan yang mendasarinya. Fund tersebut dikeluarkan berdasarkan nama sebelum pemeringkatan, dan daftarnya dapat dilihat dalam SQL di bawah setiap tabel. ETF indeks dan sektor biasa berbeda: ETF tersebut harus memenuhi ambang yang sama seperti saham lainnya dan tetap diperingkat di sini. Karena itu, sebuah fund dapat muncul di salah satu dari kedua daftar.


Setiap tabel di sini merupakan stored query dengan SQL terlampir. Buka panel mana pun untuk mengaudit penyaringannya, atau buat ulang dengan ambang pilihan Anda sendiri di terminal Strasmore.

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