VWAP Strategy V1
A selective mean-reversion framework designed to capture post-selloff flushes that revert back to VWAP (fair value). Built to stay highly selective — few trades, high R-multiple potential.
What it does
- Targets volatility flushes that often revert toward VWAP (fair value).
- Trades the reaction after forced selling — not the initial drop.
- Requires both volatility regime + VWAP dislocation + exhaustion confirmation.
- Uses a 3-target structure with runner management for large R moves.
What it is not
- Not a “buy the dip” strategy during the selloff.
- Not a high-frequency / overtrading approach.
- No prediction — only reaction to confirmed exhaustion.
- No guarantee of performance; designed for testing and iteration.
Best use cases
- High-volatility environments with strong intraday ranges
- Index CFDs (NAS100 / US30) with clean VWAP behavior
- Setups designed for 3R–10R+ potential
- As a baseline rulebook for backtesting + future refinements
How it works
The VWAP Reversal Strategy looks for extreme downside dislocations below VWAP that occur during a volatility event. A trade is only allowed when the market shows acceptance below VWAP and then prints a simple exhaustion / absorption confirmation candle. The goal is to capture the mean-reversion move back to VWAP and potentially beyond.
Definitions
| Term | Meaning |
|---|---|
| VWAP | Session VWAP calculated with a reliable reset (Daily by default). |
| Deviation (Dev) | Standard deviation of (price − VWAP) over a configurable lookback; used to measure dislocation. |
| Z-Score | (price − VWAP) / Dev. Negative values = below VWAP. |
| Volatility Event | A regime filter: either an unusually large daily range or an unusually large 30-minute candle range. |
| Acceptance below VWAP | At least N consecutive closes below VWAP (not a single wick). |
| Exhaustion / Absorption | Evidence that downward pressure is weakening before entry. |
Market & Timeframe
- Instruments: NAS100 and US30 (treated identically in this version).
- Primary timeframe: 30-minute chart (initial version).
- Trading style: mean-reversion after volatility flush; intentionally selective.
- Date (rulebook draft): 27 Dec 2025.
Setup Conditions (Trade Allowed)
A trade is allowed only if ALL blocks below are satisfied:
Volatility Event (required)
At least one of the following must be true:
DailyRange >= DailyATR_Mult × ATR_Daily(14)30mRange >= BarATR_Mult × ATR_30m(14)
VWAP Dislocation (required)
- Close is below VWAP.
Z-Score <= -Z_Threshold(e.g., -2.0).- Acceptance below VWAP: at least N consecutive closes below VWAP.
Exhaustion / Absorption (required)
At least one exhaustion sign must be present. Baseline (simple + robust):
- A bullish 30-minute candle closes green AND does not make a lower low than the prior bar
(Low >= Low[1]).
Optional enhancements (later): wick/volume absorption filters.
Entry Rules
Long Entry (only):
Enter long at the close of the first qualifying bullish 30-minute candle that occurs while the setup conditions remain valid.
Risk Management & Stop Loss
Stop option A (preferred): Session-Low stop
- Track the current day/session low (reset daily).
Stop = SessionLow − Buffer × ATR_30m
This defines a clean invalidation point: if the low breaks, the flush likely continues.
Stop option B: ATR stop
Stop = EntryPrice − ATR_Stop_Mult × ATR_30m- Use if session-low is unreliable on certain CFDs or sessions.
Profit Taking & Trade Management
Three-target structure (recommended)
- TP1 (risk off):
+1RORVWAP − 0.5 × Dev. Close 30%–40%. - TP2 (fair value): VWAP touch. Close 30%–40%. Move stop to breakeven.
- TP3 (runner):
VWAP + TP3_Dev × Dev(e.g., +0.75 to +1.0). Let it run with trailing stop.
Trailing for the runner
After price reclaims VWAP (or after TP2), trail the stop using recent swing lows:
TrailStop = LowestLow(trailLen) − TrailBuffer × ATR_30m
Filters (to keep trade count low)
- Time filter (optional): trade only during selected sessions (e.g., US cash hours).
- No trade if price already reclaimed VWAP before the reversal candle appears.
- Optional: Friday late-session filter to reduce weekend gap risk.
Recommended Starting Parameters (30m)
| Parameter | Start Value / Notes |
|---|---|
| VWAP reset | Daily |
| ATR_30m length | 14 |
| Daily ATR length | 14 |
| DailyATR_Mult | 1.8 |
| BarATR_Mult | 2.0 |
| Dev lookback length | 50 (start range 30–100) |
| Z_Threshold | 2.0 |
| Acceptance bars below VWAP | 2 |
| SessionLow buffer (ATR) | 0.2–0.3 |
| ATR_Stop_Mult (if used) | 1.2–1.5 |
| TP3_Dev | 0.75–1.0 |
| Trail length | 6–10 bars |
| Trail buffer (ATR) | 0.2 |
Implementation Notes
- This document defines the first ruleset version for TradingView backtesting.
- Next iterations can add: wick/volume absorption filters, 15-minute entry refinement, and multi-day (swing) mode.
- Keep NAS100 and US30 identical initially; later you may tune thresholds per index if needed.
Chart visualization

Backtest highlights
Key performance metrics and visuals from the TradingView Strategy Tester export (Pepperstone NAS100 CFD, 30-minute chart).
Equity curve

Drawdown

Monthly returns heatmap

Version Notes
- Volatility event filter + VWAP dislocation + acceptance + exhaustion confirmation
- Long-only reversal logic (reaction, not the initial drop)
- Session-low stop (preferred) or ATR stop alternative
- 3-target management with runner trailing concept