Backtested Velez'\''s first-20-min open-range method 4 ways — every faithful variant was OOS-negative. I think the edge was the discretion I deleted. Sanity-check me?
Spent a few weeks trying to mechanize the Velez open-range trigger — mark the 9:30-9:50 bar, enter 1c through the break, 1c stop, fat-bar trailing exit (no fixed target, let the asymmetry run). 10 mega-caps, 9 months.
First pass I tested a strawman (opening-bar-only entry + fixed 2R) and "proved" no edge — which was my fault, not the method's. Rebuilt it faithfully: full 9:30-9:50 window, all three trigger types (volume elephant / tail / lone color-game near the 20MA), trailing exit. Also had to swap IEX for SIP after realizing IEX was a ~2-3% volume slice (40-share AAPL bars) that was corrupting both the volume signal and the 1c triggers.
| Variant | trades | win | avg R | OOS avg R |
|---|---|---|---|---|
| opening-bar + 2R (IEX) | 337 | 48% | +0.04 | -0.02 |
| window + all triggers + trail (IEX) | 708 | 40% | -0.01 | -0.08 |
| + SIP + volume elephants | 718 | 38% | -0.11 | -0.18 |
| elephant-only, vol-confirmed (SIP) | 428 | 40% | -0.08 | -0.21 |
The trail does catch real runners (+14R, +8.7R best trades), but a ~60% loss rate eats them.
The tell that bugs me: selectivity ran 0.47-0.78 — my scanner found a "setup" on half to three-quarters of days. The discretionary trader plays a handful and sits out the rest. So my read is the edge lives in the parts the rules cannot hold — pre-market name selection, live tape reading, and mostly just sitting out the unclear days — not in the entry trigger itself.
Question for people who have actually done this: when you have tried to mechanize a discretionary method, did you also find the "sit out" was the real alpha and the hardest thing to encode? And how do you quantify a sit-out filter without curve-fitting it straight into the backtest?