Skip to content
Skip to content
← all research
REJECTED

"Intraday edge-discovery batch 1 — pooled event studies (1-min IEX)"

2026-09-20

·

Date: 2026-09-20 | 61 names | RTH 09:30-16:00 ET | IS<2024-01-01 / OOS 2024-01-01..2025-07-01 / HOLDOUT >= 2025-07-01 | horizons (5, 10, 30, 60) min | K = 120 trials (10 hypotheses x 4 horizons x 3 variants) | cost tiers 0.5/1/2/5 bps one-way.

#Data honesty box

  • Feed = Alpaca IEX 1-minute bars: OHLCV + trade_count + vwap. No NBBO, no signed flow, no depth.
  • Therefore quote/order-flow families (OFI, queue imbalance, depth, cancellations, options flow) are OUT OF SCOPE — not mocked with proxies. Spread is a cost parameter, never an observation.
  • VIX intraday cache is broken (empty); regime uses SPY realized vol.
  • Labels are executable (enter next bar open, exit h bars later, one-bar delay) and never cross the overnight gap; alpha measured against the same-minute unconditional baseline (time-of-day control).

#Funnel

10 hypotheses tested across 4 horizons; 0 reached CANDIDATE, 10 stayed/rejected. A candidate must pass the OOS gate AND both weightings on the untouched 2025-07-01+ slice. No forward-paper claim is made here (that needs live logging).

hidedgebest hIS net bpsOOS net bpsew OOS bpshold ew bpspOOS SharpeDSRICtop3 shareOOS yrs +eventsstage
C1ilq-extreme-move-reversal10m-1.708-1.832-1.854-1.9461.000-4.400.00+0.001n/a0/2857034RESEARCH
C2ilq-extreme-move-vol-shock30m-0.985-1.150-1.153-3.2700.923-1.140.00+0.003n/a0/2152870RESEARCH
C3ilq-extreme-move-range-widen30m-0.261-1.047-0.890-3.4550.922-1.140.00+0.005n/a0/2187333RESEARCH
I1vshock-continuation60m-3.469-2.250-0.041-0.7600.971-1.640.00+0.004n/a0/2106147RESEARCH
I2vshock-reversal30m-0.794-1.017-0.882-3.7110.884-0.940.00+0.003n/a1/2118763RESEARCH
J1volregime-shock-continuation60m-3.638-1.616-2.159-3.1560.981-1.760.00+0.000n/a0/2743798RESEARCH
J2volregime-shock-reversal5m-1.462-1.760-1.956-2.0041.000-4.960.00+0.005n/a0/2921615RESEARCH
H1vwap-stretch-fade60m+5.367+7.364-0.659-2.7520.0003.080.00-0.012n/a2/2141358RESEARCH
M1relative-dislocation-reversal60m+1.619+2.235-1.335-2.5690.0171.740.00+0.005n/a2/2200596RESEARCH
E1spy-lead-laggard60m-1.444-1.715-0.461+1.0890.983-1.720.00+0.005n/a0/2160197RESEARCH

Legend: net bps = time-of-day-adjusted forward return after round-trip cost at the base tier (1 bps one-way). day-weighted = mean of daily mean net (each session is one observation, the day-block estimator); event-weighted = mean over all events (the per-trade expectation). A real per-trade edge must be positive under BOTH — when they disagree in sign the signal is an intraday-clustering artifact (many small-count days vs a few high-count days). IS<2024-01 / OOS 2024-01..2025-07 (validation) / HOLDOUT >=2025-07 (untouched). DSR discounted by K trials.

#Alpha decay (event-weighted OOS net bps by horizon)

hid5m10m30m60mbestperturb sign
C1-2.092-1.854-1.968-3.27710myes
C2-2.481-1.177-1.153-3.86230mno
C3-2.344-0.911-0.890-3.88330mno
I1-1.450-2.960-3.118-0.04160myes
I2-2.550-1.040-0.882-3.95930mno
J1-2.044-2.327-3.719-2.15960myes
J2-1.956-1.673-0.281-1.8415myes
H1-1.897-1.610-0.656-0.65960myes
M1-1.956-1.782-1.677-1.33560mno
E1-1.810-2.832-3.269-0.46160myes

#Per-hypothesis detail

