← all research
REJECTED

"Phase 10 — Extended Grid + Threshold Calibration (Alpaca ETH/USD + SOL/USD)"

2026-08-17

Follow-up to phase 9 (rejection, stay flat) under the directive "keep working till profitable". Three new evidence families tested against the same honest cost model (maker 15 bps/side + 0.6 bps half-spread):

  1. Longer horizons (1Hour / 4Hour / 1Day) to amortize the ~30 bps round trip.
  2. --bar-only models on 1Min/5Min trained over the FULL 2021+ history (no quote columns — unlocks every walk-forward split).
  3. Quantile threshold calibration (signal_quantile 0.50 → 0.97) on OOS predictions, with proper half-half calibration/held-out validation.

(models_1Day_run5.json, backtests_1Day_run5.json, threshold_scan.json, validation_scan.json) + logs/pipeline_run4.log, pipeline_run5.log.

1. Long-horizon grid at the default top-quintile threshold (q = 0.80)

New locally-aggregated timeframes (data/alpaca/aggregate.py) from the 1Min store: ETH 1Hour 49,251 rows / 4Hour 12,317 / 1Day 2,054; SOL 39,171 / 9,800 / 1,636 (~99.9% density). Bar-only 1Min/5Min models now emit OOS preds on all valid splits (~2.04M for ETH 1Min vs 1.02M before).

celln tradesgross cum (bps)net cum (bps)hitSharpe
ETH 1Hour h13,940+1,483−116,5440.28−26.0
ETH 1Hour h33,940+23,281−94,8110.39−12.8
ETH 1Hour h243,939+78,708−39,5210.47−1.98
SOL 1Hour h17,251+7,489−209,7380.33−24.3
SOL 1Hour h38,253−20,190−267,3490.36−18.9
SOL 1Hour h243,167−35,336−130,0980.45−6.8
ETH 4Hour h1986+5,191−24,3600.41−10.7
ETH 4Hour h2986+10,602−18,9660.46−5.6
ETH 4Hour h6985+12,050−17,4920.50−3.5
SOL 4Hour h1849−1,625−27,0520.41−13.5
SOL 4Hour h2784+4,289−19,2090.44−7.0
SOL 4Hour h6784+14,097−9,4300.46−2.1
ETH 1Day h1164+4−4,9090.43−6.0
ETH 1Day h3161−3,144−7,9570.43−5.5
SOL 1Day h167+1,151−8590.48−3.2
SOL 1Day h364−1,268−3,1810.48−7.2

Pattern: gross per trade improves monotonically with horizon length (ETH 1Hour h24 ⇒ ~+20 bps/trade; 4Hour h6 ⇒ ~+15-18 bps/trade) but NOTHING clears the 30 bps maker round trip at q=0.80. Short 1Day (≤2k bars, ≤821 OOS preds) cannot train a useful model.

2. Quantile calibration (threshold_scan.json)

Swept q ∈ 0.50…0.95 on the same OOS preds (same-data evaluation).

cellq=0.85 net/tq=0.90 net/tq=0.95 net/tSharpe@q95
ETH 1Hour h24+0.5+10.0+32.0 (n=985)5.1
SOL 4Hour h6+5.9+13.6+84.4 (n=196)12.9
ETH 4Hour h6−11.0−0.1+16.4 (n=247)2.4
SOL 1Hour h24−8.2−7.4−4.1−0.7

Apparent monotone gradient at day-horizon cells: the model's top decile scored persistently better gross PnL — the first cells to show ANY net profit after fees (Sharpe 5 → 13 at q≥0.90).

3. Held-out validation — the gradient FAILS (validation_scan.json)

Quantile picked on the FIRST half of OOS timestamps (min 30 trades), then evaluated on the SECOND (held-out) half.

cellbest q (cal)cal-half Sharpeheld-out net cum (bps)held-out Sharpe (n)
ETH 1Hour h240.9518.1−27,198−9.4 (n=493)
SOL 4Hour h60.9012.9−11,125−9.0 (n=196)
ETH 4Hour h60.9727.2−6,311−12.7 (n=74)
SOL 1Hour h24 (control)0.900.7−56,181−12.0 (n=794)

Every champion cell went negative on its held-out half; yearly breakdown pins the gain to 2025 (SOL 4Hour h6: 2025 +8,682 bps vs 2026 −19,807 bps) — a bull-momentum regime artifact, not a persistent signal. The control cell failed identically, confirming the validation procedure discriminates.

Overlap sanity: the per-trade Sharpe is inflated by h=24 overlapping signals (a position is re-scored every bar of its life). Constraining to non-overlapping entries (first entry, then re-arm after exit) drops full-OOS Sharpe 5.1 → 4.7 (ETH 1Hour h24) and 2.2 → 1.1 (SOL 4Hour h6); the held-out positional variants are negative. Nothing rescues the tail.

4. Conclusion — still: stay flat

Revisit conditions (unchanged from phase 9):

  1. A cell whose quantile-calibrated threshold stays net-positive on a HELD-OUT half (not the calibration half), evaluated positionally.
  2. Shorter data: Alpaca crypto quotes/trades for SOL start ~Oct-2024; a 2-year+ SOL quote-era backfill (2024-10 onwards is what we have) is the only material data addition possible.
  3. A structurally different cost regime (maker rebates, arbitrage venue) — out of scope.

Next candidate probes (if pursued): cross-sectional SOL-vs-ETH relative pricing (pair signal, still long/flat per leg), and regime-conditional entry (volatility filter) on the day-horizon cells with the new held-out protocol. Both would use the existing store and the aggregate.py/bar_only plumbing.