Strasmore Research
Marktrückblicke Matt ConnorVon Matt Connor · Aktualisiert 2026-09-05 · data as of September 5, 2026 · refreshed weekly

Größte Aktiengewinner und -verlierer 2026

Die besten und schlechtesten Aktien 2026, nach realer Liquidität aus dem Börsenhandel gerankt. Aktiensplits und gehebelte Fonds sind ausgeschlossen.

Die bislang besten Aktien des Jahres 2026 werden von SNDK angeführt. Vom ersten Handelstag des Jahres bis zum letzten abgeschlossenen Handelstag legte der Titel um 536.4% zu. Diese Seite führt die größten Kursgewinner und -verlierer des Jahres 2026 unter den tatsächlich gehandelten Titeln auf. Maßgeblich sind die Börsendaten aus dem Handelsband, nicht die Zusammenfassung eines Datenanbieters. Die Rangliste wird im Jahresverlauf aktualisiert. Aktiensplits und gehebelte Fonds werden vor der Rangliste herausgefiltert. Genau an diesem Punkt sind die meisten Listen zur bisherigen Jahresperformance unzuverlässig.

Die größten Aktiengewinner des Jahres 2026

Jeder unten aufgeführte Titel hat vor der Rangfolge eine Liquiditätsschwelle erfüllt: Im vergangenen Monat wechselten pro abgeschlossener Sitzung durchschnittlich Aktien im Wert von mindestens 100 Millionen US-Dollar den Besitzer. Ein hoher prozentualer Anstieg bei einer Aktie, die kaum gehandelt wird, ist ein Kursangebot und kein belastbares Ergebnis.

AbfrageGrößte Aktiengewinner 2026: die zehn stärksten Titel seit Jahresbeginn unter den meistgehandelten Titeln
TickerYTD-Rendite (%)Durchschn. Tagesvolumen ($ Mio.)
SNDK536.415431
MRNA3995598
TWST305.4202
DELL301.83566
TXG287.5142
AEHR262.8208
MXL233.4114
AXTI226.9525
MU224.820455
AMLX183.5131
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 10
Selbst ausführen

SNDK führt das Jahr mit 536.4% an. Danach folgt MRNA mit 399%, auf Platz drei liegt TWST mit 305.4%. Der zehnte Titel der Rangliste, AMLX, liegt immer noch 183.5% im Plus. Damit hat sich die gesamte Tabelle deutlich besser entwickelt als jeder breite Index.

Die Dollarspalte neben jeder Kursbewegung enthält ebenso wichtige Informationen wie die Prozentangabe. AMLX kommt im Durchschnitt auf ein tägliches Handelsvolumen von rund 131 Millionen US-Dollar. SNDK an der Spitze der Rangliste erreicht durchschnittlich 15431 Millionen US-Dollar pro Tag. Jeder Titel hier überschreitet 100 Millionen US-Dollar Tagesumsatz. Die Spanne oberhalb dieser Schwelle ist groß genug, dass derselbe prozentuale Anstieg an den beiden Enden der Rangliste unterschiedliche Bedeutung hat. Ein wenig gehandelter Titel lässt sich leichter bewegen. Außerdem ist es schwieriger, ihn zum angezeigten Kurs zu verkaufen.

Größte Kursverlierer 2026

Die umgekehrte Betrachtung derselben Kennzahl: die stärksten Rückgänge seit Jahresbeginn unter den Titeln, die dieselbe Liquiditätsschwelle überschreiten.

AbfrageGrößte Aktienverlierer 2026: die zehn schwächsten Titel seit Jahresbeginn unter den meistgehandelten Titeln
TickerYTD-Rendite (%)Durchschn. Tagesvolumen ($ Mio.)
TTD-60.5192
WING-54.4103
APP-54.11257
CSGP-52.8144
FLUT-52.7140
STLA-51.5105
BSX-51763
KLAR-50.4145
RBLX-49.1303
JOBY-48.8153
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 10
Selbst ausführen

