Strasmore Research
Recaps de mercado Matt ConnorPor Matt Connor · Atualizado 2026-07-23 · data as of July 23, 2026 · refreshed weekly

Ações em máximas e mínimas de 52 semanas

Confira quais tickers fecharam na máxima ou na mínima de 52 semanas. Utilize este indicador de breadth para analisar o momentum do mercado via tape da bolsa.

A máxima de 52 semanas é o maior preço de fechamento de uma ação no último ano, enquanto a mínima de 52 semanas é o menor. Na última sessão encerrada, Jul 21, 2026, 26 ações nesta tela fecharam na máxima de 52 semanas ou a até 1% de distância dela, e 7 fecharam na mínima de 52 semanas ou a até 1% de distância dela. O screen abrange grandes empresas operacionais dos EUA com alta liquidez e é reconstruído a partir do tape da bolsa.

Ações em máximas de 52 semanas

Os maiores ganhadores do ano entre as ações em alta aparecem abaixo, com até doze ativos. Todos fecharam a sessão no valor máximo ou a até 1% do maior fechamento das últimas 52 semanas.

QueryAções em máximas de 52 semanas, por retorno YTD
O SQL exato por trás de cada número
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 lidera com alta de 99.6% no ano, fechando a $439.18. Nesta lista, o fechamento representa a máxima de 52 semanas com margem de 1%, por definição, portanto a coluna de preço também indica o nível testado. DINO vem em seguida com 99%, seguida por MPC com 96.6%. No final da tabela, ROKU registra 33% no ano.

O foco é o spread. Uma máxima de 52 semanas descreve apenas a posição do preço dentro de seu próprio intervalo de um ano. Uma ação que caiu forte no verão passado e se recuperou carrega o mesmo rótulo de uma que nunca parou de subir.

Ações em mínima de 52 semanas

O mesmo filtro, de forma inversa. Estes nomes fecharam no valor ou a até 1% da sua mínima de fechamento nas últimas 52 semanas, ordenados do pior desempenho acumulado no ano até doze ativos.

QueryAções em mínimas de 52 semanas, por retorno YTD
O SQL exato por trás de cada número
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 apresenta o pior desempenho acumulado no ano da lista, com -41%, fechando a $61.48, dentro de 1% de sua própria mínima de fechamento de 52 semanas. CPRT vem em seguida, com -30.6%.

Uma mínima de 52 semanas é uma posição em uma faixa de preço, não um veredito sobre um negócio. Empresas lucrativas entram nesta lista após longos períodos de lateralização, assim como empresas em dificuldades reais. O preço de fechamento sozinho não as diferencia. Para a versão de mercado amplo da mesma questão, veja como os mercados se recuperam de crashes.

O que a contagem de máximas e mínimas diz sobre a amplitude do mercado

A amplitude mede quantos ativos participam de um movimento, em vez de focar na distância percorrida pelo índice. A contagem de novas máximas em relação a novas mínimas é um dos indicadores de amplitude mais antigos que existem e, nesta página, é o número que merece atenção.

QueryNovas máximas vs. novas mínimas de 52 semanas, diário, últimas seis semanas
O SQL exato por trás de cada número
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

Em Jul 21, 2026, a tela registrou 26 ativos em ou próximos de uma máxima de 52 semanas contra 7 em ou próximos de uma mínima, um saldo de 19. Seis semanas antes, em Jun 9, 2026, a mesma tela registrou 35 máximas e 3 mínimas.

Ao longo das 29 sessões mapeadas, ambas as contagens oscilam bruscamente de um dia para o outro; portanto, o nível de uma única sessão importa menos do que a tendência ao longo das semanas. Um índice que se mantém estável enquanto a contagem de máximas diminui indica um mercado mais estreito do que o índice sugere isoladamente. Um cenário onde a contagem de mínimas aumenta é o contexto por trás de comprar quando os outros estão com medo, o que testamos em relação ao sentimento das notícias.

A distância do restante do mercado em relação às suas máximas

Máximas e mínimas são os dois extremos de uma distribuição; a maioria das ações situa-se no meio. Este painel ordena todo o universo de ativos pela distância abaixo da máxima de 52 semanas e reporta o retorno mediano acumulado no ano (year-to-date) em cada faixa.

QueryDistância do mercado em relação à máxima de 52 semanas
O SQL exato por trás de cada número
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% da tela, correspondente a 26 nomes, fechou dentro de 1% da máxima de 52 semanas. No outro extremo, 17% fechou mais de 35% abaixo da máxima. O retorno mediano acumulado no ano na faixa superior é 32.8%; na faixa inferior é -28.9%, e o gráfico traça o formato entre elas.

Esse gradiente aproxima-se mais de uma aritmética do que de uma descoberta: uma ação próxima de sua máxima de 52 semanas passou, por construção, grande parte do ano subindo. O painel justifica sua utilidade ao mostrar o quão incomuns são os extremos e quanto do mercado está longe de seu melhor preço. Manter uma dessas ações em grande peso representa a exposição medida em o risco real de uma única ação.

Onde o mercado se posiciona em sua variação de 52 semanas

O desempenho de uma ação em patamares elevados é interpretado de forma diferente quando o mercado está próximo de sua máxima, comparado a um cenário de distância da máxima. Os cinco ETFs de amplo mercado abaixo são medidos da mesma forma que as ações acima.

