5.1 KiB
History-depth extension (Tier-1 alpha research)
Status: PRE-REGISTERED — run on MacBook (heavy I/O + full harness).
Branch: research/history-depth-extension (create from latest research stack).
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 |
MacBook runbook
Prefer the bundled script (one entry point):
git fetch origin && git checkout research/earnings-gap-and-sue
# .env: ALPACA_* required; FMP_* if resuming earnings
# copy backtest_snapshots/prod.sqlite if not already local
chmod +x scripts/run_tier1_macbook.sh
# Default: coverage → deep rebuild → harness (+ era split)
./scripts/run_tier1_macbook.sh
# Optional variants
./scripts/run_tier1_macbook.sh --all # + earnings resume first
./scripts/run_tier1_macbook.sh --earnings-only # multi-day FMP + 2a/2b only
./scripts/run_tier1_macbook.sh --harness-only # skip rebuild
./scripts/run_tier1_macbook.sh --coverage-only
# Tunables
WORKERS=12 HISTORY_DAYS=5000 ./scripts/run_tier1_macbook.sh
./scripts/run_tier1_macbook.sh --workers 12 --fmp-limit 250
Then commit reports/ + updated research docs, or copy them back to Windows.
Data provenance
(filled at run time)
Results
Generated: 2026-07-19T09:41:34.109378
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
{
"snapshot": "/Users/taathde3/git/lab/signal_platform/backtest_snapshots/prod.sqlite",
"ticker_count": 506,
"ohlcv_row_count": 629263,
"date_range": {
"min": "2021-06-24",
"max": "2026-07-02"
},
"bars_per_year": [
{
"year": "2021",
"bars": 65678,
"tickers_with_bars": 494
},
{
"year": "2022",
"bars": 124423,
"tickers_with_bars": 497
},
{
"year": "2023",
"bars": 124479,
"tickers_with_bars": 499
},
{
"year": "2024",
"bars": 126129,
"tickers_with_bars": 501
},
{
"year": "2025",
"bars": 125615,
"tickers_with_bars": 504
},
{
"year": "2026",
"bars": 62939,
"tickers_with_bars": 505
}
],
"bars_per_symbol": {
"min": 14,
"p10": 1261,
"p50": 1261,
"p90": 1261,
"max": 1261
},
"symbols_by_start_year": {
"2021": 494,
"2022": 3,
"2023": 2,
"2024": 2,
"2025": 3,
"2026": 1
},
"note": "Where ticker counts drop in early years, the feed (or listing history) thins \u2014 do not treat those years as a full 505-name cross-section.",
"survivorship_banner": "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 \u2014 not levels."
}
Race guard
{}
Signal IC (full extended window)
Harness not run this pass.
Era split (diagnostic only)
No era split.
Verdict
COVERAGE_ONLY
Coverage probe only; run --phase harness after deep rebuild.
What a human must decide next
- Compare sector residual vs market residual across eras.
- If pre-2021 IC collapses, park Task 1 wire-in.
- Do not retune production knobs on deep history levels.
Artifacts: reports/history-depth-20260719-094134.json