QQQ RSI pullback with trend and VWAP filters
Buy short-term oversold dips in QQQ only while the long-term trend is rising, and sell once momentum recovers.
What they did
QuantifiedStrategies combined three filters on QQQ daily bars: a short-term RSI pullback, a rising 100-day EMA trend filter, and price trading below a rolling VWAP. They buy at the next session's open and exit when short-term momentum recovers. A second account, @crowcaw, independently tried to rebuild the test and published its closest fit: RSI(4) < 30, EMA(100) rising, close 0.5% below the prior 10-day VWAP, exit when RSI(4) > 50 at the next open.
How it went
QuantifiedStrategies' claims: profit factor 3.94 over 27+ years, 215 trades, 78.6% win rate, average trade +1.06%. @crowcaw's rebuild claims: 203 trades, 78.8% wins, profit factor 3.47, average +0.87%, max drawdown 9.3%. They call it 'near the headline, not the same study' and say the VWAP filter barely mattered in their version.
Sources:
Worth knowing
- About 200 trades in 27 years is roughly 7 a year. Expect long idle stretches.
- The exact original parameters appear only in the image carousel. The rebuild is an approximation.
- Backtests only. Neither post includes a separate out-of-sample period, and slippage assumptions aren't stated in the posts.
The prompt
Monitor QQQ on daily bars. After each close, check:
1. RSI([4]) is below [30]
2. The [100]-day EMA is higher than it was [5] days ago (trend rising)
3. The close is at least [0.5]% below the rolling [10]-day VWAP
If all three are true and I'm flat, propose buying $[amount] of QQQ at the next open.
While in a position, after each close: if RSI([4]) is above [50], propose selling at the next open.
Never add to an existing position. Report every check (pass/fail per rule) daily.
SAFETY DEFAULTS (keep unless you deliberately change them):
- Use the PAPER trading account only. Never touch a live account.
- Before every order, show me: symbol, side, size, order type, limit price, stop, and the rule that triggered it. Then WAIT for my "approve".
- Hard limits: max [$500] per trade, max [3] open positions, stop all trading for the day after a loss of [$300].
- Log every signal, decision and fill to [a running log / spreadsheet] with timestamps.To go fully autonomous: (1) run on paper for at least [4–8 weeks] or [30+ trades]; (2) delete the 'WAIT for my approve' line and keep the hard limits; (3) switch to live keys or account. On Robinhood, turn off trade approvals in your agent settings, but note that some orders can still require in-app approval or acknowledging a pre-trade alert, so unattended execution isn't guaranteed for every order. IBKR's AI connector always asks for approval; use its regular API for unattended trading. Never remove the daily loss limit.