Strasmore Research
Recap di mercato Matt ConnorDi Matt Connor · Aggiornato 2026-07-24 · data as of July 24, 2026 · refreshed weekly

Azioni ai massimi e minimi a 52 settimane

Analisi dei titoli che hanno raggiunto il massimo o il minimo a 52 settimane. Monitora il momentum tramite i dati estratti direttamente dall'exchange tape.

Il massimo a 52 settimane rappresenta il prezzo di chiusura più alto raggiunto da un titolo nell'ultimo anno, mentre il minimo a 52 settimane rappresenta il valore più basso. Nell'ultima sessione completata, Jul 21, 2026, 26 titoli presenti in questo screen hanno chiuso in corrispondenza o entro l'1% da un massimo a 52 settimane e 7 ha chiuso in corrispondenza o entro l'1% da un minimo a 52 settimane. Lo screen include grandi società operative USA liquide e i dati vengono ricostruiti dall'exchange tape.

Azioni ai massimi a 52 settimane

Di seguito sono elencati i titoli con i maggiori guadagni dall'inizio dell'anno, fino a dodici di essi. Ciascuno ha chiuso la sessione in corrispondenza o entro l'1% del massimo di chiusura degli ultimi 52 settimane.

QueryStocks a 52-week high, ordinati per return YTD
L'esatto SQL dietro ogni numero
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 guida la lista con un incremento del 99.6% per l'anno, chiudendo a $439.18. In questo elenco, per costruzione, la chiusura rappresenta il massimo a 52 settimane entro l'1%, pertanto la colonna del prezzo funge anche da livello testato. Segue DINO con 99% e MPC con 96.6%. All'estremità della tabella, ROKU segna 33% per l'anno.

Il punto è lo spread. Un massimo a 52 settimane descrive la posizione di un prezzo all'interno del proprio range annuale, nient'altro. Un titolo che ha subito un forte calo la scorsa estate e si è ripreso porta la stessa etichetta di uno che non ha mai smesso di salire.

Azioni ai minimi a 52 settimane

Lo stesso filtro, invertito. Questi titoli hanno chiuso al livello o entro l'1% del loro minimo di chiusura nelle ultime 52 settimane, ordinati dalla performance peggiore dall'inizio dell'anno fino a dodici titoli.

QueryStocks a 52-week low, ordinati per return YTD
L'esatto SQL dietro ogni numero
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 presenta la performance peggiore dell'anno in corso nell'elenco con -41%, chiudendo a $61.48, entro l'1% dal suo minimo di chiusura a 52 settimane. CPRT segue con -30.6%.

Un minimo a 52 settimane indica una posizione in un range di prezzo, non un giudizio sull'azienda. Le società profittevoli finiscono in questo elenco dopo lunghi periodi di stasi, così come le aziende in reale difficoltà. Il solo prezzo di chiusura non permette di distinguerle. Per la versione relativa all'intero mercato, consultare come i mercati si riprendono dai crash.

Cosa indicano i conteggi dei massimi e dei minimi sulla breadth del mercato

La breadth misura quanti titoli partecipano a un movimento, piuttosto che l'entità del movimento dell'indice. Il rapporto tra nuovi massimi e nuovi minimi è uno degli indicatori di breadth più datati e, in questa pagina, è il valore da monitorare.

QueryNew 52-week highs vs new lows, daily, ultime 6 settimane
L'esatto SQL dietro ogni numero
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

Il Jul 21, 2026 il monitor mostrava 26 titoli ai massimi o vicino ai massimi a 52 settimane rispetto a 7 ai minimi o vicino ai minimi, con un valore netto di 19. Sei settimane prima, il Jun 9, 2026, lo stesso monitor registrava 35 massimi e 3 minimi.

Nelle 29 sessioni graficate, entrambi i conteggi oscillano drasticamente di giorno in giorno; pertanto, il livello di una singola sessione è meno rilevante del trend su base settimanale. Un indice stabile mentre il conteggio dei massimi diminuisce indica un mercato con una breadth inferiore rispetto a quanto suggerito dal solo indice. Un mercato in cui il conteggio dei minimi aumenta è la condizione che sta alla base di comprare quando gli altri hanno paura, un approccio che abbiamo testato rispetto al sentiment delle news.

