Strategies
Intraday Liquidity-Shock Reversal on 12 Never-Traded USEQ Large Caps — Fade a >=2.5-Sigma CLOSE-TO-CLOSE Move ONLY When It Was Made INSIDE the Session (Overnight-Gap Share < 50% = news/earnings filter), Long AND Short, Per-Name Absolute Trigger, 3-Day Time Exit (3 parameters, no cross-sectional ranking)
Outcome: Abandoned
UseqIntradayLiquidityShockReversalTwelveLargeCapLS
Outcome Summary
Across seven iterations this strategy tried to be paid the liquidity-provision premium by fading large single-name daily moves on 12 USEQ large caps, using the overnight-gap share as a free proxy for an earnings calendar so it would skip news-driven (drifting) shocks and only fade flow-driven (reverting) ones. The backtest produced 1,696 trades over a multi-decade sample but essentially no edge: 49.2% win rate, profit factor 0.99, total return -1.01%, Sharpe ~0.0002, and an average per-trade return of 0.038% of notional against modeled impact costs of 197.3% of gross. Iteration 7 explicitly halved risk_per_trade and gross exposure to reconcile the sign disagreement between Sharpe and total return, and the strategy's own notes conceded that sizing is Sharpe-invariant. The pipeline abandoned the run at the backtest stage on unreliable/incoherent metrics, so backtest review, optimization, analyst and risk stages were never reached.
Hypothesis
backtest_no_trades: metrics unreliable: Incoherent: Sharpe 0.00 disagrees in sign with total_return -1.01% — the Sharpe is computed from the mtm_equity_curve series while the return comes from the equity curve. Judge on the equity curve.
Implementation
Long/short, 12-name USEQ large-cap daily reversal. Each session, every name is scored independently against its OWN trailing 60-session return volatility: z = (close_t/close_{t-1} - 1) / sigma_i, with sigma taken strictly BEFORE today's return (point-in-time). A name whose |z| >= 2.5 is faded (BUY a down shock, SELL an up shock) ONLY if the overnight gap was a MINORITY of the move (|open_t - close_{t-1}| / |close_t - close_{t-1}| < 0.50) — the news/earnings filter, since information arrives as a gap and drifts (PEAD) rather than reverting. Positions are held exactly 3 completed sessions (calendar-anchored off processed bar timestamps, restart-safe) and then closed; no stop, no target, no ranking, no regime gate. Sizing is per-name inverse-vol risk parity, notional = equity * 0.0020 / (sigma_i * sqrt(3)), capped per name and by a 30%-of-equity gross budget, whole shares, leverage 1.0, max 6 concurrent.
Verification Results
Check `room` separately for the early return; use `continue` otherwise.
`return` instead of `continue` when notional < min_trade_notional abandons the rest of the basket for that session even when the binding term is the risk/name cap rather than exhausted gross budget. Latent at 100k equity.
Carry the pre-append sigma out of the metrics loop and reuse it for sizing.
Sizing sigma is recomputed AFTER today's return is appended, while the trigger sigma is the strictly-prior one — not look-ahead, but it inflates the risk-parity denominator on exactly the shock days the strategy trades, systematically under-sizing its own signal.
Count XNYS sessions between entry_ts and the current bar ts via src/data/market_calendar.
`_session_ts` is in-memory, so after a live/paper restart the time exit counts only post-restart sessions and holds an existing position up to ~2x the pre-registered 3-day horizon. Backtests and replay are unaffected.
Correct implementation, but the measured edge looks absent rather than mis-parameterized. Sandbox: 261 trades, avg_trade_return_pct -0.108% against a USEQ round-trip of only ~0.02-0.05% (zero commissions, $259 total impact) — the GROSS per-trade move of the 3-session fade is itself negative. Win rate 49.8% with avg_loss ($116) > avg_win ($104) says the shock CONTINUES over the next three sessions — the same sign error the COIN overnight-residual abandon found, now on the intraday-made component the hypothesis expected to revert. Regime split is unhelpful: only the stressed tercile is positive (+2.45%) while calm (-0.55%) and normal (-3.70%) lose. Iteration 7 changed ONLY book scale and Sharpe is scale-invariant, so the full backtest should reproduce ~0.03, not improve. First checks at backtest review: per-name breakdown; whether relaxing gap_share_max toward 0.9 flips the sign (which would falsify the news filter directly); the long/short asymmetry (52.9% vs 46.4% win) given unmodeled borrow on the short leg.
Analysis
Backtest gate: - metrics unreliable: Incoherent: Sharpe 0.03 disagrees in sign with total_return -3.29% — the Sharpe is computed from the mtm_equity_curve series while the return comes from the equity curve. Judge on the equity curve.
Iteration History
Backtest gate: - metrics unreliable: Incoherent: Sharpe 0.00 disagrees in sign with total_return -1.01% — 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
Halving book size to make a near-zero-edge equity curve internally coherent does not create edge — a Sharpe of ~0 and a per-trade return an order of magnitude below round-trip costs should end the line rather than trigger another sizing iteration.
The run was abandoned at the backtest stage with `backtest_no_trades: metrics unreliable` — the report flagged an incoherent Sharpe (0.00 disagreeing in sign with the -1.01% total return, metrics_reliable=false), so it never reached backtest review, optimization, analyst or risk review.
Fade a >=2.5-sigma close-to-close daily move in any of 12 sector-diverse USEQ large caps, long and short, but only when the overnight gap was under 50% of the move (so the shock was intraday flow rather than overnight news), exiting on a 3-day time stop.
Over a ~14,271-day multi-decade backtest it took 1,696 trades (783 long / 913 short) with a 49.2% win rate, profit factor 0.99, total return -1.01%, CAGR -2.99%, max drawdown 9.59%, and a Sharpe of essentially zero (0.0002). Average per-trade return was 0.038% of notional, well under the 0.15% viability floor, and modeled impact cost reached 197.3% of gross.
Backtest Review
- Sharpe
- 0.00
- Total return
- -1.01%
- Max drawdown
- 9.59%
- Trades
- 1696
- Win rate
- 49.2%
- Profit factor
- 0.99
Backtest and paper results are hypothetical. Trading involves risk of loss.