VWAP 거래량 가중 평균 가격이란 무엇인가
VWAP(Volume-Weighted Average Price)의 정의와 계산 방식을 설명한다. 실제 거래 데이터 기반의 평균 가격을 확인해 보라.
VWAP은 거래량 가중 평균 가격(volume-weighted average price)을 의미한다. 이는 거래 세션 동안 주당 실제로 지불된 평균 가격으로, 총 거래 대금을 총 거래 주식 수로 나누어 계산하며 매일 새롭게 시작된다. 거래량이 많은 분은 거래가 적은 분보다 더 큰 비중을 차지하며, 이로 인해 VWAP은 "오늘 이 주식이 실제로 어느 가격에서 거래되었는가?"라는 질문에 대한 표준적인 해답이 된다. 이 페이지의 모든 수치는 실제 분봉(minute bars)과 개별 거래에 대해 검증 가능한 저장된 쿼리를 통해 산출된다.
주식에서 VWAP의 의미는 무엇인가?
주식 차트는 매 분마다의 가격을 보여주지만, 모든 가격이 동일하게 중요한 것은 아니다. 어떤 분에는 수십만 주가 거래될 수 있고, 다른 분에는 그의 아주 작은 일부만 거래될 수 있다. 단순 평균은 이러한 분봉 가격들을 동일하게 취급한다. 반면 VWAP은 각 가격에 거래된 주식 수를 가중치로 적용하므로, 실제 거래가 발생한 지점에 평균값이 위치하게 된다.
다르게 표현하면, VWAP은 '분당' 평균이 아니라 '주당' 평균이다. 만약 오늘 거래된 모든 주식을 일렬로 세우고 각 주식의 거래 가격을 묻는다면, VWAP은 그 답변들의 평균값이 된다.
정의에 따라 두 가지 특성이 도출된다. VWAP은 개별 종목별로 적용된다. 즉, Apple의 VWAP이 Microsoft의 VWAP에 대해 아무것도 말해주지 않는다. 또한 VWAP은 세션별로 적용되며, 다음 개장 시 누적 합계가 다시 zero에서 시작된다.
VWAP은 어떻게 계산되는가?
계산 공식은 간단하다.
- 각 분봉의 가격에 해당 분의 거래량을 곱한다.
- 세션 동안 이 곱셈 값들을 모두 더한다.
- 총 거래 주식 수로 나눈다.
가상의 사례를 들어보자. 어떤 주식이 오늘 정확히 두 번 거래되었다고 가정하자. 10.00달러에 100주, 그리고 11.00달러에 900주가 거래되었다. 두 가격의 단순 평균은 10.50달러이다. 하지만 1,000주 중 900주가 11.00달러에 거래되었으므로, 주당 평균 지불 금액은 (100 × $10.00 + 900 × $11.00) ÷ 1,000 = $10.90이 된다. 이 $10.90이 VWAP이다. 두 번째 거래의 규모 때문에 가격이 11달러 쪽으로 끌려간 결과이다.
실제로는 수백만 건의 거래를 수동으로 더하지 않는다. 표준적인 약식 방법은 분봉을 사용하는 것이다. 즉, 각 분의 가격에 거래량을 곱한 값을 모두 더한 뒤 총 거래량으로 나누는 방식이다. 두 가지 관례를 유의해야 한다. 첫째, 이 페이지의 모든 수치는 오전 9:30 개장부터 오후 3:59(ET) 마지막 분봉까지의 정규 세션 분봉만을 사용한다. 오후 4:00 종가 경매(closing auction)는 해당 분봉 직후에 기록되므로 이 수치에서 제외되지만, 기관들이 체결 품질을 평가할 때 사용하는 전체 일일 벤치마크 VWAP에는 일반적으로 포함된다. 둘째, 많은 차트 플랫폼은 일일 VWAP을 오전 4:00 프리마켓부터 시작한다. 이러한 관례에 따라 동일한 날의 동일한 주식이라도 서로 다른 수치가 나올 수 있다.
실제 거래일의 VWAP
실제 사례를 살펴보자. 2026년 7월 2일의 Apple 데이터이다. 이는 검증된 전체 세션(우리 데이터에는 390개의 분봉이 포함됨)이며, 시장 휴장 일정에 따른 독립기념일 휴장 전 마지막 완전한 거래일이다. 차트는 5분마다 가격과 누적 VWAP을 샘플링한다.
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT et_time, price, running_vwap
FROM (
SELECT window_start,
formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_time,
round(close, 2) AS price,
round(sum(close * volume) OVER (ORDER BY window_start)
/ sum(volume) OVER (ORDER BY window_start), 2) AS running_vwap
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
AND window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York')
)
WHERE toMinute(window_start) % 5 = 4
ORDER BY window_start오전 09:34(ET)의 첫 번째 샘플링 분봉에서 가격($298.2)과 누적 VWAP($298.09)는 거의 일치한다. 거래량이 불과 몇 분 정도만 축적되었기 때문이다. 마지막 분봉에서 가격은 $308.22였고, 누적 VWAP은 $305.99로 결정되었다. 이것이 세션 VWAP이다. VWAP 선은 시간이 지날수록 안정화된다. 오후가 되면 수 시간 동안 축적된 거래량이 반영되므로, 단일 분봉이 이를 크게 변화시킬 수 없다.
가중치를 보여주는 수치가 하나 더 있다. 첫 30분 동안 세션 거래량의 14.9%가 발생했다. 이는 390분인 세션 시간 중 차지하는 비중의 약 두 배이다. 그리고 이 초기 대량 거래 분봉들은 오후 거래 가격보다 낮은 가격에서 기록되었다. 거래량은 개장 시점과 오후 4:00 종가 경매가 다가올 때 집중된다. 이는 상대 거래량 수치가 조정해야 하는 U자형 일중 패턴과 동일하며, VWAP은 거래량이 집중된 구간에 더 많은 가중치를 부여한다.
VWAP vs. 이동평균
이동평균(moving average) 또한 가격을 매끄럽게 보여주므로 두 개념은 자주 혼동된다. 차이점은 기계적인 방식에 있다.
- 단순 이동평균(simple moving average)은 최근 N개의 종가를 가져와 거래량과 상관없이 각 가격에 동일한 가중치를 부여한다. 이는 슬라이딩 방식이다. 예를 들어 오후 2:00의 20분 이동평균은 1:40부터 2:00까지의 데이터만 포함하며 그 외에는 포함하지 않는다.
- VWAP은 개장 벨부터 누적되며, 모든 분봉에 거래량 가중치를 적용하고 다음 개장 시 초기화된다. VWAP은 "최근 가격이 어떠했는가?"가 아니라 "오늘 평균적으로 매수자가 얼마에 샀는가?"라는 다른 질문에 답한다.
가중 평균과 비가중 평균의 차이가 핵심이며, 다음 데이터 행이 이를 보여준다.
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT formatDateTime(toDate(toTimeZone(min(window_start), 'America/New_York')), '%Y-%m-%d') AS session_date,
count() AS minute_bars,
round(sum(close * volume) / sum(volume), 2) AS session_vwap,
round(avg(close), 2) AS unweighted_avg_price,
round(argMax(close, window_start), 2) AS final_minute_price,
round((avg(close) - sum(close * volume) / sum(volume)) * 100) AS avg_premium_cents,
round(toFloat64(sum(volume)) / 1e6) AS total_volume_millions,
round(sumIf(toFloat64(volume), window_start < toDateTime('2026-07-02 10:00:00', 'America/New_York'))
/ toFloat64(sum(volume)) * 100, 1) AS first_30min_volume_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
AND window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York')Apple의 390개 분봉 종가를 동일한 가중치로 평균하면 $306.54이다. 동일한 종가에 각 분의 거래량을 가중치로 적용하면 $305.99가 되며, 이는 55센트 더 낮다. 동일한 날, 동일한 분봉, 동일한 60백만 주를 사용했음에도 불구하고, 분(minute) 대신 주식 수(shares)를 계산에 넣었다는 점만 다르다. 부호가 중요하다. 동일 가중치 평균이 VWAP보다 높다면, 거래량이 많은 분에 거래된 가격이 그날의 평균 가격보다 낮았음을 의미한다. 세션의 마지막 분봉은 $308.22에 기록되었으며, 공식 종가는 잠시 후 종가 경매를 통해 결정된다.
분봉 기반 VWAP의 정확도는 어느 정도인가?
VWAP은 거래를 기준으로 정의되므로 분봉은 근사치이다. 이러한 약식 방식의 비용은 무엇인가? 대부분의 설명 자료는 이를 확인하지 않는다. 여기 동일한 세션의 VWAP을 통합 테이프(consolidated tape)의 모든 개별 거래 기록을 사용하여 계산한 값과 분봉 버전을 비교한 결과가 있다. (공식 및 벤더 VWAP도 평균가 거래와 같은 특정 조건의 기록을 일부 제외하므로 플랫폼마다 미세한 차이가 있을 수 있다.)
모든 수치 뒤에 숨겨진 정확한 SQL
WITH every_trade AS (
SELECT round(sum(price * size) / sum(size), 4) AS trade_vwap,
round(count() / 1e6, 1) AS trades_millions
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND sip_timestamp < toDateTime('2026-07-02 16:00:00', 'America/New_York')
),
minute_bars AS (
SELECT round(sum(close * volume) / sum(volume), 4) AS bar_vwap
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
AND window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York')
)
SELECT every_trade.trade_vwap AS trade_level_vwap,
minute_bars.bar_vwap AS minute_bar_vwap,
round(abs(every_trade.trade_vwap - minute_bars.bar_vwap) * 100, 1) AS gap_cents,
round(abs(every_trade.trade_vwap - minute_bars.bar_vwap) / every_trade.trade_vwap * 10000, 1) AS gap_bps,
every_trade.trades_millions
FROM every_trade, minute_bars1.1백만 건의 개별 거래를 기준으로 한 거래 레벨 VWAP은 $305.9162였고, 분봉 약식 방식은 $305.9908를 기록했다. 두 값의 차이는 7.5센트이며, 이는 주가 대비 2.4 베이시스 포인트(basis points, 0.01%)이다. 이날의 세션 기준선으로서 분봉 약식 방식은 거래별 수치와 10센트 이내의 차이를 유지했다.
모든 주식의 VWAP은 동일한가?
시장 전체를 아우르는 VWAP은 존재하지 않는다. 모든 주식은 매 세션마다 고유한 VWAP을 갖는다. 다음은 검증된 390개 분봉을 가진 다섯 개의 주요 종목에 대한 7월 2일 세션 데이터이다.
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker,
round(sum(close * volume) / sum(volume), 2) AS session_vwap,
round(argMax(close, window_start), 2) AS final_minute_price,
round((argMax(close, window_start) - sum(close * volume) / sum(volume))
/ (sum(close * volume) / sum(volume)) * 100, 2) AS final_vs_vwap_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO')
AND window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York')
GROUP BY ticker
HAVING count() = 390
ORDER BY indexOf(['AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO'], ticker)Coca-Cola의 세션 VWAP은 $82.96였고, Tesla는 $399.64였다. 마지막 분의 종가도 갈렸다. Apple은 VWAP보다 0.73% 높게 마감했고, Coca-Cola는 1.23% 높게 마감했다. Microsoft는 거의 정확히 자신의 VWAP에 해당하는 0.07%로 마감한 반면, Nvidia와 Tesla는 각각 자신의 VWAP보다 낮은 -0.32%와 -1.71%로 마감했다. 다섯 종목, 하루, 다섯 개의 서로 다른 결과이다.
누가, 왜 VWAP을 사용하는가?
체결 품질을 평가하는 기관. 대규모 포지션을 매수하는 펀드는 단일 가격으로 체결될 수 없으며 평균 가격으로 체결된다. 당일의 VWAP은 척도가 된다. VWAP보다 낮은 가격에 체결된 매수 주문은 그날의 평균 달러 가격보다 저렴하게 매수한 것이다. 체결 데스크는 학생들이 성적을 보고하듯 VWAP 대비 슬리피지(slippage)를 보고하며, 일반적으로 종가 경매를 포함한 전체 일일 벤치마크를 기준으로 한다.
체결 알고리즘. 브로커들은 VWAP 알고리즘을 제공한다. 이는 하나의 대규모 모주문(parent order)을 세션 동안 수백 개의 작은 자식 주문(child orders)으로 나누는 프로그램이다. 이 알고리즘은 가격을 밀어 올리기보다는 벤치마크 근처에서 체결하는 것을 목표로 하며, 당일의 전형적인 거래량 패턴에 맞춰 주문 크기를 조절한다. 각 자식 주문은 여전히 매수-매도 스프레드(bid-ask spread)를 지불하며, 많은 체결의 상대방은 양방향 호가를 제시하는 마켓 메이커(market maker)이다.
데이 트레이더 — 일중 참조선으로서의 VWAP 지표. 일중 트레이더들은 VWAP을 당일의 평균 단가 선으로 차트에 표시한다. 가격이 VWAP보다 높으면 최근 매수자들이 세션 평균보다 더 높은 가격에 샀음을 의미하며, 낮으면 더 낮은 가격에 샀음을 의미한다. 이는 가격이 어디로 갈지에 대한 예측이 아니라, 이미 거래가 어디서 이루어졌는지에 대한 관찰이다.
앵커드 VWAP(Anchored VWAP), 흔히 사용되는 변형 방식이다. 계산 방식은 동일하지만 시작점이 다르다. 개장이 아닌 트레이더가 선택한 특정 분봉(실적 발표, IPO 당일, 주요 고점 또는 저점)에서 누적이 시작된다.
FAQ
VWAP은 이동평균인가?
아니다. 이동평균은 고정된 룩백 윈도우(lookback window)를 이동시키며 거래량과 관계없이 모든 분봉에 동일한 가중치를 부여한다. VWAP은 세션 개장에서 시작하여 각 분봉에 거래량 가중치를 적용하며 매일 초기화된다. 2026년 7월 2일, Apple의 분봉 종가를 동일 가중치로 평균한 값은 동일한 분봉 조건에서 VWAP보다 55센트 높았다.
VWAP에 프리마켓과 애프터아워스 거래가 포함되는가?
플랫폼에 따라 다르다. 이 페이지는 오후 3:59(ET) 마지막 분봉까지의 정규 세션 분봉만을 사용한다. 오후 4:00 종가 경매는 해당 분봉 이후에 기록되며, 일반적인 일일 벤치마크 VWAP에는 포함된다. 많은 차트 앱은 오전 4:00 프리마켓부터 누적하므로, 수치를 비교하기 전에 해당 플랫폼의 설정을 확인해야 한다.
주식이 VWAP 위에서 거래된다는 것은 무엇을 의미하는가?
현재 가격이 해당 세션 동안 주당 지불된 평균 가격보다 높다는 것을 의미한다. 2026년 7월 2일, Apple은 정규 세션의 마지막 분에 세션 VWAP보다 0.73% 높게 마감한 반면, Tesla는 자신의 VWAP보다 낮게 마감했다. 이 비교는 세션의 거래 상태를 설명하는 것이지, 다음 움직임을 예측하는 것이 아니다.
주식이 VWAP 아래에서 거래된다는 것은 무엇을 의미하는가?
현재 가격이 해당 세션 동안 주당 지불된 평균 가격보다 낮다는 것을 의미한다. 2026년 7월 2일, Tesla는 정규 세션의 마지막 분에 세션 VWAP(-1.71%)보다 낮게 마감한 반면, Apple은 자신의 VWAP보다 높게 마감했다. 이 비교는 세션의 거래 상태를 설명하는 것이지, 다음 움직임을 예측하는 것이 아니다.
VWAP은 무엇의 약자인가?
VWAP은 volume-weighted average price(거래량 가중 평균 가격)의 약자이다. 이는 모든 거래에 거래량 가중치를 적용하여 세션 동안 주식이 거래된 평균 가격을 의미한다. 대규모 거래는 소규모 거래보다 VWAP에 더 큰 영향을 미치며, 이러한 특성 때문에 체결 품질의 표준 벤치마크로 사용된다.
앵커드 VWAP이란 무엇인가?
세션 개장이 아닌 선택된 분봉(실적 발표, IPO, 스윙 고점 또는 저점 등)에서 계산을 시작하는 방식이다. 이 선은 해당 이벤트 이후 거래한 모든 사람의 평균 지불 가격을 추적한다.
위의 모든 패널에는 해당 데이터를 생성한 정확한 SQL이 포함되어 있다. 숫자를 검증하려면 패널을 확장하면 된다. 특정 티커와 세션에 대한 VWAP을 계산하려면 Strasmore 터미널에 영어로 질문하면 된다.