Der stärkste Rückgang seit Jahresbeginn entfällt auf TTD mit -60.5%, gefolgt von WING mit -54.4%. Auf Platz zehn der Liste liegt JOBY mit -48.8%. Mehrere Titel sind große, breit gehaltene Unternehmen und keine spekulativen Micro Caps. Genau das überrascht viele an einer Liste der Kursverlierer. Liquidität und Analystenabdeckung bilden keine Untergrenze für den Aktienkurs. Wer einen dieser Titel mit überproportionalem Anteil im Portfolio hielt, bekam die gesamte Bewegung zu spüren. Die Seite zum Risiko des Haltens einer Einzelaktie misst dieses Risiko anhand von Volatilitäts- und Drawdown-Kennzahlen.

Wie viel des Marktes liegt 2026 im Plus?

Eine Rangliste zeigt nur die beiden Extreme. Die Marktbreite zeigt das Gesamtbild: wie sich das gesamte beobachtete Universum einschließlich Indexfonds auf steigende und fallende Titel verteilt, aufgeschlüsselt nach der Größe der Kursbewegung.

AbfrageMarktbreite seit Jahresbeginn: Verteilung des geprüften Universums auf Renditeklassen
KategorieNamenAnteil der Seite (%)
Down 40%+1835.5
Down 20-40%6935.5
Down 10-20%7835.5
Down 0-10%16235.5
Up 0-10%15264.5
Up 10-25%19864.5
Up 25-50%14264.5
Up 50%+10364.5
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 ord
Selbst ausführen

64.5% der beobachteten Titel liegen im Jahresverlauf im Plus, 35.5% im Minus. Die Verteilung zeigt, was eine Top-Ten-Tabelle verbirgt. 18 Titel befinden sich am einen Ende im Down 40%+-Bucket und 103 am anderen Ende im Up 50%+-Bucket. Dem stehen 162 Titel im Down 0-10%-Bucket und 152 im Up 0-10%-Bucket auf beiden Seiten der unveränderten Kurse gegenüber. In einem beliebigen Jahr entwickelt sich der Großteil des Marktes unauffällig. Die Titel in den beiden oben genannten Tabellen sind die Ausnahmen, aus denen sich die Durchschnittswerte zusammensetzen.

Wo der Markt selbst steht

Die Entwicklung einer einzelnen Aktie lässt sich im Vergleich zur Entwicklung des Gesamtmarkts anders einordnen. Die vier großen Index-ETFs im exakt selben Zeitraum:

AbfrageDie vier großen Index-ETFs seit Jahresbeginn im selben Messzeitraum
BezeichnungYTD-Rendite (%)Gemessen ab DatumGemessen bis Datum
Russell 2000 (IWM)19.22026-01-022026-09-03
Nasdaq 100 (QQQ)15.72026-01-022026-09-03
S&P 500 (SPY)12.72026-01-022026-09-03
Dow (DIA)11.42026-01-022026-09-03
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 DESC
Selbst ausführen

Beide Übersichten und die darüberstehende Grafik beziehen sich auf denselben Zeitraum: die erste vollständige Handelssitzung des Jahres 2026 (2026-01-02) bis zur jüngsten abgeschlossenen Sitzung (2026-09-03). In diesem Zeitraum erzielte Russell 2000 (IWM) eine Rendite von 19.2%, während Dow (DIA) eine Rendite von 11.4% erzielte. Jeder Titel in der Tabelle der Gewinner übertraf alle vier deutlich. Das ist der rechnerische Effekt eines Index: Hunderte Positionen werden zu einer einzigen Kennzahl zusammengefasst, sodass sich individuelle Kursbewegungen teilweise ausgleichen. Die Spanne unterhalb dieser Kennzahl war deutlich größer als die Kennzahl selbst. Die Sektorübersicht für das erste Halbjahr vergleicht alle elf Sektoren miteinander.

Der Aktiensplit, der eine Year-to-date-Entwicklung vortäuscht

