Design preview · 2026-07-22 · opendeviationbar-py forward-predictiveness campaign · scratch reading artifact — not an ADR, not for review
Think of your model as a hiring manager building a team of specialists. Each feature is a candidate. You want a team that is (a) full of distinct skills and (b) still competent when conditions change. Five ideas do all the work here:
One-line version: we stop hiring specialists who only looked good last quarter, and start hiring the ones who stay useful in every climate we’ve lived through.
These measure two completely different things, which is exactly why they combine into something stronger than either alone. Axis 1 asks “which way will price go, robustly?” Axis 2 asks “how fragile / how liquid is this?”
What it measures: whether a feature’s relationship to the target is stable across regimes, using causal-invariance and instrumental-variable tests (seqICP, Causal Dantzig, HSIC-X, Anderson–Rubin) rather than a correlation score.
How it helps: out-of-distribution failure = the future regime differs from the past. A feature admitted here has already been stress-tested against regime change, so it’s your best bet to carry into a climate you haven’t seen.
Honest limit: unconditional “orthogonal in any future regime” is provably impossible — the campaign measured the ceiling (ICP 0/92, ~8/10). Every verdict is regime-scoped, never “forever”.
What it measures: how liquid and un-crowded a position is — a different information axis from price. Because it doesn’t encode “which way will price go,” it is orthogonal by construction to your price-microstructure panel.
How it helps: it flags fragility — where a liquidation cascade could ignite and how hard it would be to exit — so strategies can size down / gate capacity before the stampede, not after.
Scope note: the richest crowding signals (funding, open interest, liquidation heatmaps) are derivatives data — blocked by the spot-only policy. So we use spot-legal proxies: Amihud illiquidity, Kyle-λ, order-book imbalance, and the effective-spread estimators already probed on 2026-07-22 (edge/roll/corwin/parkinson).
Why two axes beat one: Axis 1 gives you a signal that keeps working when the regime turns; Axis 2 keeps you from being trampled while you hold it. A strategy needs both to be simultaneously OOD-robust and liquid/cascade-free — which is precisely your stated goal.
Axis 2 is the open frontier of this campaign. Grounding it needs two harvests (per the grounding plan), both collected by an append-only /loop — nothing is evaluated on our data yet:
What the loop sweeps, exhaustively, family by family: illiquidity & price-impact (Amihud, Kyle-λ, Hasbrouck, MRR) · effective-spread from OHLC/trades (Roll, Corwin–Schultz, Abdi–Ranaldo, EDGE) · range/HL vol (Parkinson, Garman–Klass, Rogers–Satchell, Yang–Zhang) · order-flow toxicity & crowding (VPIN, OFI, CVD, taker-skew) · microstructure invariance (Kyle–Obizhaeva) · capacity/turnover (Days-ADV) · liquidity-cascade / fire-sale risk · jump/tail fragility for ignition (realized jumps, tail-index, Hawkes self-excitation).
Load-bearing constraint: spot-only (principle #8) — funding / open-interest / liquidation-heatmaps are derivatives → catalogued but flagged out-of-scope. Seed catalog: 16 spot-legal / L2 candidates + 3 derivatives-flagged.
Open the Axis-2 Cascade-Free harvest — full grounding scope + live iteration ledger →
The engine grades every shipped feature, per live regime, and assigns the highest tier its evidence earns (cheapest test first, early-exit):
The point that makes this a discovery tool and not just a scorecard: the campaign proved the tomorrow-verdict is predictable — features orthogonal today persist 94–95% into the next regime, and the flip-vs-hold ranking scores AUC 0.88–0.95. So the ORTHOGONAL tier isn’t a snapshot; it’s a forward filter that surfaces the features worth carrying.
Non-negotiable underneath it all: every test must use a dependence-aware null. On autocorrelated bars, an independence-assuming null false-alarms at 11–57% (it already killed 8 instruments). Without this, the board is a confident liar — so it’s the first thing that has to be certified.
You said: “a new way of evaluating orthogonality based on regime invariance, rather than correlation.” You’re right — that’s the core shift. Two refinements so it’s exact:
So “orthogonal” is redefined as necessary-but-not-sufficient: non-redundant and regime-stable earns a feature into the pool — it does not by itself prove tradeable edge. Step ③ is the honest gate between “admitted feature” and “strategy.”
Before any ADR, we do small, honest pilot runs to surface a shortlist:
--readonly=2, spare-only, watchdog-guarded. No production touch.The pilot’s job is not to be right — it’s to de-risk the design and hand the ADR a concrete, grounded candidate set to reason about.
A PROPOSED design ADR — same route as #633 (ground → ADR → Terry refines → implement), nothing ratified on landing. Its scope, in one breath:
e-ICP-fp.It stays a docs-only artifact until you and Terry steer it. This preview exists so we agree the picture above is the right picture first.
findings/dashboard/probes/regime-invariant-orthogonality-campaign-2026-07-22.html · SSoT: findings/evolution/audits/2026-07-22-regime-invariant-orthogonality-campaign/ · docs-only; deploy to the nasimubd site is a separate gated step.
Grounded in: ADR-2026-07-15-LIVE-ORTHOGONALITY-DECLARATION-ENGINE.md · FEATURE-EXPIRY-ROBUSTNESS-ASSESSMENT-2026-07-15.md · CAMPAIGN-GROUNDED-SUMMARY.md · 2026-07-22 rotation-probe head-to-head.