2026 Yılının En Çok Kazandıran Hisseleri
2026 yılında en yüksek performansı gösteren hisseler ile en çok değer kaybedenler listelenmektedir. Veriler borsa verileri baz alınarak hazırlanmıştır.
2026 yılının şimdiye kadarki en iyi performans gösteren hisselerinin başında SNDK gelmektedir; hisse, yılın açılış seansından en son tamamlanan seansa kadar 554.9% oranında artış göstermiştir. Bu sayfa, borsa verileri baz alınarak, gerçek işlem gören isimler arasındaki 2026 yılının en büyük kazanan ve kaybeden hisselerini sıralamaktadır ve yıl boyunca güncellenmektedir. Sıralama yapılmadan önce hisse bölünmeleri ve kaldıraçlı fonlar listeden çıkarılmaktadır; bu durum, yılbaşından itibaren hazırlanan listelerin çoğunda yapılan hataların önüne geçmektedir.
2026'nın en çok kazandıran hisseleri
Aşağıdaki tüm isimler, sıralamaya girmeden önce bir likidite eşiğini aşmıştır: Son bir ay boyunca tamamlanan her seansta ortalama en az 100 milyon dolar tutarında hisse el değiştirmiştir. Hiç işlem görmeyen bir hissedeki yüksek yüzde artışı bir sonuç değil, sadece bir fiyattır.
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 10SNDK, 554.9% ile yılın lideridir; MXL 386.3% ile ikinci, 345% ile üçüncü sırada yer alan AEHR ise üçüncü sıradadır. Listenin onuncu sırasında bulunan AAOI, hâlâ 204.3% oranında yükseliştedir; dolayısıyla tüm tablo genel endekslerin çok ilerisinde seyretmektedir.
Her artışın yanındaki dolar sütunu, yüzde kadar bilgi sunmaktadır. AAOI günlük ortalama yaklaşık 817 milyon dolar hacim yapmaktadır. Listenin başında yer alan SNDK ise ortalama 18348 milyon dolar hacim gerçekleştirmektedir. Buradaki her isim günlük 100 milyon dolar eşiğini aşmaktadır ve bu eşiğin üzerindeki aralık, aynı yüzde oranının uç noktalarda iki farklı anlama gelmesine neden olacak kadar geniştir. Hacmi düşük hisseleri yukarı taşımak daha kolay, ekrandaki fiyattan çıkış yapmak ise daha zordur.
2026'nın en büyük hisse kayıpları
Aynı ölçümün tersi: Belirlenen likidite eşiğinin altına düşen hisseler arasında yılbaşından itibaren yaşanan en keskin düşüşler.
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 itibaren en keskin düşüş EOSE hissesinde -65.9% oranında gerçekleşirken, bunu -58.7% ile CSGP takip etmektedir. Listede onuncu sırada yer alan TEAM, -47.3% seviyesindedir. Buradaki bazı şirketlerin spekülatif mikro ölçekli şirketler yerine, geniş çapta tutulan büyük şirketler olması dikkat çekicidir. Likidite ve analist takibi, hisse fiyatı için bir alt sınır oluşturmamaktadır. Portföyünde bu hisselerden birini yüksek oranda bulunduranlar, tek bir hisse tutmanın riski sayfasında volatilite ve drawdown verileriyle ölçülen tüm düşüşe maruz kalmıştır.
2026 yılında piyasanın ne kadarı yükselişte
Liderlik tabloları sadece uç değerleri gösterir. Piyasa genişliği ise piyasanın gövdesini gösterir: Endeks fonları dahil olmak üzere taranan tüm evrenin, hareket büyüklüğüne göre yükselen ve düşen hisseler arasında nasıl bölündüğünü ortaya koyar.
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 ordTaranan hisselerin 61.9%'si yıllık bazda daha yüksek seviyededir ve 38.1%'si daha düşük seviyededir. Dağılım, en iyi on hissenin bulunduğu tablonun gizlediği veridir. 22 hisse bir uçta Down 40%+ diliminde, 130 hisse ise diğer uçta Up 50%+ diliminde yer alırken; değişmeyenlerin her iki yanında 146 hisse Down 0-10% diliminde, 159 hisse ise Up 0-10% dilimindedir. Herhangi bir yılda piyasanın büyük bir kısmı sıradan hareketler sergiler; yukarıdaki iki tabloda yer alan hisseler ise ortalamaların oluşturulduğu istisnalardır.
Piyasanın genel durumu
Tek bir hissenin yıllık performansı, piyasanın genel performansından farklılık gösterir. Aynı zaman dilimi içerisinde dört ana endeks ETF'si:
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 borsa verileri hem de yukarıdaki panel tek bir zaman dilimi için ölçülmektedir: 2026'nın ilk tam işlem günü (2026-01-02) ile en son tamamlanan işlem günü (2026-07-22) arası. Bu dönemde Russell 2000 (IWM) 18.6%, Dow (DIA) ise 8.2% getiri sağlamıştır. Kazanç tablosundaki her bir varlık, bu dört endeksi de büyük bir farkla geride bırakmıştır; bu durum bir endeksin işleyiş mantığıdır: yüzlerce holdingin ortalaması tek bir çizgi halindedir ve bireysel hareketler bu çizgide kısmen birbirini dengeler. Bu çizginin altındaki fark, çizginin kendisinden çok daha geniştir ve ilk yarı sektör karnesi tüm on bir sektörü birbirine göre sıralamaktadır.
Yılbaşından itibaren getiriyi yapay gösteren hisse bölünmesi
Bölünme, bir varlığın değerini değiştirmeden hisse sayısını ve hisse başına fiyatı değiştirir. Bu kadar uzun bir zaman diliminde birçok şirket bölünme gerçekleştirir ve düzeltilmemiş yılbaşından itibaren hesaplamalar, hisse başına fiyattaki değişimi performans olarak okur. Aşağıdaki isimlerin her biri, fiyatı en az beşte bir oranında hareket ettirecek büyüklükte bir 2026 bölünmesi veya temettü bölünmesi gerçekleştirmiştir; her biri aynı likidite eşiğini geçtiği için bölünme filtresi onları elemeden önce yukarıdaki panellerde yer almaya hak kazanmıştır.
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ı -96% oranında hareket ettirdikten sonra düzeltilmemiş bir ekranda -96.7% olarak görünür; CVNA ise bir forward split hisse başına fiyatı -80% oranında hareket ettirdikten sonra -85.1% olarak görünür. Her iki varlığın hiçbir yatırımcısı da 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 sayısı 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 kısım, düzeltilmemiş bir ekran tarafından performans olarak okunur.
Panelin son satırı ters yönde işler: DD, bir reverse split hisse başına fiyatı 200% oranında yükselterek fiyatı düşürmek yerine artırdıktan sonra 245.3% olarak görünür. Bu adımı atlayan herhangi bir liste, hem en üstte hem de en altta kurgusal veriler yayınlar; bu nedenle ekran, fiyatları düzeltmeye çalışmak yerine bölünme gerçekleşen sembolleri ayrı tutar. Bir fon da bir şirket kadar kolay bir şekilde bu panelde yer alabilir: endeks fonları da hisselerini böler ve bu ekran her ikisini de kapsar.
Bu ekranın ölçüm yöntemi
Her bir aşamada geriye kalan hisse sayısı:
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ı:
- Zaman aralığı. 2026'nın ilk tam işlem gününden en son tam işlem gününe kadar olan süreç. Her iki uç nokta dakikalık barlardan okunur. Bir işlem gününün sayılması için tam bir normal saat bar sayısına sahip olması gerekir; bu nedenle 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, dakikalık barlardan hesaplanır. Piyasa öncesi ve piyasa sonrası işlemler dikkate alınmaz. Bunlar fiyat getirileridir; temettüler eklenmez, bu nedenle yüksek verimli bir hisse burada toplam getiri verisine kıyasla biraz daha düşük görünür.
- Likidite eşiği. Son 20 takvim günü boyunca, sadece baştan sona tamamlanmış seanslar dahil edilerek hesaplanan, seans başına ortalama en az 100 milyon dolar normal saatlik işlem hacmi. Kısmi bir seans, bir günün tutarını tam bir güne böler ve her hissenin hacmini olduğundan düşük gösterir. Bu tek filtre, alanı 4492 sembolünden 1036 sembole indirger.
- Fiyat eşiği. Hisse senedi yıla 10 doların üzerinde bir fiyattan başlamış olmalıdır. 10 doların altındaki hisseler, küçük fiyat hareketlerinden büyük yüzdeler üretir.
- Kaldıraçlı ve ters yönlü fonlar, her tablonun altındaki SQL sorgusunda tam olarak listelenen seçilmiş bir liste aracılığıyla kapsam dışı bırakılır. Bu liste, endeks bazlı fonları ve tek bir şirketin günlük hareketini katlayan tek hisse senedi fonlarını kapsar. Kaldıraçlı bir fon, şirket haberi olmaksızın en hareketli hisseler listesinin üst sıralarında yer alabilir. Liste manuel olarak güncellenir; bu durum yöntemin zayıf noktasıdır: Bu ay piyasaya sürülen bir fon, ancak birisi onu listeye eklediğinde kapsam dışı bırakılır.
- Normal fonlar filtrelenmez. Likidite ve fiyat eşiklerini geçen kaldıraçsız bir endeks veya sektör ETF'si, burada operasyonel şirketlerle birlikte sıralanır ve genişlik sayımlarında yer alır. Bir fon, aynı evrendeki hisselerin sepetidir; bu nedenle ilgili satırlar, bir şirketin yılı yerine sepetin performansını göstermektedir.
- Hisse bölünmeleri. Oranı ne kadar küçük olursa olsun, 2026 yılı içinde geçerlilik kazanan herhangi bir hisse bölünmesi veya bedelsiz sermaye artırımı olan semboller ayrılır. Bu muhafazakâr bir tercihtir: Gerçek performans gösteren birkaç hissenin listede yer almamasına neden olur ve hisse sayısı değişimini bir getiri olarak yansıtmaz. Yukarıdaki panel, bölünmesi bir hareketi taklit edecek kadar büyük olan kapsam dışı bırakılan isimleri göstermektedir.
- Geç halka arzlar. Yılın ilk seansından sonra halka arz edilen bir şirketin Ocak ayı fiyatı yoktur ve bu tabloda yer almaz; bu durum, yoğun halka arz takvimine sahip yıllarda gerçek bir boşluk yaratır.
- Sonuç. 954 hisse sıralanır; bunların en üstteki ve en alttaki on tanesi bu sayfadaki iki tabloyu oluşturur.
Üç farklı zaman diliminde aynı soru
Yılbaşından itibaren olan süreç bir merdivenin bir basamağıdır ve hareketler her uzunlukta farklı görünür. Haftalık görünüm bu hafta en çok kazandıran ve kaybettiren hisseleri, aylık görünüm bu ay en çok hareket eden hisseleri kapsarken, bu sayfa yıllık verileri sunar. Her basamakta kriterler değişmektedir: Bu sayfa son bir ayda günlük ortalama 100 milyon dolar üzerinden tarama yaparken, haftalık ve aylık sayfalar kendi zaman dilimleri içindeki toplam işlem hacmi üzerinden tarama yapmaktadır; bu nedenle bir hisse bir listede üst sıralarda yer alırken diğerinde yer almayabilir. Bir kazanç raporuna verilen tepkiyle haftalık listede zirveye çıkan bir hisse, yıllık bazda orta sıralarda kalabilir. Yılın genel gidişatına dair daha geniş bir anlatım için, endeks, faiz oranları ve sektör detaylarını içeren ilk yarı piyasa özeti ile kaldıraçlı ETF'lerin neden burada ayrıldığını açıklayan kaldıraçlı ETF'lerin çalışma prensibi incelenebilir.
SSS
2026 yılının en iyi performans gösteren hissesi hangisidir?
Günlük ortalama en az 100 milyon dolar işlem hacmi olan, yıla 10 doların üzerinde açılış yapan, 2026 yılında bölünme gerçekleştirmeyen ve kaldıraçlı fon listesinde yer almayan isimler arasında, SNDK yılın ilk işlem gününden itibaren 554.9% artışla 2026 yılının şimdiye kadarki en iyi performans gösteren hissesidir. MXL ise 386.3% ile ikinci sıradadır.
2026 yılında en çok değer kaybeden hisseler hangileridir?
-65.9% oranındaki EOSE, bu ekrandaki en kötü performans gösteren 2026 hissesidir; CSGP ise -58.7% ile gerisindedir. 2026 yılının en büyük kayıplarını yaşayan hisselerinin tam listesi, yıl ilerledikçe güncellenen yukarıdaki ikinci tabloda yer almaktadır.
Yılbaşından itibaren hisse getirisi nasıl hesaplanır?
Yılbaşından itibaren getirisi (year-to-date return), en son fiyatı takvim yılının başındaki fiyatla karşılaştırır ve değişimi yüzde olarak ifade eder. Burada, 2026 yılının ilk düzenli seans açılışı, en son tamamlanan seansın kapanış fiyatına göre ölçülmektedir. Yıl içinde bölünme yapan hisseler düzeltme yapmak yerine kapsam dışı bırakılır; böylece okuyucu ile veriler arasında herhangi bir düzeltme faktörü bulunmaz.
Kaldıraçlı ETF'ler 2026 kazananlar listesine dahil midir?
Hayır. Kaldıraçlı veya ters yönlü bir fon, bir endeksin veya tek bir hissenin günlük hareketini çarpar; bu nedenle arkasında şirket haberi olmaksızın rutin olarak ham hareketli listelerinin üst sıralarında yer alabilir. Bu fonlar sıralama öncesinde isim bazında listeden çıkarılır ve liste her tablonun altındaki SQL kodunda görülebilir. Normal endeks ve sektör ETF'leri farklı bir durumdur: Herhangi bir hisse senedi gibi aynı eşik değerleri geçerler ve burada sıralanırlar, bu nedenle bir fon her iki tabloda da görünebilir.
Buradaki her tablo, SQL kodu eklenmiş kayıtlı bir sorgudur. Ekranı denetlemek için herhangi bir paneli genişletebilir veya Strasmore terminalinde kendi eşik değerlerinizle yeniden oluşturabilirsiniz.