← Back to Reviews
20260115_004049_vwap_eth_momentum_breakout.md
# AI Review: vwap_eth_momentum_breakout (1-Minute)
**Date:** Thu Jan 15 00:40:49 CET 2026
**Strategy File:** /root/trade_1m/strategies/vwap_eth_momentum_breakout.py
---
```json
{
"score": 78,
"flags": [
"cost_sensitive",
"execution"
],
"review": "## Strength Assessment\n\n**Edge Logic (GOOD)**: The core premise is sound for 1-minute microstructure - trading with momentum breakouts from VWAP rather than fighting the move. The 0.50% threshold is substantial enough to filter noise, and requiring directional bar confirmation (bullish bar for longs, bearish for shorts) adds a quality filter.\n\n**Institutional Anchor Theory**: VWAP as fair value is legitimate at the 1-minute scale. Breakouts can signal real institutional flow, which is a valid microstructure edge source.\n\n**Cost Design Awareness**: The strategy shows explicit cost consciousness with:\n- High entry threshold (0.50%) to reduce frequency\n- 12-hour cooldown targeting ~2 trades/day\n- Clear R:R ratio (1.5:1 with 0.30% TP / 0.20% SL)\n\n**Performance**: Strong validation return (1.03%) with excellent Sharpe (1.76) and 5/5 profitable months suggests robustness across market conditions. The consistency across years is encouraging.\n\n---\n\n## Critical Issues\n\n### 1. **Execution Realism at 1-Minute Scale** (MAJOR)\n\nThe strategy appears to trade on **close of the breakout bar**:\n```python\ncurrent_price = current_bar.close\nvwap_deviation = (current_price - vwap_val) / vwap_val * 100\nif vwap_deviation > breakout_threshold and is_bullish_bar:\n # Opens position using current_bar.close\n```\n\nThis creates same-candle execution risk:\n- You're checking if the bar closed 0.50% above VWAP *and* is bullish\n- Then entering at that same close price\n- At 1-minute scale, this is **front-running your own signal**\n- Real execution would happen on the *next* bar open after signal confirmation\n\n**Slippage Impact**: With 0.50% breakouts, you're chasing momentum. Real fills would occur after the breakout bar completes, likely experiencing adverse selection (price continues or reverses). The 0.05% slippage assumption may be optimistic for momentum entries.\n\n### 2. **Cost Sensitivity Despite Design** (MODERATE)\n\nWith ~400-550 trades over the test period:\n- Average edge per trade: ~52.6% / 2,977 total trades = **0.018% per trade**\n- After 0.10% round-trip costs: 0.018% - 0.10% = **-0.082% per trade**\n- This suggests the backtest return wouldn't survive realistic costs\n\nThe 0.30% TP target is only 3x the per-trade cost. At 1-minute scale with momentum entries, actual slippage could be 0.06-0.08% per side, making this marginal.\n\n### 3. **ATR Caching Logic Issue** (MINOR)\n\nThe ATR caching approach:\n```python\nif 'atr_cache' not in state:\n state['atr_cache'] = atr(highs, lows, closes, atr_period)\n```\n\nComputes ATR once for entire historical array but never updates it. This means:\n- After warmup, new bars don't update the ATR cache\n- ATR values become stale as the strategy runs\n- Should either recalculate on each bar or incrementally update\n\nThis likely causes the ATR z-score filter to degrade over time.\n\n### 4. **Parameter Selection** (MINOR)\n\nSome parameters use round numbers (60, 20, 720) which is good, but:\n- `vwap_period = 60` (1 hour) is reasonable\n- `atr_lookback = 60` is also round\n- `cooldown_bars = 720` (12 hours) is sensible\n\nHowever, the specific threshold values (0.50%, 0.30%, 0.20%) should be stress-tested. The 0.50% breakout threshold seems optimized rather than derived from first principles.\n\n---\n\n## Risk Assessment\n\n**Overfitting Risk**: LOW - Logic is simple and parameters are mostly round numbers. The consistency across years suggests genuine edge.\n\n**Lookahead Risk**: NONE - No future information is used.\n\n**Execution Risk**: HIGH - Same-bar entry on momentum breakouts is unrealistic at 1-minute scale.\n\n**Cost Risk**: HIGH - Narrow edge per trade means strategy is highly sensitive to execution quality.\n\n---\n\n## Recommendations\n\n1. **Fix Execution Logic**: Enter on the bar *after* signal confirmation. Check signal on bar `i`, enter on bar `i+1` open.\n\n2. **ATR Cache Fix**: Either recalculate ATR each bar or implement proper incremental update.\n\n3. **Cost Stress Test**: Test with 0.08% slippage per side (0.16% round-trip) to validate edge survives realistic market impact.\n\n4. **Holding Period Analysis**: With 20-bar max hold and most trades likely hitting TP/SL quickly, analyze actual hold time distribution to confirm microstructure edge isn't just lucky timing.\n\n5. **VWAP Period Sensitivity**: Test 30-minute and 90-minute VWAP windows to ensure the 60-bar choice isn't overfit.\n\n---\n\n## Verdict\n\n**Score: 78/100** - Good strategy with sound microstructure logic, but execution realism and cost sensitivity are significant concerns. The edge exists but may not survive real-world friction without refinement. The strong validation performance and consistency are encouraging, but the same-bar execution issue and thin per-trade margins prevent a higher score.\n\nThis is a **refinement candidate** rather than production-ready. Fix execution logic and prove cost survival with conservative assumptions.",
"rule_suggestion": "Momentum breakout strategies at 1-minute scale must enter on the bar AFTER signal confirmation, not the same bar. Require entry price to be next-bar open to avoid front-running validated signals. Additionally, strategies with per-trade edge under 0.15% after costs should stress-test with 0.08% per-side slippage (2x base assumption) to ensure survival."
}
```