2026 Yılı En Çok Kazandıran ve Kaybettiren Hisseler
Borsa kayıtlarından alınan gerçek likidite verileriyle 2026 yılının en iyi ve en kötü performans gösteren hisselerinin sıralaması. Hisse bölünmeleri ve kaldıraçlı fonlar hariç.
MRNA, yılın açılış seansından en son tamamlanan seansa kadar 692.8% oranında değer kazanarak 2026 yılının şu ana kadarki en iyi performans gösteren hisseleri arasında ilk sırada yer alıyor. Bu sayfa, bir veri sağlayıcı özetinden ziyade borsa kayıtlarından (exchange tape) alınan verilerle, 2026 yılında aktif olarak işlem gören hisseler arasındaki en büyük kazananları ve kaybedenleri sıralamakta olup yıl boyunca güncellenmektedir. Yılbaşından bugüne (YTD) getirileri gösteren çoğu listenin hatalı olduğu nokta olan hisse bölünmeleri ve kaldıraçlı fonlar, sıralama yapılmadan önce verilerden ayıklanmıştır.
2026 yılının en çok kazandıran hisseleri
Aşağıdaki isimlerin her biri, sıralamaya girmeden önce bir likidite eşiğini aşmıştır: son bir ayda tamamlanan her işlem gününde ortalama en az yüz milyon dolarlık hisse senedi el değiştirmiştir. Kimsenin işlem yapmadığı bir hisse senedindeki yüksek yüzde, bir sonuç değil, sadece bir kotasyondur.
| ticker | ybb getiri (%) | gort hacim ($m) |
|---|---|---|
| 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 |
Her verinin arkasındaki tam SQL
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
universe AS (
SELECT ticker,
sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 21 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING adv >= 100000000
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT e.ticker AS ticker,
round((e.latest_close / e.year_open - 1) * 100, 1) AS ytd_return_pct,
round(u.adv / 1e6, 0) AS avg_daily_dollar_m
FROM edges AS e
INNER JOIN universe AS u ON e.ticker = u.ticker
WHERE e.year_open >= 10
ORDER BY (e.latest_close / e.year_open) DESC
LIMIT 10MRNA, 692.8% ile yılın zirvesinde yer alırken, onu 471% ile SNDK ve 355.2% ile TWST takip etmektedir. Listenin onuncu sırasındaki KOD dahi 215.7% oranında değer kazanmış olup, tablonun tamamı geniş kapsamlı endekslerin oldukça üzerinde bir performans sergilemiştir.
Her hareketin yanındaki dolar sütunu, yüzde kadar bilgi içermektedir. KOD günlük ortalama yaklaşık 389 milyon dolarlık işlem hacmine sahiptir. Listenin zirvesindeki MRNA ise ortalama 3002 milyon dolarlık hacme ulaşmaktadır. Buradaki her isim günlük yüz milyon dolar barajını aşmaktadır; ancak bu taban seviyenin üzerindeki aralık, aynı manşet yüzdesinin iki uçta iki farklı anlama gelebileceği kadar geniştir. İşlem hacmi düşük bir hisseyi yukarı taşımak daha kolay, ekrandaki fiyattan çıkış yapmak ise daha zordur.
2026 yılının en çok değer kaybeden hisseleri
Aynı ölçütün tersi: Aynı likidite eşiğini aşan isimler arasında yılbaşından bugüne en sert düşüşler.
| ticker | ybb getiri (%) | gort hacim ($m) |
|---|---|---|
| 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 |
Her verinin arkasındaki tam SQL
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
universe AS (
SELECT ticker,
sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 21 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING adv >= 100000000
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT e.ticker AS ticker,
round((e.latest_close / e.year_open - 1) * 100, 1) AS ytd_return_pct,
round(u.adv / 1e6, 0) AS avg_daily_dollar_m
FROM edges AS e
INNER JOIN universe AS u ON e.ticker = u.ticker
WHERE e.year_open >= 10
ORDER BY (e.latest_close / e.year_open) ASC
LIMIT 10Yılbaşından bugüne en sert düşüş CTVA hissesinde -80.8% seviyesiyle görülürken, onu -65.7% seviyesiyle TTD takip ediyor. Listenin onuncu sırasında yer alan Z ise -54.1% seviyesinde bulunuyor. Buradaki isimlerin birçoğu spekülatif mikro ölçekli şirketlerden ziyade, büyük ve geniş tabanlı yatırımcı kitlesine sahip şirketlerden oluşuyor; bu durum, değer kaybedenler listesinin insanları şaşırtan kısmını oluşturuyor. Likidite ve analist takibi, bir hisse fiyatına taban oluşturmaz. Bu hisselerden birini portföyünde ağırlıklı olarak bulunduran yatırımcılar, hareketin tamamına maruz kalmıştır; bu durum tek bir hisse tutmanın riski sayfasında volatilite ve düşüş (drawdown) verileriyle ölçülmektedir.
2026 yılında piyasanın ne kadarı yükselişte
Bir liderlik tablosu yalnızca iki uç noktayı gösterir. Piyasa genişliği ise gövdeyi yansıtır: Endeks fonları dahil olmak üzere tüm taranmış evrenin, hareket büyüklüklerine göre gruplandırılmış şekilde yükselen ve düşen hisseler arasında nasıl bölündüğünü ortaya koyar.
| grup | adlar | taraf payı (%) |
|---|---|---|
| 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 |
Her verinin arkasındaki tam SQL
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
universe AS (
SELECT ticker,
sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 21 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING adv >= 100000000
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
),
rets AS (
SELECT e.ticker AS ticker, (e.latest_close / e.year_open - 1) * 100 AS ret
FROM edges AS e
INNER JOIN universe AS u ON e.ticker = u.ticker
WHERE e.year_open >= 10
)
SELECT bucket,
names,
round(100 * sum(names) OVER (PARTITION BY side) / sum(names) OVER (), 1) AS side_share_pct
FROM (
SELECT tup.1 AS bucket, tup.2 AS names, tup.3 AS ord, tup.4 AS side
FROM (
SELECT arrayJoin([
('Down 40%+', countIf(ret < -40), 1, 'down'),
('Down 20-40%', countIf(ret >= -40 AND ret < -20), 2, 'down'),
('Down 10-20%', countIf(ret >= -20 AND ret < -10), 3, 'down'),
('Down 0-10%', countIf(ret >= -10 AND ret < 0), 4, 'down'),
('Up 0-10%', countIf(ret >= 0 AND ret < 10), 5, 'up'),
('Up 10-25%', countIf(ret >= 10 AND ret < 25), 6, 'up'),
('Up 25-50%', countIf(ret >= 25 AND ret < 50), 7, 'up'),
('Up 50%+', countIf(ret >= 50), 8, 'up')
]) AS tup
FROM rets
)
)
ORDER BY ordTaranmış hisselerin 58.8% kadarı yıl bazında yukarıda, 41.2% kadarı ise aşağıdadır. Dağılım, ilk on listesinin gizlediği gerçektir. 37 adet hisse bir uçta Down 40%+ grubunda yer alırken, 116 adet hisse diğer uçta Up 50%+ grubundadır; buna karşılık değişim göstermeyenlerin her iki tarafında 187 adet hisse Down 0-10% grubunda, 162 adet hisse ise Up 0-10% grubundadır. Piyasanın büyük bölümü herhangi bir yılda olağan bir seyir izler; yukarıdaki iki tabloda yer alan hisseler ise ortalamaların üzerine inşa edildiği istisnalardır.
Piyasanın genel durumu
Tek bir hissenin yıllık performansı, piyasanın genel performansına kıyasla farklı bir tablo çizer. Dört ana endeks ETF'i, tam olarak aynı dönem için şu sonuçları vermiştir:
| etiket | ybb getiri (%) | başlangıç tarihi | bitiş tarihi |
|---|---|---|---|
| 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 |
Her verinin arkasındaki tam SQL
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT multiIf(ticker = 'SPY', 'S&P 500 (SPY)', ticker = 'QQQ', 'Nasdaq 100 (QQQ)',
ticker = 'DIA', 'Dow (DIA)', ticker = 'IWM', 'Russell 2000 (IWM)', ticker) AS label,
round((latest_close / year_open - 1) * 100, 1) AS ytd_return_pct,
(SELECT toString(min(d)) FROM complete) AS measured_from_date,
(SELECT toString(max(d)) FROM complete) AS measured_through_date
FROM edges
ORDER BY ytd_return_pct DESCHem tablolar hem de yukarıdaki panel tek bir dönem üzerinden ölçülmüştür: 2026'nın ilk tam işlem günü (2026-01-02) ile en son tamamlanan işlem günü (2026-10-15) arası. Bu dönemde Nasdaq 100 (QQQ), 17.4% oranında getiri sağlarken, Dow (DIA) ise 8.2% oranında getiri elde etmiştir. Kazananlar tablosundaki her bir isim, bu dört endeksi de büyük bir farkla geride bırakmıştır; bu durum endeks matematiğinin bir sonucudur: yüzlerce hisse senedinin tek bir çizgide ortalamasının alınması, bireysel hareketlerin kısmen birbirini sönümlemesine yol açar. Bu çizginin altındaki spread, çizginin kendisinden çok daha geniştir ve ilk yarı için sektör karnesi, on bir sektörün tamamını birbirine göre sıralamaktadır.
Yılbaşından bugüne hareketi yanıltıcı kılan hisse bölünmesi
Hisse bölünmesi, bir varlığın değerini değiştirmeksizin hisse adedini ve hisse başına fiyatı değiştirir. Bu kadar uzun bir zaman diliminde birçok şirket bölünmeye gider ve düzeltilmemiş bir yılbaşından bugüne hesaplaması, hisse başına fiyattaki değişimi performans olarak okur. Aşağıdaki isimlerin her biri, fiyatı en az beşte bir oranında değiştirecek büyüklükte bir iki bin yirmi altı bölünmesi veya hisse senedi temettüsü gerçekleştirmiştir ve her biri aynı likidite eşiğini aşmıştır; bu nedenle her biri, bölünme filtresi tarafından elenmeden önce yukarıdaki paneller için uygun durumdaydı.
| ticker | düzeltilmemiş ybb (%) | bölünme fiyat etkisi (%) | bölünme türü | bölünme tarihi |
|---|---|---|---|---|
| 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 |
Her verinin arkasındaki tam SQL
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
universe AS (
SELECT ticker,
sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 21 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING adv >= 100000000
),
split_terms AS (
SELECT ticker,
argMax(split_to, execution_date) AS new_shares,
argMax(split_from, execution_date) AS old_shares,
round((old_shares / new_shares - 1) * 100, 1) AS split_price_effect_pct,
replaceAll(argMax(adjustment_type, execution_date), '_', ' ') AS split_type,
toString(max(execution_date)) AS split_date
FROM global_markets.stocks_splits
WHERE execution_date BETWEEN toDate('2026-01-01') AND today()
GROUP BY ticker
HAVING new_shares > 0 AND old_shares > 0
AND greatest(new_shares / old_shares, old_shares / new_shares) >= 1.25
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
AND ticker IN (SELECT ticker FROM split_terms)
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
),
ranked AS (
SELECT e.ticker AS ticker,
round((e.latest_close / e.year_open - 1) * 100, 1) AS unadjusted_ytd_pct,
s.split_price_effect_pct AS split_price_effect_pct,
s.split_type AS split_type,
s.split_date AS split_date
FROM edges AS e
INNER JOIN split_terms AS s ON e.ticker = s.ticker
WHERE e.year_open >= 10 AND e.ticker IN (SELECT ticker FROM universe)
)
SELECT ticker, unadjusted_ytd_pct, split_price_effect_pct, split_type, split_date
FROM (
SELECT ticker, unadjusted_ytd_pct, split_price_effect_pct, split_type, split_date,
row_number() OVER (ORDER BY unadjusted_ytd_pct ASC) AS rn_low,
row_number() OVER (ORDER BY unadjusted_ytd_pct DESC) AS rn_high
FROM ranked
)
WHERE rn_low <= 14 OR rn_high = 1
ORDER BY unadjusted_ytd_pct ASCBKNG, bir forward split hisse başına fiyatını -96% oranında değiştirdikten sonra düzeltilmemiş bir ekranda -96.9% olarak görünecek; KLAC ise bir forward split fiyatını -90% oranında değiştirdikten sonra -86.2% olarak görünecektir. Her iki hissenin hiçbir yatırımcısı, bölünmenin yürürlüğe girdiği gün herhangi bir kayıp yaşamamıştır. Hisse başına fiyat bölünmüş, hisse adedi ise aynı katsayı ile çarpılmıştır. Bölünme etkisi sütunu, yalnızca bölünmeden kaynaklanan fiyat değişimini izole eder; bu, düzeltilmemiş bir ekranın performans olarak okuduğu kısımdır.
Panelin son satırı ters yönde işler: ETHA, bir reverse split hisse başına fiyatını 200% oranında artırarak fiyatı düşürmek yerine yükselttiğinde 141.8% değerini gösterir. Bu adımı atlayan her liste, hem en üstte hem de en altta kurgusal veriler yayınlar; ekranın, fiyatları yamamak yerine bölünmüş ticker'ları kenara ayırmasının nedeni budur. Bir fon da bir şirket kadar kolay bir şekilde bu panele dahil olabilir: Endeks fonları da hisselerini böler ve bu ekran her ikisini de kapsar.
Bu tarama nasıl ölçülüyor
Taramanın her aşaması ve sonrasında kalan hisse sayısı:
| tarama adımı | adlar |
|---|---|
| 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 |
Her verinin arkasındaki tam SQL
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
universe AS (
SELECT ticker
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 21 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) >= 100000000
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
),
flagged AS (
SELECT ticker,
year_open,
ticker IN (SELECT ticker FROM universe) AS liquid,
ticker NOT IN ('SPCX','KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL') AS not_geared,
ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN toDate('2026-01-01') AND today()) AS no_split
FROM edges
)
SELECT tup.1 AS screen_step, tup.2 AS names
FROM (
SELECT arrayJoin([
('Traded the first and the last full session', count()),
('Averaging $100m+ a day over the past month', countIf(liquid)),
('Opened 2026 above $10 a share', countIf(liquid AND year_open >= 10)),
('Not on the excluded-fund list', countIf(liquid AND year_open >= 10 AND not_geared)),
('No split or stock dividend in 2026', countIf(liquid AND year_open >= 10 AND not_geared AND no_split))
]) AS tup
FROM flagged
)Yöntemin tam açıklaması:
- Pencere. 2026 yılının ilk tam işlem seansından, kayıtlardaki en son tam seansa kadar olan dönem. Her iki uç nokta da dakika bazlı barlardan okunur; bir seansın hesaba katılması için tam bir normal işlem saati bar sayısına sahip olması gerekir, dolayısıyla devam eden bir gün asla tamamlanmış sayılmaz.
- Getiri. Yılın ilk normal seans açılışı ile son normal seans kapanışı arasındaki fark, dakika bazlı barlardan hesaplanır. Piyasa öncesi ve piyasa sonrası işlemler (prints) dikkate alınmaz. Bunlar fiyat getirileridir; temettüler eklenmez, bu nedenle yüksek temettü verimli bir hisse, toplam getiri rakamına kıyasla burada biraz daha düşük performanslı görünür.
- Likidite tabanı. Son yirmi takvim günü boyunca, sadece baştan sona tamamlanmış seanslar baz alınarak, seans başına ortalama en az yüz milyon dolarlık normal işlem hacmi. Kısmi bir seans, bir günün işlem hacmini tam bir güne bölerek her hissenin hacmini olduğundan düşük gösterebilir. Bu tek filtre, evreni 4543 ticker'dan 1082 adede düşürür.
- Fiyat tabanı. Hisse senedi yıla on doların üzerinde bir fiyatla başlamış olmalıdır. On doların altındaki hisseler, küçük fiyat değişimlerinde büyük yüzdesel hareketler yaratır.
- Kaldıraçlı ve ters fonlar, her tablonun altındaki SQL sorgusunda tam listesi verilen özel bir liste aracılığıyla hariç tutulur. Bu liste, endeks odaklı fonları ve tek bir şirketin günlük hareketini çarpan fonları kapsar. Kaldıraçlı bir fon, hiçbir şirket haberi olmaksızın en çok yükselenler listesinin zirvesine yerleşebilir. Listenin manuel olarak tutulması zayıf yönüdür: bu ay piyasaya sürülen bir fon, ancak biri listeye eklediğinde hariç tutulur.
- Sıradan fonlar filtrelenmez. Likidite ve fiyat tabanlarını aşan kaldıraçsız bir endeks veya sektör ETF'i, burada faaliyet gösteren şirketlerle birlikte sıralanır ve genişlik hesaplamalarına dahil edilir. Bir fon, aynı evrende zaten sayılmış olan hisselerden oluşan bir sepettir; bu nedenle ilgili satırları tek bir şirketin yıllık performansı olarak değil, sepetin performansı olarak okuyun.
- Bölünmeler. 2026 yılı içinde gerçekleşen herhangi bir hisse bölünmesi veya bedelsiz hisse senedi dağıtımı olan tüm ticker'lar, oran ne kadar küçük olursa olsun kapsam dışı bırakılır. Bu muhafazakar bir tercihtir; gerçek performans gösteren birkaç hissenin listede yer almasını engellese de, hisse sayısı değişiminin getiri gibi yansıtılmasının önüne geçer. Yukarıdaki panel, bölünmesi bir fiyat hareketi gibi görünecek kadar büyük olan hariç tutulmuş isimleri gösterir.
- Geç listelenenler. Yılın ilk seansından sonra borsaya kote olan bir şirketin Ocak ayı fiyatı bulunmadığından, yoğun bir halka arz takviminin olduğu bir yılda önemli bir boşluk yaratan bu tablolarda yer almaz.
- Sonuç. 1000 adet hisse sıralanır; bunların en üstteki ve en alttaki on tanesi bu sayfadaki iki tabloyu oluşturur.
Üç farklı pencerede aynı soru
Yılbaşından bugüne (YTD) verisi bir merdivenin basamakları gibidir ve her uzunlukta farklı bir görünüm sunar. Haftalık görünüm bu haftanın en çok kazandıran ve kaybettiren hisseleri, aylık görünüm bu ayın en hareketli hisseleri başlığında yer alırken, bu sayfa yılın tamamını kapsar. Basamaklar arasındaki eşikler farklıdır: Bu sayfa son bir ayda günlük ortalama yüz milyon dolar işlem hacmi kriterini baz alırken, haftalık ve aylık sayfalar kendi dönemleri içindeki toplam işlem hacmini esas alır; bu nedenle bir hisse bir tabloda yer alırken diğerinde dışarıda kalabilir. Bir kazanç raporu tepkisiyle haftalık listenin zirvesine yerleşen bir hisse, yıl genelinde orta sıralarda kalabilir. Yılın geride kalan kısmına dair daha geniş bir anlatı için yılın ilk yarısı piyasa özeti endeks, faiz oranları ve sektör detaylarını sunarken, kaldıraçlı ETF'ler nasıl çalışır bölümü, kaldıraçlı fonların neden bu listede yer almadığını açıklar.
SSS
2026 yılının en iyi performans gösteren hissesi hangisidir?
Günlük ortalama en az yüz milyon dolar işlem hacmine sahip, yıla on doların üzerinde başlayan, 2026 yılında bölünmeye gitmeyen ve kaldıraçlı fon listesinde yer almayan isimler arasında MRNA, yılın ilk seansından bu yana 692.8% oranında değer kazanarak 2026 yılının en iyi performans gösteren hissesi olmuştur. SNDK ise 471% ile ikinci sırada yer almaktadır.
2026 yılında en çok değer kaybeden hisseler hangileridir?
CTVA, -80.8% oranındaki düşüşle bu taramada 2026 yılının en kötü performans gösteren hissesi olurken, onu -65.7% ile TTD takip etmektedir. 2026 yılının en büyük hisse senedi kaybedenlerinin tam listesi, yıl ilerledikçe güncellenen yukarıdaki ikinci tabloda yer almaktadır.
Yılbaşından bugüne hisse senedi getirisi nasıl hesaplanır?
Yılbaşından bugüne getiri, en güncel fiyatı takvim yılının başlangıcındaki fiyatla karşılaştırır ve değişimi yüzde olarak ifade eder. Burada hesaplama, 2026 yılının ilk normal seans açılışı ile en son tamamlanan seansın kapanışı baz alınarak yapılmıştır. Yıl içinde bölünmeye giden hisseler düzeltilmek yerine liste dışı bırakılır; böylece okuyucu ile piyasa verisi arasında herhangi bir düzeltme katsayısı bulunmaz.
Kaldıraçlı ETF’ler 2026 kazananlar listesine dahil mi?
Hayır. Kaldıraçlı veya ters fonlar, bir endeksin ya da tek bir hissenin günlük hareketini çarpan etkisiyle yansıtır; bu nedenle arkasında şirket haberi olmaksızın hareketli hisseler listesinin başında yer alırlar. Bu fonlar sıralama yapılmadan önce isim bazında listeden çıkarılır ve fonların listesi her tablonun altındaki SQL bölümünde görülebilir. Sıradan endeks ve sektör ETF’leri ise farklı bir durumdur: Bu fonlar herhangi bir hisse senedi ile aynı kriterleri karşıladıkları için burada sıralamaya dahil edilirler; dolayısıyla bir fon her iki tabloda da yer alabilir.
Buradaki her tablo, ekli SQL sorgusu ile oluşturulmuş bir veri setidir. Taramayı denetlemek için herhangi bir paneli genişletin veya Strasmore terminalinde kendi kriterlerinizle yeniden oluşturun.