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

maiores variações de ações do mês

Confira as ações com maior alta e baixa no mês. O ranking detalha o percentual de retorno e o volume em dólares negociado para cada ticker selecionado.

As maiores variações de ações deste mês estão classificadas abaixo, com dados diretos do pregão, cobrindo as 21 sessões de negociação concluídas de Jun 22 a Jul 21. A lista inclui apenas empresas operacionais que negociaram pelo menos US$ 1 bilhão no período, garantindo que cada movimento tenha volume real. Fundos alavancados e inversos foram excluídos, e o período é atualizado conforme novas sessões são concluídas.

Maiores altas das ações este mês

A tabela classifica os maiores ganhos no período. Cada linha apresenta o volume financeiro negociado ao lado da porcentagem, o que diferencia uma reprecificação com alta liquidez de uma com baixa liquidez.

QueryMaiores altas do mês (empresas com volume > $1B no período)
O SQL exato por trás de cada número
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 liderou o ranking com 133.6% sobre $9.4 bilhões negociados, à frente de PBF com 75.5% e MAN com 56.8%. Um movimento desse tamanho em um mês geralmente aparece primeiro como um volume relativo elevado em relação ao volume diário médio da ação, e costuma começar com um gap de abertura em uma sessão, em vez de uma subida constante durante todo o período.

Maiores perdas das ações este mês

A mesma lógica, mas no sentido inverso: as quedas mais acentuadas no período, entre empresas com volume superior a US$ 1 bilhão.

QueryMaiores baixas do mês (empresas com volume > $1B no período)
O SQL exato por trás de cada número
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

NVTS foi a maior queda, com -47.6% de desvalorização e US$ 5.1 bilhão negociados, seguida por WOLF com -47.1%. Observe a coluna de volume neste quadro. Uma queda registrada em alto volume é um evento diferente de uma queda em um mercado com pouco movimento; aqui, os dois cenários são diferenciados em vez de apenas presumidos.

A mesma pergunta em três horizontes temporais

Uma pergunta, três janelas. Um ativo pode liderar um ranking e não aparecer nos outros dois.

Os três rankings são construídos separadamente e suas telas não são idênticas. A página semanal define seu próprio piso de liquidez e mínimo de sessão sobre uma janela de cinco sessões; já a página do acumulado do ano filtra pelo volume financeiro médio diário, em vez do volume total negociado no período. Cada página detalha suas próprias regras em sua seção de metodologia, portanto, leia-as antes de transferir um ticker de um ranking para outro.

Um único gap domina o ranking semanal, mas perde relevância ao longo de um ano. Uma tendência lenta mensal sequer chega a aparecer no ranking semanal. Analisar os três lado a lado é a forma mais barata de distinguir um evento de um dia de uma tendência.

Onde o mercado estava no mesmo período

O desempenho de uma ação é diferente do desempenho do mercado no mesmo mês. Os quatro principais índices, todos com base no seu primeiro valor de abertura dentro do período:

QueryOs quatro principais índices no mesmo período, rebaseados na abertura inicial
O SQL exato por trás de cada número
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

Na última sessão, o índice S&P 500 estava em 0.08%, o Nasdaq 100 em -4.46%, o Dow em 0.91% e o Russell 2000 em -0.21%. Quatro cestas, um período, quatro resultados diferentes. Agora compare o ranking com esse intervalo: o topo da lista de maiores altas superou 133.6% no mesmo período. Empresas individuais apresentam uma dispersão muito maior do que as cestas que as contêm, que é a razão pela qual uma lista de maiores altas foca em nomes individuais.

Como se comportaram as empresas conhecidas

Leitores que buscam as ações de melhor desempenho este mês geralmente também querem saber o resultado das empresas que já possuem em carteira. Uma cesta fixa de oito mega-caps conhecidas, no mesmo período e com a mesma composição:

QueryOito mega-caps de grande relevância no mesmo período
O SQL exato por trás de cada número
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

O grupo variou de 12.5% para META no topo a -6.6% para AVGO na base. Elas não se moveram como um bloco, o que é a regra e não a exceção. A composição de um índice agrupa essas empresas; suas linhas de receita têm pouco em comum entre si. A cesta é uma lista fixa de oito nomes em vez de um ranking, portanto, utilize-a como orientação e não como uma afirmação sobre quais empresas são as maiores.

Como é um mês normal

Os rankings mostram os extremos. Este gráfico mostra a média. Todas as 1162 empresas que passaram no filtro, agrupadas por retorno no período:

QueryOnde cada empresa filtrada ficou: retornos mensais por bucket
O SQL exato por trás de cada número
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

60 das empresas filtradas ganharam 20% ou mais no período, e 77 perderam 20% ou mais. Os dois grupos mais próximos de zero contavam com 315 e 426 nomes. Esse gráfico representa a base de onde os rankings de maiores altas são extraídos, sendo que os dez primeiros ocupam a extremidade direita. Leia os rankings acima com isso em mente: uma variação mensal no top dez é um outlier por definição, nunca um mês típico para uma ação comum.

O que coloca uma ação na lista de maiores altas do mês

Um mês é tempo suficiente para ocorrerem vários eventos, mas curto o bastante para que um deles geralmente domine o período. Os nomes nessas listas costumam coincidir com datas do calendário corporativo. Resultados trimestrais são o fator mais comum: um resultado acima ou abaixo do esperado ajusta o preço em uma única sessão, e o restante do mês é negociado em torno desse novo patamar. Alterações no guidance cumprem o mesmo papel, mesmo sem a divulgação de resultados.

Notícias de fusões e aquisições deixam a marca mais distinta em um painel mensal. A ação salta para um nível próximo ao preço anunciado no acordo e depois estabiliza; o volume financeiro permanece enorme enquanto a variação percentual se achata. Se um nome no topo da tabela de maiores altas apresenta um volume financeiro muito alto e um preço que parou de oscilar no meio do período, esse padrão deve ser verificado antes de qualquer outra coisa.

Movimentações de setor importam ao longo de um mês de uma forma que raramente ocorrem em uma semana. Uma mudança nas taxas de juros, no petróleo ou nos preços de memórias afeta todo um grupo de uma vez, razão pela qual os painéis mensais costumam mostrar clusters de negócios similares em vez de dez nomes não relacionados. Ações de analistas, inclusões e exclusões de índices, decisões regulatórias e short squeezes completam o restante. Nada disso é visível apenas pela porcentagem, por isso a coluna de volume financeiro e o período de tempo do mercado acompanham cada movimento aqui.

Como isso é medido

