← all research

Pre-reg: PRIMARY = skip gate60 long if prior-day mean-|OBI| z(30d) > +0.5. IS < 2025-01-01, OOS >= 2025-01-01. Tape-only feature, lag-1 by calendar (z[D-1] decides position held D). Non-OK days BLOCKED (position 0), counted separately from toxic skips. No defaults, no fills.

Window: 2022-12-02 .. 2026-08-31 (1369 days). Status mix: OK 791, WARMING 578, NO_DATA 0, STALE 0

PRIMARY diag (full window): kept 121/364 longs; toxic skips 41; blocked 578 days. Sensitivity (>+0.0) diag: kept 92; toxic skips 70. Secondary signed diag: kept 116; toxic skips 46.

SegmentVariantLongDaysRetSharpeNet10 SharpeTurnover
ISbaseline (gate60)256+86.70%+1.03+1.0019 flips
ISskip if abs_obi_z>+0.5 (PRIMARY)38+23.94%+0.74+0.6721 flips
ISskip if abs_obi_z>+0.029+20.50%+0.67+0.6119 flips
ISskip if sgn_obi_z>+0.5 (secondary)36+25.77%+0.74+0.7015 flips
OOSbaseline (gate60)108+65.18%+1.11+1.0815 flips
OOSskip if abs_obi_z>+0.5 (PRIMARY)83+45.66%+0.90+0.8429 flips
OOSskip if abs_obi_z>+0.063+37.94%+0.85+0.7736 flips
OOSskip if sgn_obi_z>+0.5 (secondary)80+52.98%+1.03+0.9443 flips
FULLbaseline (gate60)364+208.40%+1.06+1.0333 flips
FULLskip if abs_obi_z>+0.5 (PRIMARY)121+80.53%+0.79+0.7451 flips
FULLskip if abs_obi_z>+0.092+66.23%+0.75+0.6856 flips
FULLskip if sgn_obi_z>+0.5 (secondary)116+92.41%+0.88+0.8159 flips

OOS verdict (PRIMARY, gross)

  • lift -0.21, bootstrap p 0.859
  • beta vs BH: -0.02 | corr: -0.14 | resid Sharpe -0.83 (ret -12.97%, maxDD -16.77%)
  • OOS blocked-day fraction 0.0%

Verdict: REJECT (lift -0.21 < +0.10; p 0.859 NOT < 0.05; resid Sharpe -0.83 <= 0 (beta cut?); blocked 0.0% < 50%)

Forward returns of OK gate60-long days by abs_obi_z quartile

Quartile (abs_obi_z)Mean daily retDays
Q1(low)+1.046%41
Q2+0.923%40
Q3-0.269%40
Q4(high)+0.100%41

Reading

  • PASS needs lift ≥ +0.10 with p < 0.05 on OOS, positive residual (else the filter just cuts beta), and <50% blocked days (else it wins by sitting out the sample). IS is shown for consistency only.
  • Net@10/25bps per flip are alongside gross: a skip-filter trades LESS, so net should flatter it — if net still fails, the signal is dead.
  • Tape starts 2024-06-01: IS is ~7 months and exploratory. OOS decides.
  • Next on PASS: walk-forward cuts (like depth_filter_walkforward) + shadow overlay; on REJECT: log and move to F2 (OI-collapse filter).

Time: 3s. Feature: mean |OBI| per 5m bucket, daily mean, z(30d). Status warmup 31d.