UseqHighIdioVolCrossSectionalShortHorizonReversalLS
Hypotheses
Short-Horizon Cross-Sectional REVERSAL as a Liquidity-Provision Premium on 12 High-Idiosyncratic-Vol USEQ Large Caps — Dollar-Neutral Long/Short, Vol-Scaled 2-Session Ranking, Non-Overlapping 2-Session Hold, News-Jump Exclusion, DAILY Bars (commission-free venue is the whole point)
Hypotheses
A DOLLAR-NEUTRAL, LONG-SHORT, CROSS-SECTIONAL SHORT-HORIZON REVERSAL strategy on the commission-free USEQ venue, traded on 1-DAY bars across a FIXED, pre-declared 12-name universe of sector-diverse, high-idiosyncratic-volatility S&P 500 large caps: AMD, MU, WDC (semis/hardware), NFLX (media), BA, CAT, FDX (industrials), GS, SCHW (financials), HAL, DVN (energy), PFE (healthcare). Catalog verified: every name has a 1-DAY bar directory; the binding common start is NFLX (2002-05), so the usable joint window is ~2003-01 -> 2026-09 (~5,800 sessions, ~23 years).
MECHANISM (explicitly NOT 'RSI/Bollinger mean reversion' and NOT the crypto reversal family that died here): short-horizon cross-sectional reversal in equities is the documented compensation for SUPPLYING liquidity to impatient, inventory-driven order flow (Nagel 2012; Campbell-Grossman-Wang). When a liquid large cap sells off hard over one or two sessions with no change in fundamentals, the move is paid for by a dealer/market-maker who must be compensated to hold the inventory; the compensation is realized as a partial bounce over the next one-to-three sessions, and the symmetric effect holds on the up side. This factory has 0/200 on crypto mean reversion and 495 fee_edge deaths — but that is a COST verdict, not a signal verdict: the mechanism pays ~0.2-0.5% per leg per 2-session cycle, which is annihilated by a 0.20% Binance-spot or 0.10% USD-M round trip and survives comfortably on a ZERO-COMMISSION equity venue where the full round-trip friction on these names is ~0.04-0.05% (two ~1bp half-spreads plus impact on sub-$10k clips). The venue choice IS the hypothesis. It is also the structural answer to the overfit/PBO graveyard: unlike the daily ETF regime-rotation sleeves of L99 (35-77 rebalances fit to a handful of macro turning points), this design produces ~125 rebalances/year x 6 positions = ~1,500 trades/year and ~15,000 trades over the joint window, so walk-forward OOS, PBO and holdout are genuinely powered rather than noise.
CONSTRUCTION. On every SECOND completed daily bar (a non-overlapping 2-session clock, so positions never stack and the accounting stays trivial): for each of the 12 names compute r2 = the 2-session cumulative close-to-close return, and sigma = the 60-session realized daily return stdev; the ranking score is z = r2 / (sigma * sqrt(2)), i.e. the move measured in that name's OWN volatility units so the ranking is not permanently hijacked by whichever name is the most volatile. NEWS-JUMP EXCLUSION (this is the one economically-motivated filter, not a tuned regime gate): any name with |z| > jump_sigma_cap (default 4.0) is DROPPED from that cycle entirely — moves that large are fundamental repricing (earnings, guidance, M&A, a dividend cut) and the literature is clear that jump-on-news does not revert, while it is exactly where a short leg takes an uncapped gap loss. From the surviving names, go LONG the n_legs=3 lowest z (the oversold/liquidity-demanded side) and SHORT the 3 highest z, equal DOLLAR weights per name, long notional = short notional (dollar-neutral by construction, recomputed from get_account_equity() each cycle), gross exposure 100% of equity => ~16.7% per name, total leverage 1.0x gross within the Reg-T 2x allowance. Hold exactly 2 sessions; flatten everything at the next rebalance bar and re-rank. No pyramiding, no overlapping tranches, no intraday logic (daily bars only — the 1h/1m USEQ history is too short and is deliberately unused).
RISK. Per-name hard stop at -8% adverse move from entry on a daily close (caps the residual gap tail the jump filter misses); stopped names stay flat until the next rebalance, and the opposite leg is NOT re-sized (a small transient dollar imbalance is preferable to chasing neutrality with extra trades). Risk per cycle is ~1.5-2% of equity at the stop across the 6 positions. Max exposure per name 20% of equity. No overnight-only or dividend-capture component (dividends are not in PnL on this venue).
RUNTIME NOTE FOR THE DEVELOPER (a prior 30-name USEQ cross-sectional strategy here died coding_stuck_3_timeouts, and 12 names x ~5,800 daily bars = ~70k bars): keep every rolling statistic O(1) per bar with fixed-length collections.deque accumulators updated in on_extra_bar/on_bar; do NOT rebuild lists, slice history, or call sorted()/min() over full history inside calculate_signal(). The only sort allowed is over the <=12 current scores, and only on rebalance bars. Extra instruments ride on extra_bar_types; a cycle is skipped (flat) if fewer than 8 names have a fresh bar for the current session, which also handles the session calendar cleanly.
PARAMETERS (5, of which 3 are optimizable): lookback_sessions=2, hold_sessions=2 (tied to the rebalance clock), n_legs=3 (fixed by construction), jump_sigma_cap=4.0, stop_loss_pct=8.0 (fixed risk control, not an alpha knob). Optimize only lookback_sessions (1-4), hold_sessions (1-4) and jump_sigma_cap (3.0-6.0) — a deliberately small grid so best-of-N inflation is small.
FEE ARITHMETIC (required). These names have a typical daily sigma of ~2.0-2.5%, so a 2-session extreme-decile move is ~4-6%. Documented short-horizon reversal capture on liquid high-idio-vol names is ~10-20% of the prior move over the next 2 sessions => ~0.4-1.0% gross per leg; haircut hard to ~0.25-0.30% per trade for the modern, more-efficient regime and for the fact that the cross-sectional spread is taken on both sides. Against a USEQ round trip of ~0.04-0.05% (zero commission + ~1bp half-spread each way + impact on ~$16k clips in names trading $0.5-3bn/day), that is a 5-6x cost multiple — the single largest reason to run this mechanism on equities and not on any crypto venue.
Hypotheses
SMALLEST CHANGE FOR THE REPORTED FAILURE. The gate said: 'metrics unreliable: Incoherent: Sharpe 0.04 disagrees in sign with total_return -10.31% ... Judge on the equity curve.' The sign disagreement itself is the engine's impact-fold aliasing bug I isolated in iteration 5 (runner.py `_sample_points` returns the SAME dicts as mtm['equity_curve'], so `_fold_impact_into_curve` folds 500 of them twice; the dense daily series the Sharpe is computed from therefore carries 2x impact on those points and 1x everywhere else). No strategy code can repair that. The only strategy-side lever over the mis-folded quantity is the size of the modelled impact, so this iteration takes that lever to its end and changes NOTHING else: gross_exposure 0.125 -> 0.05 (10% gross with leverage 2.0). Impact cost scales ~notional^1.5 under the sqrt law, so the $7.41k of impact in the last run (7.4% of starting equity, 12.7x turnover) projects to ~$1.9k, which pulls the equity curve and the mtm curve back together. The calendar clock, marked-equity sizing, price floor, jump filter, whole-share reconciliation and the (lookback 3, hold 4) cell all passed their layers and are untouched, so no earlier layer regresses; the clamp's lower bound moved 0.05 -> 0.02 and is mirrored in _param_bounds.
WHY I RECOMMEND ABANDON. Judged on the equity curve as asked, the 2002-2026 record is total_return -10.31%, CAGR -0.44%, max_drawdown 22.1%, profit_factor 0.98, win rate 52.4% over 6,958 trades, avg_trade_return_pct -0.0041% -- an order of magnitude BELOW the 0.05% USEQ floor and on the wrong side of zero. Annual returns are 10 positive / 15 negative with no trend, i.e. a sign-unstable zero mean. Backing out the $7.41k of impact leaves a GROSS (pre-cost) result of about -3% over 24 years: the cross-sectional decile spread this hypothesis rests on is ~0 in the engine, which matches the full-catalog dry-run sweep reported in iteration 4 (registered cell lookback-2/hold-2 = -2.0bp per cycle, t=-0.84; best of all 16 cells +8.7bp at t=1.82, the maximum of the search and not significant). That is a SIGNAL refutation, not a fee verdict -- the whole premise of the hypothesis was that a zero-commission venue would rescue a real premium, and the premium is not there to rescue. Shrinking the book scales a zero-mean P&L toward zero; it cannot create an expectation, and I cannot name a change inside the declared construction or grid that would.
Hypotheses
premise_falsified on an adequate, reliable sample. The code implements the hypothesis faithfully and the short-horizon cross-sectional reversal premium it was built to harvest measures ZERO over 6,958 trades and 24 years: mean per-trade return -0.027% at t = -0.41, halves +0.029%/-0.083%, 9 positive years of 25, PF 0.984, Sharpe -0.012, total_return -3.79%. This is a SIGNAL refutation, not a cost verdict — exactly the claim the hypothesis staked itself on. Commissions are $0 and modeled impact only $2,660 on $100k over 24 years, so backing impact out still leaves the gross decile spread at ~-1% cumulative. The per-leg split makes the absence explicit: LONG +0.335%/trade vs SHORT -0.385%/trade is the market's upward drift landing on both sides of a dollar-neutral book, leaving no reversal residual. Optimization cannot help: the shipped cell is the argmax of the developer's own in-sample 16-cell sweep over the declared grid and is still negative, so the whole optimizable space is dead. Not revise_hypothesis: the reframe levers the hypothesis itself declares (zero-commission venue, high-idio-vol large caps, 1-4 session horizon, news-jump screen) are all already applied and the premium is absent on the most favourable venue available. For the Research Lead: the venue-choice argument and friction accounting were sound; what failed is the assumption that a ~0.25-0.30%/leg 2-session liquidity-provision premium still exists on liquid US large caps in 2002-2026.
Implementation
Dollar-neutral cross-sectional short-horizon REVERSAL on a fixed 12-name, sector-diverse, high-idiosyncratic-vol USEQ large-cap universe (AMD, MU, WDC, NFLX, BA, CAT, FDX, GS, SCHW, HAL, DVN, PFE), 1-DAY bars, commission-free US equity venue. On a CALENDAR-anchored hold_sessions clock each name is scored z = r(lookback) / (sigma_60d * sqrt(lookback)); names below a $5 price floor or with |z| > jump_sigma_cap (news-jump exclusion) are dropped; the book goes LONG the 3 lowest z and SHORT the 3 highest z at equal dollar weights, long notional == short notional, sized off MARKED equity (balance + unrealized). Per-name hard stop at -8% on a daily close; whole-share reconciliation to the target book so a name keeping its side is not churned. Iteration 6 cuts gross_exposure 0.125 -> 0.05 (x leverage 2.0 = 10% gross).
Verification Results
Gross exposure drifted from the registered 100% gross to 10% (gross_exposure 0.05 × leverage 2.0, ~1.67%/name) across six size-cut iterations — mechanism unchanged, but the pre-registered risk numbers and per-unit impact cost are no longer comparable to what the hypothesis predicted.
Verification Results
Defaults lookback 3 / hold 4 are the argmax of a full-sample 16-cell dry-run sweep, not the registered 2/2 cell — selection has already occurred outside the walk-forward machinery; deflate accordingly.
Verification Results
Straggler fallback: _marked_equity() and _reconcile() read closes[-1] unconditionally, so on a missed-session fallback one name can be priced off the next session's close. Ranking and stops are correctly freshness-gated, so this is sizing-only, never signal look-ahead.
Verification Results
The _maybe_process_primary() override bypasses the base's live-warmup / seed-freeze / staleness guards; entries are re-guarded inside _submit_entry_instrument, but exits are not — a paper warmup replay could issue real exits.
Verification Results
Correct implementation, measured absence of edge. Sandbox (1,650 bars, 1,842 trades): total_return -3.85%, Sharpe -0.14, PF 0.94, avg_trade_return_pct -0.0951% against a ~+0.05% USEQ spread/impact floor — the per-trade result is on the WRONG SIDE of zero, and long/short win rates split 57.7%/46.2% (the short leg is the bleed). The developer's full-catalog evidence agrees: 6,958 trades 2002-2026, avg_trade_return_pct -0.0041%, PF 0.98, CAGR -0.44%, 10 positive / 15 negative years with no trend, and a 16-cell (lookback, hold) sweep whose REGISTERED cell (2/2) measures -2.0bp per cycle (t=-0.84) while the search maximum is +8.7bp (t=1.82, not significant). Backing out the $7.4k modelled impact still leaves the gross decile spread at ~0, so this is a signal refutation, not a cost verdict — the hypothesis's whole premise was that a zero-commission venue would rescue a real premium. First checks at backtest review: the shipped cell (3/4) is the argmax of that in-sample sweep, so its Sharpe is a best-of-16 statistic; and whether the short leg's negative contribution survives OOS.
Backtest Review
Implementation matches the hypothesis: dollar-neutral 3-long/3-short, calendar-anchored non-overlapping clock, vol-normalized ranking, jump filter, $5 price floor. Trade tape confirms balanced legs (3,458 LONG / 3,500 SHORT) and ~6-day holds.
Backtest Review
Genuinely powered sample: 6,958 trades over 24 years (2002-06 → 2026-09) — a real measurement, not a low-count artifact.
Backtest Review
The venue reasoning was right in kind: commissions are $0 and modeled impact is only $2,660 over 24 years. Cost is NOT what killed this.
Backtest Review
avg_trade_return_pct = -0.0040% vs a +0.05% USEQ floor; PF 0.984, Sharpe -0.012, total_return -3.79%, CAGR -0.16%.
Backtest Review
The cross-sectional spread measures ZERO: mean per-trade pnl_pct -0.027%, t = -0.41; first half +0.029% (t=0.32), second half -0.083% (t=-0.84). Backing out impact still leaves gross ≈ -1% over 24 years.
Backtest Review
The long/short asymmetry is market drift, not alpha: LONG legs +0.335%/trade, SHORT legs -0.385%/trade — equal and opposite, i.e. the equity risk premium on each side of a neutral book, with no residual reversal once it cancels.
Backtest Review
Only 9 of 25 calendar years positive, sign-unstable with no trend.
Backtest Review
The shipped (lookback 3, hold 4) cell is the ARGMAX of the developer's own in-sample 16-cell sweep and is still negative — the entire declared optimization grid is dead.
Backtest Review
QA's pre-registered edge concern is confirmed, not refuted.
Analysis
Backtest gate:
- metrics unreliable: Incoherent: Sharpe 0.04 disagrees in sign with total_return -10.31% — the Sharpe is computed from the mtm_equity_curve series while the return comes from the equity curve. Judge on the equity curve.
Outcome Summary
UseqHighIdioVolCrossSectionalShortHo-f6f3565531
Outcome Summary
After six iterations the strategy reached a faithful implementation of its hypothesis: a dollar-neutral, vol-normalized, non-overlapping 2-to-4-session cross-sectional reversal book on 12 US large caps, deliberately placed on the commission-free USEQ venue because the premium was believed to die under crypto fees. The full 24-year backtest gave it a genuinely powered sample — 6,958 trades, 3,458 long and 3,500 short — and the answer was flat-to-negative: -3.79% total return, Sharpe -0.012, PF 0.984, per-trade -0.0040%, with the per-trade spread statistically indistinguishable from zero (t = -0.41) and only 36% of years positive. Because commissions were $0 and impact just $2,660, backing costs out still left a roughly -1% cumulative gross spread, so this was a signal refutation rather than the fee_edge verdict the hypothesis had staked itself against. The analyst abandoned it at backtest review as premise_falsified, noting that the shipped parameters were already the best cell of the developer's own in-sample sweep and that every reframe lever the hypothesis declared had already been applied.
Outcome Summary
Fixing the cost side does not create an edge — once commissions and impact are removed and the signal still measures zero, the LONG +0.335% / SHORT -0.385% per-trade split shows only market drift cancelling across a neutral book, meaning the premise itself, not the venue, was falsified.
Outcome Summary
The backtest-review gate returned abandon before optimization: the cross-sectional spread measured zero (mean per-trade -0.027%, t = -0.41; halves +0.029% / -0.083%), only 9 of 25 years were positive, and the shipped (lookback 3, hold 4) cell was already the argmax of the developer's own 16-cell in-sample sweep, so the declared optimization grid was dead.
Outcome Summary
Harvest the short-horizon cross-sectional reversal premium as compensation for liquidity provision, running a dollar-neutral 3-long/3-short daily book over 12 high-idiosyncratic-vol USEQ large caps, where zero commissions were supposed to let a ~0.25-0.30%/leg edge survive.
Outcome Summary
Over 6,958 trades and ~24 years (2002-06 to 2026-09) it returned -3.79% total (CAGR -0.16%), Sharpe -0.012, profit factor 0.984, win rate 52.4%, max drawdown 8.67%, with avg_trade_return_pct of -0.0040% against a +0.05% USEQ floor. Costs were not the problem: $0 commission and only $2,660 of modeled impact on $100k.
Backtest and paper results are hypothetical. Trading involves risk of loss.