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

Azioni con maggiore volatilità del mese

I principali titoli con maggiori variazioni di questo mese. Analisi dei gainers e losers basata sui dati di borsa con i relativi volumi in dollars scambiati.

I principali titoli con maggiore volatilità di questo mese sono classificati di seguito in base ai dati di borsa, coprendo le 21 sessioni di trading completate da Jun 23 a Jul 22. L'elenco include solo società operative con volumi di scambio di almeno un miliardo di dollari nel periodo considerato; ogni variazione riportata è quindi supportata da flussi reali. I fondi leveraged e inverse sono esclusi e l'intervallo temporale si aggiorna al completamento di nuove sessioni.

I titoli con il maggior incremento mensile

La tabella classifica i maggiori guadagni nell'arco del periodo considerato. Ogni riga riporta il volume scambiato in dollari oltre alla percentuale, parametro fondamentale per distinguere un repricing massivo da uno con scarsa liquidità.

QueryI maggiori stock gainers del mese (società con trading >$1B nel periodo)
L'esatto SQL dietro ogni numero
WITH window_days AS (
    SELECT d
    FROM (
        SELECT d, max(d) OVER () AS last_full
        FROM (
            SELECT d
            FROM (
                SELECT d, bars, medianExact(bars) OVER () AS typical_bars
                FROM (
                    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
                    FROM global_markets.delayed_stocks_minute_aggs
                    WHERE window_start >= now() - INTERVAL 34 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 d
                    HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
                )
            )
            WHERE bars >= 0.85 * typical_bars
        )
    )
    WHERE d > last_full - 30
)
SELECT ticker,
       round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct,
       round(sum(dollars) / 1e9, 1) AS month_dollar_bn
FROM (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           argMin(toFloat64(open), window_start) AS o,
           argMax(toFloat64(close), window_start) AS c,
           sum(toFloat64(close) * toFloat64(volume)) AS dollars
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 34 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
      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','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 IN (SELECT ticker FROM global_markets.stocks_ratios
                     WHERE market_cap > 0)
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 45 AND today())
    GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) DESC
LIMIT 10

CRNX ha guidato la classifica con il 136.1% su 9.7 miliardi di dollari scambiati, superando PBF con il 65.9% e MAN con il 62.1%. Un movimento di tale entità in un mese si manifesta solitamente innanzitutto come un elevato relative volume rispetto all'average daily volume del titolo; spesso inizia con un overnight gap in una singola sessione piuttosto che con una crescita costante durante tutto il periodo.

I titoli con le maggiori perdite questo mese

La stessa analisi applicata al ribasso: i cali più marcati nell'arco temporale considerato, tra le società che hanno superato la soglia di un miliardo di dollari.

QueryI maggiori stock losers del mese (società con trading >$1B nel periodo)
L'esatto SQL dietro ogni numero
WITH window_days AS (
    SELECT d
    FROM (
        SELECT d, max(d) OVER () AS last_full
        FROM (
            SELECT d
            FROM (
                SELECT d, bars, medianExact(bars) OVER () AS typical_bars
                FROM (
                    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
                    FROM global_markets.delayed_stocks_minute_aggs
                    WHERE window_start >= now() - INTERVAL 34 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 d
                    HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
                )
            )
            WHERE bars >= 0.85 * typical_bars
        )
    )
    WHERE d > last_full - 30
)
SELECT ticker,
       round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct,
       round(sum(dollars) / 1e9, 1) AS month_dollar_bn
FROM (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           argMin(toFloat64(open), window_start) AS o,
           argMax(toFloat64(close), window_start) AS c,
           sum(toFloat64(close) * toFloat64(volume)) AS dollars
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 34 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
      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','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 IN (SELECT ticker FROM global_markets.stocks_ratios
                     WHERE market_cap > 0)
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 45 AND today())
    GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) ASC
LIMIT 10

CLBK è il titolo con il peggior decremento al -44.6% su 1.1 miliardi di dollari scambiati, seguito da NVTS al -41.6%. Monitorare la colonna relativa al volume di scambi. Un calo registrato su volumi elevati è un evento differente rispetto a uno avvenuto in un mercato poco liquido; qui i due scenari vengono distinti chiaramente invece di essere assunti come equivalenti.

