Signal 3 — VWAP Divergence
| Thuộc tính | Giá trị |
|---|---|
| Phân loại | Volume Analysis |
| Khung thời gian | Intraday (5–60 phút) |
| Paper gốc | Madhavan (2002) — VWAP execution |
| Loại dữ liệu | OHLCV 1 phút |
| Hướng giao dịch | Mean Reversion |
| Capacity | Cao |
Logic. Tính % lệch giữa giá hiện tại và VWAP intraday. Khi |price/VWAP − 1| > 1.5%, kỳ vọng giá hồi về VWAP trong nửa phiên còn lại. Long khi price < VWAP × 0.985, short khi price > VWAP × 1.015. Exit tại VWAP hoặc cuối phiên.
Code Python.
python
def vwap_intraday(df):
"""df: OHLCV 1-min, reset mỗi phiên."""
tp = (df['high'] + df['low'] + df['close']) / 3
pv = tp * df['volume']
vwap = pv.groupby(df.index.date).cumsum() / df['volume'].groupby(df.index.date).cumsum()
return vwap
def vwap_divergence_signal(df, threshold=0.015):
vwap = vwap_intraday(df)
div = df['close'] / vwap - 1
signal = pd.Series(0, index=df.index)
signal[div < -threshold] = 1
signal[div > threshold] = -1
return signalQuantConnect setup. Dùng built-in indicator self.VWAP("VN30F2412", Resolution.Minute) hoặc tự tính. Filter thêm bằng volume ratio (chỉ trade khi volume > 1.2× volume trung bình cùng thời điểm các phiên trước) để tránh giả tín hiệu trên phiên thanh khoản thấp.