VWAP(Volume Weighted Average Price, 거래량 가중 평균 가격)은 주식 시장에서 특정 기간 동안의 총 거래 대금을 총 거래량으로 나눈 가격을 의미합니다. 일반적인 평균 가격은 단순히 시간 흐름에 따른 가격을 산술 평균하지만, VWAP은 '얼마나 많은 물량이 그 가격에서 거래되었는가'를 반영합니다. 따라서 거래량이 많이 터진 지점의 가격이 VWAP 지표에 더 큰 영향을 미칩니다.
$\text{VWAP}=\frac{\sum (\text{가격}\times \text{거래량})}{\text{총거래량}}$
대규모 자금을 운용하는 기관들은 한꺼번에 주문을 넣으면 시장가에 영향을 주므로, 하루 종일 나누어 매수/매도하며 그날의 VWAP보다 유리한 가격에 체결시키는 것을 목표로 합니다. 현재 주가가 VWAP보다 위에 있으면 시장 참여자들이 평균적으로 수익 구간에 있다고 보며 '강세'로 해석하고, 아래에 있으면 '약세'로 판단합니다.
VWAP은 공정 가치(Fair Value)로서 특정 기간 동안 시장 참여자들이 가장 많이 동의한 '적정 가격'으로 간주됩니다. 그러나 하루의 시간이 지날수록 데이터가 누적되어 지표가 무거워지므로, 장 후반에는 가격 변동에 둔감하게 반응할 수 있습니다. VWAP은 주로 단타(Day Trading)나 당일 매매 전략에 사용되며, 일봉 차트보다는 분봉 차트에서 효과적입니다.
다음은 시고저종과 거래량 데이터를 가진 df를 가지고 VWAP을 구하는 예입니다.
from pandas import DataFrame
def calcVWAP(df:DataFrame)->DataFrame:
# VWAP
df['typical_price'] = (df['high'] + df['low'] + df['close']) / 3
df['tpv'] = df['typical_price'] * df['volume']
df['VWAP'] = df['tpv'].cumsum() / df['volume'].cumsum()
window:int = 14
df['Price_VWAP_Diff'] = df['close'] - df['VWAP']
df['Rolling_Std_Dev'] = df['Price_VWAP_Diff'].rolling(window=window).std()
std_multiplier:int = 2
df['Upper_VWAP_Band'] = df['VWAP'] + (df['Rolling_Std_Dev']*std_multiplier)
df['Lower_VWAP_Band'] = df['VWAP'] - (df['Rolling_Std_Dev']*std_multiplier)
return df'트레이딩전략' 카테고리의 다른 글
| 시장을 읽는 세 가지 지표 (0) | 2026.01.31 |
|---|