La stessa domanda su tre timeframe

Una domanda, tre finestre temporali. Un titolo può guidare una classifica e non apparire affatto nelle altre due.

Le tre classifiche sono generate separatamente e i relativi filtri non sono identici. La pagina settimanale applica un proprio limite di liquidità e un minimo di sessione su una finestra di cinque sessioni; la pagina year-to-date filtra invece in base al volume giornaliero medio in dollari, anziché sul volume totale scambiato nell'intero periodo. Ogni pagina specifica le proprie regole nella sezione relativa ai metodi; si consiglia di consultarle prima di trasferire un titolo da una classifica all'altra.

Un singolo gap domina la classifica settimanale ma scompare nel corso di un anno. Un lento declino mensile non raggiunge mai la classifica settimanale. Confrontare le tre tabelle affiancate è il modo più semplice per distinguere un evento di un giorno da un trend.

L'andamento del mercato nello stesso periodo

Il rendimento mensile di un singolo titolo differisce da quello del mercato. I quattro principali index tracker, ricalcolati rispetto alla prima quotazione all'interno del periodo considerato:

QueryI quattro principali index tracker nello stesso periodo, rebased alla prima apertura
L'esatto SQL dietro ogni numero
WITH window_days AS (
    SELECT d
    FROM (
        SELECT d, max(d) OVER () AS last_full
        FROM (
            SELECT d
            FROM (
                SELECT d, bars, medianExact(bars) OVER () AS typical_bars
                FROM (
                    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
                    FROM global_markets.delayed_stocks_minute_aggs
                    WHERE window_start >= now() - INTERVAL 34 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 d
                    HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
                )
            )
            WHERE bars >= 0.85 * typical_bars
        )
    )
    WHERE d > last_full - 30
)
SELECT session,
       round(anyIf(cum_pct, ticker = 'SPY'), 2) AS sp500_pct,
       round(anyIf(cum_pct, ticker = 'QQQ'), 2) AS nasdaq100_pct,
       round(anyIf(cum_pct, ticker = 'DIA'), 2) AS dow_pct,
       round(anyIf(cum_pct, ticker = 'IWM'), 2) AS russell2000_pct
FROM (
    SELECT ticker,
           formatDateTime(d, '%Y-%m-%d') AS session,
           100 * (c / first_value(o) OVER (PARTITION BY ticker ORDER BY d) - 1) AS cum_pct
    FROM (
        SELECT ticker,
               toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMin(toFloat64(open), window_start) AS o,
               argMax(toFloat64(close), window_start) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 34 DAY
          AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
          AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
          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, d
    )
)
GROUP BY session
ORDER BY session

Al termine dell'ultima sessione, l'S&P 500 tracker si è attestato a 1.85%, il Nasdaq 100 tracker a -1.47%, il Dow tracker a 1.33% e il Russell 2000 tracker a 0.17%. Quattro basket, un unico periodo, quattro risultati differenti. Confrontando ora la classifica dei titoli con tale intervallo: i massimi gainers hanno superato il 136.1% nelle stesse sessioni. Le singole società mostrano una dispersione molto più elevata rispetto ai basket che le contengono, motivo per cui una lista di movers si concentra su singoli nomi.

L'andamento dei titoli più noti

I lettori che cercano i titoli con le migliori performance mensili desiderano spesso conoscere l'andamento dei titoli già in portafoglio. Ecco un paniere fisso di otto mega-cap, con lo stesso periodo e la stessa composizione:

QueryOtto mega-cap note nello stesso periodo
L'esatto SQL dietro ogni numero
WITH window_days AS (
    SELECT d
    FROM (
        SELECT d, max(d) OVER () AS last_full
        FROM (
            SELECT d
            FROM (
                SELECT d, bars, medianExact(bars) OVER () AS typical_bars
                FROM (
                    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
                    FROM global_markets.delayed_stocks_minute_aggs
                    WHERE window_start >= now() - INTERVAL 34 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 d
                    HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
                )
            )
            WHERE bars >= 0.85 * typical_bars
        )
    )
    WHERE d > last_full - 30
)
SELECT ticker,
       round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct
