¿Qué es el RVOL y cómo se interpreta?
El RVOL compara el volumen de una acción con su promedio de 20 días: sobre 1 indica más actividad de lo habitual. Incluye el RVOL intradía y qué nivel se considera alto.
El volumen relativo (RVOL) mide qué tan activa es la negociación de una acción en comparación con su nivel normal reciente: el volumen de acciones de la sesión dividido entre el volumen diario promedio de la acción, por lo general calculado sobre las 20 sesiones anteriores. Un RVOL de 1 corresponde a un día normal; 2 significa que cambiaron de manos el doble de acciones habituales, y 0.5 indica que la sesión opera a la mitad del ritmo normal. Todas las cifras de esta página se calculan con datos del mercado estadounidense a nivel de minuto, y cada panel incluye la consulta exacta utilizada.
¿Qué es el volumen relativo? Una definición sencilla
El volumen absoluto dice poco por sí solo: cinco millones de acciones representan una sesión muy tranquila para una empresa de mega capitalización, pero serían un evento excepcional para una empresa de baja capitalización. El volumen relativo hace explícita la comparación con el nivel normal de negociación de la propia acción:
RVOL = volumen del día ÷ volumen diario promedio de la acción (normalmente, las últimas 20 sesiones)
Ejemplo hipotético: una acción que negocia en promedio 10 millones de acciones al día y registra 25 millones al cierre termina con un RVOL de 2.5. Un print es una operación reportada a la cinta consolidada, el registro de ejecuciones de todo el mercado, y «la cinta» es la forma abreviada que usan los operadores para referirse a ese registro. El periodo de 20 sesiones es una convención. Algunas plataformas también utilizan 10, 30 o 50 días; equivale aproximadamente a un mes calendario de negociación. La ventana también incorpora las particularidades del calendario bursátil: una sesión reducida por festivo aporta solo una fracción del volumen de una sesión normal al promedio, y festivos bursátiles y cierres anticipados indica cuándo ocurren.
¿Por qué los traders siguen el volumen relativo?
El RVOL mide la participación, no la dirección. Los días con un RVOL alto suelen concentrarse alrededor de eventos identificables, como resultados, inclusiones en índices y noticias relevantes. Un movimiento de precio ejecutado con un volumen elevado cuenta con una mayor participación del mercado; el mismo movimiento con un RVOL de 0.3 puede ser obra de unas pocas órdenes. La actividad también está vinculada con la liquidez: entre las acciones, los nombres con menor volumen suelen tener los spreads entre bid y ask más amplios, publicados por los market makers que cotizan ambos lados durante toda la sesión. Además, en una misma acción, las cotizaciones suelen mostrar spreads algo más amplios en las sesiones de menor actividad que en las de mayor actividad. (El volumen también sustenta el VWAP, el precio promedio ponderado por volumen, la otra referencia importante basada en el volumen.)
Cómo calcular el volumen relativo y evitar la trampa de la hora del día
El cálculo para toda la sesión consiste en una división: el volumen total de la sesión ÷ el volumen diario promedio de las 20 sesiones. Solo es una medida fiable después del cierre. La trampa aparece cuando se calcula a mitad de la sesión: a las 10:30 a. m., el acumulado necesariamente representa una fracción de cualquier cifra de jornada completa, por lo que incluso una mañana con fuerte actividad puede parecer apagada. El volumen intradía sigue una forma de U a lo largo de la sesión, y cualquier RVOL intradía debe partir de ese patrón.
A continuación se muestra el patrón medido en SPY, el ETF del S&P 500: mediana de acciones negociadas por minuto en cada intervalo horario de 30 minutos durante las últimas 30 sesiones completadas, incluidos los horarios extendidos (de 4:00 a. m. a 8:00 p. m., hora del este).
| hora ET | volumen mediano por minuto (miles) |
|---|---|
| 04:00 | 0.6 |
| 04:30 | 0.3 |
| 05:00 | 0.3 |
| 05:30 | 0.3 |
| 06:00 | 0.4 |
| 06:30 | 0.5 |
| 07:00 | 1.1 |
| 07:30 | 1.6 |
| 08:00 | 2.2 |
| 08:30 | 3.3 |
| 09:00 | 4.7 |
| 09:30 | 113.2 |
| 10:00 | 82.9 |
| 10:30 | 77.6 |
| 11:00 | 64.3 |
| 11:30 | 52.3 |
| 12:00 | 49.3 |
| 12:30 | 43.5 |
| 13:00 | 43.4 |
| 13:30 | 36.8 |
El SQL exacto detrás de cada cifra
SELECT formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(quantileDeterministic(0.5)(toFloat64(volume), toUInt64(toUnixTimestamp(window_start))) / 1000, 1) AS median_minute_volume_k
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= now() - INTERVAL 30 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))
GROUP BY et_time
HAVING et_time >= '04:00' AND et_time < '20:00'
ORDER BY et_timeEn el intervalo de las 9:30, la primera media hora de la sesión regular, se negociaron una mediana de 113.2 mil acciones por minuto, frente a 4.7 mil en el intervalo premarket de las 9:00, inmediatamente anterior. El ritmo baja a 43.5 mil en el intervalo de las 12:30 y luego aumenta hacia el cierre: 152.6 mil en el intervalo de las 3:30, durante el repunte previo a la subasta de cierre y muy por encima del mínimo del horario de almuerzo. Después de la campana de las 4:00 p. m., el ritmo por minuto se desploma durante la operativa after-hours.
Volumen relativo intradía: ajuste por hora del día
La corrección cambia el denominador: compara el total acumulado de hoy con el promedio acumulado a la misma hora. Para ello, hay que conocer qué proporción del volumen de una sesión normal ya se ha negociado en cada momento del día. Aquí se mide con las últimas 20 sesiones completas de SPY:
| punto de control ET | % promedio del volumen diario ejecutado |
|---|---|
| 10:00 | 20.7 |
| 12:00 | 42.6 |
| 14:00 | 57.2 |
| 15:30 | 71.2 |
| 16:00 | 87.5 |
El SQL exacto detrás de cada cifra
WITH per_min AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_min,
sum(toFloat64(volume)) AS v
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= now() - INTERVAL 45 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))
GROUP BY et_date, et_min
),
last20 AS (
SELECT DISTINCT et_date FROM per_min ORDER BY et_date DESC LIMIT 20
)
SELECT checkpoint AS et_checkpoint,
round(avg(share) * 100, 1) AS avg_pct_of_day_volume_done
FROM (
SELECT et_date,
checkpoint,
sumIf(v, et_min < checkpoint) / sum(v) AS share
FROM (
SELECT et_date, et_min, v, arrayJoin(['10:00', '12:00', '14:00', '15:30', '16:00']) AS checkpoint
FROM per_min
WHERE et_date IN (SELECT et_date FROM last20)
)
GROUP BY et_date, checkpoint
)
GROUP BY checkpoint
ORDER BY checkpointA las 10:00 a. m., media hora después del inicio de la sesión regular, SPY normalmente ha registrado solo 20.7% de su volumen total del día; al mediodía, 42.6%; a las 2:00 p. m., 57.2%; y a las 3:30 p. m., todavía apenas 71.2%. Incluso al cierre de las 4:00 p. m., el total alcanza 87.5%. El resto se reporta a partir de las 16:00, y la mayor parte se registra en los primeros minutos después del cierre, cuando la subasta de cierre y otras operaciones de fin de sesión aparecen en el tape. La sesión after-hours tiene mucho menos volumen.
Esto coincide con el desplome que muestra el gráfico anterior: el ritmo por minuto cae con fuerza al cierre, aunque todavía se está reportando una parte significativa del volumen total del día. El RVOL matutino ajustado por hora divide el volumen acumulado de hoy entre el promedio de 20 días multiplicado por la proporción correspondiente a ese momento. Hay una salvedad: este calendario corresponde a SPY. Cada acción tiene su propio patrón horario, y el ejemplo desarrollado a continuación mide el de una sola emisora.
Ejemplo práctico: una sesión real con un volumen elevado (MU)
Junio de 2026 fue un mes de gran actividad para Micron. el análisis detallado de MU de junio de 2026 revisa toda la cinta de operaciones. Esta fue la sesión con mayor volumen de ese mes, con el cálculo de RVOL realizado de las dos formas:
| fecha de sesión | volumen a las 10:30 (millones) | volumen promedio a las 10:30 (millones) | RVOL ajustado a las 10:30 | RVOL simple a las 10:30 | volumen de la sesión (millones) | ADV móvil (millones) | RVOL del día completo |
|---|---|---|---|---|---|---|---|
| 2026-06-25 | 32.8 | 17.3 | 1.9 | 0.64 | 77.2 | 51 | 1.5 |
El SQL exacto detrás de cada cifra
WITH mu_daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sum(toFloat64(volume)) AS day_volume,
sumIf(toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '10:30') AS vol_by_1030
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2026-04-15 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-01 00:00:00', 'America/New_York')
GROUP BY et_date
HAVING day_volume > 1000000
),
biggest AS (
SELECT et_date, day_volume, vol_by_1030
FROM mu_daily
WHERE et_date >= toDate('2026-06-01') AND et_date <= toDate('2026-06-30')
ORDER BY day_volume DESC
LIMIT 1
),
trailing AS (
SELECT sum(day_volume) / 20 AS adv, sum(vol_by_1030) / 20 AS avg_by_1030
FROM (
SELECT day_volume, vol_by_1030
FROM mu_daily
WHERE et_date < (SELECT et_date FROM biggest)
ORDER BY et_date DESC
LIMIT 20
)
)
SELECT formatDateTime((SELECT et_date FROM biggest), '%Y-%m-%d') AS session_date,
round((SELECT vol_by_1030 FROM biggest) / 1e6, 1) AS vol_by_1030_m,
round((SELECT avg_by_1030 FROM trailing) / 1e6, 1) AS avg_vol_by_1030_m,
round((SELECT vol_by_1030 FROM biggest) / (SELECT avg_by_1030 FROM trailing), 1) AS rvol_1030_adjusted,
round((SELECT vol_by_1030 FROM biggest) / (SELECT adv FROM trailing), 2) AS rvol_1030_naive,
round((SELECT day_volume FROM biggest) / 1e6, 1) AS session_volume_m,
round((SELECT adv FROM trailing) / 1e6, 1) AS trailing_adv_m,
round((SELECT day_volume FROM biggest) / (SELECT adv FROM trailing), 1) AS rvol_full_dayLa mayor sesión de MU del mes fue el 2026-06-25. A las 10:30 a. m. de ese día, se habían negociado 32.8 millones de acciones, frente a un promedio de 17.3 millones a la misma hora durante las 20 sesiones anteriores. El RVOL ajustado por hora era de 1.9. Si se divide ese total de la mañana entre el promedio de jornada completa de 51 millones, la lectura ingenua es 0.64: un día por debajo del promedio, aparentemente, pese a una mañana que avanzaba a casi el doble de su ritmo habitual. La sesión terminó con 77.2 millones de acciones negociadas, lo que equivale a un RVOL de jornada completa de 1.5.
Esa cifra de cierre puede parecer modesta frente a las capturas de pantalla de valores que se mueven con un volumen diez veces superior al promedio. Determinar si realmente es modesta requiere analizar una distribución, que es lo que haremos a continuación.
¿Qué se considera un volumen relativo alto?
En los foros de trading suelen circular umbrales como “un RVOL superior a 2 es alto”. Esta es la versión basada en datos: RVOL de la sesión completa para todas las acciones y ETF cotizados en Estados Unidos con un volumen diario promedio de 20 días superior a 5 millones de acciones y un historial completo de las 20 sesiones anteriores, ordenados por percentiles dentro del grupo para la sesión completada más reciente de nuestros datos. Una precisión sobre la etiqueta: el filtro cuenta acciones, no dólares. Por eso, este grupo de alto volumen incluye desde mega caps y ETF hasta small caps baratas y con una rotación elevada. Un volumen alto de acciones no equivale necesariamente a una operativa sencilla.
| percentil | RVOL |
|---|---|
| p10 | 0.08 |
| p25 | 0.57 |
| p50 (median) | 0.86 |
| p75 | 1.2 |
| p90 | 1.69 |
| p99 | 3.43 |
El SQL exacto detrás de cada cifra
WITH daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
toFloat64(sum(volume)) AS day_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 40 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))
GROUP BY ticker, et_date
),
spy_days AS (
SELECT et_date,
day_volume,
avg(day_volume) OVER (ORDER BY et_date ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS prior_avg
FROM daily
WHERE ticker = 'SPY' AND day_volume > 10000000
),
sessions AS (
SELECT et_date FROM spy_days
),
latest AS (
SELECT max(et_date) AS d FROM spy_days WHERE prior_avg > 0 AND day_volume >= 0.6 * prior_avg
),
prior20 AS (
SELECT et_date FROM sessions WHERE et_date < (SELECT d FROM latest) ORDER BY et_date DESC LIMIT 20
),
rvols AS (
SELECT ticker, day_vol / adv20 AS rvol
FROM (
SELECT ticker,
sumIf(day_volume, et_date = (SELECT d FROM latest)) AS day_vol,
sumIf(day_volume, et_date IN (SELECT et_date FROM prior20)) / 20 AS adv20,
countIf(day_volume > 0 AND et_date IN (SELECT et_date FROM prior20)) AS sessions_traded
FROM daily
WHERE ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING adv20 > 5000000 AND day_vol > 0 AND sessions_traded = 20
)
)
SELECT pair.1 AS percentile,
round(pair.2, 2) AS rvol
FROM (
SELECT arrayJoin(arrayZip(['p10', 'p25', 'p50 (median)', 'p75', 'p90', 'p99'], quantilesExact(0.1, 0.25, 0.5, 0.75, 0.9, 0.99)(rvol))) AS pair
FROM rvols
)
ORDER BY percentileEl valor mediano de este grupo de alto volumen negoció a 0.86 veces su propio promedio de 20 días. Nueve de cada diez valores quedaron por debajo de 1.69, y solo uno de cada cien superó 3.43. Si se compara la sesión de MU de la sección anterior con esta tabla, deja de parecer modesta. Incluso los valores más activos pasan la mayoría de las sesiones cerca de su propio promedio; los múltiplos de ese promedio son poco frecuentes.
También importa la cola inferior. El percentil 10 se situó en 0.08. Lecturas tan bajas suelen indicar que el promedio de 20 días de una acción todavía incluye una sesión excepcionalmente grande. Después de un spike, el denominador inflado mantiene el RVOL bajo durante semanas. La ventana conserva memoria en ambas direcciones.
Una salvedad: se trata de una sección transversal de una sola sesión. Los percentiles cambian día a día, y las sesiones con eventos de mercado generalizados —como rebalanceos de índices o vencimientos de opciones— pueden elevar toda la curva.
¿Qué acciones registraron un volumen inusual? El ranking de RVOL
Mismo universo, con un ordenamiento distinto (la versión semanal permanente está en acciones con volumen inusual esta semana): las diez lecturas de RVOL intradía más altas de la sesión 2026-08-21 entre las acciones cuyo promedio diario supera los 5 millones de títulos. Es el tipo de lista que un screener marcaría por volumen inusual. El filtro exige 20 sesiones previas completas. Las cotizaciones recientes no tienen un promedio de 20 días representativo y, de otro modo, llenarían la lista con datos espurios.
| ticker | fecha de sesión | volumen de la sesión (millones) | ADV de 20 días (millones) | RVOL |
|---|---|---|---|---|
| HOWL | 2026-08-21 | 265 | 5.3 | 50 |
| CAN | 2026-08-21 | 93 | 11 | 8.5 |
| LGCL | 2026-08-21 | 88.1 | 13.1 | 6.8 |
| MRNA | 2026-08-21 | 88.1 | 16 | 5.5 |
| PURR | 2026-08-21 | 36.7 | 9.8 | 3.8 |
| BABA | 2026-08-21 | 32.1 | 8.7 | 3.7 |
| COIN | 2026-08-21 | 24.5 | 7.1 | 3.4 |
| BITX | 2026-08-21 | 26.7 | 8.3 | 3.2 |
| GOSS | 2026-08-21 | 130.9 | 41 | 3.2 |
| TEM | 2026-08-21 | 16.2 | 5.1 | 3.2 |
El SQL exacto detrás de cada cifra
WITH daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
toFloat64(sum(volume)) AS day_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 40 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) < toDate(toTimeZone(now(), 'America/New_York'))
GROUP BY ticker, et_date
),
spy_days AS (
SELECT et_date,
day_volume,
avg(day_volume) OVER (ORDER BY et_date ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS prior_avg
FROM daily
WHERE ticker = 'SPY' AND day_volume > 10000000
),
sessions AS (
SELECT et_date FROM spy_days
),
latest AS (
SELECT max(et_date) AS d FROM spy_days WHERE prior_avg > 0 AND day_volume >= 0.6 * prior_avg
),
prior20 AS (
SELECT et_date FROM sessions WHERE et_date < (SELECT d FROM latest) ORDER BY et_date DESC LIMIT 20
)
SELECT ticker,
formatDateTime((SELECT d FROM latest), '%Y-%m-%d') AS session_date,
round(day_vol / 1e6, 1) AS session_volume_m,
round(adv20 / 1e6, 1) AS adv_20d_m,
round(day_vol / adv20, 1) AS rvol
FROM (
SELECT ticker,
sumIf(day_volume, et_date = (SELECT d FROM latest)) AS day_vol,
sumIf(day_volume, et_date IN (SELECT et_date FROM prior20)) / 20 AS adv20,
countIf(day_volume > 0 AND et_date IN (SELECT et_date FROM prior20)) AS sessions_traded
FROM daily
WHERE ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING adv20 > 5000000 AND day_vol > 0 AND sessions_traded = 20
)
ORDER BY rvol DESC, ticker
LIMIT 10En la parte alta de la lista, HOWL registró 265 millones de títulos, frente a un promedio de 20 días de 5.3 millones. Su RVOL fue de 50. Todas las acciones de la lista superaron su propio promedio. Listas como esta tienden a excluir a las mega caps más conocidas: duplicar un promedio ya enorme exige una cantidad extraordinaria de títulos, mientras que una acción más pequeña puede multiplicar su volumen en una sola sesión.
Notas sobre los datos: selección y exclusiones
Ambas tablas ordenadas utilizan el mismo universo y la misma regla de selección de sesiones. Una sesión candidata solo cuenta como completa cuando el volumen negociado de SPY para esa fecha alcanza al menos el 60% del volumen promedio de las 20 sesiones previas de SPY. Los datos del día más reciente llegan con retraso. Esta comprobación evita interpretar un día cargado parcialmente como una sesión completa. Ambas tablas también excluyen un símbolo que las bolsas reasignaron recientemente a una nueva cotización: los feeds de los proveedores incluyen bajo ese ticker el historial de dos empresas diferentes, por lo que su promedio de 20 días no constituye una referencia representativa. La lista de exclusiones en SQL se mantiene sincronizada con nuestras comprobaciones de identidad de símbolos en cada actualización. Si se identifica otro símbolo reutilizado, se añade de la misma manera.
Preguntas frecuentes
¿Cuál es un buen nivel de RVOL?
No existe un umbral oficial. En las acciones estadounidenses de alto volumen observadas durante la sesión completada más reciente de nuestros datos, la acción mediana registró 0.86 veces su promedio de 20 días, el percentil 90 fue 1.69 y el percentil 99 fue 3.43.
¿Qué significa un RVOL de 2?
La acción ha negociado el doble de su volumen promedio durante la ventana medida, normalmente las 20 sesiones anteriores. La hora es importante: un valor de 2 frente al promedio para la misma hora del día representa una lectura sólida a mitad de la sesión; un valor de 2 al cierre indica una jornada al doble del ritmo normal.
¿Cómo se calcula el volumen relativo intradía?
Divide el volumen acumulado de hoy entre el volumen acumulado promedio a la misma hora durante el periodo de referencia. Dividir un total de media mañana entre un promedio de jornada completa subestima considerablemente la lectura. A las 10:00 a. m., SPY normalmente solo ha completado 20.7% de su volumen final del día.
¿El volumen relativo incluye la operativa premarket y after-hours?
Las convenciones de las plataformas varían. Esta página cuenta cada barra de un minuto del día calendario en horario del Este, incluidas las horas extendidas. En SPY, la contribución del premarket es claramente pequeña: una mediana de 4.7 mil acciones por minuto en el intervalo de las 9:00, frente a 113.2 mil justo después de la apertura.
¿Un volumen relativo alto es alcista o bajista?
Ninguna de las dos cosas. El RVOL mide la participación, no la dirección. Un flujo de negociación intenso aparece tanto en los mejores como en los peores días de una acción. Históricamente, las sesiones con RVOL alto han coincidido con resultados empresariales, cambios en índices y noticias relevantes. El indicador muestra que hubo una participación elevada, no hacia dónde se inclina el mercado.
Cada panel anterior incluye el SQL exacto que lo generó. Abre uno, sustituye el ticker por el tuyo y mide el RVOL de las acciones que realmente operas en la terminal de Strasmore.