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.
9.0 KiB
History-depth extension (Tier-1 alpha research)
Status: CLOSED. Sector-residual deep test FAIL — Task 1 archived as rejected (see supersession).
Branch: research/earnings-gap-and-sue
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.
Pre-registration (locked before rebuild)
Motivation
All current conclusions rest on ~35 non-overlapping weekly windows in essentially one post-2021 regime. Extending history toward max Alpaca daily-bar depth adds the 2018 vol shock and full 2020 crash (where the feed allows).
Protocol
- Empirical coverage first — bars per calendar year per symbol; document where the feed thins out. Do not assume a uniform start date.
- Rebuild the research snapshot completely from prod source + max history
per symbol (
Adjustment.SPLIT, ~200 req/min pacing via existing extender). - Race guard (rule 6) — refuse analysis until completion manifest is
complete=trueand live counts match. - Re-run full signal harness (all existing signals incl. sector residual / SUE if present) on the extended window.
- Report per signal: mean IC, t, window count, and era split (pre-/post-2021) — diagnostic only, not a tuning input.
- Log prominently: survivorship bias grows with depth (today’s constituents backfilled). Absolute Sharpe/CAGR on deep history is optimistic; payload is relative signal comparisons and IC stability, not levels.
- Do not retune production knobs. If a knob’s confirmation looks overturned on deep history → report only; human decides.
Success / interpretation (not promotion of a new signal)
| outcome | meaning |
|---|---|
| Sector residual still ≥ market residual on deep IC + stable sign | strengthens Task 1 PROMOTE case |
| Sector residual collapses pre-2021 | PARK Task 1 wire-in |
| SUE remains weak after full earnings + depth | DEAD SUE for this stack |
| Any production knob looks worse deep | report; no auto-retune |
Data provenance
| check | result |
|---|---|
| Snapshot | MacBook research.sqlite |
Manifest complete |
true (finished 2026-07-19T08:19Z) |
| Live counts match | yes — 4655 tickers / 6,609,926 OHLCV / 4149 rank_only |
history_days |
5000 |
| fetch_ok / fail | 4152 / 0 |
| Race guard | pass |
SURVIVORSHIP BIAS: today’s constituents backfilled historically. Absolute Sharpe/CAGR levels on deep history are optimistic. Use relative signal IC comparisons and era stability only — not levels.
Coverage JSON was empty in the auto-written doc (harness-only phase after rebuild). Manifest is the race-guard source of truth for this run.
Earlier MacBook files history-depth-20260719-093853 … 095156 are intermediate
/ incomplete passes — do not cite. Only 103315 is authoritative.
Results (authoritative: 103315)
Full-window signal IC (broad research universe, deep bars)
| signal | mean_ic | t | weeks | avg_N | notes |
|---|---|---|---|---|---|
| high_52w | 0.111 | 6.41 | 84 | 2280 | strong on deep breadth |
| mom_12_1 | 0.066 | 5.11 | 83 | 2278 | raw momentum strong |
| trend_200 | 0.055 | 4.30 | 85 | 2308 | |
| mom_6_1 | 0.049 | 4.91 | 88 | 2376 | |
| mom_3_1 | 0.036 | 3.58 | 90 | 2426 | |
| fip_id | +0.027 | 3.25 | 83 | 2278 | sign flip vs prod fingerprint |
| mom_12_1_resid | 0.026 | 2.21 | 83 | 2278 | market residual still + but weaker than raw |
| reversal_1m | ~0 | 0.31 | 91 | 2443 | dead |
| vol_6m | −0.123 | −6.34 | 88 | 2376 | low-vol anomaly strong |
| mom_12_1_sector_resid | 0.058 | 2.34 | 35 | 498 | not deep-sample — see caveats |
| mom_12_1_sector_demeaned | 0.034 | 1.32 | 35 | 497 | same short fingerprint |
Era split (diagnostic only — not a tuning input)
| signal | pre-2021 IC / t / w / N | post-2021 IC / t / w / N |
|---|---|---|
| mom_12_1 | +0.041 / 2.94 / 36 / 1425 | +0.079 / 3.64 / 48 / 2913 |
| mom_12_1_resid | +0.023 / 1.68 / 36 / 1425 | +0.027 / 1.37 / 48 / 2913 |
| fip_id | +0.012 / 1.35 / 36 / 1425 | +0.037 / 2.91 / 48 / 2913 |
| vol_6m | −0.056 / −2.16 / 40 / 1461 | −0.162 / −4.94 / 48 / 3123 |
| high_52w | +0.049 / 2.0 / 36 / 1422 | +0.138 / 4.34 / 48 / 2915 |
| sector_resid | absent | 0.058 / 2.34 / 35 / 498 (short only) |
| sector_demeaned | absent | 0.034 / 1.32 / 35 / 497 (short only) |
Critical caveats (must read)
1. Sector residual did not get a deep-history stress test
mom_12_1_sector_resid / _demeaned still show exactly the Task‑1 short-window
fingerprint: 35 weeks, N≈498, IC 0.0578, t 2.34.
On the same run, raw mom_12_1 has 83 weeks, N≈2278. So depth worked for
price-only signals, but sector residual is still limited to the ~505 labeled
prod names × short factor calendar (sector map only covers prod; and/or sector
ETF / two-factor path did not extend usable residual weeks).
Pre-registered rule: “Sector residual collapses pre-2021 → PARK Task 1 wire-in.” Pre-2021 sector residual is absent from the era table. That is a PARK, not a confirmation of the short-window PROMOTE.
Do not claim “sector residual beats market residual on deep history” from this table — the two rows are not the same cross-section or window count.
2. fip_id sign flips vs production fingerprint
| sample | fip mean IC | t |
|---|---|---|
| Prod 505, ~5y (fingerprint) | −0.045 | −2.91 |
| Research breadth, deep (this run) | +0.027 | +3.25 |
This does not authorize resurrecting unconditional FIP as a book filter. It confirms earlier Phase‑B caution: FIP edge is universe- and sample-dependent. Production display card can stay context-only. Nested lookbacks still not OOS.
3. Market residual vs raw momentum on deep breadth
On deep broad IC, raw 12‑1 (0.066 / t 5.1) ≫ market residual (0.026 / t 2.2). That does not by itself overturn production residual ranking (book A/B was on 505 + GTL gate, not pure factor IC), but it is a yellow flag for “residual is always the better rank key” stories on broad history. No auto-retune.
4. Low-vol anomaly is the cleanest deep-history result
vol_6m IC −0.12 / t −6.3 full; stronger post-2021. Consistent sign across eras.
Production already blends high-vol (not low-vol) into the 80/20 rank — this
report does not change that without a separate A/B. Flag for human awareness only.
Verdicts (vs pre-registration)
| question | verdict |
|---|---|
| Task 1 sector residual wire-in | PARK — no pre-2021 sector residual; deep-sample IC not established; short-window PROMOTE stays “human design only,” not strengthened by this run |
| Sector demean | still DEAD for promotion (t 1.32, short only) |
| SUE | not re-scored here (no sue_latest in harness table) — leave Task 2 PARK until full earnings backfill |
| fip unconditional book filter | remains rejected / parked despite sign flip on broad deep sample |
| Production residual / 80/20 / trail knobs | no retune from this report |
| Overall Task 3 | COMPLETE as diagnostic — payload is relative IC + caveats above |
What a human must decide next
- Sector residual — decided: CLOSED / REJECTED (archive complete). No wire-in.
- Do not retune residual vs raw, FIP, or vol blend from deep IC tables without a pre-registered book A/B on the intended universe.
- Optional (separate threads only): finish earnings backfill and re-run SUE; snapshot per-symbol depth guard as tooling.
Artifacts
| file | role |
|---|---|
reports/history-depth-20260719-103315.json |
authoritative |
reports/history-depth-20260719-103315.md |
companion dump |
reports/history-depth-20260719-093853 … 095156 |
ignore (partial) |
Supersession notice (2026-07-19 sector-resid deep test)
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 (archived)
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 |
- Artifact:
reports/sector-resid-deep-20260719-113319.json - Summary write-up: 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.