research: archive Task 1 sector residual as CLOSED/REJECTED

Deep masked retest failed the iron IC bar (0.027 < 0.03). Log as rejected #13 in
research README; close sector-residual and history-depth docs. Production market
residual unchanged.
This commit is contained in:
2026-07-19 11:45:15 +02:00
parent 01007fb6dd
commit 9717d8176b
3 changed files with 57 additions and 50 deletions
+1
View File
@@ -47,6 +47,7 @@ score, Structural S/R, the Gate Target Ladder, sentiment, fundamentals) is
| 10 | **Inverse-vol position sizing** | The apparent "win" was **mis-attributed**: the 20% notional cap bound on 95% of entries, so it measured concentration, not vol-sizing. Genuine inverse-vol cuts DD to 18.2% but costs ~58pp return at flat Sharpe | **Rejected** as edge; it's a risk-preference trade | `backtest-20260709-position-sizing*.json` | | 10 | **Inverse-vol position sizing** | The apparent "win" was **mis-attributed**: the 20% notional cap bound on 95% of entries, so it measured concentration, not vol-sizing. Genuine inverse-vol cuts DD to 18.2% but costs ~58pp return at flat Sharpe | **Rejected** as edge; it's a risk-preference trade | `backtest-20260709-position-sizing*.json` |
| 11 | **FIP path-smoothness** as tie-breaker/filter | Non-monotonic within the qualified set; thinning the entry stream costs more compounding than the tilt returns | **Rejected as a filter** — but see §4, it's the strongest raw signal we've measured | — | | 11 | **FIP path-smoothness** as tie-breaker/filter | Non-monotonic within the qualified set; thinning the entry stream costs more compounding than the tilt returns | **Rejected as a filter** — but see §4, it's the strongest raw signal we've measured | — |
| 12 | **Fixed take-profit sweep** (R-multiples) | No interior optimum ever found — the best TP is "no TP" | **Rejected.** Momentum's edge lives in the right tail | `backtest_service.py:450` | | 12 | **Fixed take-profit sweep** (R-multiples) | No interior optimum ever found — the best TP is "no TP" | **Rejected.** Momentum's edge lives in the right tail | `backtest_service.py:450` |
| 13 | **Sector-residual 12-1** (`mom_12_1_sector_resid` / sector demean) as replacement for market residual | Short-window IC/A/B looked knife-edge green; deep repaired + **liquid-1500** retest: weeks 83, mild +IC **0.027** / t 1.69, **below iron bar 0.03** (FAIL). Demean already weaker | **Rejected / closed.** Keep production market residual. Do not resurrect without a new pre-registered protocol | [sector-residual-momentum.md](sector-residual-momentum.md) · `sector-resid-deep-20260719-113319.json` · history-depth supersession note |
--- ---
+22 -17
View File
@@ -1,8 +1,9 @@
# History-depth extension (Tier-1 alpha research) # History-depth extension (Tier-1 alpha research)
**Status:** sector-resid deep test **FAIL**see supersession section. PENDING_HUMAN beyond PASS/FAIL. **Status:** **CLOSED.** Sector-residual deep test **FAIL**Task 1 archived as rejected (see supersession).
**Branch:** `research/earnings-gap-and-sue` (MacBook commit `f6e0ca7`) **Branch:** `research/earnings-gap-and-sue`
**Superseded artifact (do not cite):** `reports/history-depth-20260719-103315.json`**UNMASKED, TWO-TIER SNAPSHOT** **Superseded artifact (do not cite):** `reports/history-depth-20260719-103315.json`**UNMASKED, TWO-TIER SNAPSHOT**
**Authoritative sector grade:** `reports/sector-resid-deep-20260719-113319.json`
**Production impact:** none. **Do not retune any production knob on deep history.** **Production impact:** none. **Do not retune any production knob on deep history.**
--- ---
@@ -159,17 +160,11 @@ report does not change that without a separate A/B. Flag for human awareness onl
## What a human must decide next ## What a human must decide next
1. **Sector residual:** keep research-only until either 1. **Sector residual — decided:** CLOSED / REJECTED (archive complete). No wire-in.
(a) sector ETF + sector map cover the full deep window **and** IC is re-run 2. **Do not** retune residual vs raw, FIP, or vol blend from deep IC tables
with weeks ≫ 35 on a documented universe, or
(b) explicitly accept short-window-only evidence (weaker case).
2. **Do not** merge sector residual into production from this depth run.
3. **Do not** retune residual vs raw, FIP, or vol blend from these IC tables
without a pre-registered book A/B on the intended universe. without a pre-registered book A/B on the intended universe.
4. Optional follow-up: extend sector ETF history + sector labels to nasdaq_all, 3. Optional (separate threads only): finish earnings backfill and re-run SUE;
re-run **only** sector residual IC on deep research.sqlite with race guard. snapshot per-symbol depth guard as tooling.
5. Optional: finish earnings backfill (48→506) and re-run SUE; depth alone did
not include SUE.
--- ---
@@ -187,12 +182,22 @@ report does not change that without a separate A/B. Flag for human awareness onl
The table and interpretation from **`history-depth-20260719-103315`** are **UNMASKED, TWO-TIER SNAPSHOT — superseded, directional only, do not cite**. Prod-universe names (and sector residual coverage) were left shallow while breadth names were deepened; sector residual weeks=35 was a data gap. The table and interpretation from **`history-depth-20260719-103315`** are **UNMASKED, TWO-TIER SNAPSHOT — superseded, directional only, do not cite**. Prod-universe names (and sector residual coverage) were left shallow while breadth names were deepened; sector residual weeks=35 was a data gap.
### Sector-residual deep test outcome: **FAIL** ### Sector-residual deep test outcome: **FAIL** (archived)
Task 1 CLOSED — sector residual dead on deep evidence. **Task 1 CLOSED / REJECTED** — sector residual dead on deep evidence. Archived in
the research log rejected table (#13). Do not resurrect without a new
pre-registered protocol.
| check | result |
|---|---|
| weeks | **83** (data fix worked) |
| mean IC | **0.0268** (below 0.03 bar) → FAIL |
| t vs resid same CS | 1.69 ≥ 1.30 pass |
| era signs | both + pass |
- Reason: failed one or more pre-registered checks (see checks)
- Artifact: `reports/sector-resid-deep-20260719-113319.json` - Artifact: `reports/sector-resid-deep-20260719-113319.json`
- Mechanical checks: see that report. - Summary write-up: [sector-residual-momentum.md](sector-residual-momentum.md)
**Future snapshot rebuilds must verify per-symbol depth** (earliest-bar uniformity across the intended universe) — guard is a to-do, not part of this order. **Future snapshot rebuilds must verify per-symbol depth** (earliest-bar
uniformity across the intended universe) — guard is a to-do, not part of this
order.
+34 -33
View File
@@ -1,9 +1,24 @@
# Sector-residual momentum (Tier-1 alpha research) # Sector-residual momentum (Tier-1 alpha research)
**Status:** **PROMOTE (to human design decision only)** — IC + A/B bars cleared; **do not ship**. **Status:** **CLOSED / REJECTED** — do not resurrect without a new pre-registered protocol.
**Branch:** `research/sector-residual-momentum` **Branch:** `research/earnings-gap-and-sue` (final grade) · earlier short-window work on `research/sector-residual-momentum`
**Production impact:** none. Local research only. No scheduler / gate / prod-config changes. **Production impact:** none. Market residual 12-1 remains the production momentum leg.
**Artifacts:** `reports/sector-residual-20260719-083356.json` (+ companion `.md`) **Authoritative deep grade:** `reports/sector-resid-deep-20260719-113319.json` (**FAIL**)
**Short-window A/B (superseded for promotion):** `reports/sector-residual-20260719-083356.json` — knife-edge only; not decisive after deep masked retest.
### Closure (2026-07-19)
Pre-registered deep test on repaired snapshot + liquid-1500 mask:
| check | result |
|---|---|
| weeks extended (≫ 35) | pass (83) |
| sign +, reliable, eras both + | pass |
| t ≥ `mom_12_1_resid` same CS | pass (1.69 ≥ 1.30) |
| \|mean IC\| ≥ 0.03 | **fail (0.0268)** |
**Verdict:** Task 1 CLOSED — sector residual dead on deep evidence.
`mom_12_1_sector_demeaned` remains DEAD for promotion. No further sector-residual variants from this thread.
--- ---
@@ -176,45 +191,31 @@ gates a slightly larger set).
--- ---
## Verdict ## Verdict (final — archived)
| signal | verdict | note | | signal | verdict | note |
|---|---|---| |---|---|---|
| **`mom_12_1_sector_resid`** | **PROMOTE → human wire-in decision** | IC modestly beats market residual; A/B clears pre-reg bar narrowly. **Do not ship from this branch.** | | **`mom_12_1_sector_resid`** | **CLOSED / REJECTED** | Deep masked IC 0.0268 &lt; 0.03 bar (`sector-resid-deep-20260719-113319`). Short-window PROMOTE superseded. |
| **`mom_12_1_sector_demeaned`** | **DEAD** (for promotion) | Iron-rule IC magnitude ok, but t-stat loses to `mom_12_1_resid`. Cheap variant not competitive. | | **`mom_12_1_sector_demeaned`** | **DEAD** | Never cleared t vs market residual; stays dead. |
### Read carefully (for the human) Short-window evidence below is **historical only** (pre-deep retest). Do not use it
to reopen promotion.
1. **IC edge is real but small.** Sector residual IC 0.0578 / t 2.34 vs market ### Read carefully (archived context)
residual 0.0552 / t 1.98 on the **same** 35 windows — better consistency
(ic+ 65.7% vs 60%) and slightly higher mean, not a different factor class. 1. Short-window IC (0.058 / t 2.34 vs resid 0.055 / t 1.98 on 35 weeks) and knife-edge
2. **A/B is not a clear Sharpe win.** Full-period Sharpe is flat (2.09). A/B looked openable — that was the data gap era (shallow prod bars).
Validation Sharpe is **lower** than control (2.57 vs 2.92) and only clears 2. Deep repaired + liquid-1500 retest closed the case: weeks 83, mild +IC, **below bar**.
the pre-registered “within 0.5 SE” cushion by ~0.001. Train improves; 3. Production keeps **market** residual 12-1. Research harness may still *emit*
validation worsens — classic regime-split noise on ~2 years. sector residual for diagnostics; it is not a promotion candidate.
3. **Risk side is friendly.** Full max DD improves (19.8% vs 21.4%); train DD 4. **Do not resurrect** without a new pre-registered protocol and new data.
also better. Matches the “lower factor vol” half of the hypothesis more than
the “higher Sharpe” half on this window.
4. **Survivorship / short history.** Same caveats as all current research:
todays constituents, ~35 independent weekly windows, one post-2021 regime
dominant. Task 3 (history depth) should re-check IC stability before any
wire-in.
5. **Not shipped.** Machinery lives on the research branch; production residual
path is untouched.
--- ---
## What a human must decide next ## What a human must decide next
1. **Accept or reject** replacing `mom_12_1_resid` with `mom_12_1_sector_resid` **Nothing on Task 1** — archived. Optional: leave research machinery in tree
as the production residual (gate + 80/20 mom leg), **or** keep market residual (harmless) or delete later as cleanup; not a strategy decision.
and treat sector residual as research-only.
2. If leaning accept: require **Task 3 history-depth** confirmation (IC era split
pre/post-2021) before any production PR.
3. Optional: run **sector-cap ≤3** A/B with full tail diagnostics (not run here).
4. **Do not** merge this verdict into main strategy docs without review.
5. Wire-in design (live sector map refresh, ETF series ops, fallback when sector
missing) is a **separate** approved engineering step.
--- ---