Todos os limites são declarados aqui, em vez de ficarem implícitos. Uma tela com regras ocultas parece dados, mas é, na verdade, uma opinião.

  • O período. Os últimos 30 dias corridos até a sessão mais recente com o tape totalmente carregado, que compreende as 21 sessões de Jun 22 a Jul 21. Duas regras determinam se uma sessão é qualificada. Ela deve ter fechado antes da data atual em Nova York, portanto, a sessão em curso nunca entra no escopo. A contagem de barras do horário regular também deve atingir 85% da mediana das sessões do scan de 34 dias, o que exclui um dia anterior cujo tape ainda está sendo preenchido. Uma sessão de feriado encurtada gera aproximadamente metade das barras de um dia normal, então a mesma regra a descarta em vez de medi-la com metade da carga.
  • O retorno. Do preço de abertura da primeira sessão regular dentro do período até o fechamento da última sessão regular, construído a partir de barras de um minuto. Apenas horário regular, portanto, os prints de premarket e after-hours são excluídos. É um retorno de preço: dividendos não são reinvestidos.
  • Os limites mínimos. Pelo menos US$ 1 bilhão negociado em todo o período, preço de abertura de US$ 10 ou mais, e prints em pelo menos 15 das sessões do período. O limite em dólares é um total mensal, o que torna o critério mais fácil de atingir do que o mesmo valor medido em uma única semana.
  • As exclusões. Fundos alavancados e inversos são removidos pelo nome. Cada ticker também deve possuir fundamentos da empresa e capitalização de mercado registrada em nossos dados de referência. Essa segunda regra descarta ETFs, fundos fechados, trusts de commodities e a família de produtos alavancados de ações individuais, que de outra forma ocupariam a maior parte de ambos os painéis. Essa tabela de referência contém uma linha por ticker em vez de um snapshot diário datado, portanto, o screen lê a tabela inteira e nenhuma data específica decide quem é elegível. Qualquer ticker com um split de ações executado nos últimos 45 dias é descartado em vez de sofrer ajuste retroativo, já que um split altera o preço por ação sem mudar o valor de uma posição. Um símbolo que feeds de fornecedores reatribuíram entre duas empresas diferentes é excluído pelo nome.
  • O painel mega-cap. Uma cesta fixa de oito grandes empresas dos EUA amplamente detidas, listadas pelo nome no SQL do painel. Utiliza o mesmo período e a mesma construção de retorno dos painéis, e está fora do filtro de volume em dólares.
  • O que não é aplicado. Não há filtro de setor, limite de market cap ou requisito de participação em índice, portanto, uma pequena empresa com alto turnover pode aparecer no painel ao lado de uma grande. O ranking é feito apenas por variação percentual, razão pela qual a coluna de dólares negociados é exibida ao lado.

Um painel traz o comprovante de tudo isso: as sessões cobertas pelo período e o universo de onde cada painel foi filtrado.

QueryO período e o universo filtrado por trás de cada gráfico nesta página
O SQL exato por trás de cada número
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

O screen começou com 4122 tickers com capitalização de mercado na tabela de referência e terminou com 1162 empresas que superaram os limites de volume em dólares, preço e sessões. Ambos os números são armazenados a cada atualização desta página, de modo que um universo reduzido apareça no comprovante em vez de passar despercebido.

FAQ

Quais são as ações com maior alta este mês?

Para o período encerrado em Jul 21, os maiores ganhos entre empresas com valor de mercado acima de US$ 1 bilhão foram CRNX com 133.6% e PBF com 75.5%. A lista completa com as dez maiores está na primeira tabela desta página e é atualizada conforme novas sessões são concluídas.

Quais ações tiveram a maior queda este mês?

NVTS foi a maior queda com -47.6%, seguida por WOLF com -47.1%. Ambas são medidas ao longo das mesmas sessões de 21, utilizando o mesmo piso de volume de US$ 1 bilhão aplicado aos ganhadores.

Como são medados os retornos mensais das ações?

O retorno mensal aqui é a variação entre o preço de abertura da primeira sessão regular do período e o preço de fechamento da última sessão regular, calculado a partir de candles de um minuto. Trata-se de um retorno de preço, portanto, os dividendos não são reinvestidos, e qualquer empresa que realize um desdobramento de ações (stock split) próximo ao período é removida em vez de sofrer ajuste retroativo.

Por que ETFs alavancados são excluídos da lista de movimentação de ações?

Um fundo alavancado ou inverso multiplica o movimento diário de um índice ou de uma única ação, podendo liderar uma lista de movimentação em um dia comum de mercado sem qualquer notícia corporativa por trás. A remoção deles garante que esta seja uma lista de empresas operacionais. Como funcionam os ETFs alavancados explica o ajuste diário e o efeito de deriva (drift) que ocorre ao manter um desses ativos por um mês.


Cada painel acima é uma consulta armazenada com seu SQL correspondente. Abra uma consulta, altere o piso de valor ou o período de tempo e realize seu próprio screening no terminal Strasmore.