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.
| ticker | return YTD (%) | rata-rata nilai harian ($ juta) |
|---|---|---|
| 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 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 10MRNA 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.
| ticker | return YTD (%) | rata-rata nilai harian ($ juta) |
|---|---|---|
| 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 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 10Penurunan 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.
| kelompok | nama | porsi sisi (%) |
|---|---|---|
| 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 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 ord58.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:
| label | return YTD (%) | diukur sejak tanggal | diukur hingga tanggal |
|---|---|---|---|
| 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 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 DESCKedua 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.
| ticker | YTD (%) tanpa penyesuaian | efek split terhadap harga (%) | jenis split | tanggal split |
|---|---|---|---|---|
| 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 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 ASCBKNG 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:
| tahap penyaringan | nama |
|---|---|
| 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 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
)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.