FROM (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           argMin(toFloat64(open), window_start) AS o,
           argMax(toFloat64(close), window_start) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 34 DAY
      AND ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'GOOGL', 'META', 'TSLA', 'AVGO')
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
      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 (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 45 AND today())
    GROUP BY ticker, d
)
GROUP BY ticker
HAVING count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) DESC

Il gruppo è passato da 11.5% per META in cima a -4.7% per TSLA in fondo. I titoli non si sono mossi come un unico blocco, il che è la norma piuttosto che l'eccezione. L'appartenenza all'indice raggruppa queste società; i loro flussi di ricavi hanno pochissime affinità tra loro. Il paniere è un elenco fisso di otto nomi e non una classifica; va considerato come un riferimento e non come una dichiarazione sulla dimensione delle società.

Come si presenta un mese normale

Le classifiche mostrano i valori estremi. Questo grafico mostra la distribuzione principale. Tutte le società 1167 selezionate sono suddivise in gruppi in base al rendimento nell'arco del periodo:

QueryPosizionamento di ogni società filtrata: monthly returns per bucket
L'esatto SQL dietro ogni numero
WITH window_days AS (
    SELECT d
    FROM (
        SELECT d, max(d) OVER () AS last_full
        FROM (
            SELECT d
            FROM (
                SELECT d, bars, medianExact(bars) OVER () AS typical_bars
                FROM (
                    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
                    FROM global_markets.delayed_stocks_minute_aggs
                    WHERE window_start >= now() - INTERVAL 34 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 d
                    HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
                )
            )
            WHERE bars >= 0.85 * typical_bars
        )
    )
    WHERE d > last_full - 30
)
SELECT tup.1 AS return_bucket,
       tup.3 AS stocks
FROM (
    SELECT arrayJoin(arrayZip(
               ['down 20% or more', 'down 10% to 20%', 'down 0% to 10%',
                'up 0% to 10%', 'up 10% to 20%', 'up 20% or more'],
               [1, 2, 3, 4, 5, 6],
               [countIf(r <= -20), countIf(r > -20 AND r <= -10), countIf(r > -10 AND r < 0),
                countIf(r >= 0 AND r < 10), countIf(r >= 10 AND r < 20), countIf(r >= 20)])) AS tup
    FROM (
        SELECT ticker,
               (argMax(c, d) / argMin(o, d) - 1) * 100 AS r
        FROM (
            SELECT ticker,
                   toDate(toTimeZone(window_start, 'America/New_York')) AS d,
                   argMin(toFloat64(open), window_start) AS o,
                   argMax(toFloat64(close), window_start) AS c,
                   sum(toFloat64(close) * toFloat64(volume)) AS dollars
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE window_start >= now() - INTERVAL 34 DAY
              AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
              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','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 IN (SELECT ticker FROM global_markets.stocks_ratios
                             WHERE market_cap > 0)
              AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                                 WHERE execution_date BETWEEN today() - 45 AND today())
            GROUP BY ticker, d
        )
        GROUP BY ticker
        HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
    )
)
ORDER BY tup.2

Il 52 delle società selezionate ha guadagnato il 20% o più nel periodo, mentre il 50 ha perso il 20% o più. I due gruppi più vicini alla stabilità contenevano 300 e 515 nomi. Quel grafico rappresenta la distribuzione da cui vengono estratte le classifiche dei titoli più volatili; i primi dieci titoli ne costituiscono l'estremità destra. Leggete le classifiche sopra con questa consapevolezza: un movimento mensile tra i primi dieci è un outlier per costruzione, non rappresenta mai un mese tipico per un titolo tipico.

Cosa inserisce un titolo nella lista dei top monthly movers

Un mese è un periodo sufficientemente lungo per ospitare diversi eventi, ma abbastanza breve perché uno di essi solitamente domini la scena. I nomi in queste liste coincidono tipicamente con eventi specifici del calendario aziendale. I risultati trimestrali sono il fattore più comune: un superamento o un mancato raggiungimento delle stime riprezza il prezzo in una singola sessione, e il resto del mese il titolo scambia attorno al nuovo livello. Anche le variazioni di guidance svolgono la stessa funzione senza la pubblicazione dei risultati.

