Objective
Decide whether any of the four empirical Berg families warrants promotion as an independent tradable strategy bead with full G0–G13 rigor. Promotion requires a frozen StrategySpec, same_close-prohibited next-close execution, reported costs/turnover/multiple-testing controls, walk-forward/held-out validation, robustness matrix, and marginal contribution — evaluated separately from the indicator report.
Approach
- Intake classified as
investigationwithpublic_artifact(notemporal_research/external_data/database_import— this gate re-reads already-frozen public-proxy experiments rather than running new backtests or acquiring data). Split not required; child only if a robust edge exists. - Planning pinned one blocking
investigationwork item and publication via notebook + results. - Re-read four published experiments and ledger/gap ground truth as bounded offline experiment:
research/experiments/qm-tykd.1.json(F1 price/boundary, 389 signals, 4.77% sparse, overall +0.52pp vs unconditional but 2008–2019 -0.70pp, overlay 0.49% vs SPY 10.80%)research/experiments/qm-tykd.2.json(F2 capitulation, 183 signals, 2.17%, overall +1.12pp but 2008–2019 -0.24pp, overlay trails 7.19pp, TRIN TRIN/share-volume insufficient_history)research/experiments/qm-tykd.3.json(F3 breadth thrust, 221 signals, 3.5%, overall +0.55pp but 2020–2026 -0.65pp, overlay -7.6pp vs SPY)research/experiments/qm-tykd.4.json(F4 composite ge2, 358 signals, 4.4%, overall 1.86% vs 0.94% but 1994–2007 0.86% vs 0.87% uncond, overlay -2.56pp vs SPY 11.00%, F2 zero signals)research/findings/berg-coverage-ledger-qm-tykd.5.md/.json(F4 doctrine, 30k daily proprietary/not redistributable, causal T_close→T+1, fee_bps=10) andresearch/findings/qm-zzdt-berg-proxy-boundary-gap.md(proxy provenance HIGN 6331/LOWN 6312/S5FI 4956/UVOL 7616/DVOL 8643, no synthetic history) and prior promotionqm-t0u5closed rejected (reserved this bead).
- Verified datastore provenance read-only (
data/market.sqliteclose_only v5, 127 tickers 806,897 rows, zeroBERGtickers, proxy spans as declared) and bead states (qm-tykd.1–4closed rejected,qm-t0u5closed,qm-zfl5open licensing,qm-ckabblocked ledger v2). - Audited each family against the frozen gate: causal lag (T+1 only, T+2 retained, same_close prohibited), 10 bps costs, turnover trivial, 30k multiple-testing vs unconditional + event baselines, adjacent-threshold/window robustness, false-signal rates, subperiod regime stability, and overlay vs SPY marginal contribution. All four fail at least one blocking criterion — no post-hoc tuning.
- Authored executed notebook
research/experiments/1241 (legacy qm-is3q).ipynb(10 cells, 6 code cells with outputs) documenting H0 vs H1, per-family gate table, provenance, and no-promotion decision. Converted viapython3 -m research.reports notebooks --id 1241 (legacy qm-is3q)and rebuilt results viapython3 -m research.reports results. Nodata/market.sqlitemutation; citations are URLs perno_pdf_redistribution.
Files changed
research/experiments/1241 (legacy qm-is3q).ipynb— executed notebook (H0/H1, gate criteria, per-family quantified audit, provenance checks, bead-state verification, no-promotion decision; offline code outputs for JSON deltas, datastore, and bead states).research/results/1241 (legacy qm-is3q).md— this durable result note (YAML front matterid: 1241 (legacy qm-is3q), searchable summary).docs/site-data/results.json,docs/results.html(and detail pages) — rebuilt via canonicalresearch.reports resultsproducer (1241 (legacy qm-is3q) newest).docs/experiments/1241 (legacy qm-is3q)-analysis.html— generated viaresearch.reports notebooks(offline HTML rendering of the executed notebook).data/market.sqlite— not mutated; verified read-only (Volume=0close_only; NYSE volume/TRIN/breadth remain proxy-only with disclosure).
Validation
python3 -c "import json; [json.load(open(f'research/experiments/qm-tykd.{i}.json')) for i in [1,2,3,4]]"— four JSON bundles load with status rejected.bd show qm-tykd.1 qm-tykd.2 qm-tykd.3 qm-tykd.4 qm-t0u5 --json | python3 -m json.tool— four families +qm-t0u5closed rejected; this gate reserves1241 (legacy qm-is3q)for future robust variant only.sqlite3 data/market.sqlite "SELECT ticker FROM instruments WHERE ticker LIKE '%BERG%'"— 0 rows (no proprietary adoption).sqlite3 data/market.sqlite "SELECT ticker, count(*), min(date), max(date) FROM ohlcv WHERE ticker IN ('INDEX:HIGN','INDEX:LOWN','INDEX:S5FI','USI:UVOL','USI:DVOL') GROUP BY ticker"— 6331/6312/4956/7616/8643 rows with spans as cited.python3 -m backtest.datastore status— schema v5 close_only 127 tickers 806,897 ohlcv under soft limit;connect_readonlyquery-only invariant.python3 -m research.reports notebooks --id 1241 (legacy qm-is3q) && python3 -m research.reports results— notebook HTML and results JSON rebuilt via canonical producers.python3 -m research.artifacts check --mode full --offline— shared/canary artifacts deterministic and current; no hand-editeddocs/bytes.python3 -m research.pipeline validate && python3 -m research.pipeline verify --offline— pipeline graph and offline verification passed.git grep 1241 (legacy qm-is3q) research/results/1241 (legacy qm-is3q).md— entry is grep-searchable.
Results
No family passes the tradable promotion gate — H0 holds, no independent strategy bead spawned. Each headline beats unconditional (+0.52/+1.12/+0.55/+0.92pp) but fails subperiod stability (F1 2008–2019 -0.70pp vs 1994–2007 +0.18pp and 2020+ +4.42pp; F2 2008–2019 -0.24pp vs 1994–2007 +3.19pp; F3 2020–2026 -0.65pp vs 2001–2007 +2.07pp; F4 1994–2007 0.86% vs 0.87% uncond driven by 2020+ 4.97% n=67), adjacent-parameter fragility, and overlay versus SPY negative (-10.3pp, -7.19pp, -7.6pp, -2.56pp) with 27–37% false-signal rates (worse in failed regimes) and severe 30k multiple-testing hazard even before walk-forward. No StrategySpec freeze, no walk-forward/held-out, and no G11–G12 matrix is fabricated for a rejected edge; same_close remains prohibited and indicator vs strategy reporting stays separate. A future public proxy that clears causal lag, 10 bps, turnover, and regime-stable gates would spawn a new strategy bead with full G0–G13 rigor to a separate publication decision. Follow-up ownership remains qm-zfl5 (licensing), qm-ckab (ledger v2), and any future per-family improvement via new data-source work.