Distanza del resto del mercato dai propri massimi

I massimi e i minimi rappresentano le due estremità di una distribuzione; la maggior parte dei titoli si colloca nel mezzo. Questo pannello ordina l'intero screen per distanza dal massimo a 52 settimane e riporta il rendimento mediano year-to-date per ogni fascia.

QueryDistanza del mercato dal 52-week high
L'esatto SQL dietro ogni numero
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

Il 5.3% dello screen, ovvero 26 titoli, ha chiuso entro l'1% dal massimo a 52 settimane. All'estremità opposta, il 17% ha chiuso con un ribasso superiore al 35% rispetto al massimo. Il rendimento mediano year-to-date nella fascia superiore è 32.8%; nella fascia inferiore è -28.9%, e il grafico ne illustra l'andamento.

Quel gradiente è più vicino a un calcolo aritmetico che a una scoperta: un titolo vicino al suo massimo a 52 settimane ha, per costruzione, trascorso gran parte dell'anno in rialzo. Il pannello è utile per valutare la scala: quanto sono insoliti gli estremi e quale parte del mercato si trova lontana dal proprio miglior prezzo. Detenere una posizione rilevante su uno di questi titoli rappresenta l'esposizione misurata in il rischio reale di un singolo titolo.

Posizione del mercato rispetto al range a 52 settimane

Il valore di un singolo titolo vicino ai massimi si interpreta diversamente se il mercato è vicino ai propri massimi o se è lontano da essi. I cinque ETF broad-market riportati di seguito sono misurati esattamente come i titoli sopra.

QueryPosizione di cinque ETF rispetto al proprio 52-week range
L'esatto SQL dietro ogni numero
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) ha chiuso 1.08% sotto il massimo a 52 settimane, il più vicino tra i cinque, e 17.2% sopra il minimo a 52 settimane. Nasdaq 100 (QQQ) è il più lontano dal suo massimo, con un valore di 4.98%. Dall'inizio dell'anno, i due valori sono rispettivamente 11.1% e 15.4%.

La differenza tra una versione equal-weighted e una cap-weighted dello stesso indice è un indicatore di breadth. Quando la linea equal-weighted è più vicina al massimo, la media dei titoli sta sovraperformando i titoli a maggiore capitalizzazione. Quando la linea cap-weighted è più vicina, un numero limitato di grandi aziende sta trascinando l'indice. Nessuna delle due configurazioni fornisce previsioni, e uscire dal mercato durante il periodo errato comporta il costo indicato in mancare i giorni migliori del mercato.

Come viene misurato questo dato

