Ações com volume incomum desta semana
Ranking de ativos com volume relativo elevado comparado à média de quarenta sessões. Confira o turnover semanal e a persistência de cada ticker listado.
Volume incomum significa que uma ação está sendo negociada muito acima do seu próprio volume normal — não do mercado. Uma megacap negociando 40 milhões de ações é algo comum; uma small-cap fazendo o mesmo é um evento. Esta página classifica as ações com volume incomum da semana que passou: a média de volume das últimas cinco sessões de cada ativo dividida pela sua própria média das quarenta sessões anteriores, com um piso de valor nominal para garantir que cada linha represente uma ação passível de negociação real. Os dados são atualizados semanalmente, e o carimbo "dados de" indica o período de referência. A métrica em si — volume relativo — possui seu próprio guia completo.
Líderes de volume incomum desta semana
Três colunas realizam o trabalho. O múltiplo indica o quanto o valor negociado ficou acima da sua média normal. A base indica qual era o volume normal — um múltiplo alto sobre uma base baixa representa um evento menor do que um múltiplo modesto sobre uma base alta. Os dólares indicam se a atividade teve relevância econômica. A última coluna, a variação do fechamento em relação à abertura da semana, é o que a maioria dos filtros de volume omite.
O SQL exato por trás de cada número
WITH sess AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol,
sum(toFloat64(close) * toFloat64(volume)) AS dollars,
argMin(toFloat64(open), toTimeZone(window_start, 'America/New_York')) AS day_open,
argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS day_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 70 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 NOT IN ('SPCX')
GROUP BY ticker, d
),
cal AS (
SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
SELECT s.ticker AS ticker,
avgIf(s.vol, c.rn <= 5) AS adv_recent,
avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
argMaxIf(s.day_open, c.rn, c.rn <= 5) AS week_open,
argMinIf(s.day_close, c.rn, c.rn <= 5) AS week_close,
countIf(c.rn <= 5) AS recent_sessions,
countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
FROM sess s INNER JOIN cal c ON s.d = c.d
GROUP BY s.ticker
HAVING adv_base > 100000 AND dollar_recent >= 500000000 AND recent_sessions = 5 AND base_sessions >= 35
)
SELECT ticker,
round(adv_recent / adv_base, 1) AS rvol_week,
round(adv_recent / 1e6, 2) AS recent_adv_m,
round(adv_base / 1e6, 2) AS baseline_adv_m,
round(dollar_recent / 1e9, 2) AS week_dollar_bn,
round(100.0 * (week_close / week_open - 1), 1) AS week_pct
FROM per_name
ORDER BY rvol_week DESC, ticker ASC
LIMIT 8Cada linha, lida em ordem:
- JLHL — 99.2x sua norma, o líder da lista: 16.95M de ações por dia contra uma base de 0.17M, $0.68B negociados e variação de abertura para o fechamento de 160.6%.
- AGEN — 41.1x sobre uma base de 0.62M ações, com $0.88B de turnover; a variação da semana foi 54.3%.
- IONS — 4.7x, mas sobre uma base baixa de 1.43M e apenas $2.1B de turnover; variação na semana, -19.6%.
- ALNY — 2.3x, 1.91M de ações por dia contra 0.83M normalmente; -26.2% de abertura para o fechamento.
- BBIO — 2.1x, $2.25B negociados, -0.2% na semana.
- MULL — 2.1x sobre uma base de 1.96M ações, $0.52B negociados, -22.8% de abertura para o fechamento.
- HLI — 1.9x, 0.9M de ações por dia, $0.61B; a variação da semana, 5.6%.
- QGEN — a oitava e última linha, a 1.8x com $0.76B negociados e uma variação de 8.7%.
A direção do movimento não faz parte do ranking, e as duas colunas à direita confirmam isso: o líder da lista terminou a semana 160.6% em relação à sua abertura, enquanto o oitavo nome terminou 8.7% em relação à sua própria — um mesmo filtro, experiências opostas. Volume alto indica as sessões em que o float de uma ação está sendo genuinamente testado; isso não diz nada sobre qual lado do teste venceu.
Como o múltiplo é calculado
Considere uma ação com média de 200.000 ações por dia nas últimas quarenta sessões. Na última semana, o volume foi de 1.000.000, depois 1.400.000, depois 900.000, depois 1.100.000 e, por fim, 600.000 ações — uma média de cinco sessões de 1.000.000. Divida: 1.000.000 ÷ 200.000 = 5,0x. Se a mesma ação tivesse uma base de dois milhões de ações, essa mesma semana resultaria em 0,5x. O numerador é o volume desta semana; o denominador é o volume normal da ação. (O denominador é apenas o volume diário médio, medido ao longo de quarenta sessões em vez das vinte habituais.)
Por que quarenta sessões? Esse período compreende cerca de dois meses de calendário — tempo suficiente para que um pico isolado não domine o denominador, mas curto o bastante para descrever o comportamento atual da ação. Por que cinco para o numerador? Representa uma semana completa, evitando que uma única sessão com suspensão de negociação ou um único bloco de ordens distorça o resultado.
O cálculo traz um aviso importante: quanto menor a base, mais barato é o múltiplo. O líder desta semana possui uma base de apenas 0.17M de ações por dia — nesse patamar, uma única sessão com alta liquidez eleva toda a média semanal, que é exatamente o motivo pelo qual o conselho exige uma base de seis dígitos e uma semana de $500M para que um ticker possa ser listado.
Quão rara é uma semana como esta?
Um múltiplo só tem significado em relação à distribuição de onde ele surgiu. Mesmo universo, mesmo período, todos os ativos qualificados agrupados por seu múltiplo:
O SQL exato por trás de cada número
WITH sess AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 70 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 NOT IN ('SPCX')
GROUP BY ticker, d
),
cal AS (
SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
SELECT s.ticker AS ticker,
avgIf(s.vol, c.rn <= 5) AS adv_recent,
avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
countIf(c.rn <= 5) AS recent_sessions,
countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
FROM sess s INNER JOIN cal c ON s.d = c.d
GROUP BY s.ticker
HAVING adv_base > 100000 AND dollar_recent >= 500000000 AND recent_sessions = 5 AND base_sessions >= 35
),
scored AS (
SELECT ticker,
multiIf(adv_recent / adv_base >= 10, 1,
adv_recent / adv_base >= 5, 2,
adv_recent / adv_base >= 3, 3,
adv_recent / adv_base >= 2, 4,
adv_recent / adv_base >= 1.5, 5,
adv_recent / adv_base >= 1, 6, 7) AS bucket_key
FROM per_name
),
buckets AS (
SELECT arrayJoin([(1, '10x or more'), (2, '5x to 10x'), (3, '3x to 5x'), (4, '2x to 3x'),
(5, '1.5x to 2x'), (6, '1x to 1.5x'), (7, 'below 1x')]) AS bk
)
SELECT bk.2 AS rvol_bucket,
countIf(scored.bucket_key = bk.1) AS names,
round(100.0 * countIf(scored.bucket_key = bk.1) / count(), 1) AS pct_of_universe,
count() AS universe_names
FROM scored CROSS JOIN buckets
GROUP BY bk
ORDER BY bk.1 ASC647 ações e ETFs superaram o patamar esta semana. Desses, 2 negociaram a dez vezes sua própria média ou mais — 0.3% do universo. Outros 0 ficaram na faixa de cinco a dez vezes e 1 na faixa de três a cinco vezes. O ranking acima foi extraído desse topo restrito da tabela. Abaixo disso, 3 ativos negociaram de duas a três vezes sua própria média (0.5% do universo) e 5 ficaram na faixa de um ponto cinco a duas vezes (0.8%). Mais 19 ficaram em um patamar apenas elevado de um a um ponto cinco, 2.9% dos nomes qualificados.
O outro extremo da tabela é a parte que ninguém printa: 617 ativos — 95.4% do universo — negociaram abaixo de sua própria média de quarenta sessões esta semana. Esse é o estado comum do mercado, e é o que torna o topo do ranking um verdadeiro outlier, em vez de um erro de arredondamento.
O volume atípico persiste?
A crença comum é que o volume atípico persiste por dias, portanto, um ativo no topo de uma lista como esta geralmente já completou seu movimento. Isso é testável. Para cada um dos oito líderes: em quantas das cinco sessões o volume foi o dobro da base ou superior, qual foi o tamanho da sessão mais intensa e quantas sessões separaram essa sessão máxima da última sessão da semana.
O SQL exato por trás de cada número
WITH sess AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 70 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 NOT IN ('SPCX')
GROUP BY ticker, d
),
cal AS (
SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
SELECT s.ticker AS ticker,
avgIf(s.vol, c.rn <= 5) AS adv_recent,
avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
countIf(c.rn <= 5) AS recent_sessions,
countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
FROM sess s INNER JOIN cal c ON s.d = c.d
GROUP BY s.ticker
HAVING adv_base > 100000 AND dollar_recent >= 500000000 AND recent_sessions = 5 AND base_sessions >= 35
),
leaders AS (
SELECT ticker, adv_recent / adv_base AS rvol_week, adv_base
FROM per_name
ORDER BY rvol_week DESC, ticker ASC
LIMIT 8
),
daily AS (
SELECT l.ticker AS ticker,
l.rvol_week AS rvol_week,
c.rn AS rn,
s.vol / l.adv_base AS rvol_day
FROM sess s
INNER JOIN cal c ON s.d = c.d
INNER JOIN leaders l ON s.ticker = l.ticker
WHERE c.rn <= 5
)
SELECT ticker,
round(max(rvol_week), 1) AS week_rvol,
countIf(rvol_day >= 2) AS days_above_2x,
round(max(rvol_day), 1) AS peak_day_rvol,
argMax(rn, (rvol_day, -rn)) - 1 AS sessions_since_peak
FROM daily
GROUP BY ticker
ORDER BY days_above_2x ASC, peak_day_rvol ASC, ticker ASCOrdenados por persistência, o ativo menos persistente da lista, HLI, superou o dobro de sua base em 1 das cinco sessões, atingindo um pico de 6.2x. O mais persistente, JLHL, atingiu esse nível em 3 de cinco, com um pico de 404.6x. Estes são eventos de múltiplas sessões, não apenas um registro isolado — que é a razão mecânica pela qual um board semanal e um board diário tendem a listar as mesmas ações.
A última coluna trata do tempo: sessões entre o dia de maior volume e a sessão final da semana — 4 para HLI, 4 para JLHL. Quando essa lacuna é superior a zero, o maior volume de negociação já havia ocorrido antes do fechamento da semana. O board descreve a semana que terminou; ele não faz previsões para a que se inicia.
As quinze sessões do líder, dia a dia
A média semanal esconde o padrão. Abaixo está o volume relativo diário do líder atual — o número de ações de cada sessão em relação à mesma linha de base de quarenta sessões — junto com a variação do preço (abertura ao fechamento) de cada sessão, nas últimas quinze sessões:
O SQL exato por trás de cada número
WITH sess AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol,
sum(toFloat64(close) * toFloat64(volume)) AS dollars,
argMin(toFloat64(open), toTimeZone(window_start, 'America/New_York')) AS day_open,
argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS day_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 70 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 NOT IN ('SPCX')
GROUP BY ticker, d
),
cal AS (
SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
SELECT s.ticker AS ticker,
avgIf(s.vol, c.rn <= 5) AS adv_recent,
avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
countIf(c.rn <= 5) AS recent_sessions,
countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
FROM sess s INNER JOIN cal c ON s.d = c.d
GROUP BY s.ticker
HAVING adv_base > 100000 AND dollar_recent >= 500000000 AND recent_sessions = 5 AND base_sessions >= 35
),
leader AS (
SELECT ticker, adv_base
FROM per_name
ORDER BY adv_recent / adv_base DESC, ticker ASC
LIMIT 1
),
path AS (
SELECT formatDateTime(s.d, '%Y-%m-%d') AS session_date,
formatDateTime(s.d, '%b %e') AS session_label,
s.vol / l.adv_base AS rvol_day,
100.0 * (s.day_close / s.day_open - 1) AS day_pct
FROM sess s
INNER JOIN cal c ON s.d = c.d
INNER JOIN leader l ON s.ticker = l.ticker
WHERE c.rn <= 15
)
SELECT session_date,
session_label,
round(rvol_day, 1) AS rvol_day,
round(day_pct, 1) AS day_pct,
round(max(rvol_day) OVER (), 1) AS peak_rvol_day
FROM path
ORDER BY session_date ASCQuinze sessões atrás, a ação estava operando a 0.5x de sua linha de base — um ativo comum e sem volatilidade. A sessão com maior volume no período atingiu 404.6x. Na sessão mais recente, Jul 15, o volume ainda foi de 0.7x, com uma variação de abertura ao fechamento de -3.5%.
Observe o que o gráfico não faz: não apresenta um decaimento em linha reta. O volume elevado ocorre em clusters, e as sessões após um pico podem acelerar novamente em vez de perder força — um motivo pelo qual a afirmação de que "o volume está secando" deve ser verificada na série diária, em vez de apenas presumida. Essa mesma série diária é o ponto de partida para uma medida de ritmo intraday, aquela construída do zero no guia de volume relativo e utilizada pelo VWAP.
O que o filtro de tela exclui
Quatro regras garantem a integridade do ranking, e cada uma delas descarta dados que o leitor poderia desejar ver:
- Um piso de volume financeiro de US$ 500 milhões na semana. Apenas a contagem de ações lotaria o ranking com ativos onde um milhão de ações é um valor insignificante.
- Uma base acima de 100.000 ações por dia, para que o denominador seja um número real e não um erro de arredondamento.
- Pelo menos 35 das 40 sessões anteriores negociadas, o que exclui listagens recentes — um IPO novo não possui um "normal" significativo para o cálculo e, caso contrário, dominaria este ranking por semanas.
- Exclusão de um símbolo reutilizado: um ticker que as bolsas reatribuíram recentemente a uma nova listagem, cujo histórico do fornecedor mistura duas empresas diferentes. Sua base de cálculo seria fictícia.
A Regra 1 é a que remove os múltiplos mais extremos do tape. Aqui estão os seis maiores excluídos por ela:
O SQL exato por trás de cada número
WITH sess AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 70 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 NOT IN ('SPCX')
GROUP BY ticker, d
),
cal AS (
SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
SELECT s.ticker AS ticker,
avgIf(s.vol, c.rn <= 5) AS adv_recent,
avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
countIf(c.rn <= 5) AS recent_sessions,
countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
FROM sess s INNER JOIN cal c ON s.d = c.d
GROUP BY s.ticker
HAVING adv_base > 100000 AND recent_sessions = 5 AND base_sessions >= 35
AND dollar_recent > 0 AND dollar_recent < 500000000
)
SELECT ticker,
round(adv_recent / adv_base, 1) AS rvol_week,
round(dollar_recent / 1e6, 1) AS week_dollar_m,
round(dollar_recent / (adv_recent * 5), 2) AS avg_share_price,
round(adv_base / 1e6, 2) AS baseline_adv_m
FROM per_name
ORDER BY rvol_week DESC, ticker ASC
LIMIT 6SOBR negociou 109.8x sua própria média, mas movimentou apenas US$ 262.4M na semana com preço médio de US$ 1.04. Em seguida: ZBAO com 109.3x sobre US$ 72M (preço médio de US$ 0.44), WRAP com 51.8x sobre US$ 162.5M, CPHI com 38.1x sobre US$ 31.8M, KAPA com 36.7x sobre US$ 9.5M, e LGPS com 20.2x sobre US$ 57.5M. Atividade real, genuinamente incomum para esses nomes — e uma categoria onde o múltiplo mascara um volume financeiro muito pequeno.
De onde vem o volume atípico
Os produtores recorrentes, para uma leitura mais rápida do board: semanas de resultados, a fonte programada; eventos corporativos — fusões, ofertas, inclusões e exclusões de índices — que trazem volume mecânico sem relação com a opinião de mercado; dinâmicas de squeeze, onde o volume se acumula sobre a velocidade do preço, o padrão documentado pelo explicativo de short squeeze; e novas listagens, que dominam seu próprio tape até que o float amadureça. O board de qualquer semana costuma ser uma mistura desses fatores, somada a um ou dois mistérios reais — e os mistérios são as linhas que valem o tempo extra de análise.
FAQ sobre volume incomum
O que é considerado volume incomum para uma ação?
Não existe um limite oficial, portanto utilize a distribuição: dos 647 nomes que superaram o piso desta página esta semana, apenas 2 negociaram a 10x seu próprio normal ou mais, e 95.4% negociaram abaixo de sua própria média. Qualquer valor acima de aproximadamente 2x já está entre os percentuais mais altos do mercado em uma semana específica.
Volume incomum é bullish ou bearish?
Nenhum dos dois — trata-se de atenção, e a atenção surge tanto em ralis quanto em colapsos. Esta semana, o líder do board fechou as cinco sessões 160.6% em relação ao seu preço de abertura e o oitavo nome fechou 8.7%; ambos se qualificaram exatamente pela mesma métrica.
Quanto tempo dura o volume incomum?
Geralmente por mais de um dia. O painel de persistência conta as sessões de cada nome do board que ficaram acima de duas vezes a base: esta semana, elas variam de 1 de cinco (HLI) a 3 de cinco (JLHL), e a sessão de maior volume costuma ocorrer antes do fim da semana, em vez de no seu último dia.
Por que a lista utiliza um piso de volume financeiro?
Um filtro por quantidade de ações sem esse limite ficaria repleto de tickers baratos onde o múltiplo é enorme, mas o capital não é: o maior nome excluído desta semana negociou 109.8x seu normal com um total de $262.4M, a um preço médio de $1.04 por ação. O piso semanal de $500M garante que cada linha do board seja economicamente relevante.
O volume incomum de ações também aparece no mercado de opções?
Frequentemente, sim — um alto volume de negociação de ações e de opções tende a ocorrer simultaneamente nos mesmos nomes, razão pela qual os traders acompanham ambos. No entanto, a atividade de opções é medida de forma diferente: contratos negociados é um número de fluxo, enquanto o open interest conta as posições ainda abertas, e os dois respondem a perguntas diferentes — veja volume de opções vs. open interest antes de interpretar qualquer alerta de "atividade incomum de opções".
Cada número acima é uma consulta armazenada e versionada — expanda o SQL sob qualquer painel para ver a métrica exata, ou execute o mesmo filtro em qualquer período desejado no terminal Strasmore.