#C1 — ilq-extreme-move-reversal (stage RESEARCH)

  • Mechanism: Transient liquidity imbalance / aggressive flow overshoots; market-makers are compensated for absorbing it.
  • Hypothesis: A 5-min move beyond +/-2 intraday-sigma reverts over the next 5-60 min.
  • Params: {'family': 'intraday-liquidity-reversal', 'new_mechanism': True, 'thr': 2.0}
  • Decision reason: p=1.000 fails 0.05
  • Perturbation OOS net bps (best across horizons per variant): ['-1.913', '-1.308']
  • OOS net bps: day-weighted -1.832 vs event-weighted -1.854 (IS: -1.708 vs -1.917)
  • HOLDOUT net bps: day-weighted -1.793 vs event-weighted -1.946 (301 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 0/2 (DSR 0.00, haircut -4.40)

#C2 — ilq-extreme-move-vol-shock (stage RESEARCH)

  • Mechanism: Volume confirms the move was inventory/flow-driven, not information; the pressure resolves once the flow passes.
  • Hypothesis: Extreme 5-min moves ON abnormal volume revert harder than quiet ones (forced-flow exhaustion).
  • Params: {'family': 'intraday-liquidity-reversal', 'new_mechanism': True, 'thr': 2.0, 'vzmin': 1.5}
  • Decision reason: p=0.923 fails 0.05
  • Perturbation OOS net bps (best across horizons per variant): ['-1.696', '+0.228']
  • OOS net bps: day-weighted -1.150 vs event-weighted -1.153 (IS: -0.985 vs -2.298)
  • HOLDOUT net bps: day-weighted -2.112 vs event-weighted -3.270 (301 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 0/2 (DSR 0.00, haircut -1.14)

#C3 — ilq-extreme-move-range-widen (stage RESEARCH)

  • Mechanism: Range blow-out marks liquidity withdrawal; the dislocation closes when depth returns.
  • Hypothesis: Extreme moves while the bar range widens (spread-widening proxy) revert.
  • Params: {'family': 'intraday-liquidity-reversal', 'new_mechanism': True, 'thr': 2.0, 'rzmin': 1.5}
  • Decision reason: p=0.922 fails 0.05
  • Perturbation OOS net bps (best across horizons per variant): ['-1.487', '+0.050']
  • OOS net bps: day-weighted -1.047 vs event-weighted -0.890 (IS: -0.261 vs -1.851)
  • HOLDOUT net bps: day-weighted -2.292 vs event-weighted -3.455 (301 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 0/2 (DSR 0.00, haircut -1.14)

#I1 — vshock-continuation (stage RESEARCH)

  • Mechanism: Abnormal volume marks informed/institutional initiation; the position is built over several minutes.
  • Hypothesis: Large 5-min moves on >2z volume CONTINUE over 5-60 min.
  • Params: {'family': 'intraday-volume-shock', 'new_mechanism': True, 'thr': 2.0, 'vzmin': 2.0}
  • Decision reason: p=0.971 fails 0.05
  • Perturbation OOS net bps (best across horizons per variant): ['-1.849', '-1.830']
  • OOS net bps: day-weighted -2.250 vs event-weighted -0.041 (IS: -3.469 vs -2.131)
  • HOLDOUT net bps: day-weighted -2.573 vs event-weighted -0.760 (301 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 0/2 (DSR 0.00, haircut -1.64)

#I2 — vshock-reversal (stage RESEARCH)

  • Mechanism: Flow-driven crowding; the liquidity premium is paid to whoever fades the exhausted impulse.
  • Hypothesis: Large 5-min moves on >2z volume REVERSE (competing leg).
  • Params: {'family': 'intraday-volume-shock', 'new_mechanism': True, 'thr': 2.0, 'vzmin': 2.0}
  • Decision reason: p=0.884 fails 0.05
  • Perturbation OOS net bps (best across horizons per variant): ['-1.527', '+0.941']
  • OOS net bps: day-weighted -1.017 vs event-weighted -0.882 (IS: -0.794 vs -2.329)
  • HOLDOUT net bps: day-weighted -2.280 vs event-weighted -3.711 (301 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 1/2 (DSR 0.00, haircut -0.94)

#J1 — volregime-shock-continuation (stage RESEARCH)

  • Mechanism: Vol expansion accompanies information arrival; trend strategies and stops chase the new state.
  • Hypothesis: After an intraday volatility-regime shock, the prevailing 5-min direction continues.
  • Params: {'family': 'intraday-vol-regime', 'new_mechanism': True, 'rvzmin': 2.0, 'zmin': 0.5}
  • Decision reason: p=0.981 fails 0.05
  • Perturbation OOS net bps (best across horizons per variant): ['-1.853', '-1.073']
  • OOS net bps: day-weighted -1.616 vs event-weighted -2.159 (IS: -3.638 vs -2.721)
  • HOLDOUT net bps: day-weighted -3.929 vs event-weighted -3.156 (298 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 0/2 (DSR 0.00, haircut -1.76)

#J2 — volregime-shock-reversal (stage RESEARCH)

  • Mechanism: Vol spikes are liquidity events; the impulse overshoots and mean-reverts once the vol shock decays.
  • Hypothesis: After an intraday volatility-regime shock, the move reverses (competing leg / overreaction).
  • Params: {'family': 'intraday-vol-regime', 'new_mechanism': True, 'rvzmin': 2.0, 'zmin': 0.5}
  • Decision reason: p=1.000 fails 0.05
  • Perturbation OOS net bps (best across horizons per variant): ['-1.777', '-1.617']
  • OOS net bps: day-weighted -1.760 vs event-weighted -1.956 (IS: -1.462 vs -1.818)
  • HOLDOUT net bps: day-weighted -1.890 vs event-weighted -2.004 (299 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 0/2 (DSR 0.00, haircut -4.96)

#H1 — vwap-stretch-fade (stage RESEARCH)

  • Mechanism: VWAP is the institutional execution benchmark; execution algos lean against extension and draw price back to it.
  • Hypothesis: Price stretched >2 vol-units from session VWAP reverts toward VWAP over 5-60 min.
  • Params: {'family': 'intraday-vwap-state', 'new_mechanism': True, 'thr': 2.0}
  • Decision reason: date-weighted +7.36 but event-weighted -0.66bps <= 0 (clustering artifact)
  • Perturbation OOS net bps (best across horizons per variant): ['+4.297', '+6.852']
  • OOS net bps: day-weighted +7.364 vs event-weighted -0.659 (IS: +5.367 vs -4.260)
  • HOLDOUT net bps: day-weighted +3.267 vs event-weighted -2.752 (301 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 2/2 (DSR 0.00, haircut 1.86)

#M1 — relative-dislocation-reversal (stage RESEARCH)

  • Mechanism: Idiosyncratic intraday dislocations without news are liquidity noise; index/stat-arb flow pulls them back.
  • Hypothesis: A stock's 30-min move that dislocates from SPY's same-window move reverts to the market's path.
  • Params: {'family': 'intraday-cross-asset', 'new_mechanism': True, 'thr': 2.0}
  • Decision reason: date-weighted +2.23 but event-weighted -1.34bps <= 0 (clustering artifact)
  • Perturbation OOS net bps (best across horizons per variant): ['-0.119', '+4.346']
  • OOS net bps: day-weighted +2.235 vs event-weighted -1.335 (IS: +1.619 vs -2.375)
  • HOLDOUT net bps: day-weighted +0.401 vs event-weighted -2.569 (127 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 2/2 (DSR 0.00, haircut 0.00)

#E1 — spy-lead-laggard (stage RESEARCH)

  • Mechanism: Index/basket flow hits SPY first; single-name liquidity refreshes slower, so the constituent completes the move.
  • Hypothesis: When SPY jumps >2z in 5 min, a large cap that has not followed (gap>10bps) catches up over 5-60 min.
  • Params: {'family': 'intraday-cross-asset', 'new_mechanism': True, 'thr': 2.0, 'gapmin': 0.001}
  • Decision reason: p=0.983 fails 0.05
  • Perturbation OOS net bps (best across horizons per variant): ['-1.349', '-1.539']
  • OOS net bps: day-weighted -1.715 vs event-weighted -0.461 (IS: -1.444 vs +0.027)
  • HOLDOUT net bps: day-weighted -0.479 vs event-weighted +1.089 (127 days)
  • OOS decomposition: n/a (event-weighted total not positive)
  • Positive OOS years: 0/2 (DSR 0.00, haircut -1.72)

Runtime: 14.8 min. Ledger: logs/edge_discovery_ledger.jsonl.

All trading described is paper (simulated). Not investment advice.

← all research