I still classify by eye first. ML later — if the rules saturate. Most "AI vol" projects I've seen skipped that step and produced beautiful confusion matrices that didn't change a single entry.
### Labels I use (daily / intraday)
- `COMPRESSED` — narrow range, declining realized vol
- `EXPANDING` — range break with volume confirmation
- `EVENT` — scheduled binary within horizon
- `TREND_DAY` — open-drive / wide OR persistence
- `CHOP` — mean-reverting noise, failed breaks
### Feature checklist (start here — what I actually look at)
Code: Select all
[ ] ATR(14) / price
[ ] Opening range height vs 20-day median OR
[ ] Premarket range vs prior RTH range
[ ] Realized vol 5m / 30m ratio
[ ] Distance from VWAP in ATR units
[ ] Bid-ask % at 09:35 vs 11:30 (execution vol proxy)
[ ] Earnings/event flag within N days
[ ] Index regime: SPY OR width vs own history
[code]
### Hygiene
Labels from **future** data leaking into features = automatic fail. Classify with rules first. Scalpers care about **state at decision time**, not a pretty matrix from last quarter.
Post classifiers with feature list + label definitions. Without those, it's cosplay.
What label set are you using — same five, or did you split CHOP further?
Which single feature best separates your TREND_DAY from CHOP in live use?
Anyone include spread at 09:35 as a feature and find it predictive for *your* style?
Do you freeze labels before the open, or update them mid-session?