S-040 — statarb-balanced-lowturn-v1 (factor-balanced construction + lower turnover)
ID: S040
Slug: statarb-balanced-lowturn-v1
Type: Equity (market-neutral stat-arb)
Date added: 2026-07-08
Status: exploration closed, NOT frozen (owner call 2026-07-13: "middenmoter" — a marginal
operational tweak on S-038, not a new edge; energy moved elsewhere). The one usable finding — s_close =
0.25 gives a free −21% turnover — is folded into S-038 as a config note, not spun out as its own
forward-paper setup. Component A (the hedge fix, the actual motivation) yielded nothing usable.
Base: S-038
Sibling of S-038 (the frozen market-neutral reversion book). This file is the pre-registered
design intent only; the
[CALIBRATE] fields are the owner's judgement calls, to be frozen before any run. Per §2A,
exploration precedes freeze — iterate freely first; freeze on explicit owner "go". Confirmation is
forward paper, not a holdout re-run (the 2023+ vault is spent: D-005/006/008/009/010).
Why (motivation — from forward tracking, 2026-07)
Two structural burdens of S-038's sleeve A, both surfaced in forward tracking and confirmed by investigation:
- Large, variable ETF hedge. The residual-reversion signal picks factor-tilted baskets, so the book carries ~180 bp/day of systematic (factor) return that must be hedged. The ETF hedge runs ~4–6.75× a leg (gross ~135% of net-liq at 20% per-side) and swings day to day (1.15×→4.75×). It is real, not a bug — shrinking it post-hoc leaks factor return (ridge λ=0.15 → 31 bp/day leak vs alpha of a few bp/day) and breaks beta≈0; the 60d factor matrix is full-rank so the hedge is unique. The only structural fix is to stop generating the exposure, i.e. build the legs factor-balanced.
- High turnover. ~18%/day, daily market-on-close across ~180 names — automation-gated, costly, operationally heavy.
Component A — factor-balanced construction → small, stable hedge
Build the long/short legs so their net factor beta ≈ 0 by construction, so the residual ETF hedge is small and stable (target ~1× a leg, not ~5×). Candidate mechanisms — [CALIBRATE] pick one/blend, then freeze: - beta-matched leg selection (match long-leg vs short-leg factor loadings when choosing names); - factor-beta-neutral leg weighting (solve leg weights s.t. Σβ_long ≈ Σβ_short per factor); - sector/beta-bucketed construction (trade within factor buckets so exposure cancels intra-bucket).
Success target: raw net factor exposure ≪ S-038 (hedge → ~1× a leg) with net@3 Sharpe retained. [CALIBRATE] the acceptable hedge-shrink ↔ alpha-loss trade-off.
Component B — lower turnover over time → less trading
Cut the ~18%/day churn. Candidate levers — [CALIBRATE] pick, then freeze:
- wider entry/exit bands (open |s| > [CALIBRATE], close |s| < [CALIBRATE]) — a no-trade band;
- minimum holding period / trade cooldown ([CALIBRATE] days);
- lower rebalance frequency (rebalance every [CALIBRATE] days instead of daily MOC);
- per-day turnover cap ([CALIBRATE]).
Success target: materially lower turnover with acceptable Sharpe loss. NB the dispersion study (result record) showed breadth is load-bearing — so prefer holding longer / wider bands (fewer trades, same names) over dropping names (fewer positions), which the Q1 threshold test confirmed hurts. [CALIBRATE] the turnover ↔ Sharpe trade-off.
Base / lineage / scope
- Base = S-038 (Avellaneda-Lee residual reversion, clean common-stock universe, κ-sizing + sector tilt, MOC, net@3bps). Changing both the leg construction and the trading cadence makes this a new object → new slug/ID (not an edit of S-038).
- Scope for v1 = the neutral sleeve A only. Momentum sleeve B and the bond+gold diversifier (S-039) are out of scope; can be re-blended in a later version.
Process (exploration → freeze → confirm)
- Exploration (first, free): implement A & B in the exploration workspace, sweep on in-sample ≤2022, measure hedge size, turnover and net@3 Sharpe; iterate. No ID/trial/verdict.
- Freeze (owner "go"): fix the chosen A-mechanism + B-levers + the Stage gate; then assign the run.
- Confirm = FORWARD PAPER only — the 2023+ holdout block is spent; no holdout re-runs. Track forward against the frozen gate.
Exploration findings (2026-07-13 — pre-freeze, no verdict, no trial)
Ran A & B on the S-038 base (stocks_only, κ-size, sector-tilt, bands 1.25/0.50, ≤2022) in
the exploration workspace (engine diagnostics/levers added: return_hedge,
fbal_lambda, rebal_k, sector_balance).
Baseline burdens quantified. ETF hedge (net factor exposure) ≈ 2.45× a leg (median 2.0×, p90 4.4×, max 16×, std 1.6× — large AND variable). Weighted turnover ~23%/day. net@3 Sharpe 0.72, realised beta +0.09.
Component B — lower turnover. The clean lever is lowering s_close (hold to fuller reversion), NOT
raising s_open (which drops names, breaks breadth, kills Sharpe — as the spec warned). s_close 0.50→0.25:
turnover −21% (23→18%/day), net@3 0.72→0.64, breadth preserved (180→208 names).
Component A — the hedge is stubborn. - Factor-neutral WEIGHTING (daily): kills the hedge (2.45×→~0) but the daily reweight explodes turnover (23→32%) → net@3 0.72→0.53. Rebalancing less often does NOT rescue it — the book churns daily, so held neutrality breaks and the hedge drifts back to ~base. Weighting trades the hedge burden for a turnover burden. - Sector-balanced SELECTION (owner's pick): equalises long/short counts per dominant sector. Does not reduce the hedge (2.45× unchanged — sector counts ≠ weighted factor β; the market factor, within-sector βs and κ-weights are untouched). BUT a free Sharpe boost: net@3 0.72→0.80, same turnover/hedge, 180→143 names (signal-concentrated). A quality filter, not a hedge fix. A weighted-β-targeting selection is untested (deferred).
Pragmatic S-040 (owner decision 2026-07-13): sector-balanced selection + s_close=0.25, hedge accepted.
| config | names | hedge | turn/d | net@3 | net@5 | beta |
|---|---|---|---|---|---|---|
| base (S-038) | 180 | 2.45× | 23% | 0.72 | 0.61 | +0.09 |
| S-040: selection + B | 166 | 2.31× | 18% | 0.73 | 0.63 | +0.09 |
A Pareto improvement over S-038 in-sample: same/slightly-better net Sharpe (0.73 vs 0.72), −21% turnover, market-neutral (β +0.09). The ~2.3× ETF hedge is retained (accepted). IN-SAMPLE ≤2022.
OOS 2023+ check (owner call 2026-07-13 — a legitimate touch: S-040's specific params are unseen on 2023+)
Ran the frozen configs on the 2023+ block (853 days). This reversed the in-sample recommendation — the whole point of an OOS read:
| config (OOS 2023+) | names | turn/d | net@3 | net@5 | /yr | beta |
|---|---|---|---|---|---|---|
| base (S-038) | 188 | 23.8% | 1.28 | 1.16 | +13.5% | +0.02 |
| sel-only | 150 | 23.3% | 1.01 | 0.90 | +10.9% | +0.04 |
| B-only (s_close.25) | 218 | 18.8% | 1.22 | 1.12 | +12.3% | +0.02 |
| sel + B | 175 | 18.7% | 1.12 | 1.03 | +11.9% | +0.04 |
- Core reversion edge is robust OOS (net@3 > 1.1, β ≈ 0) — it works out-of-sample.
- Sector-balanced selection is OOS-HARMFUL (in-sample 0.72→0.80 was overfit; OOS base 1.28 → sel-only 1.01). Dropped. Component A yields nothing usable (weighting costs turnover; selection hurts OOS).
- B-only (s_close=0.25) is the winner: OOS net@3 1.22 vs base 1.28 (−0.06 only), turnover −21%, breadth preserved (218 names), market-neutral.
Revised S-040 = Component B only (lower-turnover recalibration of S-038)
s_close = 0.25 on the S-038 base; no factor-balancing (A didn't pan out); ~2.3× ETF hedge accepted.
−21% turnover for ~−0.06 net@3 Sharpe (OOS), market-neutral. Caveat: 2023+ was a favourable reversion
regime (base OOS 1.28 vs in-sample 0.72) and NOT a pristine first-touch (reversion family touched it via
D-008/009/010) → deflate the 1.2+ hard; forward paper remains the ultimate confirmation. Still pre-freeze.
Stage gate — [CALIBRATE] (freeze before running)
Not set. Suggested shape only (owner to freeze the values): forward ≥12 mo · net Sharpe ≥ [CALIBRATE]
· |beta| ≤ [CALIBRATE] · hedge ≤ [CALIBRATE]× a leg · turnover ≤ [CALIBRATE]/day · sleeve-A realised
exec cost ≤ [CALIBRATE] bps/side.
Outcome (owner call 2026-07-13): exploration closed, NOT frozen
Judged a middenmoter — a marginal operational refinement of S-038, not a new edge:
- Component A failed — the whole reason to build S-040. Factor-neutral weighting trades the hedge for
turnover; sector-balanced selection was in-sample overfit and OOS-harmful. The ~2.3× ETF hedge stays.
- Component B works but is cosmetic — s_close=0.25 buys −21% turnover for ~−0.06 net@3 (OOS),
without changing the return profile or touching the real burden (the hedge).
- Action: no forward-paper spin-off. Fold the s_close=0.25 turnover finding into S-038 as a config
note; leave this file as the exploration record. Energy moved to higher-upside work.
Registered pre-freeze; exploration closed un-frozen. Do NOT run, freeze, or fill [CALIBRATE].