Strasmore Research
Marktoverzichten Matt ConnorDoor Matt Connor · Bijgewerkt 2026-07-24 · data as of July 24, 2026 · refreshed weekly

Aandelen op 52-week highs en lows

Bekijk welke aandelen op een 52-week high of 52-week low sluiten. Gebruik deze breadth reading voor een analyse van de marktontwikkelingen.

Een 52-week high is de hoogste slotkoers van een aandeel in het afgelopen jaar. Een 52-week low is de laagste prijs. Tijdens de laatste voltooide sessie, Jul 21, 2026, sloten 26 aandelen op dit scherm op of binnen 1% van een 52-week high en sloten 7 op of binnen 1% van een 52-week low. Dit scherm bevat grote, liquide Amerikaanse operationele ondernemingen en wordt opnieuw opgebouwd op basis van de exchange tape.

Aandelen op 52-week highs

De sterkste stijgers van het jaar staan hieronder vermeld, met maximaal twaalf namen. Elke waarde sloot de sessie af op of binnen 1% van de hoogste slotkoers van de afgelopen 52 weken.

QueryAandelen op 52-week highs, gesorteerd op YTD return
De exacte SQL achter elk getal
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 20 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 (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt > (SELECT d FROM last_session) - 365
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT ticker,
       round(last_close, 2) AS close,
       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct
FROM ranged
WHERE last_close >= hi * 0.99
ORDER BY ytd_return_pct DESC, ticker ASC
LIMIT 12

DAVE staat bovenaan met een stijging van 99.6% voor het jaar, met een slotkoers van $439.18. Op deze lijst is de slotkoers per definitie de 52-week high binnen een marge van 1%, waardoor de kolom met de koers tevens het niveau weergeeft dat wordt getest. DINO volgt met 99% en MPC met 96.6%. Aan het einde van de tabel staat ROKU op 33% voor het jaar.

Die spread is het kernpunt. Een 52-week high beschrijft enkel waar een prijs zich binnen de eigen eenjarige range bevindt. Een aandeel dat afgelopen zomer hard is gedaald en weer is hersteld, draagt hetzelfde label als een aandeel dat constant is blijven stijgen.

Aandelen op 52-week lows

Hetzelfde scherm, maar omgekeerd. Deze namen sloten op of binnen 1% van hun laagste slotkoers van de afgelopen 52 weken, gerangschikt van de zwakste year-to-date waarde tot twaalf namen.

QueryAandelen op 52-week lows, gesorteerd op YTD return
De exacte SQL achter elk getal
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 20 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 (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt > (SELECT d FROM last_session) - 365
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT ticker,
       round(last_close, 2) AS close,
       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct
FROM ranged
WHERE last_close <= lo * 1.01
ORDER BY ytd_return_pct ASC, ticker ASC
LIMIT 12

PNR heeft de zwakste year-to-date waarde op de lijst met -41%, waarbij de koers sloot op $61.48, binnen 1% van de eigen 52-week closing low. CPRT volgt met -30.6%.

Een 52-week low is een positie binnen een prijsbereik, geen oordeel over een onderneming. Winstgevende bedrijven komen via langdurige periodes van stagnatie op deze lijst terecht, net als bedrijven die in reële moeilijkheden verkeren. De slotkoers alleen maakt geen onderscheid tussen beide. Zie hoe markten herstellen van crashes voor de marktbrede versie van dezelfde vraag.

Wat de high en low counts zeggen over de marktbreedte

Breedte meet hoeveel aandelen deelnemen aan een beweging, in plaats van hoe ver een index is gestegen of gedaald. De verhouding tussen nieuwe highs en nieuwe lows is een van de oudste breedtematen en op deze pagina is dit de waarde die ertoe doet.

QueryNieuwe 52-week highs versus nieuwe lows, dagelijks, afgelopen zes weken
De exacte SQL achter elk getal
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 20 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 (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 425 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt <= (SELECT d FROM last_session)
),
rolled AS (
    SELECT ticker, dt, c,
           max(c) OVER w AS hi,
           min(c) OVER w AS lo,
           count() OVER w AS n_sessions,
           min(dt) OVER (PARTITION BY ticker) AS first_dt
    FROM daily
    WINDOW w AS (PARTITION BY ticker ORDER BY dt RANGE BETWEEN 364 PRECEDING AND CURRENT ROW)
)
SELECT formatDateTime(dt, '%b %e, %Y') AS date,
       countIf(c >= hi * 0.99) AS at_52w_high,
       countIf(c <= lo * 1.01) AS at_52w_low,
       countIf(c >= hi * 0.99) - countIf(c <= lo * 1.01) AS net_highs
FROM rolled
WHERE n_sessions >= 200
  AND first_dt <= dt - 350
  AND dt > (SELECT d FROM last_session) - 43
GROUP BY dt
ORDER BY dt

Op Jul 21, 2026 stonden 26 namen op of nabij een 52-week high tegenover 7 op of nabij een low, wat een netto resultaat opleverde van 19. Zes weken eerder, op Jun 9, 2026, toonde dezelfde screen 35 highs en 3 lows.

Gedurende de 29 sessies in de grafiek schommelen beide counts sterk van dag tot dag. Daarom is het niveau op een enkele sessie minder belangrijk dan de trend over meerdere weken. Een index die stabiel blijft terwijl de high count afneemt, duidt op een smallere markt dan de index alleen doet vermoeden. Een markt waarbij de low count toeneemt, vormt de basis voor kopen wanneer anderen bang zijn, een scenario dat wij hebben getest tegenover het sentiment in het nieuws.

De afstand van de rest van de markt tot de eigen piek

Hoogtes en laagtes vormen de twee uiteinden van een distributie; de meeste aandelen bevinden zich in het midden. Dit paneel sorteert het volledige scherm op basis van de afstand tot het 52-week high en rapporteert de mediane year-to-date return per band.

QueryAfstand van de gehele screen tot de 52-week high
De exacte SQL achter elk getal
WITH universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 20 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 (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements
                     WHERE period_end >= today() - 400)
      AND ticker NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 460 AND today())
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000
),
last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN (SELECT ticker FROM universe)
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20 AND dt > (SELECT d FROM last_session) - 365
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT multiIf(p < 1, 'At the high (under 1%)',
               p < 5, '1% to 5% below',
               p < 10, '5% to 10% below',
               p < 20, '10% to 20% below',
               p < 35, '20% to 35% below',
               'More than 35% below') AS bucket,
       count() AS stocks,
       round(100.0 * count() / sum(count()) OVER (), 1) AS share_pct,
       round(quantileExact(0.5)(ytd), 1) AS median_ytd_pct
