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:
@@ -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 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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 < 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:
|
|
||||||
today’s 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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user