Ein Split verändert die Zahl der Aktien und den Preis je Aktie, nicht aber den Wert einer Position. Über einen so langen Zeitraum führen viele Unternehmen Splits durch. Eine nicht bereinigte Year-to-date-Berechnung wertet die Veränderung des Preises je Aktie als Performance. Die unten aufgeführten Titel verzeichneten 2026 jeweils einen Split oder eine Stock Dividend, die den Preis je Aktie um mindestens ein Fünftel veränderte. Außerdem erfüllten sie dieselbe Liquiditätsschwelle. Damit waren sie vor Anwendung des Split-Filters für die oben genannten Ranglisten qualifiziert.

AbfrageNicht berücksichtigt: Aktiensplits 2026, die eine Bewegung seit Jahresbeginn verfälschen könnten
TickerUnbereinigte YTD-Rendite (%)Kurpreisauswirkung des Splits (%)Split-TypSplit-Datum
BKNG-96.4-96forward split2026-04-06
KLAC-86.3-90forward split2026-06-12
VGT-84.1-87.5forward split2026-04-21
CVNA-82.6-80forward split2026-05-08
VUG-81.9-83.3forward split2026-04-21
HDV-75.6-80forward split2026-04-29
IWF-74.1-75forward split2026-04-29
VO-71.7-75forward split2026-04-21
CRWD-54.6-75stock dividend2026-07-02
MNST-42.5-50stock dividend2026-08-11
APH-40.1-50stock dividend2026-09-03
MVLL4.3-66.7forward split2026-06-26
HON6.1100reverse split2026-06-29
DD224.3200reverse split2026-06-24
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 ASC
Selbst ausführen

BKNG würde nach einem forward split, der den Preis je Aktie um -96% veränderte, auf einer nicht bereinigten Übersicht -96.4% ausweisen. KLAC würde nach einem forward split, der den Preis um -90% veränderte, -86.3% ausweisen. Kein Anleger verlor am Tag des Inkrafttretens des Splits etwas. Der Preis je Aktie wurde durch denselben Faktor geteilt, um den die Zahl der Aktien multipliziert wurde. Die Spalte zum Split-Effekt isoliert die Preisveränderung, die allein auf den Split zurückgeht. Genau diesen Teil wertet eine nicht bereinigte Übersicht als Performance.

Die letzte Zeile der Übersicht zeigt den umgekehrten Fall: DD weist nach einem reverse split, der den Preis je Aktie um 200% erhöhte, 224.3% aus. Der Preis stieg also statt zu fallen. Jede Liste, die diesen Schritt überspringt, veröffentlicht gleichzeitig am oberen und am unteren Ende ein falsches Bild. Deshalb stellt die Übersicht Titel mit Split-Tickern zurück, statt ihre Preise nachträglich anzupassen. Auch ein Fonds kann in dieser Übersicht erscheinen. Indexfonds splitten ihre Anteile ebenfalls. Die Übersicht erfasst daher sowohl Unternehmen als auch Fonds.

So wird dieses Screening gemessen

Die einzelnen Stufen des Screenings mit der Zahl der danach noch verbleibenden Titel:

AbfrageDer Filterprozess im Überblick: Wie viele Titel jeden Filter bestehen
Screening-SchrittNamen
Traded the first and the last full session4471
Averaging $100m+ a day over the past month1000
Opened 2026 above $10 a share970
Not on the excluded-fund list938
No split or stock dividend in 2026922
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
)
Selbst ausführen