Ogni valore presente in questa pagina deriva da minute bars del tape dei mercati USA, aggregate in prezzi di chiusura giornalieri. Le regole complete sono le seguenti:

  • L'universo di riferimento. Solo società operative quotate negli USA, identificate da un conto economico depositato presso la SEC per un periodo terminato entro gli ultimi 400 giorni; pertanto, ETF e fondi sono esclusi da entrambi gli elenchi. Gli ETF leveraged e inverse sono esclusi esplicitamente per ulteriore sicurezza.
  • Soglia di liquidità. Un titolo deve aver registrato scambi per almeno 2 miliardi di dollari negli ultimi 20 giorni di calendario. Escludendo i fine settimana e le festività, il periodo comprende circa una dozzina di sessioni, con una media di circa 150 milioni di dollari a sessione. Questo criterio limita gli elenchi a titoli effettivamente scambiabili e impedisce che una scarsa liquidità generi valori estremi artificiali.
  • Gli split sono esclusi, non aggiustati. Qualsiasi ticker che abbia effettuato uno stock split negli ultimi 460 giorni viene rimosso dal monitoraggio. Il periodo è volutamente superiore a un anno intero, sufficiente a coprire i prezzi più datati presenti nel grafico sottostante. Questo è il metodo principale con cui una pagina simile può pubblicare dati errati: un reverse split di uno a venti moltiplica il prezzo quotato per venti senza alcun volume di scambio reale, e un monitoraggio non aggiustato segnalerebbe un nuovo e spettacolare 52-week high. Uno stock split standard produce l'effetto opposto, simulando un 52-week low.
  • Prezzi di chiusura, non estremi intraday. Il massimo e il minimo sono misurati sui prezzi di chiusura. Un titolo può superare il suo 52-week high durante la giornata, chiudere sotto di esso e non apparire mai in questo elenco. I monitor basati sui prezzi intraday riportano conteggi più elevati.
  • La sessione deve essere completata. La chiusura giornaliera è l'ultima minute bar tra le 15:30 e le 16:00 ora di New York. Una sessione ancora in fase di caricamento non ha barre in quella mezz'ora e non può entrare nel calcolo; la sessione in corso non viene mai inclusa. Le sessioni festive con chiusura anticipata vengono escluse per lo stesso motivo. La data indicata sopra si riferisce all'ultima sessione che ha superato il test, pertanto potrebbe essere arretrata di uno o due giorni rispetto al calendario.
  • Un anno intero di storico. Un titolo necessita di almeno 200 sessioni all'interno della finestra di 52 settimane e di una prima sessione avvenuta almeno 350 giorni fa. Una società quotata da soli tre mesi non può generare un 52-week high in questa pagina.
  • La banda dell'1%. "A 52-week high" significa che la chiusura è uguale o entro l'1% della chiusura più alta delle ultime 52 settimane; l'elenco dei minimi riflette lo stesso criterio. I rendimenti year-to-date sono misurati rispetto alla chiusura finale del 2025.

FAQ

Acquistare a un 52-week high è una buona idea?

Non esiste una risposta generale e il contenuto di questa pagina non costituisce una consulenza. Questa pagina mostra dati storici: i titoli entro l'1% da un 52-week high presentano un rendimento mediano year-to-date del 32.8%, contro il -28.9% dei titoli che si trovano a oltre il 35% sotto il proprio massimo. Questo dato descrive l'andamento passato di tali titoli, non quello futuro. Il parametro indica una posizione in un range di prezzo, non una valutazione.

Cosa significa quando un titolo tocca un 52-week low?

Significa che il titolo ha chiuso a un prezzo inferiore rispetto a qualsiasi altro punto raggiunto nelle ultime 52 settimane. Al termine della sessione di Jul 21, 2026, questo fenomeno ha riguardato 7 nomi presenti in questo screen. Un minimo può derivare dal deterioramento di un business o da un lungo declino di un'azienda profittevole; il prezzo da solo non permette di distinguere i due casi.

Quanti titoli si trovano attualmente a un 52-week high?

Alla chiusura di Jul 21, 2026, 26 titoli in questo screen hanno chiuso in corrispondenza o entro l'1% da un 52-week high, contro 7 in corrispondenza o entro l'1% da un 52-week low. Lo screen include grandi società operative USA liquide con un fatturato minimo di 2 miliardi di dollari negli ultimi 20 giorni di calendario; pertanto, questi conteggi sono inferiori rispetto a quelli di uno screen che includa tutti i titoli quotati.

Come viene calcolato un 52-week high?

Si prendono tutti i prezzi di chiusura delle ultime 52 settimane e si individua il valore massimo. Se l'ultima chiusura è uguale a tale valore, il titolo ha stabilito un 52-week closing high. Questa pagina include anche qualsiasi titolo entro l'1% da quel livello e scarta ogni ticker con uno split avvenuto negli ultimi 460 giorni, poiché uno split modifica il prezzo quotato senza cambiare il valore del titolo in portafoglio.


Ogni pannello sopra riportato contiene la query SQL sottostante. Apri la query sotto qualsiasi tabella per verificare lo screen, oppure eseguila sul terminale Strasmore. Per analizzare i movimenti più rilevanti della settimana invece degli estremi annuali, consulta i maggiori gainers e losers della settimana.

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