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 |
|---|---|---|---|---|---|
| — empty · a metric appears here only after it has a Discovery row · nothing has been evaluated yet — | |||||
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 |