First result
On the free 60-day window of 5-minute bars for 35 liquid US stocks:
57out-of-sample trades
+2.9 bpgross edge per trade
−5.6 bpcosts per trade
−2.7 bpnet per trade (p = 0.73)
33%of random-entry runs did as well
0.05Deflated Sharpe, 6 configs tried
The model's AUC of about 0.75 looked impressive, but it was measuring volatility, not direction (direction AUC 0.51). That's exactly the kind of trap EdgeLab is designed to expose.
How it avoids fooling itself
- Point-in-time features on 5-minute bars, with an automated look-ahead leakage test.
- Volatility-scaled triple-barrier labels instead of a fixed "+0.4% in 30 minutes" target, which mostly learns volatility.
- Walk-forward validation with purging and embargo, so no information leaks between training and test windows.
- Shallow gradient-boosted trees that must beat a logistic-regression baseline.
- A realistic cost model and deterministic risk rules shared by the backtester and the paper-trading loop.
- Honest metrics: net basis points per trade, bootstrap confidence intervals, random-entry baselines and the Deflated Sharpe ratio.
- Optional Alpaca paper trading, with live trading locked behind explicit stage gates.
Run it
git clone https://github.com/Turnedone/edgelab.git
cd edgelab
python -m venv .venv
.venv/Scripts/pip install -r requirements.txt
.venv/Scripts/python scripts/run_research.py # data, walk-forward, backtest, dashboard
The full research design, including what usually fails and why, is in DESIGN.md.