← all research
REJECTED

"Phase 11 — Untested-Probe Results: Regime Filtering + Pair Mean Reversion"

2026-08-17

Continuation of phase 10's two documented candidate probes, executed with the same cal/held-out protocol. Both fail. Full artifacts: data/processed/alpaca/pipeline_extended/probes_phase11.json; engine change: backtest_long_flat(..., signal_mask=) (regression-tested, 12 → 16 tests in test_alpaca_backtest.py + new tests/test_alpaca_pairs.py, data/alpaca/pairs.py).

Probe A — regime-conditional entry (volatility filter)

Gate day-horizon cells' entries on a trailing 20-bar realized-vol percentile band (calm-only or elevated-only), band calibrated on the CAL half, applied to the held-out half; model quantile FIXED at 0.90 (no re-selection).

ETH/USD 1Hour h24 (the phase-10 champion cell):

filtercal net (bps)held-out net (bps)held-out nheld-out Sharpe
none (q0.90)−25,704−109,987653−10.7
calm < p30+1,203−104,28838−95.3
calm < p50+8,268−108,958167−22.4
calm < p70−19,463−123,815447−16.7
elevated > p30−50,642−134,155590−14.4
elevated > p70−7,353−190,603181−63.8

SOL/USD 4Hour h6: only 10 held-out signals at fixed q0.90 (pred mass sits in the first half of OOS), every row with n ≥ 3 is negative on hold-out (e.g. elevated > p30: cal +12,578 → held-out −24,128).

Conclusion: no volatility-regime band converts the day-horizon model into a held-out-validated profit. The phase-10 gradient was 2025-specific; regime gating does not restore it.

Probe B — cross-sectional SOL-vs-ETH ratio mean reversion

ratio = log(SOL/USD) − log(ETH/USD) on aligned 1Day bars (1,636 shared days, 2021-01-01 → 2026-08-16); z = (ratio − trailing mean_w)/std_w; z ≤ −z_thr → long SOL; z ≥ +z_thr → long ETH; else flat. Both legs long/flat, never simultaneously (no shorting). h = 1 day, maker costs, entries at next open. Calibrated on the first half, validated on the second.

windowz_thrcal n (SOL, ETH)cal net (bps)val n (SOL, ETH)val net (bps)
201.0262, 181−3,734248, 174−6,901
201.5146, 100−4,769123, 101−6,853
202.060, 40−2,55642, 50−3,707
202.521, 16+2,07713, 22−1,685
601.0240, 224−4,470271, 167−4,813
601.5111, 111−2,450158, 95−2,132
602.042, 55−1,37462, 50−1,712
602.518, 20+1,68618, 27−290
901.0222, 187−9,504267, 122−2,600
901.5120, 80−3,692151, 67+129
902.061, 45−2,66554, 39+861
902.526, 27−83126, 19−694

Only 2 of 12 cells are cal-positive (both at z=2.5) and both invert on the held-out half; the best held-out cell (w90 z2.0) is negative on calibration. No (window, threshold) cell is positive on both halves — no tradeable pair reversion at 1-day horizon.

Overall conclusion — stay flat (unchanged)

Both untested probes are now tested and rejected under the held-out protocol. Cumulative evidence across phases 9-11 (≈120 evaluated configurations):

evidence familyresult
1Min/5Min quote-era models (8 cells)IC ≈ 0, net = −fees exactly
1H/4H/1Day + bar-only full-history (16+ cells)gross ↑ with horizon, still < fee floor
Quantile calibration (day cells)fake gradient, 2025-regime artifact
Regime-conditional entryfails held-out at every band
SOL-vs-ETH ratio mean reversion (12 cells)negative both halves everywhere

The system remains flat, by evidence rather than by default. New durable capabilities added: signal_mask engine hook, data/alpaca/pairs.py (pair z-score machinery, offline-testable), and the cal/held-out evaluation protocol applied to every new claim. Full suite: 312 passed, 2 skipped + new pairs tests (16 in backtest+pairs modules) — run pytest to confirm.