Campaigns live under campaigns/ — one directory for all of them, each with its lifecycle status and the evidence behind it.
The two open questions. The five sections before this one answer three structural questions about a column: is it orthogonal (non-redundant against the currently shipped columns, as measured by Spearman worst-cell and Chatterjee ξ — a statement about redundancy vs one specific set, not a claim of unique information content), parameterless (no per-feature tunable), and agnostic (algorithm-unambiguous). Every promoted column passed all three. Promotion has been exactly that and nothing more — the encoded rule is
promote = parameterless.PASS AND agnostic.PASS AND orthogonal.PASS
(The Gate; findings/evolution/shared_data/three_axis_gate.py:14-18, :161), and the project’s own axis audit says the quiet part out loud: it “proves consistency, not edge.” What was never asked, of any column: (1) Is the signal real? and (2) Is it useful — and to what extent?
The fresh-start rule (operator directive, 2026-07-07). This page presumes no measurement instrument. No metric, threshold, statistical test, or gate is pre-loaded here — an earlier scaffold proposed a metric checklist assembled from in-repo precedents; it was scrubbed because none of it came from dedicated research or survived an evaluation. Metrics earn their way in through one lifecycle, tracked in the two tables below:
DISCOVERED → UNDER EVALUATION → GROUNDED (or REJECTED)
Only a GROUNDED metric may write evidence into the candidate tables at the bottom of this page. Until then, every evidence cell stays NONE YET — visibly, deliberately.
Background census (context only, admits nothing): 2026-07-07-feature-realness-usefulness — the deep-research census of what machinery exists across the three repos, with provenance and telemetry. Its metric proposals are historical record, not admitted instruments.
Both tables are append-only: rows are never edited or deleted; corrections are new rows with supersedes: pointers. A metric may enter the Evaluation table only if it has a row in the Discovery table first. Every row carries a layman’s terms column so anyone can read this index and understand what is going on without knowing the mathematics. The discovery/evaluation loop updates these tables; this page is its public face.
A row means: “we found a candidate way of measuring realness or usefulness, and we verified where it comes from.” Discovery requires a resolvable primary source — an unverifiable citation is a lead, not an entry (house provenance discipline).
| Date | Metric | Aims at | In layman’s terms | Provenance (paper / implementation) | Notes |
|---|---|---|---|---|---|
| 2026-07-08 | Discovery sweep (13-agent SOTA web research + 20-instrument self-test design + adversarial hardening). All rows below are DISCOVERED only — none is admitted; each must pass the self-test battery + the shared adversarial signal-zoo before it may enter the Evaluation table. Full grounding: SOTA-GROUNDING.md · operational proof protocol: METRIC-EVALUATION-FRAMEWORK.md. Adversarial verdict: 20/20 first-draft batteries need hardening — so 0 are admissible yet. | ||||
| 2026-07-08 | Combinatorial Purged CV (CPCV) + purge/embargo | substrate / leakage-free scoreboard | Splits time so a test window never peeks at overlapping days — the honest scoreboard every other metric rides on. | López de Prado, Advances in Financial ML (2018) ch. 7,12 | feature-layer; ground FIRST; derives N_min(H) |
| 2026-07-08 | Future-perturbation invariance gate | causality (no look-ahead) | Scramble the future — the feature must not budge. If it does, it is reading tomorrow's answer. | methodology-19 §B; in-house leakage_guard.py T2 | bit-exact V(f)=0; harden: warm-state / occluded-dependency leaks |
| 2026-07-08 | Block-permutation shuffled-label null | realness (null control) | Shuffle the answers while keeping their rhythm; a real edge must collapse to chance. | Ojala & Garriga, JMLR (2010); Politis–White (2004) | block ≥ decorrelation length; publish detection envelope |
| 2026-07-08 | Effective-n deflation + BH–FDR | realness (multiple testing) | Autocorrelated data has fewer real data points than it looks; count them honestly, then correct for many tries. | Bailey–Hammersley (1946); Benjamini–Yekutieli (2001) | HAC long-run-variance N_eff (post-adversary); GARCH heavy-tail null |
| 2026-07-08 | Deflated Sharpe Ratio (on SFI paths) | realness (selection bias) | Is this just the luckiest of many coin-flips? Deflate the score by how many features were tried. | Bailey & López de Prado (2014), SSRN 2460551 | via the SFI return object; N_eff-recovery on known effective-rank |
| 2026-07-08 | Probability of Backtest Overfitting (PBO / CSCV) | realness (overfit) | If we pick the in-sample winner, does it stay a winner out-of-sample, or is it a coin-flip? | Bailey, Borwein, López de Prado, Zhu, JCF (2017), SSRN 2326253 | PBO<0.2; pair with a magnitude gate (rank-blind) |
| 2026-07-08 | Harvey–Liu–Zhu t≥3 hurdle | realness (factor-zoo) | A genuinely new signal needs a t-stat over 3, not 2 — because so many have already been tried. | Harvey, Liu & Zhu, RFS 29(1) (2016) | effective-trials denominator = frozen global universe |
| 2026-07-08 | Rank IC + ICIR + Newey-West t | usefulness (prediction) | Does the feature's ranking actually line up with next-bar returns, reliably and not by a few lucky days? | Grinold (1989); Alphalens (practitioner) | |IC|≥0.02, t≥3; blind to interaction-only (route to CMI) |
| 2026-07-08 | IC-decay / predictive half-life | usefulness (horizon) | How fast does the signal fade — smoothly (real) or in a weird spike (data-snooping)? | ml4trading / microalphas (practitioner) | selects tradable horizon; monotone-decay realness check |
| 2026-07-08 | Single-Feature Importance (SFI, OOS) | usefulness (standalone edge) | Train on this feature alone — does it beat a coin toss out-of-sample? | López de Prado, AFML (2018) §8.5 | the per-feature return object that unlocks DSR/PBO; add episodic-signal control |
| 2026-07-08 | Mean-Decrease-Accuracy + clustered MDA (ONC) | usefulness (contribution) | Scramble this feature inside a model — does accuracy drop? If not, the model wasn't using it. | López de Prado, AFML §8.4 / MLAM (2020) ch. 6 | clustered variant defeats the substitution effect |
| 2026-07-08 | Quantile monotonicity + Patton–Timmermann MR | usefulness (shape) | Do returns climb steadily across feature buckets, or only jump at the extreme ends? | Patton & Timmermann (2010); Romano–Wolf | add useful-but-non-monotone positives; route rare-veto out |
| 2026-07-08 | Conditional Mutual Information I(f;Y|S) | conditional (new info) | Given everything we already have, does this feature add NEW information about returns? | Brown, Pocock, Zhao & Luján, JMLR 13 (2012); Kraskov (2004) | rescues interaction-only; Runge local-permutation null |
| 2026-07-08 | Model-X Knockoffs / CRT / TSKI | conditional (FDR-controlled) | Make a fake twin carrying no real signal; keep the feature only if it beats its twin — with a controlled false-discovery rate. | Candès, Fan, Janson & Lv, JRSS-B 80(3) (2018) | block/TSKI variant for autocorrelated data |
| 2026-07-08 | Double/Debiased ML + CPI | conditional / causal | Strip out everything the known factors explain; is there still an effect left over? | Chernozhukov et al., Econometrics J. 21(1) (2018) | retention ≥50% of naïve; control set Z pre-registered |
| 2026-07-08 | Huberman–Kandel spanning intercept | incrementality | Is the feature's profit just repackaged momentum / volatility, or genuinely something new? | Huberman & Kandel, JF 42(4) (1987); Barillas–Shanken (2017) | HAC t(α)≥3; guard omitted-premium bias |
| 2026-07-08 | Mechanism-intensity scaling (Kyle-λ / VPIN / OFI) | economic mechanism | A real microstructure edge should get STRONGER where the mechanism is stronger — not merely correlate once. | Kyle (1985); Easley–López de Prado–O'Hara (VPIN); Cont–Kukanov–Stoikov (2014) | nonlinear-volume confound control required |
| 2026-07-08 | Per-year IC + Bai-Perron / CUSUM breaks | robustness (regime) | Is the edge steady across years, or does it live in one lucky regime and die elsewhere? | Bai & Perron (1998); Brown–Durbin–Evans (1975) | gate behind realness; block-bootstrap critical values |
| 2026-07-08 | Parameter-plateau vs needle | robustness (overfit) | Is the good setting a broad hill (robust) or a lone spike (overfit)? | Masters, Testing & Tuning Market Trading Systems (2018) | nulls regenerated from the real knob grid |
| 2026-07-08 | Detector lead-vs-coincide (event-study + MMD) | detector / rare-veto | For a rare alarm feature: does it fire BEFORE the event (useful) or just alongside it (a newspaper)? | Granger; Gretton et al. MMD (2012); Politis–Romano (1994) | for the candidate-#65 class; latent-common-cause null required |
A row means: “this discovered metric is now being evaluated on its own merits — does it actually detect what it claims, at what power, on our data?” Status moves UNDER EVALUATION → GROUNDED or REJECTED. Grounding requires empirical evidence recorded in the artifact column — never argument alone.
| Date entered | Metric | In layman’s terms | What the evaluation tests | Evidence artifact | Status |
|---|---|---|---|---|---|
| 2026-07-22 | Future-perturbation invariance gate (#1) | Scramble the future — a causal feature must not budge; a feature that peeks is caught every time. | bit-exact V(f)=0 on 870,304 real BTC@250 bars: causal FP=0 over 221M checks · planted look-ahead power=1.000 (exactly k=3 positions) · warm-state / global-stat leak FNR 1.0→0.0 with cold-reset + input-completeness (the load-bearing Harden). Real-data-only (03c / 17b deterministic corruption). | instrument_01…md · loop iter 2 | GROUNDED |
| 2026-07-22 | Combinatorial Purged CV (CPCV) + purge/embargo (#0) | The honest scoreboard: split time so a test window never shares an overlapping 3-second label with a training bar. | on 870,304 real BTC@250 bars (34.85% of consecutive bars close within 3s): naïve random k-fold leaks t=169 over 252,512 straddling overlapping-label pairs → CPCV+purge/embargo leaves 0 straddling (0 contamination); genuine signal preserved (0.55% recovery bias, power 1.0); null OOS-IC FPR 0.000; N_min(H) from real blocks. Substrate gate PASS (with #1). PBO-on-null 0.5-calibration descoped to #9 (operator ruling 2026-07-22). | instrument_00…md · loop iter 4 | GROUNDED |
| 2026-07-22 | Block-permutation shuffled-label null (#2) | Shuffle the answers in rhythm-preserving chunks; a real edge must beat the shuffles, a fake one collapses to chance. | on 870,304 real BTC@250 bars (vwap_close_deviation): null-test size 0.05 in [.037,.063] ∀L∈{25,50,100} & p-values discrete-uniform (χ² 0.41/0.75/0.80); a lazy iid shuffle would over-reject at 0.21 (block null 1.56× wider → block-permutation load-bearing); detects a real look-ahead (N_min 10k); U-shape blind FNR=1 (route to #11/#18). | instrument_02…md · loop iter 5 | GROUNDED |
| 2026-07-22 | Effective-n deflation + BH–FDR (#3) | Autocorrelated data has fewer real data points than it looks; count them honestly, then correct for many tries. | on 869,833 real BTC@250 bars (7-feature family; return kurtosis 37.7, vol-clustering 0.66): HAC effective-n = 35% of N on real data (naive would inflate significance up to 2.34× — matches SEAL); Benjamini-Yekutieli controls FDR on white/block/circular nulls (0.043/0.057/0.067 ≤ q); detects real look-ahead (N_min 3k); U-shape blind FNR=1. Findings: BY (not BH) needed for the cross-correlated family; the GARCH-specific scalar failure is muted for a rank IC. | instrument_03…md · loop iter 6 | GROUNDED |
| 2026-07-23 | Single-Feature Importance (SFI, OOS) (#6) | Train on one feature alone across 50 out-of-sample time-slices — does it beat a coin toss? | on 869,833 real BTC@250 bars over the grounded CPCV substrate: the pass-mark z* is learned from the null (2.13), not 1.0 (which would false-positive 31.5% of noise features); detects a real look-ahead (power N_min 20k); and a concentration-robust statistic rescues regime-concentrated signals the dispersion-penalizing z=mean/sd silently kills (κ_min 0.2→0.1). This is the per-feature return object that unlocks DSR/PBO (#8/#9). | instrument_06…md · loop iter 7 | GROUNDED |
| 2026-07-23 | Deflated Sharpe Ratio (on SFI paths) (#8) | Is this just the luckiest of many features? Deflate the score by how many were tried — using a pass-mark learned from shuffled data. | on 869,833 real BTC@250 bars (7-feature family): the pass-mark is the empirical best-of-family Sharpe under shuffling (not the textbook formula, which over-states 2.38× because features share the shuffled answer key). FPR 0.04 on an independent holdout; look-ahead power 0.92; pass-mark reproducible to 0.01%; ONC trial count 7 ≈ participation ratio 6 (no collapse). The permutation pass-mark closes the trial-count gaming surface by construction. Real vwap deflates to DSR 1.0. | instrument_08…md · loop iter 9 | GROUNDED |
| 2026-07-23 | Probability of Backtest Overfitting (PBO / CSCV) (#9) | If we pick the in-sample winner, does it stay a winner out-of-sample, or is it a coin-flip? | on 869,833 real BTC@250 bars (K=100 trials, 252 CSCV splits): all 7 §7 gates pass, robust across 6 seeds — exchangeable null 0.51 (chance); overfit noise fires (PBO≥0.2) in 96.7%; genuine skill PBO 0.0 (power 1.0); AUC 1.0; a clone leaves PBO unchanged (0.005); an un-purged boundary leak collapses PBO to 0, the embargo lifts it +0.44. Three real bugs fixed (verify-before-report, no threshold p-hacking): within-block IC centering, a maximally-exchangeable chance null, and the many-trials regime (K=6 was biased). Documented sensitivity: PBO is fooled by raw autocorrelation (block-perm null 0.34) → it must ride on the #0 purged folds. Paired with a round-trip-cost magnitude gate (PBO is rank-blind). | instrument_09…md · loop iter 11 | GROUNDED |
| 2026-07-23 | Harvey–Liu–Zhu t≥3 (M_eff) (#10) | Once you count everything ever tried, how big a t-stat does a feature really need to be believed? | on 869,833 real BTC@250 bars (universe M=30, Newey-West lag 30): all 6 §7 gates, robust across 5 seeds — power 1.0; the effective test count M_eff recovers a known rank of 5 exactly; a clone adds 0 (M_eff 1.0); family-wise error controlled at 0.043 vs 0.82 for a naïve OLS (≈19× worse); collapsing the universe to 1 inflates error to 0.085. Necessity (verify-before-report): the textbook analytic threshold assumes a normal null and under-controls on real heavy tails (error up to 0.130); the permutation-calibrated threshold controls it and adapts to the tail (3.19→3.58 on the worst seed). Same permutation-refinement pattern as #3 and #8. ★ completes the realness axis. | instrument_10…md · loop iter 12 | GROUNDED |
| 2026-07-23 | Rank IC + ICIR + HAC-t (#4) | Does the feature actually rank-predict the next move, and is that significant once you account for slow-drifting (autocorrelated) data? | on 869,833 real BTC@250 bars (per-period IC series, T=750, period-lag 50): all 5 §7 gates, robust across 5 seeds — a real look-ahead is detected (power 1.0 at IC=.03); the per-period IC series is long-memory (Hurst 0.81), so a naïve i.i.d. t over-states significance ≥2× (2.2–3.7) and the required sample inflates ~SE²≈5×; blind to non-monotone & interaction-only signals (FNR=1 → #19/#11/#7). First usefulness instrument. The near-white bar-level contribution meant the HAC machinery had to move to the period-IC level; the null-FPR was controlled by #10's conservative-permutation threshold (adapts to the lag-50 heavy tail → FPR 0.005). Three checkpoints of verify-before-report (injection bug, level, drift-confounded N_min). | instrument_04…md · loop iter 15 | GROUNDED |
| 2026-07-23 | IC-decay / half-life (#5) | Does the edge peak at a tradable horizon and fade smoothly (healthy) — or stay flat / spike (leakage or snooping)? | on real BTC@250 bars over horizons {1,2,3,5,8,13,20} bars (NW lag 30): all 4 §7 gates, robust across 5 seeds — a healthy signal peaks at h*=3 and decays perfectly monotonically (post-peak ρ=−1.0, half-life 10); a flat / far-horizon curve is flagged as leakage. The multi-horizon returns overlap (h≥2), so a naïve i.i.d. t family-wise-errors at 0.09–0.15 while the HAC correction controls at 0.04–0.05 — HAC is load-bearing here (unlike #4's near-white single 3s return). The heavy-tail FWER was controlled by the #10/#4 permutation family threshold (Westfall-Young max-t). Blind to non-monotone → route to #7/#19. | instrument_05…md · loop iter 16 | GROUNDED |
| 2026-07-23 | MDA + clustered-MDA (ONC) (#7) | Train a model, shuffle one feature, and see how much accuracy it costs — the importance the model actually assigns. | on real BTC@250 bars (pinned logistic base, 4 purged folds): all 5 §7 gates, robust across 5 seeds — a real look-ahead is kept (power 0.83–0.88 at IC=.03); both nulls false-positive in ≤4.2%. ONC defeats the substitution effect: a feature and its exact clone each look weak alone, but ONC co-clusters them 100% and clustered importance recovers ~1.0× the lone-driver worth. The empirical-null threshold was set conservatively (97th pctl → FPR robustly ≤.05, the #4/#5/#10 pattern). Blind to interaction-only signals (a linear model can't see them → FNR=1) → route to #11/#12/#13. | instrument_07…md · loop iter 17 | GROUNDED |
| 2026-07-23 | Quantile monotonicity + PT/RW MR (#19) | Does the mean forward return climb smoothly across feature deciles (healthy), or spike in one tail (rare-veto) — a monotone relation, not just a spread? | on real BTC@250 bars (Q=10 deciles, rank returns): all 6 gates, robust across 5 seeds — a genuinely-monotone signal is detected (power 1.0 at IC=.05); both nulls calibrate to ~.05 (∈[.03,.07]) via a per-test block-permutation p-value (the analytic normal over-rejects the autocorrelated null → not ∀H-valid). The Romano-Wolf refinement is load-bearing: a flat-then-jump rare-veto has a big spread but its low half doesn't trend → the RW test rejects it (≤1.7%) while the plain trend over-rejects (100%). Completes the usefulness axis. Monotone-only by design → measures (not requires) the miss-rate on non-monotone/interaction signals → route to #11/#12/#13. | instrument_19…md · loop iter 19 | GROUNDED |
| 2026-07-23 | Conditional Mutual Information I(f;Y|S) (#11) | Given everything we already ship, does this feature add NEW information about returns — including interaction-only signal that has zero standalone predictive power? | on real BTC@250 bars (KSG/Frenzel-Pompe k-NN CMI, Runge local-permutation null): all 8 gate-groups, robust across 2 seeds — recovers the analytic Gaussian answer (≤.01 nats); detects a genuine interaction-only signal that has ~zero marginal information (the sign-XOR archetype the marginal instruments #4/#5/#7/#19 all miss); all four nulls false-positive at 0.0. The AR(1) hardening is load-bearing: a feature's own autocorrelation, unrelated to returns, does not inflate the local-permutation test (the classic Runge anti-conservatism concern). Published blind spot: CMI grounds "new beyond the shipped set as measured" — if the conditioning set captures a hidden common cause only partially, the residual is a real conditional dependence CMI correctly reports (route imperfect-conditioning cases to #12 knockoffs / #13 DML). Opens the conditional axis. | instrument_11…md · loop iter 21 | GROUNDED |
| 2026-07-24 | Double/Debiased ML + CPI (#13) | Strip out everything the shipped factors already explain — is there still a forward-return effect left over, and is it real once you account for slow-drifting data? | on real BTC@250 bars (cross-fitted purged 10-fold DML + HAC + CPI): all 7 gates, robust across 5 seeds — the confidence interval is calibrated (coverage 0.94–0.97, false-alarms ≤6.5%); a planted left-over effect is detected (power 0.97, HAC-t 6, CPI p 0.003); "retention" cleanly separates a feature that adds new information (R 1.22) from one that is redundant with the shipped set (R 0.24); it ABSTAINS when the feature is near-collinear with the shipped set (R²≥.95). HAC is not optional — the naïve i.i.d. error over-rejects 10–15× on slow-drifting data. Published vulnerability (the Harden): the guarantee is only as good as the conditioning set — omit a true driver and a redundant feature is spuriously admitted (R 1.0 vs 0.007), so the control set must be pre-registered with a sensitivity report. Completes the conditional axis and absorbs the FDR-selection role that #12 could not deliver. | instrument_13…md · loop iter 27 | GROUNDED |
| 2026-07-24 | Huberman-Kandel spanning intercept (#14) | Turn the feature into a trading return and ask: does it earn anything the shipped factors don't already earn? | on real BTC@250 bars (spanning regression + HAC + block-bootstrap): 6 gates robust across 4 seeds — coverage 0.93–0.97; a basis-spanned feature never false-positives; substitution separates spanned (t~0.3) from incremental; the significance is stable across a frozen lag set (no cherry-picking); and the omitted-premium Harden shows the verdict is only as complete as the pre-registered factor basis. Grounded per operator ruling (a) on the published power envelope: because the return series are long-memory, power≥.8 is reached at α≈6bps (the 5bps point sits at ~0.78 — the intrinsic long-memory-effective-N floor; block-bootstrap is used for the null-FPR, not power). | instrument_14…json · loop iter 29 | GROUNDED |
| 2026-07-24 | Mechanism-intensity scaling (Kyle-λ/VPIN/OFI) (#15) | Does the feature predict MORE strongly when the underlying market mechanism (price impact, order-flow toxicity) is more intense — a real dose-response, not a fluke? | on real BTC@250 bars: all 3 gates, robust across 3 seeds — a feature whose effect scales with the latent mechanism intensity is detected with power 1.0 (interaction t~24, a Jonckheere monotone-trend ~19.7, ΔIC ~0.17); a volatility-driven spurious scaling false-positives 100% without the volatility control and 0% with it (the control is load-bearing); and ≥2 of 3 mechanism proxies agree. Key model insight: intensity is a latent measured imperfectly by uncorrelated proxies, so the scaling is planted via the latent and each proxy partially confirms it. | instrument_15…py · loop iter 31 | GROUNDED |
| 2026-07-24 | Per-year IC + Bai-Perron/CUSUM (#16) | Does the feature's edge stay the same sign and strength across time, or does it break/flip — and if it breaks, exactly when? | on real BTC@250 bars (per-block IC + sup-F break, block-bootstrap CV): all 4 gates, robust across 4 seeds — a stable feature holds same-sign with a strong ICIR; a mid-sample sign-flip is detected 100% and located exactly (break-date error 0 blocks); a stable feature shows no spurious break (≤3%, block-bootstrap — the asymptotic critical value is invalid on short autocorrelated IC); and — the precondition — a dead feature can't hold same-sign across the blocks so it is never vacuously called "stable" (this gate sits behind the realness instrument). | instrument_16…py · loop iter 32 | GROUNDED |
| 2026-07-24 | Parameter-plateau vs needle (#17) | Does the feature work across a broad band of its parameter settings (robust plateau — neighbours also work) or only at one lucky knob value (overfit needle)? | on real BTC@250 bars (1-D cos-θ parameter grid, contiguous-run detection): all 3 gates, robust across 3 seeds — a plateau feature (a broad contiguous run of good-IC nodes around the centre) is detected 100% (median run 8 of 9 nodes); a needle (only the centre node good, driven by that node's private idiosyncrasy) is never called a plateau (0%) and neither is pure noise (≤5%); and the grid carries the real .7–.9 knob-neighbour correlation (0.83). A real robust signal spreads good IC across adjacent settings; an overfit one concentrates it on one node. | instrument_17…py · loop iter 33 | GROUNDED |
| 2026-07-24 | Detector lead-vs-coincide (#18) | Does the detector move BEFORE the event it flags (a genuine lead, predictive) or just at the same time (coincidence) — or after (lagging)? | on real BTC@250 bars (lead-lag + transfer-entropy + MMD²_u, three independent legs): all 3 gates, robust across 3 seeds — a planted leading detector is jointly detected 100% (optimal lag ℓ*≥+1 with a block-bootstrap CI excluding 0, directional transfer-entropy ΔTE>0, and a distributional MMD/KS shift), with the lead located exactly (bias 0 bars); a coincident, a lagging, a pure-noise, and a block-permuted detector are none called a lead (all 0%); and the latent-common-cause Harden — a hidden Z driving both the detector and the event makes the naïve lead+TE fire 100% spuriously, but the partial transfer entropy TE(D→E|Z) conditioning on the shared driver removes it (0–2.5%). The conditioning set must be pre-registered. Completes the robustness/detector axis and the 20-instrument battery. | instrument_18…py · loop iter 34 | GROUNDED |
| 2026-07-24 | Model-X Knockoffs / CRT / TSKI (#12) | Make a fake twin of each feature carrying no real signal; keep the feature only if it beats its twin — at a controlled false-discovery rate. | Operator ruling (2026-07-24): standard knockoffs don't hold on our data. Across four sub-iterations the standard Gaussian model-X construction was exhausted: on the real long-memory microstructure panel the filter delivers an irreducible false-discovery rate ~1.3× the target (no setting achieves ≤10% false discoveries and real detection — the detector goes dead before it reaches the target) and a power ceiling of 0.67 at the specified signal strength (needs 0.8). The core FDR guarantee is not met on this data. Its FDR-controlled conditional-selection role is routed to #13 DML (grounded), which handles the same dependence via orthogonalisation. Genuinely grounded and kept: the interaction-only non-linear-importance differentiator (random-forest 1.0 vs linear 0.0). Re-test if a time-series knockoff (TSKI / deep-generative) is built that controls FDR on long-memory data. | slice4_findings · loop iter 25 | REJECTED |
open_deviation_bars · 15 promoted bar_close columns)All 15 are bar-close candidates: computed over the trailing 200 completed-bar closes, emitted only on bar completion, NULL through the 200-bar warm-up (schema group comment schema.sql:71-72; per-column window text column_comments.py:412-616; golden warm-up proof golden_snapshot_test.rs:823-956). Batch-5 columns were additionally rescued by the persistence fix PR #556 (computed-then-dropped before the CH INSERT, 0%-populated until 2026-06-30).
| # | Column | Card | Batch · PR · date | Three-axis evaluation + added screens (promotion basis) | Edge hypothesis | Usefulness evidence | Realness evidence |
|---|---|---|---|---|---|---|---|
| 1 | bar_petrosian_fd | — | #509 · 2026-06-03 | three-axis | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 2 | bar_katz_fd | — | #509 · 2026-06-03 | three-axis | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 3 | bar_dispersion_entropy | — | #515 · 2026-06-07 | three-axis | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 4 | bar_cecp_velocity | — | #522 impl · backfill #541 | three-axis + CECP orthogonality (#519) | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 5 | bar_categorical_recurrence_rate | 66 | batch-5 · #544 · 2026-06-27 | three-axis + worst-cell Spearman ≤0.85 + VIF≤5 | UNREGISTERED “price-level stickiness” (measurement) | NONE YET | NONE YET |
| 6 | bar_sign_markov_flux | 98 | batch-5 · #544 | three-axis + worst-cell | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 7 | bar_ramsey_rothman_bicov_lag1 | 113 | batch-5 · #544 | three-axis + worst-cell | UNREGISTERED time-irreversibility (measurement) | NONE YET | NONE YET |
| 8 | bar_ehlers_increment_asymmetry | 26 | batch-5 · #544 | three-axis + worst-cell | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 9 | bar_cox_stuart_trend_z | 23 | batch-5 · #544 | three-axis + worst-cell | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 10 | bar_groeneveld_meeden_b3_skewness | 99 | batch-5 · #544 | three-axis + worst-cell | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 11 | bar_l_kurtosis_tau4 | 2 | batch-5 · #544 | three-axis + worst-cell | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 12 | bar_bartels_rank_vn_ratio | 19 | batch-5 · #544 | three-axis + worst-cell | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 13 | bar_hoeffding_phi_squared_midreturn_duration | 78 | batch-6 · #568 · 2026-07-04 | three-axis + §B ξ PASS (xi_worst 0.078) | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 14 | bar_hvg_forward_visibility_horizon_mean | 59 | batch-6 · #579 · 2026-07-04 | three-axis + §B ξ PASS (xi_worst 0.175) | UNREGISTERED measurement-only | NONE YET | NONE YET |
| 15 | bar_vg_time_directed_clustering_meangap | 60 | batch-6 · #570 · 2026-07-04 | three-axis + §B ξ PASS (xi_worst 0.171) | UNREGISTERED “arrow-of-time detector” (measurement) | NONE YET | NONE YET |
| — | rogers_satchell_var_bar | 50 | batch-6 · not merged | three-axis + §B ξ PASS (promotable) — blocked on window-mean reduction ratification | NOT IMPLEMENTED — tracked here so its edge hypothesis can be registered before it ships | ||
Excluded on purpose: aggression_ratio and the other core intra-bar microstructure columns (schema.sql:29, group core) — they predate and sit outside the orthogonality-promotion campaigns. Batch-6 dashboard journal filenames say “pr569-card59”; the merged commit is #579 (2c6f7b7b) — recorded here so the discrepancy doesn’t propagate.
fxview_cache.forex_bars · 15 contributed columns)Forex kernels live in the sibling terrylica/mql5 repo (orthogonal_extension_kernels/*.rs); this dashboard carries the mirror. All evaluated orthogonal · parameterless · agnostic, entering through the same structural pipeline: parameterless-orthogonal discovery (multi-slice Spearman worst-cell screening) → Chatterjee ξ keeper-confirmation → implementation (Forex candidates hub).
DEFERRALS.md / mql5 PR #100: 3 substrate-blocked, 2 parameter-flagged). 13 = the curated live catalog: those 9 + 4 batch-3/4 first-wave columns. 15 = 13 + the two later batch-3/4 stacked-PR columns (RQW + CREx, 2026-06-24). The numbers were never the same set; this table tracks all 15 live columns.| # | Column | Family | Batch · mql5 PR | Three-axis evaluation + added screens | Edge hypothesis | Usefulness evidence | Realness evidence |
|---|---|---|---|---|---|---|---|
| 1 | anderson_darling_a2 | distributional shape | b1-2 · #91 | three-axis + Spearman worst-cell + ξ keeper | UNREGISTERED | NONE YET | NONE YET |
| 2 | edge_spread_bps | microstructure | b1-2 · #92 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 3 | hvg_clustering | visibility-graph | b1-2 · #93 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 4 | kendall_taub_ret_spread | microstructure | b1-2 · #94 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 5 | lziv_complexity_signs | sign-seq complexity | b1-2 · #95 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 6 | mann_kendall_z | trend / drift | b1-2 · #96 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 7 | sevcik_fd | fractal roughness | b1-2 · #97 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 8 | sign_two_state_entropy_rate | sign-seq complexity | b1-2 · #98 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 9 | spectral_log_slope | spectral shape | b1-2 · #99 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 10 | pomeau_irreversibility_lag1 | time-irreversibility | b3-4 · cand #25 · LOOP #109 | three-axis + worst-cell + ξ + R1–R7 re-audit | UNREGISTERED | NONE YET | NONE YET |
| 11 | hvg_degree_assortativity_coefficient | visibility-graph | b3-4 · cand #55 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 12 | hvg_mean_shortest_path_length | visibility-graph | b3-4 · cand #57 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 13 | psd_wiener_spectral_flatness | spectral shape | b3-4 · cand #72 | three-axis + worst-cell + ξ | UNREGISTERED | NONE YET | NONE YET |
| 14 | cumulative_residual_extropy | distributional info | b3-4 late · cand #38 · #126 | three-axis + worst-cell + ξ (post-catalog) | UNREGISTERED | NONE YET | NONE YET |
| 15 | right_quantile_weight_tailweight | tail asymmetry | b3-4 late · cand #7 · #127 | three-axis + worst-cell + ξ (post-catalog) | UNREGISTERED | NONE YET | NONE YET |