FROM (
    SELECT (1 - last_close / hi) * 100 AS p,
           (last_close / base_close - 1) * 100 AS ytd,
           multiIf(p < 1, 0, p < 5, 1, p < 10, 2, p < 20, 3, p < 35, 4, 5) AS ord
    FROM ranged
)
GROUP BY bucket, ord
ORDER BY ord

5.3% van het scherm, bestaande uit 26 namen, sloot binnen 1% van een 52-week high. Aan de andere kant sloot 17% meer dan 35% onder een dergelijke piek. De mediane year-to-date return in de bovenste band is 32.8%; in de onderste band is dit -28.9%, en de grafiek toont het verloop daartussen.

Dat verloop is eerder een gevolg van de berekening dan een ontdekking: een aandeel dat dicht bij het 52-week high ligt, is door de aard van de berekening het grootste deel van het jaar gestegen. Het paneel is relevant vanwege de schaal: hoe ongebruikelijk de extremen zijn, en welk deel van de markt ver verwijderd is van de eigen beste prijs. Een grote positie aanhouden in een van deze namen vormt de blootstelling die wordt gemeten in het reële risico van één aandeel.

De positie van de markt binnen de 52-weken range

De waarde van een aandeel op een hoogtepunt wordt anders geïnterpreteerd wanneer de markt zich dicht bij zijn eigen hoogtepunt bevindt dan wanneer de markt daar ver vandaan ligt. De vijf broad-market ETF's hieronder worden op exact dezelfde wijze gemeten als de aandelen hierboven.

