Strasmore Research
Piyasa özetleri Matt ConnorYazan Matt Connor · Güncellendi 2026-10-18 · data as of October 18, 2026 · refreshed weekly

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.

Sorgula2026'nın en çok kazandıran hisseleri: Yüksek hacimli hisseler arasında yılbaşından bugüne ilk on
tickerybb getiri (%)gort hacim ($m)
MRNA692.83002
SNDK47111073
TWST355.2476
TXG343.5334
MXL338.4246
DELL2683100
AXTI236.9499
AEHR229.3203
PBF218.3195
KOD215.7389
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 10
Kendiniz çalıştırın

MRNA, 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.

Sorgula2026'nın en çok kaybettiren hisseleri: Yüksek hacimli hisseler arasında yılbaşından bugüne en kötü on
tickerybb getiri (%)gort hacim ($m)
CTVA-80.8410
TTD-65.7176
FLUT-64.8159
JOBY-64.3114
STLA-61.5126
OKLO-59.4288
APP-59.11168
SMR-57.8217
FICO-54.5998
Z-54.1114
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 10
Kendiniz çalıştırın

Yı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.

SorgulaYılbaşından bugüne piyasa genişliği: Taranan evrenin getiri dilimlerine göre dağılımı
grupadlartaraf payı (%)
Down 40%+3741.2
Down 20-40%8441.2
Down 10-20%10441.2
Down 0-10%18741.2
Up 0-10%16258.8
Up 10-25%19458.8
Up 25-50%11658.8
Up 50%+11658.8
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 ord
Kendiniz çalıştırın

Taranmış 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:

SorgulaDört ana endeks ETF'inin yılbaşından bugüne aynı dönemdeki performansı
etiketybb getiri (%)başlangıç tarihibitiş tarihi
Nasdaq 100 (QQQ)17.42026-01-022026-10-15
S&P 500 (SPY)12.52026-01-022026-10-15
Russell 2000 (IWM)11.12026-01-022026-10-15
Dow (DIA)8.22026-01-022026-10-15
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 DESC
Kendiniz çalıştırın

Hem 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ı.

SorgulaTablo dışı bırakılanlar: Yılbaşından bugüne getiriyi yanıltabilecek 2026 hisse bölünmeleri
tickerdüzeltilmemiş ybb (%)bölünme fiyat etkisi (%)bölünme türübölünme tarihi
BKNG-96.9-96forward split2026-04-06
KLAC-86.2-90forward split2026-06-12
CVNA-85.6-80forward split2026-05-08
VGT-83.9-87.5forward split2026-04-21
VUG-81.7-83.3forward split2026-04-21
VOOG-81-83.3forward split2026-04-21
MGK-77.9-80forward split2026-04-21
IWF-73.9-75forward split2026-04-29
VO-72.2-75forward split2026-04-21
INTW-57.3-87.5forward split2026-06-26
CRWD-48.4-75stock dividend2026-07-02
MNST-40.9-50stock dividend2026-08-11
APH-40.6-50stock dividend2026-09-03
HON7.6100reverse split2026-06-29
ETHA141.8200reverse split2026-10-06
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 ASC
Kendiniz çalıştırın

BKNG, 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ı:

SorgulaEleme süreci: Her aşamada filtreyi geçen hisse sayısı
tarama adımıadlar
Traded the first and the last full session4543
Averaging $100m+ a day over the past month1082
Opened 2026 above $10 a share1049
Not on the excluded-fund list1017
No split or stock dividend in 20261000
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
)
Kendiniz çalıştırın

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.

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