Die Methode im Detail:

  • Das Zeitfenster. Es reicht von der ersten vollständigen Handelssitzung 2026 bis zur jüngsten vollständigen Sitzung im Kursband. Beide Endpunkte werden aus den Minutenkursen ermittelt. Eine Sitzung zählt nur, wenn sie die vollständige Zahl der Kursbalken für die regulären Handelszeiten enthält. Ein noch laufender Handelstag wird daher nie als abgeschlossen behandelt.
  • Die Rendite. Verglichen werden der erste Eröffnungskurs der regulären Sitzung im Jahr und der letzte Schlusskurs der regulären Sitzung. Die Berechnung erfolgt auf Basis der Minutenkurse. Vorbörsliche und nachbörsliche Prints werden ignoriert. Es handelt sich um Kursrenditen. Dividenden werden nicht hinzugerechnet. Ein Titel mit hoher Dividendenrendite fällt hier daher etwas schwächer aus, als es eine Gesamtrendite zeigen würde.
  • Die Liquiditätsuntergrenze. In den vergangenen 20 Kalendertagen musste der durchschnittliche Umsatz während der regulären Handelszeiten mindestens 100 Millionen US-Dollar je Sitzung betragen. Gezählt werden nur Sitzungen, die von Beginn bis Ende liefen. Andernfalls würde bei einer Teilsitzung der Umsatz eines Teilhandelstags durch einen ganzen Tag geteilt. Der Umsatz jedes Titels würde dadurch zu niedrig ausgewiesen. Dieser einzelne Filter reduziert das Universum von 4471 Tickersymbolen auf 1000.
  • Die Preisuntergrenze. Die Aktie musste das Jahr mit einem Eröffnungskurs von mehr als 10 US-Dollar je Aktie beginnen. Titel unter 10 US-Dollar erzielen aus kleinen Kursbewegungen prozentual sehr hohe Veränderungen.
  • Gehebelte und inverse Fonds werden mithilfe einer kuratierten Liste ausgeschlossen. Diese Liste ist in der SQL-Abfrage unter jeder Tabelle vollständig abgedruckt. Sie umfasst gehebelte Indexfonds und Fonds, die die tägliche Bewegung eines einzelnen Unternehmens vervielfachen. Ein gehebelter Fonds kann jede Liste der stärksten Kursgewinner anführen, ohne dass es eine einzige Unternehmensnachricht gibt. Die Liste wird manuell gepflegt. Das ist ihre Schwachstelle: Ein in diesem Monat aufgelegter Fonds wird erst ausgeschlossen, wenn ihn jemand ergänzt.
  • Gewöhnliche Fonds werden nicht herausgefiltert. Ein ungehebelter Index- oder Branchen-ETF, der die Liquiditäts- und Preisuntergrenzen erfüllt, wird hier gemeinsam mit operativen Unternehmen gerankt. Er fließt auch in die Breitenkennzahlen ein. Ein Fonds ist ein Korb bereits im selben Universum erfasster Titel. Diese Zeilen zeigen daher die Entwicklung des Korbs und nicht die eines einzelnen Unternehmens.
  • Splits. Jedes Tickersymbol, bei dem 2026 ein Split oder eine Aktiendividende wirksam wird, wird unabhängig von der Höhe des Verhältnisses zurückgestellt. Das ist die konservative Entscheidung. Sie kostet einigen tatsächlich starken Performern einen Platz in der Rangliste. Zugleich wird dadurch nie eine Änderung der Aktienzahl als Rendite veröffentlicht. Das darüberstehende Panel zeigt die ausgeschlossenen Titel, bei denen der Split groß genug war, um eine Kursbewegung vorzutäuschen.
  • Späte Börsennotierungen. Ein Unternehmen, das erst nach der ersten Sitzung des Jahres an die Börse kam, hat keinen Januar-Kurs und fehlt in diesen Tabellen. In einem Jahr mit zahlreichen neuen Börsennotierungen ist das eine tatsächliche Lücke.
  • Das Ergebnis. 922 Titel werden gerankt. Die jeweils zehn stärksten und zehn schwächsten Titel bilden die beiden Ranglisten auf dieser Seite.

Dieselbe Frage über drei Zeitfenster