QueryPositie van vijf broad-market ETF's binnen hun eigen 52-week range
De exacte SQL achter elk getal
WITH last_session AS (
    SELECT max(toDate(et)) AS d
    FROM (
        SELECT toTimeZone(window_start, 'America/New_York') AS et
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= now() - INTERVAL 12 DAY
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 955
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
),
daily AS (
    SELECT ticker, toDate(et) AS dt, argMax(c, et) AS c, count() AS nbars
    FROM (
        SELECT ticker, toTimeZone(window_start, 'America/New_York') AS et, toFloat64(close) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 375 DAY
          AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM', 'RSP')
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 930
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    )
    GROUP BY ticker, dt
    HAVING nbars >= 20
       AND dt > (SELECT d FROM last_session) - 365
       AND dt <= (SELECT d FROM last_session)
),
ranged AS (
    SELECT ticker,
           argMax(c, dt) AS last_close,
           max(c) AS hi,
           min(c) AS lo,
           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,
           count() AS n_sessions,
           min(dt) AS first_dt,
           max(dt) AS last_dt
    FROM daily
    GROUP BY ticker
    HAVING n_sessions >= 200
       AND countIf(dt <= toDate('2025-12-31')) > 0
       AND last_dt = (SELECT d FROM last_session)
       AND first_dt <= (SELECT d FROM last_session) - 350
)
SELECT multiIf(ticker = 'SPY', 'S&P 500 (SPY)',
               ticker = 'QQQ', 'Nasdaq 100 (QQQ)',
               ticker = 'DIA', 'Dow 30 (DIA)',
               ticker = 'RSP', 'S&P 500 equal weight (RSP)',
               'Russell 2000 (IWM)') AS label,
       round((1 - last_close / hi) * 100, 2) AS pct_below_high,
       round((last_close / lo - 1) * 100, 1) AS pct_above_low,
       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct
FROM ranged
ORDER BY pct_below_high ASC

S&P 500 equal weight (RSP) sloot 1.08% onder de 52-weken high, de kleinste afwijking van de vijf, en 17.2% boven de 52-weken low. Nasdaq 100 (QQQ) zit het verst van de high af op 4.98%. Year to date zijn de waarden 11.1% en 15.4%.

Het verschil tussen een equal-weighted en een cap-weighted versie van hetzelfde index is op zichzelf een indicator voor de marktbreedte. Wanneer de equal-weighted lijn dichter bij de high ligt, presteert het gemiddelde aandeel beter dan de grootste componenten. Wanneer de cap-weighted lijn dichter bij de high ligt, dragen enkele zeer grote bedrijven de index. Geen van beide situaties is een voorspeller, en de markt verlaten tijdens een verkeerde periode brengt de kosten met zich mee die worden beschreven in het missen van de beste dagen van de markt.

Hoe dit wordt gemeten

Elk getal op deze pagina is gebaseerd op minute bars van de Amerikaanse beurs, samengevoegd tot dagelijkse slotkoersen. De volledige regels zijn als volgt:

  • De universe. Alleen in de VS genoteerde operationele bedrijven, geïdentificeerd door een winst-en-verliesrekening die bij de SEC is ingediend voor een periode die binnen de afgelopen 400 dagen valt. Hierdoor blijven ETF's en fondsen buiten beide lijsten. Leveraged en inverse ETF's worden expliciet uitgesloten voor extra zekerheid.
  • Liquidity floor. Een aandeel moet in de afgelopen 20 kalenderdagen voor minimaal $2 miljard zijn verhandeld. Zodra weekenden en feestdagen worden meegerekend, blijft er een venster over van ongeveer twaalf sessies, wat neerkomt op circa $150 miljoen per sessie. Dit houdt de lijsten beperkt tot namen waarmee een lezer daadwerkelijk kan handelen en voorkomt dat een lage liquiditeit extreme uitschieters veroorzaakt.
  • Splits worden uitgesloten, niet aangepast. Elk ticker met een stock split die in de afgelopen 460 dagen is uitgevoerd, wordt van het scherm verwijderd. Dit venster is bewust langer dan een volledig jaar, zodat het de oudste prijzen dekt die in de onderstaande breedtegrafiek voorkomen. Dit is de meest voorkomende manier waarop een pagina als deze onjuiste gegevens kan publiceren: een reverse split van 1-voor-20 vermenigvuldigt de geciteerde prijs met twintig zonder dat daar handel tegenover staat, en een niet-aangepast scherm zou dan een spectaculaire nieuwe 52-week high rapporteren. Een forward split heeft het tegenovergestelde effect en creëert een valse 52-week low.
  • Slotkoersen, geen intraday extremen. De high en de low worden gemeten op basis van de slotkoersen. Een aandeel kan gedurende de dag boven de 52-week high handelen, maar daaronder sluiten en verschijnt dan nooit in dit overzicht. Schermen die gebaseerd zijn op intraday-gegevens rapporteren hogere aantallen.
  • De sessie moet voltooid zijn. De dagsluiting is de laatste minute bar tussen 15:30 en 16:00 New York tijd. Een sessie die nog wordt geladen, heeft geen bars in die halve eeuw, waardoor deze niet in de berekening wordt opgenomen; een lopende sessie wordt dus nooit meegenomen. Feestdagen met een vroege sluiting vallen om dezelfde reden af. De datum boven de gegevens is de laatste sessie die aan de test is voldoet, waardoor deze een dag of twee achter de kalender kan liggen.
  • Een volledig jaar aan historie. Een aandeel heeft minimaal 200 sessies nodig binnen het 52-week venster en een eerste sessie die minimaal 350 dagen terugligt. Een bedrijf dat drie maanden geleden is genoteerd, kan hier geen 52-week high tonen.
  • De 1% band. "Op een 52-week high" betekent dat de slotkoers gelijk is aan of binnen 1% van de hoogste slotkoers in de afgelopen 52 weken; de low-lijst is hier het spiegelbeeld van. Year-to-date returns worden gemeten vanaf de laatste slotkoers van 2025.

FAQ

Is het een goed idee om te kopen op een 52-week high?

Er is geen algemeen antwoord, en deze informatie is geen advies. Deze pagina biedt een terugblik: aandelen binnen 1% van een 52-week high hebben een mediane year-to-date return van 32.8%, tegenover -28.9% voor aandelen die meer dan 35% onder hun high staan. Dit beschrijft het afgelopen jaar voor deze aandelen, niet het komende jaar. De aanduiding markeert een positie binnen een prijsrange, geen waardering.

Wat betekent het als een aandeel een 52-week low bereikt?

Dit betekent dat het aandeel lager sloot dan op enig moment in de afgelopen 52 weken. Op Jul 21, 2026 was dit van toepassing op 7 namen op dit scherm. Een low kan wijzen op een verslechterende bedrijfsvoering of op een langdurige daling van een winstgevend bedrijf; de prijs alleen vertelt u niet welke situatie van toepassing is.

Hoeveel aandelen staan momenteel op een 52-week high?

Bij de sluiting van Jul 21, 2026 sloot 26 aandelen op dit scherm op of binnen 1% van een 52-week high, tegenover 7 op of binnen 1% van een 52-week low. Dit scherm bevat grote, liquide Amerikaanse operationele bedrijven met een minimale omzet van $2 miljard over de afgelopen 20 kalenderdagen. Deze aantallen zijn daarom lager dan bij een scherm met alle beursnoteringen.

Hoe wordt een 52-week high berekend?

Neem elke slotkoers van de afgelopen 52 weken en zoek de hoogste waarde. Als de laatste slotkoers gelijk is aan deze waarde, heeft het aandeel een 52-week closing high bereikt. Deze pagina telt ook elk aandeel binnen 1% van dat niveau, en sluit tickers uit die in de afgelopen 460 dagen een split hebben ondergaan, aangezien een split de koers wijzigt zonder de waarde van een positie te veranderen.


Elk paneel hierboven bevat de onderliggende SQL-code. Open de query onder een tabel om het scherm te controleren, of voer deze uit op de Strasmore terminal. Bekijk de grootste stijgers en dalers van deze week voor de grootste bewegingen van de week in plaats van de extremen van het jaar.

#52-week high#52-week low#market breadth#stock screener#market data