Größte Aktien Gewinner und Verlierer 2026
Die besten und schlechtesten Aktien des Jahres 2026 basierend auf dem Börsenticker. Die Liste schließt Aktiensplits sowie gehebelte Fonds aus.
Die besten Aktien des Jahres 2026 werden bisher von SNDK angeführt, die seit der ersten Handelssitzung des Jahres bis zur letzten abgeschlossenen Sitzung um 550.2% gestiegen sind. Diese Seite listet die größten Gewinner und Verlierer des Jahres 2026 unter den tatsächlich gehandelten Titeln auf. Die Messung erfolgt direkt über das Börsenticker-Protokoll statt über eine Zusammenfassung eines Datenanbieters. Die Liste wird während des laufenden Jahres aktualisiert. Vor der Rangfolge werden Aktiensplits und gehebelte Fonds ausgeschlossen, da dies die häufigste Fehlerquelle bei bisherigen Jahreslisten darstellt.
Größte Aktiensteigerungen im Jahr 2026
Jeder unten aufgeführte Wert hat vor der Einstufung eine Liquiditätsuntergrenze erreicht: im vergangenen Monat wechselten pro Handelstag durchschnittlich mindestens 100 Millionen $ an Aktien den Besitzer. Ein hoher Prozentsatz bei einer Aktie mit geringem Handelsvolumen ist lediglich ein Kurs, kein tatsächliches Ergebnis.
Das exakte SQL hinter jeder Zahl
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 führt das Jahr mit 550.2% an, gefolgt von MXL mit 382.4% und AEHR auf dem dritten Platz mit 370.6%. Der zehnte Platz der Liste, SYRE, liegt immer noch 213.2% im Plus, sodass die gesamte Tabelle weit vor jedem breiten Index liegt.
Die Dollar-Spalte neben jeder Kursbewegung liefert ebenso viele Informationen wie die Prozentangabe. SYRE weist einen durchschnittlichen Tagesumsatz von etwa 100 Millionen $ auf. SNDK an der Spitze der Liste erreicht durchschnittlich 18782 Millionen $. Jeder Wert in dieser Liste erreicht täglich 100 Millionen $. Die Spanne oberhalb dieser Untergrenze ist so groß, dass dieselbe prozentuale Veränderung an den beiden Enden der Skala zwei verschiedene Bedeutungen hat. Eine Aktie mit geringem Volumen lässt sich leichter bewegen, ist aber schwieriger zum angezeigten Preis zu verkaufen.
Größte Aktienverlierer des Jahres 2026
Das identische Maß in umgekehrter Richtung: die stärksten Kursverluste seit Jahresbeginn bei Titeln, die dieselbe Liquiditätsuntergrenze unterschreiten.
Das exakte SQL hinter jeder Zahl
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 10Den stärksten Kursverlust seit Jahresbeginn verzeichnet EOSE mit -63.6%, gefolgt von CSGP mit -57.5%. An zehnter Stelle der Liste steht HUBS bei -45.2%. Mehrere Titel in dieser Liste sind große, breit gestreute Unternehmen und keine spekulativen Micro Caps, was für viele überraschend ist. Liquidität und Analystenberichterstattung bieten keinen Schutz für den Aktienkurs. Wer eine dieser Aktien als überproportionalen Anteil in einem Portfolio hält, hat die gesamte Kursbewegung mitgemacht, welche die Seite Risiko des Halts einer einzelnen Aktie anhand von Volatilitäts- und Drawdown-Kennzahlen misst.
Wie viel des Marktes ist im Jahr 2026 gestiegen
Eine Bestenliste zeigt nur die beiden Extremwerte. Die Marktbreite zeigt den Kern: wie sich das gesamte untersuchte Universum, einschließlich Indexfonds, zwischen steigenden und fallenden Werten aufteilt, gruppiert nach der Höhe der Bewegung.
Das exakte SQL hinter jeder Zahl
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 ord61.8% der untersuchten Werte liegen im Jahresverlauf höher und 38.2% liegen tiefer. Die Verteilung zeigt das, was eine Top-Ten-Tabelle verbirgt. 25 Werte befinden sich im Down 40%+-Bucket am einen Ende und 132 im Up 50%+-Bucket am anderen Ende, gegenüber 144 in Down 0-10% und 173 in Up 0-10% auf beiden Seiten der unveränderten Werte. In jedem Jahr zeigt der Großteil des Marktes eine gewöhnliche Entwicklung, und die Werte in den beiden obigen Tabellen sind die Ausnahmen, aus denen die Durchschnittswerte berechnet werden.
Die aktuelle Marktposition
Die Performance einer einzelnen Aktie unterscheidet sich von der Performance des Gesamtmarktes. Die vier großen Index-ETFs über denselben Zeitraum:
Das exakte SQL hinter jeder Zahl
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 DESCSowohl die Börsenkurse als auch die obige Übersicht beziehen sich auf denselben Zeitraum: von der ersten vollständigen Handelssitzung 2026 (2026-01-02) bis zur zuletzt abgeschlossenen Sitzung (2026-07-21). In diesem Zeitraum erzielte Russell 2000 (IWM) eine Rendite von 19.7% und Dow (DIA) eine Rendite von 8.2%. Alle Werte in der Liste der Kursgewinner übertrafen diese vier Indizes deutlich. Dies ist die mathematische Folge eines Index: Hunderte von Einzelwerten werden zu einer Linie zusammengefasst, wobei sich individuelle Kursbewegungen teilweise gegenseitig aufheben. Die Differenz unterhalb dieser Linie war wesentlich größer als die Linie selbst. Die Sektor-Auswertung für das erste Halbjahr vergleicht alle elf Sektoren untereinander.
Der Aktiensplit, der eine Year-to-Date-Bewegung vortäuscht
Ein Split verändert die Anzahl der Aktien und den Preis pro Aktie, ohne den Gesamtwert einer Position zu beeinflussen. Über einen so langen Zeitraum führen viele Unternehmen einen Split durch. Eine unkorrigierte Year-to-Date-Berechnung wertet die Änderung des Aktienkurses als Performance. Die unten genannten Namen führten einen Split oder eine Aktiendividende im Jahr 2026 durch, die groß genug war, um den Kurs um mindestens ein Fünftel zu verändern. Jedes Unternehmen überschritt zudem die gleiche Liquiditätsuntergrenze und war somit für die oben genannten Boards qualifiziert, bevor der Split-Filter sie entfernte.
Das exakte SQL hinter jeder Zahl
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 würde auf einem unkorrigierten Screen -96.7% anzeigen, nachdem ein forward split den Preis pro Aktie um -96% verändert hat, und VGT würde -84.8% anzeigen, nachdem ein forward split den Preis um -87.5% verändert hat. Kein Aktionär verlor am Tag des Splits an Wert. Der Preis pro Aktie wurde dividiert und die Anzahl der Aktien wurde mit demselben Faktor multipliziert. Die Spalte „Split-Effekt“ isoliert die Preisänderung, die allein durch den Split verursacht wurde. Dies ist der Teil, den ein unkorrigierter Screen als Performance ausweist.
Die letzte Zeile der Tabelle funktioniert umgekehrt: DD zeigt 243.4% nach einem reverse split, der den Preis pro Aktie um 200% angehoben hat, anstatt ihn zu senken. Jede Liste, die diesen Schritt überspringt, veröffentlicht gleichzeitig fiktive Daten am oberen und am unteren Ende. Deshalb setzt der Screen Split-Ticker beiseite, anstatt zu versuchen, deren Kurse zu korrigieren. Ein Fonds kann genauso leicht in dieser Liste erscheinen wie ein Unternehmen: Indexfonds führen ebenfalls Splits durch, und dieser Screen deckt beide ab.
So wird dieser Screen gemessen
Jede Stufe des Screens mit der Anzahl der verbleibenden Namen:
Das exakte SQL hinter jeder Zahl
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
)Die vollständige Methodik:
- Der Zeitraum. Die erste vollständige Handelssitzung des Jahres 2026 bis zur jüngsten vollständigen Sitzung. Beide Endpunkte werden aus den Minutendaten abgeleitet. Eine Sitzung wird nur gezählt, wenn sie eine vollständige Anzahl an Handelsstunden aufweist; ein laufender Handelstag wird daher nie als abgeschlossen betrachtet.
- Die Rendite. Der Eröffnungskurs der ersten regulären Sitzung des Jahres im Vergleich zum Schlusskurs der letzten regulären Sitzung, berechnet aus den Minutendaten. Preisdaten vorbörslich oder nachbörslich werden ignoriert. Es handelt sich um Preisrenditen; Dividenden werden nicht zurückgerechnet. Daher fällt die Rendite bei Titeln mit hoher Dividendenrendite etwas schlechter aus als bei einer Total-Return-Kennzahl.
- Die Liquiditätsuntergrenze. Ein Durchschnitt von mindestens 100 Millionen US-Dollar Umsatz während der regulären Handelszeiten pro Sitzung über die letzten 20 Kalendertage, wobei nur vollständig durchgeführte Sitzungen gezählt werden. Eine unvollständige Sitzung würde sonst den Tagesumsatz durch einen vollen Tag teilen und den Umsatz jedes Titels unterschätzen. Dieser Filter reduziert die Anzahl der Ticker von 4516 auf 1039.
- Die Preisuntergrenze. Die Aktie muss zu Beginn des Jahres über 10 US-Dollar pro Aktie notiert haben. Titel unter 10 US-Dollar erzeugen bereits bei kleinen Preissprüngen hohe prozentuale Renditen.
- Hebelprodukte und Inverse-Fonds werden durch eine kuratierte Liste ausgeschlossen, die vollständig in der SQL unter jeder Tabelle aufgeführt ist. Diese Liste umfasst indexgebundene Fonds sowie Einzelaktien-Fonds, die die tägliche Bewegung eines Unternehmens vervielfachen. Ein gehebelter Fonds kann jede Liste mit starken Bewegungen anführen, ohne dass Unternehmensnachrichten vorliegen. Die Liste wird manuell gepflegt, was ihre Schwäche ist: Ein in diesem Monat aufgelegter Fonds wird erst ausgeschlossen, wenn er manuell hinzugefügt wird.
- Gewöhnliche Fonds werden nicht herausgefiltert. Ein ungehebelter Index- oder Sektor-ETF, der die Liquiditäts- und Preisuntergrenzen erfüllt, wird hier zusammen mit operativen Unternehmen gerankt und fließt ebenfalls in die Breite-Zahlen ein. Ein Fonds ist ein Korb von Namen, die bereits im selben Universum gezählt wurden. Diese Zeilen zeigen also, was der Korb erreicht hat, anstatt die Entwicklung eines einzelnen Unternehmens darzustellen.
- Aktiensplits. Jeder Ticker mit einem Split oder einer Aktiendividende, die im Jahr 2026 wirksam wird, wird ausgeschlossen, unabhängig von der Höhe des Verhältnisses. Dies ist die konservative Wahl: Es kostet einige echte Performer einen Platz auf der Liste, verhindert aber, dass eine Änderung der Stückzahl als Rendite ausgewiesen wird. Die obige Tabelle zeigt die ausgeschlossenen Namen, deren Split groß genug war, um eine Kursbewegung vorzutäuschen.
- Späte Börsennotierungen. Ein Unternehmen, das nach der ersten Sitzung des Jahres an die Börse gegangen ist, hat keinen Januar-Preis und fehlt in diesen Tabellen. Dies stellt eine tatsächliche Lücke in Jahren mit vielen Neunotierungen dar.
- Das Ergebnis. 956 Namen werden gerankt. Die zehn besten und die zehn schlechtesten davon bilden die zwei Tabellen auf dieser Seite.
Diesel Frage über drei Zeiträume
Der bisherige Jahresverlauf ist eine Stufe auf einer Leiter, und eine Bewegung wirkt je nach Zeitraum unterschiedlich. Die Wochenansicht zeigt die größten Gewinner und Verlierer dieser Woche, die Monatsansicht zeigt die größten Kursbewegungen dieses Monats, und diese Seite zeigt das Jahr. Die Kriterien unterscheiden sich je nach Stufe: Diese Seite filtert nach einem durchschnittlichen Handelsvolumen von 100 Millionen US-Dollar pro Tag im vergangenen Monat, während die Wochen- und Monatsseiten nach dem Gesamthandel innerhalb ihres jeweiligen Zeitraums filtern. So kann eine Aktie in einer Liste erscheinen, in einer anderen jedoch nicht. Eine Aktie, die aufgrund einer Gewinnmitteilung an der Spitze der Wochenliste steht, liegt im Jahresverlauf oft im Mittelfeld. Für den breiteren Kontext des bisherigen Jahres bietet die Marktrückschau für das erste Halbjahr Details zu Indizes, Zinssätzen und Sektoren. Wie gehebelte ETFs funktionieren erklärt, warum gehebelte Fonds hier separat aufgeführt werden.
FAQ
Was ist die stärkste Aktie im Jahr 2026?
Unter den Titeln mit einem durchschnittlichen Handelsvolumen von mindestens 100 Millionen US-Dollar, die das Jahr mit einem Kurs über 10 US-Dollar eröffnet haben, keine Aktiensplit im Jahr 2026 verzeichneten und nicht auf der Liste der Leveraged-Fonds stehen, ist SNDK die bisher stärkste Aktie des Jahres 2026 mit einem Plus von 550.2% gegenüber der ersten Handelssitzung des Jahres. MXL liegt mit 382.4% an zweiter Stelle.
Welche Aktien sind im Jahr 2026 am stärksten gefallen?
EOSE ist mit -63.6% die schwächste Aktie des Jahres 2026 in diesem Filter, vor CSGP mit -57.5%. Die vollständige Liste der größten Verlierer des Jahres 2026 befindet sich in der zweiten Tabelle oben und wird im Laufe des Jahres aktualisiert.
Wie wird die Year-to-Date-Rendite einer Aktie berechnet?
Eine Year-to-Date-Rendite vergleicht den aktuellen Preis mit dem Preis zu Beginn des Kalenderjahres und gibt die Veränderung in Prozent an. Hierbei wird der Eröffnungskurs der ersten regulären Handelssitzung des Jahres 2026 mit dem Schlusskurs der letzten abgeschlossenen Sitzung verglichen. Aktien, die im Laufe des Jahres einen Split vollzogen haben, werden ausgeschlossen, anstatt sie anzupassen; es gibt also keinen Anpassungsfaktor zwischen dem Leser und den Marktdaten.
Sind Leveraged ETFs in der Liste der Gewinner von 2026 enthalten?
Nein. Ein Leveraged- oder Inverse-Fonds vervielfacht die tägliche Bewegung eines Index oder einer einzelnen Aktie. Daher stehen solche Fonds oft an der Spitze einer Liste mit starken Kursbewegungen, ohne dass es dafür fundamentale Unternehmensnachrichten gibt. Diese Fonds werden vor der Rangfolge namentlich entfernt; die Liste ist im SQL unter jeder Tabelle einsehbar. Normale Index- und Sektor-ETFs sind anders zu bewerten: Sie unterliegen denselben Kriterien wie jede Aktie und werden hier gerankt, sodass ein Fonds auf einer der beiden Listen erscheinen kann.
Jede Tabelle hier ist eine gespeicherte Abfrage mit dem dazugehörigen SQL. Erweitern Sie jedes Panel, um den Filter zu prüfen oder ihn mit Ihren eigenen Kriterien auf dem Strasmore-Terminal neu zu erstellen.