QueryPosição de cinco ETFs de amplo mercado no seu range de 52 semanas
O SQL exato por trás de cada número
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) fechou 1.08% abaixo de sua máxima de 52 semanas, o mais próximo entre os cinco, e 17.2% acima de sua mínima de 52 semanas. Nasdaq 100 (QQQ) está o mais distante de sua máxima, em 4.98%. No acumulado do ano, os dois apresentam 11.1% e 15.4%.

O spread entre uma versão de equal weight e uma de cap-weighted do mesmo índice é, por si só, um indicador de amplitude (breadth). Quando a linha de equal weight está mais próxima de sua máxima, a média das empresas supera as maiores componentes. Quando a linha de cap-weighted está mais próxima, um pequeno grupo de empresas gigantes sustenta o índice. Nenhum desses cenários serve como previsão, e sair do mercado durante o período errado acarreta o custo detalhado em perder os melhores dias do mercado.

Como isso é medido

Todos os números desta página vêm de barras de um minuto do tape das bolsas dos EUA, agregados em preços de fechamento diários. As regras completas:

  • O universo. Apenas empresas operacionais listadas nos EUA, identificadas por um demonstrativo de resultados arquivado na SEC para um período encerrado nos últimos 400 dias; por isso, ETFs e fundos ficam fora de ambas as listas. ETFs alavancados e inversos também são excluídos nominalmente, como medida de segurança adicional.
  • Piso de liquidez. Uma ação deve ter negociado pelo menos US$ 2 bilhões nos últimos 20 dias corridos. Descontando fins de semana e feriados, esse intervalo compreende cerca de uma dúzia de sessões, o que resulta em uma média de quase US$ 150 milhões por sessão. Isso mantém as listas restritas a ativos que o leitor realmente consiga negociar e evita que um volume baixo gere extremos artificiais.
  • Splits não são ajustados, são excluídos. Qualquer ticker com um split executado nos últimos 460 dias é removido da tela. O intervalo ultrapassa um ano completo propositalmente, para cobrir os preços mais antigos que o gráfico de amplitude abaixo alcança. Esta é a forma mais comum de uma página como esta publicar dados falsos: um reverse split de um-para-vinte multiplica o preço cotado por vinte sem que haja negociação real por trás, e uma tela não ajustada reportaria uma nova máxima de 52 semanas espetacular. Um split direto faz o oposto e simula uma mínima de 52 semanas.
  • Preços de fechamento, não extremos intraday. A máxima e a mínima são medidas nos fechamentos. Uma ação pode negociar acima de sua máxima de 52 semanas durante o dia, fechar abaixo dela e nunca aparecer aqui. Telas baseadas em dados intraday reportam contagens maiores.
  • A sessão deve estar completa. O fechamento do dia é a última barra de um minuto entre 15:30 e 16:00 no horário de Nova York. Uma sessão ainda em carregamento não possui barras nesse intervalo de meia hora, portanto não entra no cálculo; a sessão em curso também não entra. Sessões de feriados com fechamento antecipado são excluídas pelo mesmo motivo. A data estampada acima é a última sessão que passou no teste, portanto pode estar um ou dois dias atrás do calendário.
  • Um ano completo de histórico. Uma ação precisa de pelo menos 200 sessões dentro da janela de 52 semanas e uma primeira sessão há pelo menos 350 dias. Uma empresa que listou há três meses não pode apresentar uma máxima de 52 semanas aqui.
  • A banda de 1%. "Na máxima de 52 semanas" significa que o fechamento está na máxima ou dentro de 1% do maior fechamento das últimas 52 semanas; a lista de mínimas segue a mesma lógica. Os retornos year-to-date são medidos a partir do fechamento final de 2025.

FAQ

Comprar na máxima de 52 semanas é uma boa ideia?

Não existe uma resposta geral, e nada aqui constitui recomendação. O que esta página mostra é um retrospecto: ações a menos de 1% da máxima de 52 semanas apresentam um retorno mediano no acumulado do ano de 32.8%, contra -28.9% para ações com desconto superior a 35% em relação à sua máxima. Isso descreve o desempenho passado dessas ações, não o desempenho futuro. O indicador marca uma posição em uma faixa de preço, não um valuation.

O que significa quando uma ação atinge a mínima de 52 semanas?

Significa que a ação fechou com valor inferior a qualquer outro ponto das últimas 52 semanas. Em Jul 21, 2026, isso se aplicou a 7 nomes nesta tela. Uma mínima pode acompanhar o deterioramento de um negócio ou uma queda prolongada em uma empresa lucrativa, e o preço sozinho não indica qual é o caso.

Quantas ações estão na máxima de 52 semanas agora?

No fechamento de Jul 21, 2026, 26 ações nesta tela fecharam na máxima ou a menos de 1% dela, contra 7 na mínima ou a menos de 1% dela. A tela contém grandes empresas operacionais dos EUA com alta liquidez, com um faturamento mínimo de US$ 2 bilhões nos últimos 20 dias corridos; portanto, esses números são menores do que os de uma tela com todas as listagens.

Como é calculada a máxima de 52 semanas?

Considere todos os preços de fechamento das últimas 52 semanas e identifique o maior. Se o último fechamento for igual a esse valor, a ação atingiu uma máxima de fechamento de 52 semanas. Esta página também contabiliza qualquer ação a menos de 1% desse nível e exclui qualquer ticker com split nos últimos 460 dias, já que um split altera o preço cotado sem mudar o valor real do ativo.


Cada painel acima armazena o SQL subjacente. Abra a query abaixo de qualquer tabela para auditar a tela ou execute-a no terminal Strasmore. Para as maiores variações da semana, em vez dos extremos do ano, veja as maiores altas e baixas da semana.

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