Le notizie su merger e acquisition lasciano l'impronta più distintiva nelle liste mensili. Il titolo balza a un livello vicino al prezzo dell'operazione annunciata e poi si stabilizza; i volumi scambiati rimangono enormi mentre la variazione percentuale si appiattisce. Se un titolo in cima alla classifica dei gainers mostra un valore in dollari enorme e un prezzo che ha smesso di muoversi a metà periodo, quel pattern va verificato prima di qualsiasi altra cosa.

I movimenti settoriali contano su un arco mensile in un modo in cui raramente accade su una settimana. Una variazione nei tassi, nel prezzo del petrolio o dei semiconduttori influenza un intero gruppo di titoli contemporaneamente; per questo le liste mensili mostrano spesso cluster di aziende simili invece di dieci nomi non correlati. Il resto della lista è composto da azioni degli analyst, aggiunte o rimozioni dagli indici, esiti di trial clinici o regolatori e short squeeze. Nessuno di questi fattori è visibile solo attraverso la percentuale, motivo per cui la colonna dei volumi scambiati e l'intervallo temporale del mercato sono presenti accanto a ogni movimento.

Come viene misurato

Ogni soglia è esplicitata e non lasciata implicita. Un filtro con regole nascoste viene presentato come dato, ma in realtà è un'opinione.

  • La finestra temporale. I 30 giorni solari precedenti l'ultima sessione con i dati completi, che comprende 21 sessioni da Jun 23 a Jul 22. Due regole determinano se una sessione è valida. La sessione deve essere conclusa prima della data attuale a New York; pertanto, la sessione in corso non è mai inclusa. Il numero di candele durante l'orario regolare deve raggiungere l'85% della mediana delle sessioni calcolate su 34 giorni; questo criterio esclude i giorni precedenti i cui dati non sono ancora completi. Una sessione festiva ridotta produce circa la metà delle candele di una giornata normale, quindi la stessa regola la esclude invece di misurarla con dati parziali.
  • Il rendimento. Calcolato dal prezzo di apertura della prima sessione regolare all'interno della finestra al prezzo di chiusura dell'ultima sessione regolare, utilizzando candele da un minuto. Si considerano solo le ore regolari; i dati pre-market e after-hours sono esclusi. Si tratta di un rendimento del prezzo: i dividendi non sono inclusi.
  • Le soglie minime. Almeno un miliardo di dollari scambiati nell'intera finestra, un prezzo di apertura pari o superiore a 10 dollari e scambi registrati in almeno 15 sessioni della finestra. La soglia in dollari è un totale mensile, il che rende il requisito più facile da soddisfare rispetto allo stesso valore calcolato su una singola settimana.
  • Le esclusioni. I fondi a leva e inversi sono rimossi per nome. Ogni ticker deve inoltre possedere i fondamentali aziendali e una market capitalization registrata nei nostri dati di riferimento. Questo secondo criterio esclude gli ETF, i fondi chiusi, i commodity trust e la categoria in rapida crescita dei prodotti a leva su singole azioni, che altrimenti occuperebbero la maggior parte delle tabelle. La tabella di riferimento contiene una riga per ogni ticker invece di uno snapshot giornaliero; pertanto, il filtro analizza l'intera tabella e non una singola data decide l'idoneità. Qualsiasi ticker con uno stock split avvenuto negli ultimi 45 giorni viene escluso invece di essere riadattato, poiché uno split modifica il prezzo per azione senza cambiare il valore del titolo. Un simbolo che i feed dei vendor hanno riassegnato tra due società diverse è escluso per nome.
  • Il panel mega-cap. Un paniere fisso di otto grandi società USA molto diffuse, elencate per nome nel SQL del panel. Utilizza la stessa finestra e la stessa costruzione del rendimento delle tabelle, ed è indipendente dal filtro sul volume in dollari.
  • Cosa non viene applicato. Non sono presenti filtri per settore, soglie di market cap o requisiti di appartenenza a un indice; pertanto, una piccola società con alta rotazione può apparire nella tabella accanto a una grande società. La classifica si basa esclusivamente sulla variazione percentuale, motivo per cui la colonna del volume scambiato in dollari è riportata accanto.

