Ano ang RVOL (Relative Volume) at Paano Basahin Ito
Ang RVOL o relative volume ay volume ng stock na hinati sa 20-araw average: above 1 ay mas abala kaysa karaniwan. May intraday time-of-day RVOL at kung ano ang mataas.
Ang relative volume (RVOL) ay sinusukat kung gaano kaabala ang pag-trade ng isang stock kung ihahambing sa sarili nitong kamakailang normal: ang share volume ng session na hinati sa average daily volume ng stock, karaniwang kinukuha mula sa nakalipas na 20 session. Ang RVOL na 1 ay pangkaraniwang araw, ang 2 ay nangangahulugang doble ng karaniwang shares ang ipinagpalit, at ang 0.5 ay nagsasaad ng session na tumatakbo sa kalahating tulin. Ang bawat numero sa pahinang ito ay sinusukat mula sa minute-level na data ng US market, kasama ang eksaktong query na nakalakip sa bawat panel.
Ano ang relative volume? Isang simpleng depinisyon
Ang raw volume ay halos walang kahulugan mag-isa: limang milyong shares ay tahimik na araw para sa isang mega-cap at isang beses-sa-taong event para sa isang small-cap. Ang relative volume ay ginagawang malinaw ang paghahambing sa sariling normal ng stock:
RVOL = volume ng araw ÷ average daily volume ng stock (karaniwang huling 20 sessions)
Isang hypothetical na halimbawa: isang stock na nag-aaverage ng 10 milyong shares sa isang araw at nag-print ng 25 milyon sa pag-close ay natapos sa RVOL na 2.5. (Ang print ay isang trade na ini-report sa consolidated tape — ang market-wide record ng executions — at ang "the tape" ay trader shorthand para sa record na iyon.) Ang 20-session lookback ay isang convention — gumagamit din ang mga platform ng 10, 30, o 50 araw; ito ay roughly isang calendar month ng trading. Ang window ay minana rin ang mga quirks ng exchange calendar: ang holiday half-day ay nagdadagdag lamang ng isang fraction ng normal session's volume sa average, at market holidays at early closes ay nagmamapa kung saan nakatira ang mga iyon.
Bakit binabantayan ng mga trader ang relative volume?
Ang RVOL ay isang participation gauge, hindi direction gauge. Nagkukumpulan ang mga araw na may mataas na RVOL sa paligid ng mga natutukoy na event — earnings, index additions, headline news. Ang isang price move na na-print sa heavy volume ay may crowd sa likod nito; ang parehong move sa RVOL na 0.3 ay maaaring gawa ng iilang orders lamang. Kasama rin ang activity sa tradability: sa iba't ibang stocks, ang mga pinaka-thinly traded na pangalan ang may pinakamalawak na bid-ask spreads, na i-post ng mga market makers na nag-quote sa parehong side buong araw, at para sa anumang isang stock, ang mga quotes ay karaniwang medyo mas malawak sa pinaka-quietest na sessions nito kaysa sa pinaka-busy. (Ang volume ang pundasyon din ng VWAP, ang volume-weighted average price — ang isa pang malaking volume-based reference.)
Paano kalkulahin ang relative volume — at ang time-of-day na patibong
Ang buong-day na kalkulasyon ay iisang dibisyon lang: kabuuang volume ng session ÷ 20-session average daily volume. Makatotohanan lang ito pagkatapos ng close. Ang patibong ay ang pagpapatakbo nito mid-session: sa 10:30 a.m., ang running total ay natural na isang bahagi ng anumang full-day na pigura, kaya kahit isang marahas na umaga ay mukhang tahimik. Ang intraday volume ay sumusunod sa isang U-shape sa buong orasan, at ang anumang intraday na RVOL ay dapat magsimula sa hugis na iyon.
Nasa ibaba ang hugis, na sinusukat sa SPY, ang S&P 500 ETF: median na shares na na-trade kada minuto sa bawat 30-minutong clock bucket sa loob ng huling 30 araw ng natapos na session, kasama ang extended hours (4:00 a.m. hanggang 8:00 p.m. Eastern Time).
Ang eksaktong SQL sa likod ng bawat numero
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_timeAng 9:30 bucket — ang unang kalahating oras ng regular trading — ay nagkaroon ng median na 136 libong shares kada minuto, laban sa 3.5 libo sa 9:00 premarket bucket na kaagad bago nito. Ang tempo ay manipis sa 49.5 libo sa 12:30 bucket, pagkatapos ay bumuo patungo sa close: 168.3 libo sa 3:30 bucket, ang takbo pataas sa closing auction at malayo sa lunch trough. Pagkatapos ng 4:00 p.m. bell, ang per-minute na tempo ay nahuhulog sa after-hours trading.
Intraday relative volume: ayusin ayon sa oras ng araw
Inaayos ng fix ang denominator: ihambing ang tumatakbong total ngayong araw sa average na tumatakbong total sa parehong oras sa reloj. Kailangan nito ang kabahagi ng isang karaniwang dami ng araw na tapos na sa bawat punto sa reloj — sukat dito sa huling
Ang eksaktong SQL sa likod ng bawat numero
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 checkpointna nakumpletong sesyon ng SPY.
Sa 10:00 a.m., kalahating oras na ang regular na trading, karaniwang nakapag-print na ang SPY ng halos 12.4% ng kabuuang volume nito sa buong araw; sa tanghaling-tapat 34.8%, sa 2:00 p.m. 51.1%, sa 3:30 p.m. nasa 67.3% pa rin. Kahit sa 4:00 p.m. na closing bell, nasa 85.7% lang ang kabuuan — lahat ng iba ay iniuulat sa o pagkatapos ng 16:00, at karamihan nito ay bumabagsak sa unang minuto matapos ang bell, kapag tumatama sa tape ang closing auction at iba pang end-of-day na trade; ang after-hours session mismo ay mas manipis. Tumutugma ito sa cliff sa chart sa itaas: bagsak ang per-minute pace sa bell kahit na may makabuluhang hiwa pa ng kabuuan ng araw ang iniuulat. Ang isang time-adjusted na morning RVOL ay naghahati ngayong cumulative volume sa 20-day average na pinararan ng checkpoint share. Isang caveat: schedule na ito ay para sa SPY lang — bawat stock ay may sariling reloj, at sinusukat ng worked example sa baba ang isang pangalan.
Isang detalyadong halimbawa: isang tunay na heavy-volume session (MU)
Hunyo 2026 ay mabigat na buwan para sa Micron — ang MU Hunyo 2026 deep-dive ay tumatakbo sa buong tape. Narito ang pinakamalaking volume session ng buwan na iyon, kasama ang RVOL math na ginawa sa parehong paraan:
Ang eksaktong SQL sa likod ng bawat numero
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_dayAng pinakamalaking session ng MU noong buwan ay natapos sa 2026-06-25. Sa 10:30 a.m. sa araw na iyon, 32.8 milyong shares ang nai-trade, laban sa average na 17.3 milyon sa parehong oras sa nakaraang 20 sessions — isang time-adjusted RVOL na 1.9. Hatiin ang kabuuang dami sa umaga sa full-day average na 51 milyon sa halip at ang naive reading ay 0.64: isang below-average na araw, ayon sa hitsura, sa isang umaga na tumatakbo nang halos dalawang beses kaysa sa karaniwang bilis nito. Ang session ay nagtapos sa 77.2 milyong shares, isang full-day RVOL na 1.5.
Ang numerong iyon sa pagsasara ay maaaring magmukhang katamtaman sa tabi ng mga screenshot ng ten-times-average movers — kung ito ay tunay na katamtaman ay isang tanong para sa isang distribution, na susukat sa susunod.
Ano ang maituturing na mataas na relative volume?
Nagtatakda ang mga trading forum ng mga threshold tulad ng "RVOL na higit sa 2 ay mataas." Narito ang sinusukat na bersyon: full-day RVOL para sa bawat US-listed stock at ETF na may 20-day average daily volume na higit sa 5 milyong shares (at may kumpletong 20 nakaraang sesyon ng history), na ini-percentile sa buong grupo para sa pinakahuling natapos na sesyon sa aming data. Isang paalala sa label: binibilang ng screen ang shares, hindi dollars, kaya ang high-volume group na ito ay sumasaklaw mula sa mga mega-cap at ETF pababa sa mga murang, high-churn small-cap — ang mataas na share volume ay hindi katumbas ng madaling tradability.
Ang eksaktong SQL sa likod ng bawat numero
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 percentileAng median na pangalan sa high-volume group na ito ay nakipagkalakalan sa 0.73 beses ng sarili nitong 20-day average. Siyam sa sampung pangalan ay pumasok sa ibaba 1.37, at isa lang sa bawat daan ang lumampas sa 4.71. Ihambing ang sesyon ng MU mula sa nakaraang seksyon sa talahanayang ito at tumitigil na itong maging katamtaman — kahit ang mga abalang pangalan ay gumugugol ng karamihan ng mga araw malapit sa sarili nilang average; ang mga multiple nito ay bihira.
Mahalaga rin ang bottom tail: ang ika-10 percentile ay nasa 0.11. Ang mga reading na ganoon ka-baba ay karaniwang nagmamarka ng isang stock na ang 20-day average ay mayroon pa ring isang malaking sesyon — pagkatapos ng spike, ang inflated denominator ay nagpapababa ng RVOL sa loob ng mga linggo. Ang window ay may memorya, sa parehong direksyon.
Isang caveat: ito ay cross-section ng isang sesyon — ang mga percentile ay lumulutang araw-araw, at ang mga market-wide event day (index rebalances, option expirations) ay maaaring itaas ang buong curve.
Aling mga stock ang may hindi pangkaraniwang volume? Ang RVOL leaderboard
Parehong uniberso, naka-rank (ang nakatayong lingguhang bersyon ay nasa mga stock na may hindi pangkaraniwang volume ngayong linggo): ang sampung pinakamataas na full-day na RVOL reading ng 2026-07-21 session mula sa mga pangalan na may average na mahigit 5 milyong shares kada araw — ang board na i-flag ng isang screener bilang hindi pangkaraniwang volume. Ang screen ay nangangailangan ng kumpletong 20 na nakaraang session — ang mga bagong listing ay walang makabuluhang 20-day average at kung hindi ay pupunuin ang board ng mga artifact.
Ang eksaktong SQL sa likod ng bawat numero
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 10Ang tuktok ng board, LBGJ, nag-print ng 169.2 milyong shares laban sa 20-day average na 5.1 milyon — isang RVOL na 33.3. Bawat row ay lumampas sa sarili nitong average. Ang mga board na tulad nito ay lumilihis mula sa mga kilalang mega-cap — ang pagdodoble ng isang napakalaking average ay nangangailangan ng kahanga-hangang bilang ng shares, habang ang isang mas maliit na pangalan ay maaaring i-multiply ang tape nito sa isang session.
Mga tala sa data: pagpili ng session at mga pagbubukod
Parehong ranked table ang gumagamit ng parehong uniberso at parehong session rule. Ang isang kandidatong session ay binibilang lamang bilang kumpleto kapag ang tape ng SPY para sa petsang iyon ay umabot na sa hindi bababa sa 60% ng sariling prior-20-session average volume ng SPY — ang data ng pinakabagong araw ay dumarating na may lag, at ang check na ito ay nagpipigil sa isang bahagyang na-load na araw na basahin bilang natapos na session. Parehong mga table ay nagbubukod din ng isang symbol na kamakailan na i-reassign ng mga exchange sa isang bagong listing: ang mga vendor feed ay nagdadala ng kasaysayan ng dalawang magkaibang kumpanya sa ilalim ng ticker na iyon, kaya ang 20-day average nito ay hindi isang makabuluhang baseline. Ang exclusion list sa SQL ay pinapanatiling naka-sync sa aming mga symbol-identity check sa bawat refresh; ang anumang bagong na-flag na reused symbol ay idinaragdag sa parehong paraan.
FAQ
Magandang numero ng RVOL?
Walang opisyal na threshold. Sinukat sa mga high-volume na US stock sa pinakahuling nakumpletong session sa aming data, ang median na pangalan ay tumakbo sa 0.73 beses ng 20-day average nito, ang 90th percentile ay 1.37, at ang 99th ay 4.71.
Ano ang ibig sabihin ng RVOL na 2?
Ang stock ay nakipag-trade ng dalawang beses ng average volume nito para sa measured window, karaniwang ang trailing 20 sessions. Mahalaga ang oras: ang 2 laban sa same-time-of-day average ay isang malakas na mid-session reading; ang 2 sa close ay nagma-marka ng isang araw na doble ang normal na bilis.
Paano mo kalkulahin ang relative volume intraday?
Hatiin ang cumulative volume ngayong araw sa average cumulative volume sa parehong oras ng clock sa loob ng iyong lookback window. Ang paghahati ng mid-morning total sa full-day average ay maling nagpapababa sa reading — sa 10:00 a.m., ang SPY ay karaniwang nakakumpleto lamang ng 12.4% ng eventual day volume nito.
Kasama ba sa relative volume ang premarket at after-hours trading?
Magkakaiba ang mga convention ng platform; ang page na ito ay binibilang ang bawat minute bar sa Eastern Time calendar day, kasama ang extended hours. Para sa SPY, ang kontribusyon ng premarket ay maliit na nakikita — isang median na 3.5 thousand shares kada minuto sa 9:00 bucket kumpara sa 136 thousand kaagad pagkatapos ng open.
Bullish ba o bearish ang mataas na relative volume?
Wala sa dalawa. Ang RVOL ay sumusukat sa participation, hindi sa direction — ang mabigat na tape ay lumalabas sa pinakamaganda at pinakamasamang araw ng stock. Ang mga high-RVOL session ay historically nag-coincide sa earnings, index changes, at headline news; sinasabi ng numero na dumating ang crowd, hindi kung aling direksyon ang kanilang ikinakiling.
Ang bawat panel sa itaas ay may dala-dalang eksaktong SQL na gumawa nito — buksan ang isa, palitan ng iyong sariling ticker, at sukatin ang RVOL para sa mga pangalan na talagang ini-trade mo sa Strasmore terminal.