A rigorous transfer test of the Nasdaq opening-range breakout strategy (Fabio Valentini ORB with delta confirmation, from Matteo Conti’s video) onto Bybit USDT perps — with confluence filters, volatility-targeted sizing, regime analysis and walk-forward OOS.
The ORB edge does NOT transfer to crypto perps at scale. Over 6 months × 50 symbols: aggregate net −$4,234, only 9/50 symbols profitable, walk-forward OOS positive on just 15/50. The apparent 30-day edge was a low-volatility regime artifact.
A two-factor symbol screen (trend + breakout follow-through) concentrates ~15× of the available edge but does not create profitability alone. The research protocol itself (Bybit v5 data layer, ORB engine, confluence filters, vol-target sizing, walk-forward validation, 54 unit tests) is the reusable asset — the honest verdict is that this strategy family needs a different mechanism on crypto perps.
First 30 minutes of the New York session (09:30–10:00 ET).
First 5-minute candle that closes above the opening-range high (long-only).
Stop = opening-range low · target = 1× risk (1R) · time exit = 15:00 ET. One trade per day, long only.
Fabio's delta (>200 contracts) filter was tested and added nothing (coin-toss across halves) — removed, matching the video.
| Measure | Result | Read |
|---|---|---|
| 6mo × 50 symbols aggregate net | −$4,234 | 9/50 symbols profitable |
| Walk-forward OOS positive | 15/50 symbols | Regime artifact: the 30-day edge was low-vol |
| 2-factor symbol screen (trend + follow-through) | ~15× concentration | Concentrates edge but not profitable alone |
| Regime-gate A/B sweep | no rescue | Vol-target sizing + regime gate don't create the edge |
Rate-limited Bybit v5 client, top-N by turnover, disk cache, retry-with-backoff; NY-time conversion; 90/180-day windows.
Volume confirmation (breakout > 1.5× avg), range tightness (<4%), 4H-EMA trend — all tested and reported honestly.
Chronological train/val/test split + rolling walk-forward OOS; regime analysis; winners-vs-losers feature investigation; proper OOS symbol-selection validation.
stdlib-only Python package, 54 unit tests, gitignored regenerable cache (~15 min to refetch 50 symbols × 180 days).
pip install requests
python -m unittest discover -s orb_research/tests # 54 tests
python scripts/test_enhanced_orb_sample.py --top 20 --days 90 --wf --cache orb_research/cache
python scripts/sweep_regime.py --symbols BTCUSDT,ETHUSDT,SOLUSDT --days 90
python scripts/test_walkforward_symbol_selection.py --days 180