Un panel riporta il dettaglio di tutti i parametri: le sessioni coperte dalla finestra e l'universo da cui è stato filtrato ogni tabella.

QueryIl window e l'universo filtrato alla base di ogni board in questa pagina
L'esatto SQL dietro ogni numero
WITH window_days AS (
    SELECT d
    FROM (
        SELECT d, max(d) OVER () AS last_full
        FROM (
            SELECT d
            FROM (
                SELECT d, bars, medianExact(bars) OVER () AS typical_bars
                FROM (
                    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
                    FROM global_markets.delayed_stocks_minute_aggs
                    WHERE window_start >= now() - INTERVAL 34 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 d
                    HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
                )
            )
            WHERE bars >= 0.85 * typical_bars
        )
    )
    WHERE d > last_full - 30
),
screened AS (
    SELECT ticker
    FROM (
        SELECT ticker,
               toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMin(toFloat64(open), window_start) AS o,
               sum(toFloat64(close) * toFloat64(volume)) AS dollars
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= now() - INTERVAL 34 DAY
          AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
          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','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 IN (SELECT ticker FROM global_markets.stocks_ratios
                         WHERE market_cap > 0)
          AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                             WHERE execution_date BETWEEN today() - 45 AND today())
        GROUP BY ticker, d
    )
    GROUP BY ticker
    HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
)
SELECT formatDateTime(w.first_d, '%b %e') AS first_session_date,
       formatDateTime(w.last_d, '%b %e') AS last_session_date,
       w.n AS sessions,
       (SELECT count() FROM global_markets.stocks_ratios WHERE market_cap > 0) AS companies_on_file,
       (SELECT count() FROM screened) AS companies_screened
FROM (SELECT min(d) AS first_d, max(d) AS last_d, count() AS n FROM window_days) AS w

Il filtro è partito da 4121 ticker con una market capitalization nella tabella di riferimento e si è concluso con 1167 società che hanno superato le soglie di volume in dollari, prezzo e sessioni. Entrambi i valori vengono salvati ad ogni aggiornamento di questa pagina, così un calcolo effettuato su un universo ridotto risulta visibile nel dettaglio invece di passare inosservato.

FAQ

Quali sono i titoli con i maggiori guadagni questo mese?

Per il periodo concluso il Jul 22, i maggiori incrementi tra le società con capitalizzazione superiore a 1 miliardo di dollari sono stati per CRNX al 136.1% e per PBF al 65.9%. La classifica completa dei primi dieci si trova nella prima tabella di questa pagina e si aggiorna al termine di ogni nuova sessione.

Quali titoli hanno perso di più questo mese?

CLBK ha registrato il calo più marcato al -44.6%, seguita da NVTS al -41.6%. Entrambi i dati sono misurati sulle stesse sessioni 21, con lo stesso limite di volume di 1 miliardo di dollari applicato ai titoli in rialzo.

Come vengono misurati i rendimenti mensili azionari?

Il rendimento mensile indicato è la variazione tra il prezzo di apertura della prima sessione regolare all'interno del periodo e il prezzo di chiusura dell'ultima sessione regolare, calcolato tramite minute bars. Si tratta di un rendimento del prezzo, pertanto i dividendi non sono inclusi; inoltre, qualsiasi società che effettui uno stock split in prossimità del periodo di riferimento viene esclusa invece di essere riaggiustata.

Perché gli ETF a leva sono esclusi dalla lista dei titoli più dinamici?

Un fondo a leva o inverso moltiplica il movimento giornaliero di un indice o di un singolo titolo; pertanto, può guidare una classifica dei titoli più dinamici in una normale giornata di mercato senza che vi siano notizie aziendali sottostanti. La loro esclusione garantisce che la lista si riferisca esclusivamente a società operative. Come funzionano gli ETF a leva spiega il reset giornaliero e il drift derivante dal mantenimento del titolo per un mese.


Ogni pannello sopra riportato è una query salvata con il relativo codice SQL. Apri una query, modifica il limite di capitalizzazione o la durata del periodo, e analizza lo stesso listino autonomamente tramite il terminale Strasmore.