Seit Jahresbeginn ist eine Stufe einer Entwicklung. Eine Kursbewegung sieht je nach Betrachtungszeitraum anders aus. Die Wochenansicht zeigt die größten Kursgewinner und -verlierer dieser Woche. Die Monatsansicht zeigt die größten Kursbewegungen dieses Monats. Diese Seite betrachtet das laufende Jahr. Die Kriterien unterscheiden sich je nach Stufe: Diese Seite berücksichtigt Aktien mit einem durchschnittlichen täglichen Handelsvolumen von 100 Millionen US-Dollar im vergangenen Monat. Die Wochen- und Monatsseiten filtern dagegen nach dem gesamten Handelsvolumen in US-Dollar innerhalb des jeweiligen Zeitfensters. Deshalb kann ein Titel eine Auswahl schaffen und eine andere verfehlen. Ein Titel, der nach einer Veröffentlichung von Quartalsergebnissen wegen der Kursreaktion an der Spitze der Wochenrangliste steht, liegt im Jahresvergleich oft im Mittelfeld. Für den übergeordneten Jahresverlauf bietet der Marktüberblick zum ersten Halbjahr Details zu Indizes, Zinsen und Sektoren. Wie gehebelte ETFs funktionieren erklärt, warum gehebelte Fonds hier nicht berücksichtigt werden.

FAQ

Welche Aktie entwickelt sich 2026 am besten?

Unter den Titeln, die im Durchschnitt mindestens 100 Millionen US-Dollar pro Handelstag umsetzen, das Jahr mit einem Kurs über 10 US-Dollar begonnen haben, 2026 keinen Aktiensplit durchgeführt haben und nicht in der Liste der gehebelten Fonds stehen, ist SNDK bislang die beste Aktie des Jahres 2026. Seit der ersten Handelssitzung des Jahres liegt sie 536.4% im Plus. MRNA folgt mit 399% auf Platz zwei.

Welche Aktien sind 2026 am stärksten gefallen?

TTD ist in dieser Auswahl mit -60.5% die Aktie mit der schlechtesten Wertentwicklung 2026. Dahinter folgt WING mit -54.4%. Die vollständige Liste der größten Aktienverlierer 2026 steht in der zweiten Tabelle oben und wird im Jahresverlauf aktualisiert.

Wie wird die Wertentwicklung einer Aktie seit Jahresbeginn berechnet?

Die Wertentwicklung seit Jahresbeginn vergleicht den jüngsten Kurs mit dem Kurs zu Beginn des Kalenderjahres und gibt die Veränderung in Prozent an. Hier wird der Eröffnungskurs der ersten regulären Handelssitzung 2026 dem Schlusskurs der jüngsten abgeschlossenen Sitzung gegenübergestellt. Aktien, bei denen im Jahresverlauf ein Split stattfand, werden nicht berücksichtigt und nicht angepasst. Dadurch gibt es keinen Anpassungsfaktor zwischen Lesern und den tatsächlichen Kursdaten.

Sind gehebelte ETFs in der Liste der Aktien mit den größten Kursgewinnen 2026 enthalten?

Nein. Ein gehebelter oder inverser Fonds vervielfacht die tägliche Bewegung eines Index oder einer einzelnen Aktie. Dadurch steht er regelmäßig an der Spitze einer ungefilterten Liste der stärksten Kursbewegungen, obwohl keine Unternehmensnachricht dahintersteht. Diese Fonds werden vor der Rangfolge anhand ihres Namens ausgeschlossen. Die Liste ist im SQL unter jeder Tabelle einsehbar. Gewöhnliche Index- und Branchen-ETFs werden anders behandelt. Sie müssen dieselben Mindestkriterien wie Aktien erfüllen und werden hier ebenfalls gerankt. Deshalb kann ein Fonds in beiden Listen erscheinen.


Jede Tabelle basiert auf einer gespeicherten Abfrage, deren SQL angehängt ist. Öffnen Sie ein beliebiges Panel, um die Auswahl zu prüfen, oder erstellen Sie sie mit eigenen Mindestkriterien im Strasmore-Terminal neu.

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