Review outcome: Six independent lenses turn the field guide into a ranked repair list.
Produced by six read-only Codex reviewers on 2026-08-26 and checked by Fable. The free-look SPEC was amended the same night: the 2022→2026-08-21 lockbox is reserved; execution uses the next-open convention; point-in-time metadata remains an explicit caveat; the Newey–West lag is overlap-based; and every look enters the trial ledger.
This review consolidates the six lens reports in .guide-review/. Repeated findings are lightly deduplicated only in the must-fix table; the lens reports below retain their substance and wording.
Consolidated must-fix list
| Rank | Gap | Lens | Fix | Effort |
|---|---|---|---|---|
| 1 | Retroactive intraday fill | Engine, timing & costs | Fill from the first sealed M1 open after the decision plus configured submission latency; bind decision and fill timestamps into the receipt. | M |
| 2 | No enforceable one-shot lockbox / Sharadar lockbox consumption | Statistics; Workflow & evidence | Reserve and hash the terminal period, issue exactly one access receipt, and treat already-seen history as IS with future-only confirmation. | M now / L later |
| 3 | No comprehensive cross-program trial registry | Engine, timing & costs; Statistics; Archetypes vs battery | Append a write-ahead trial at proposal time and immutable success/failure/void receipts with endpoint, config, code, data, returns, and raw/effective trial counts. | M |
| 4 | Point-in-time metadata rewrites history | Data stack; Archetypes vs battery | Seal an effective-dated security master keyed by permanent ID, including size, category, and industry history. | M + vendor data |
| 5 | Gap-fade and event terms are not executable/knowable across the broad universe | Archetypes vs battery; Data stack | Keep results descriptive until broad auction M1 data and PIT ex-dividend, merger, spinoff, and disposition terms exist. | M–L |
| 6 | No prelaunch economic kill contract | Live loop | Hash a numeric live-risk-policy/v1 into graduation and enforce its loss, drawdown, envelope, drift, and retirement thresholds automatically. | L |
| 7 | Broker caps are not end-to-end | Live loop | Enforce deployment, order, symbol, fleet, and daily-loss limits for every quantity. | M |
| 8 | Historical validation is not operational | Workflow & evidence | Custody exact validation panels, execute frozen qualifiers once, and retain a separate lockbox. | L |
| 9 | Tonight’s snapshot chain is not manifest-bound | Data stack | Read current manifests through the verified store and emit the data dictionary plus input hashes. | S–M |
| 10 | Price/volume semantics and failed-row handling are not frozen | Data stack | Freeze tested vendor semantics and quarantine rows that fail economic validation. | M |
| 11 | Actions and delistings lack knowable-time terms and proceeds | Data stack; Archetypes vs battery | Build a PIT action/disposition ledger with dividend pay dates, full terms, delisting proceeds, and conservative fallbacks. | M–L |
| 12 | No sealed PIT earnings/fundamentals history | Data stack | Acquire announcement timestamps and as-first-reported fundamentals. | L + vendor data |
| 13 | No historical borrow, locate, fee, or dividend-on-short authority | Data stack; Archetypes vs battery | Keep promotion long-only until historical borrow evidence exists. | L |
| 14 | Cost model lacks real-money fidelity | Engine, timing & costs | Version symbol/liquidity/time-bucket costs calibrated from paper fills and bind them into capability identity. | M |
| 15 | Free-look execution conventions remain underspecified | Engine, timing & costs | Freeze formation time, next-tradable fill, delisting, and short-locate conventions before running survivors. | S |
| 16 | Adaptive wave/family resets do not control series-wide error | Statistics | Make exploration selection-only; use global Holm/FWER for a few live choices or BHY-FDR for a portfolio. | M |
| 17 | Exact-40 is operational completeness, not 40 temporal observations | Statistics | Require a multi-session block-bootstrap lower bound before evidentiary promotion. | M |
| 18 | No true per-fold refit, stitched fold table, or resilience report | Workflow & evidence | Seal fold-level IS/OOS metrics, η/trend, and profitable-fold share; refit only when live operation will refit. | M |
| 19 | No plateau/cliff veto | Workflow & evidence | Require a sealed economic-neighbor map, contiguous ≥90%-of-best region, cliff veto, and center selection. | M |
| 20 | Fragility coverage is incomplete | Workflow & evidence | Add deterministic reshuffle, skip, jitter, random-twin, and 2×–3× cost stress receipts with bad-tail gates. | M |
| 21 | Implementation-shortfall comparison is partial | Live loop | Persist broker-versus-simulator shortfall on identical signals by liquidity bucket and gate cost-model recalibration. | M |
| 22 | No Monte Carlo portfolio risk envelope or drift layers | Live loop | Seal 10,000 date-clustered portfolio paths plus daily max-drawdown, envelope, correlation, and drift receipts. | M |
| 23 | No portfolio sizing/capacity authority | Live loop | Preregister a sizing family with risk, correlation, ADV, concentration, and stressed-impact caps. | M |
| 24 | Three eras are not a regime test | Archetypes vs battery | Add fixed per-year × trend/volatility/liquidity tables and forward drift/retirement gates. | S |
| 25 | Newey–West lag was dimensionally wrong | Statistics; Archetypes vs battery | Predefine lag from actual overlap—usually horizon minus one observations—and include a sensitivity band. | S |
Engine, timing & costs
What the guide demands
- Make causality structural: finalized close/bar \(t\) may generate a decision, but execution must occur at a genuinely later tradable instant.
- Encode pessimistic fills: adverse slippage, gap-through stops, trade-through limits, participation limits, and conservative intrabar ordering.
- Charge costs per fill; include spread, fees, volatility/liquidity slippage, impact, borrow/carry where relevant, plus 0×/1×/2×/3× sensitivity.
- Produce a reproducible manifest for every run and an append-only statistical trial registry covering successes, failures, abandoned runs, and variants.
- “Test the tester” with hand-calculated fixtures, random-signal nulls, corporate actions, look-ahead canaries, accounting identities, and cross-process determinism.
- Freeze one execution convention per strategy family; do not compare performance across incompatible conventions.
What we do
- The tournament enforces finalized-bar decisions and queues signals for the next aggregate-bar open:
day-replay.ts:22-48,lifecycle.ts:1170-1219,1252-1357. Tests distinguish signal close/open from the next open and assert exact adverse execution:day-replay.test.ts:656-701. - Important nuance: this is intraday M5/M15—not the guide’s close-day-\(t\)→open-day-\(t+1\). Decisions are timestamped
availableMs + 1ms, whileavailableMs == bar.endMs:day-replay.ts:1420,2549. The next aggregate bar event supplies its opening price:day-replay.ts:1902-1912. - Buys receive upward adverse rounding; sells downward rounding; fees are exact integer cash movements:
lifecycle.ts:622-645,1252-1306. First-hour economics are fixed at 6 bps per side and zero fee:lib/paper/intraday/first-hour-continuation/v1/identity.ts:3-6. - Limitations are unusually explicit and sealed into receipts: no BBO, spread, queue, partial fills, impact, borrow, or halt model:
day-replay.ts:255-269; tests ensure that disclosure cannot be stripped:day-replay.test.ts:704-722. - Every planned work unit—including rejected and incomplete units—remains in the denominator:
runner.ts:37-48. Completed artifacts bind the wave, corpus, execution, outcomes, terminals, and hashes:run-artifact.ts:230-272; verification replays persisted evidence rather than trusting declarations:run-artifact.ts:407-500. - This is not an every-run registry. Successful persistence occurs only after execution and scoring:
scripts/run-tournament-wave.mjs:852-894; an exception only prints to stderr and exits:scripts/run-tournament-wave.mjs:904-912. The database failure ledger is explicitly scoped to three other research-worker lanes:20260825010000_research_worker_failure_receipts_v1.sql:1-45. - Tester coverage is strong: exact fill arithmetic (
lifecycle.test.ts:693-713), pinned run goldens (runner.test.ts:1125-1245), permutation/resume invariance (day-replay.test.ts:892-938), fresh-process determinism (day-replay.test.ts:1907-1923), and adversarial artifact mutation (run-artifact.test.ts:624-720).
Ranked gaps
- CRITICAL — Retroactive intraday fill. Inference from the timestamp contract: the decision exists 1 ms after bar \(N\) ends, but execution uses bar \(N+1\)’s open at that boundary—already past. Fix (M): fill from the first sealed M1 open after decision plus configured submission latency; bind both timestamps into the receipt.
- CRITICAL — No comprehensive trial registry. Runner unit completeness and successful manifests do not count failed/abandoned invocations. Fix (M): append a write-ahead attempt receipt before evaluation, then immutable success/failure/void terminal receipts with config, code, data, and redacted-error hashes.
- HIGH — Cost model lacks real-money fidelity. Fixed 6 bps may be conservative for some names but is uncalibrated and ignores liquidity, time-of-day spread, impact, halts, and shorts. Fix (M): version symbol/liquidity/time-bucket costs calibrated from Alpaca paper fills and bind them into capability identity.
- HIGH — Free-look execution is underspecified.
free-looks/SPEC.md:2defines costs and turnover but not universal formation timestamp, next-tradable fill, delisting, or short-locate treatment; several anomalies explicitly mix closes and opens:anomalies.json:15-16,35-40,55-56. Fix (S): freeze these conventions before running survivors. - MEDIUM — Tester suite misses the precise wall-clock canary it needs. Bar-index tests currently bless the retroactive convention; no tournament-wide random-cost null or independent reference evaluator was found. Fix (M): add hand-ledger M1 timestamp, random-null, corporate-action, and mutation-score fixtures.
- LOW — No standard cost-multiplier report. Fix (S): emit 0×/1×/2×/3× results automatically for every screen and confirmation.
Better than the guide
- Approximation limitations are hashed into evidence, not buried in prose.
- Rejected/incomplete/no-opportunity units cannot silently disappear from denominators.
- Re-derivation, hostile mutation tests, fresh-process goldens, and resume/order invariance materially exceed the guide’s baseline examples.
Brainstorm ideas
#### 5. Three faster-edge ideas
- Build a two-pass funnel: vectorized free look, then mandatory M1 event-driven parity for survivors; treat disagreement as a bias alarm.
- Predeclare an edge half-life/friction surface: 1/2/5-minute delays and 0×/1×/2×/3× costs. Kill candidates that collapse rather than tuning them.
- Create one permanent “honesty corpus” containing a same-boundary fill, gap, halt, split, dividend, delisting, stale quote, and random signal; require every evaluator to reproduce its hand ledger before a 15-anomaly batch.
Statistics
What the guide demands
- A fixed report: excess-return Sharpe, t-stat, skew/kurtosis, worst periods, drawdown depth/duration, trade expectancy versus costs, yearly/rolling stability, benchmarks, cost sweeps, and random twins ([guide §07]([local source path])).
- An append-only registry covering every selectable grid cell, variant, abandoned family, and repeated look. Report both raw \(N\) and correlation-clustered effective \(N\).
- PSR/DSR against the expected maximum Sharpe of \(N\) noise trials; suggested gate DSR ≥0.95.
- FWER for one/few deployable strategies; FDR when deliberately building a diversified strategy portfolio.
- Purge/embargo at temporal boundaries; CPCV/PBO when selecting from large comparable pools; stationary-block bootstrap and targeted Monte Carlo ([guide §09]([local source path])).
What we do
- First-hour v1 is excellent family-local accounting: fixed 80 cells, 10,000 stationary-bootstrap resamples, Holm over all 80, incomplete cells retained as \(p=1\), unused validation alpha burned ([contract:34–43]([local source path]), [statistics:105–139]([local source path]), [statistics:251–313]([local source path])).
- V2 preserves the v1 preregistration and 80-cell denominator ([v2 identity:18–35]([local source path])).
- The orchestrator derives pooled counters from durable lineage heads, including retired axes ([migration:584–708]([local source path])). That covers registered orchestrator work—not all human research.
- Exact-40 is not inferential validation: it is one terminal daily cycle whose equal-weight after-cost sum must merely exceed zero ([gate:359–379]([local source path]), [gate:498–559]([local source path])).
- The new 0.10/0.05/0.05 tiers exist in the owner-decision note ([line 2]([local source path])), but are not implemented on current main; main still exposes v1’s 80/20/100-bp scheme.
- Repo-wide search found no implemented PSR, DSR, CPCV, or PBO. Newey–West currently appears only in the free-look specification.
Verdict: \(N\) is honest inside selected sealed families, but not across all grids, scratchpad looks, manual experiments, and abandoned families.
Ranked gaps
- CRITICAL — Sharadar lockbox consumption. The free-look spec exposes 1998–2026, every subsample, size split, and a variant ([SPEC:2]([local source path])). Fix: reserve a terminal period now; otherwise label all SEP results discovery-only and confirm forward. Effort S now/L later.
- CRITICAL — no cross-program trial ledger. Fifteen prompts already contain many selectable endpoints and variants ([anomalies:1–61]([local source path])). Fix: append trials at proposal time, including failed/abandoned runs, endpoint, data hash, returns hash, raw/effective \(N\). Effort M.
- HIGH — wave/family resets. Holm at 0.10 per adaptive wave does not control series FWER; current code itself explains why cumulative spending is required ([v4:73–119]([local source path])). Fix: make exploration selection-only; use global Holm/FWER for few live choices or BHY-FDR for a portfolio. Effort M.
- HIGH — exact-40 naming/authority. Forty bots sharing one day are not 40 temporal observations. Fix: retain as operational completeness; require a multi-session block-bootstrap lower bound before evidentiary promotion. Effort M.
- HIGH — Newey–West lag is dimensionally wrong. “Holding periods per year” implies lags 12/52/252. Fix: predefine lag from actual overlap—usually horizon minus one observations—with a sensitivity band. Effort S.
- MEDIUM — missing DSR/PBO. Fix: add PSR/DSR receipt fields using net returns, \(T\), skew, kurtosis, raw/clustered \(N\); add CPCV/PBO only for candidates sharing comparable splits. Effort M.
- LOW — metrics coverage. Free looks omit several §07 diagnostics. Fix: add excess Sharpe, drawdown duration, tails, cost sweep, rolling/yearly views, and 1,000 random twins. Effort S/M.
Better than the guide
- Missing evidence stays in the denominator as \(p=1\).
- Bootstrap seed, block rule, resample count, corpus, and roster are sealed rather than analyst-selectable.
- Touch-and-Turn corrected pooled uncertainty to date-clustered resampling and disclosed post-observation Tier D as non-promotional ([document:333–362]([local source path]), [Tier D:62–74]([local source path])).
Brainstorm ideas
#### 5. Three faster edge-finding ideas
- Freeze 1998–2021 for screening and 2022–2026 as lockbox; advance only two candidates on one net primary endpoint.
- Replace the single permutation with 1,000 within-date randomized-rank twins preserving turnover, exposure, and costs.
- Build a common monthly net-return matrix for comparable anomalies; cluster redundant trials, calculate DSR/PBO, and validate one representative per behavioral cluster.
Workflow & evidence
What the guide demands
- Write the mechanism/counterparty, predicted operating envelope, and falsifier first; then freeze IS, sparsely visited validation, and a one-shot lockbox spanning regimes.
- Develop only in IS; prefer a broad parameter plateau—roughly ≥90% of peak—and veto cliffs.
- Validate using live-like rolling/anchored walk-forward: purge, reset state, lock parameters per fold, report stitched OOS only, and track resilience \(η = OOS/IS Sharpe\); ~0.6 is healthy, <0.5 suspect.
- Before verdict: bootstrap/reshuffle, skip-trade, entry-jitter, noise/random-twin stress, frozen regime tests, honest trial count/DSR, and dated majority-pass plus catastrophic-veto gates.
- Deliver a manifest-traceable evidence pack: hypothesis, split/look log, manifests, plateau map, folds, Monte Carlo/regimes, trial statistics, gates, and lockbox verdict. [Guide §08]([local source path]), [§15 checklist]([local source path])
What we do
- First-hour v1 has a real hypothesis, causal observable, fixed execution, explicit falsifier, selection-only Discovery D, three regime-diverse intended validation panels, 80 discovery attempts, and deterministic advancement. [FIRST-HOUR-PREREGISTRATION-DRAFT.md:3]([local source path])
- Current code seals roster/panel/execution, 10,000 resamples, D/V budgets, and sample/fill floors—but
validationPanelsReadyis false and only Discovery D is registered. [first-hour-continuation-v1.ts:32]([local source path]), [first-hour-continuation-panels.ts:8]([local source path]) - Selection requires positive lower bounds, best-session-removal survival, and Holm correction. Provenance binds artifacts, manifests, preregistration, statistics, behavior, runner, and ACTIONS hashes, then reconstructs the receipt. [split-aware-selection.ts:46]([local source path])
- Touch-and-Turn ran one preregistered configuration, byte-rehashed corpora before statistics, reproduced its seal in a fresh process, applied fill/expectancy/Holm/family gates, preserved every trade, and stopped on refutation. It explicitly says all data were IS, with no holdout and pending validation. [touch-and-turn-primary:28]([local source path]), [gates:417]([local source path]), [limitations:552]([local source path])
- The six-step UI says seal → invent → replay → gates → 126-session paper → small live, and correctly says only forward paper banks edge evidence. [HowWeTestFlow.tsx:3]([local source path])
Ranked gaps
- CRITICAL — No enforceable one-shot lockbox. The 15-look spec reports through 2026-08, so post-selection preregistration cannot make that history unseen. Named families lack a lockbox; the generic attempt object stores
holdoutAccessCountbut never increments or enforces it. Fix (M): reserve and hash a final period before any free look and issue exactly one access receipt; if looks already ran, declare all history IS and use future-only confirmation. [SPEC.md:2]([local source path]), [experiments/index.ts:120]([local source path]) - HIGH — Historical validation is not operational. First-hour V panels are pending; Touch-and-Turn has none. Fix (L): custody exact V panels, execute frozen qualifiers once, then retain a separate lockbox.
- HIGH — No named lane reports true per-fold refit, stitched fold table, or resilience. Daily uses chronological test folds but selects once on the first training window and pools tests. Fix (M): seal fold-level IS/OOS metrics, η/trend, and profitable-fold share; refit only when live operation will refit. [round.ts:426]([local source path]), [score.ts:47]([local source path])
- HIGH — No plateau/cliff veto. Daily hill-climbs a winner, first-hour ranks cells, and T&T’s single cell is adequate only for refutation. Fix (M): require a sealed economic-neighbor map, contiguous ≥90%-of-best region, cliff veto, and center selection before promotion. [tuner.ts:98]([local source path])
- HIGH — Bootstrap is good; fragility coverage is incomplete. Reviewed named contracts lack sealed reshuffle, skip, jitter, noise/random-twin, and 2×–3× cost suites. Fix (M): add deterministic stress receipts and gate on bad-tail drawdown and cost survival.
- MEDIUM — Gates/evidence remain fragmented. No single dossier contains validation-look logs, plateau, WFA, Monte Carlo, DSR, and lockbox verdict. T&T also corrected some gate semantics after results—transparent and harmless to its negative verdict, but not clean confirmation. Fix (M): version and hash one pre-verdict gate/evidence-pack schema. [touch-and-turn-primary:442]([local source path])
- LOW — The public flow omits hypothesis, D/V/lockbox, plateau, WFA, and Monte Carlo. Fix (S): expose those sub-stages and current readiness. [HowWeTestFlow.tsx:20]([local source path])
Better than the guide
- Byte-level corpus/action identity, fresh-process determinism, strict re-derivation instead of trusted declarations, and private off-machine custody materially exceed ordinary manifest advice.
- Attempt/alpha accounting retains failed, low-power, and behaviorally duplicate cells; unused capacity is burned rather than recycled.
- T&T’s post-look disclosures, amended rules, corrected clustering, superseded seals, and explicit non-evidence labels are exemplary scientific candor.
Brainstorm ideas
#### 5. Three faster-edge ideas
- Treat all 15 free looks as one explicitly IS family; cluster correlated anomalies and rank survivors by broad sign/subperiod/size consistency—not peak Sharpe.
- Auto-generate a cheap survivor “kill card” before scarce validation: economic-neighbor plateau, 2×/3× costs, skip-best-trades, one-day rebalance jitter, block-bootstrap drawdown, and a matched random twin.
- For every mechanism, preregister a negative control (“should not work here”) plus rolling Sharadar-fold η. Advance only coherent mechanisms, then spend the untouched lockbox—or future paper if tonight consumed all history—once.
Data stack
What the guide demands
- Survivorship-free EOD OHLCV with adjusted and unadjusted tracks; corporate actions, delisting proceeds, permanent IDs, PIT security metadata, exchange calendar, earnings timing, PIT fundamentals, and T-bill rates ([guide §04]([local source path])).
- Adjusted total-return prices for signals; actual historical prices/volumes for eligibility, sizing, and costs; explicit dividend cash on pay date ([guide]([local source path])).
- Automated OHLC, duplicate, calendar-gap, stale-series and unexplained-move checks; cross-vendor samples and quarantine ([guide]([local source path])).
- Immutable raw snapshots, deterministic derived layers, and a dataset hash per run ([guide]([local source path])).
- PIT daily universe: primary-listed common stock, explicit ADR/ETF policy, unadjusted price ≥$5, median dollar volume ≥$10–20m, earnings/IPO policies, plus doubled-floor sensitivity ([guide §12]([local source path])).
What we do
- SEP supplies split-adjusted OHLC, total-return
closeadj,closeunadj, and volume; TICKERS haspermaticker, classifications and delisted status; ACTIONS has date/type/value/counterticker ([types.ts]([local source path])). - The 45,324,177-row SEP corpus is content-addressed, partitioned, manifest-bound and fully re-hashed before evidence use ([store.ts]([local source path]), [evidence.ts]([local source path])). The census checks continuous coverage, per-year delisted coverage and famous failures ([census.ts]([local source path])).
- The universe API is genuinely causal and refuses present-day classifications unless effective/available-dated versions are supplied ([universe.ts]([local source path])).
- But the sealed corpus contains one current TICKERS snapshot, not effective-dated classification/size history. The older momentum screen honestly disables current classifications ([research-momentum-free-look.mjs]([local source path])); tonight’s ETL instead applies current
categoryhistorically ([verify.py]([local source path])). - SIP is excellent but narrow: 19 sealed M1 corpora with receive/availability clocks, corrections and finality—not a broad cross-sectional universe ([corpus.ts]([local source path]), [research report]([local source path])).
Ranked gaps
- Critical — PIT metadata: every size split/net-cost tier uses current
scalemarketcap; current category andfamaindustryalso rewrite history ([SPEC]([local source path])). Fix: sealed effective-dated security master keyed by permanent ID. M + vendor data. - High — tonight’s snapshot chain: ETL globs all JSONL, manually excludes two orphan partitions, and records no manifest hashes ([etlbuild.py]([local source path])); promised `DATADICTIONARY.md` is absent. Fix: read current manifests through the verified store and emit the dictionary/input hashes. S–M.
- High — price/volume semantics and validation: repo universe uses
closeunadj×volume([universe.ts]([local source path])); scratch uses empirically betterclose×volume, but retains flagged rows and 1,947 anomalous name-months. Fix: freeze tested vendor semantics and quarantine failed economic checks. M. - High — actions/delistings: no knowable-time, dividend pay date, full merger/spinoff terms, or delisting proceeds; existing momentum exits at last observed price and explicitly omits consideration ([script]([local source path])). Fix: PIT action/disposition ledger with conservative fallbacks. M–L.
- High — earnings/fundamentals: no sealed PIT history, blocking PEAD, earnings avoidance and value/quality/accrual archetypes ([audit](local source path])). Fix: acquire announcement timestamps plus as-first-reported SF1-style data. L; premium/vendor quote ([Nasdaq catalog).
- High — borrow: eleven long-short looks lack historical availability/fees; the repo admits free borrow assumptions ([identity.ts](local source path])). Fix: long-only promotion until borrow history exists. L; FINRA SLATE is $3k/month or $2k setup + $5k/year historical, but only 2026 onward ([FINRA).
- Medium — T-bill: zero-risk-free Sharpe and no idle-cash yield. Fix: seal causal daily Treasury series. S; free (FRED).
Better than the guide
- Byte-level content addressing and evidence bindings exceed its generic snapshot advice.
- Census tests actual failed issuers rather than merely trusting a vendor’s “survivorship-free” label.
- PIT universe code structurally rejects the tempting current-metadata shortcut.
- SIP preserves availability, correction lineage and finality unusually well.
Brainstorm ideas
#### Free-look exposure
- All 15 net/size results: PIT-size contamination.
- Most fragile:
reversal-1w-small,max-lotteryand all other short sleeves—borrow;industry-mean-reversion—PIT industry;ex-dividend—unknown-at-entry ex-date/pay date;splits-spinoffs—terms/identity;gap-fade,overnight-premium,volume-shock—unisolated earnings. - PEAD and fundamental anomalies are currently untestable; none is directly among the 15.
#### 5. Three edge-fast ideas
- Triage price/volume looks on a classification-free PIT universe, long-only first; treat shorts and current-size tables as diagnostics.
- Prioritize PIT security/industry history: one acquisition rehabilitates all 15 size results and unlocks industry-neutral reversal.
- Add PIT earnings timestamps next, then split gap/volume/reversal results into earnings and non-earnings cohorts while launching a separately preregistered PEAD family.
Live loop
What the guide demands
- §10 makes sizing part of the strategy: compare fixed-notional with compounded results; volatility-scale positions; constrain correlation, liquidity, ADV participation and concentration; estimate capacity under stressed impact; treat fractional Kelly only as a ceiling. [Guide §10]([local source path])
- §16 requires a ~50% backtest-Sharpe haircut and 3–6-month incubation measuring unattended pipeline reliability, paper-versus-simulated costs, outcome-distribution consistency and manual interventions.
- Monitoring must cover four layers: operations/reconciliation; implementation shortfall; equity versus Monte Carlo path envelopes; feature/outcome drift.
- Hard/soft kill rules must be versioned before launch, followed by procedural retirement reviews. Any strategy change creates a new version and evidence pack. [Guide §16]([local source path])
What we do
- G3 strongly binds family, candidate, statistical authority, cost identity and evidence hashes; packages are variable-size 1–16. It requires every candidate to have passed statistical authority. [G3 package]([local source path]) [authority gate]([local source path])
- Deployment lifecycle is append-only and hash-chained through admitted/armed/running/paused/retired, but every receipt forces
orders_allowed=false. [lifecycle]([local source path]) - The sealed cost path applies immutable 6-bp entry and exit costs with exact integer accounting. [cost contract]([local source path])
- Forward-v3 receipts enforce flat close, peak shares/notional and cash conservation. [daily receipt]([local source path])
- The broker mirror records modeled price, real fill, fill ratio, quote-relative slippage and latency, with strong reconciliation/flattening. [divergence]([local source path]) [reconciliation]([local source path])
- Real trading is explicitly unavailable; the readiness contract requires a separate live service and out-of-band kill. [readiness]([local source path])
Ranked gaps
- CRITICAL — no prelaunch economic kill contract. G3 contains no loss, drawdown, envelope, drift or retirement thresholds; pause/retire takes a free-text reason. Fix: hash a numeric
live-risk-policy/v1into graduation and enforce it automatically. L - CRITICAL — broker caps are not end-to-end. The mirror targets legacy
forward_deployments_v3, not first-hour G3, drops forward notional authority, andqty===1bypasses its exposure check. [lookup]([local source path]) [bypass]([local source path]) Fix: require deployment, order, symbol, fleet and daily-loss checks for every quantity. M - HIGH — implementation shortfall is partial. It compares fills with an IEX submit quote during next-day replay—not broker fill versus simulator fill on the identical signal—and has no calibration gate. Fix: persist same-signal shortfall by liquidity bucket and version cost-model recalibration. M
- HIGH — no Monte Carlo risk envelope or layers 3–4. Existing block bootstrap estimates mean uncertainty, not joint equity paths, max-DD distributions or fleet correlations. [bootstrap]([local source path]) Fix: seal 10,000 date-clustered portfolio paths and daily envelope/drift receipts. M
- HIGH — no portfolio sizing/capacity authority. “Sizing is separate” is correctly fail-closed but remains blocked. [M6]([local source path]) Fix: preregister a sizing family with risk, correlation, ADV and stressed-impact caps. M
- MEDIUM — no 50% haircut or zero-incident/cost-consistency gate. The 126-session floor is strong but does not substitute for these checks. Fix: add them to G3→live evidence. S
Better than the guide
- Append-only, content-addressed authority and lifecycle receipts make silent mutation structurally difficult.
- Paper/live separation is stronger than a mode flag.
- Exact accounting, Holm correction and stationary block resampling exceed typical retail implementations.
Brainstorm ideas
#### Concrete FDR-survivable sizing + kill rule
Seal one experimental sleeve: 5% NAV gross, long-only, no leverage. For strategy \(i\):
notionalᵢ = min((0.50% NAV / N) / L99ᵢ, 10 bp NAV, 1% ADV, broker cap)
where \(L99ᵢ\) is its haircutted, shortfall-adjusted 99% daily loss per dollar. Cap each correlated family and symbol at 50 bp gross, sector/theme at 1%, and the fleet at 5%. FDR is not a loss bound; this remains survivable even if every discovery is false.
- Hard flat: data/reconciliation/version mismatch; strategy day loss above 1.25× simulated 99.5% loss; drawdown above 1.25× simulated 95th-percentile max DD; fleet −50 bp day or −2% program drawdown.
- Soft: cut to 25% size when below the 5th-percentile path, shortfall exceeds sealed p95, drift fires, or ≥40-trade expectancy is below half the already-haircutted promise.
- Retire: two consecutive quarterly soft reviews or 126 sessions without recovery. Resume/scale 10→25→50 bp only through a new sealed approval.
#### Three faster edge ideas
- Rank free-look survivors by net expectancy and deployable capacity, not Sharpe alone.
- Give survivors a 20–30-fill mirror race to eliminate execution failures early.
- Cluster candidates by mechanism/correlation and allocate risk per family, preventing duplicate discoveries from masquerading as diversification.
Archetypes vs battery
Verdict. Legacy lanes have unusually strong evidence custody; the new free-look battery is presently a discovery specification, not tradable evidence. No 15-anomaly result artifacts existed at inspection.
What the guide demands
- Attack each archetype’s signature lie first: momentum’s few runners/regime crashes; mean reversion’s survivors/fills/cost/tails; breakout’s intrabar ordering; stat-arb’s search/shorts; events’ timestamps; factors’ PIT inputs.
- Freeze causal execution: close \(t\) → open \(t+1\); daily bars cannot prove inside-bar fills. Model auction/gap costs, point-in-time eligibility, deterministic order bookkeeping, and explicit event exposure.
- Never shuffle. Require fixed-parameter per-year and bull/bear × high/low-vol results, purge overlaps, distinguish feature drift from edge drift, and predeclare retirement.
- Calendar effects are the guide’s purest mining minefield: named payer, honest lifetime trial count, DSR, decades/markets replication, and wide cost margin.
What we do
- [SPEC.md:1](<[local source path]>) prelists 15 prompts and requires deciles, L/S plus long-only excess, turnover costs, three eras, size/capacity cuts, and one permutation; [COMMON.md:2](<[local source path]>) says SEP includes delisted names. These are requirements, not yet executed safeguards.
- Exact-40 is immutable, exactly 40 outcomes/day, and isolated from forward/order state ([migration:1]([local source path]), [migration:155]([local source path])).
- First-hour v1 freezes Holm/attempts but is retired for missing causal action ancestry; its code still says 0.008 discovery/0.01 genesis, not the stated 0.10/0.05 tiers ([v1:32]([local source path])). v2 seals action census/known-at and excludes split+20 sessions ([v2:336]([local source path])).
- Touch-and-Turn used causal M1, charged costs, corrected cross-symbol date clustering, and honestly sealed a refutation ([report:1]([local source path]), [report:333]([local source path])).
- Sharadar is large/complete, but unbound to production and metadata is static ([audit:83]([local source path]), [ETL:118](<[local source path]>)).
Ranked gaps
- Critical — M/L: Gap-fade is not broad-cross-section executable; ex-div/spinoff lack knowability/terms. Keep descriptive until broad auction M1 and PIT event terms exist.
- High — M: Static size/industry metadata leaks future; disappearance lacks payout conversion. Seal dated universe/security-master snapshots and delisting cash rules.
- High — M: Short/borrow/dividend/locate data is absent. Separate long-only results; forbid net L/S claims until sourced.
- High — S: Three eras are not regimes. Add fixed per-year × trend/vol/liquidity tables and forward drift/retirement gates.
- High — S: Newey–West lag “holding periods/year” is wrong. Set lag from overlap/dependence horizon and validate by block bootstrap.
- High — M: No versioned rule charges 15 families, variants, legs, cuts, and new 0.10/0.05 tiers. Add one trial registry/phase→alpha authority; confirm survivors only on fresh forward data.
- Medium — S: $1M ADV and one cost point are lenient. Require $10–20M/doubled floors, participation capacity, and 0×–3× costs.
- Low — S: Referenced
DATA_DICTIONARY.mdis missing; one permutation is weak. Restore/hash it and use a seeded null distribution.
Better than the guide
Legacy lanes go beyond prose: content-addressed append-only custody, independent replay, incomplete cells retained at \(p=1\), causal split census, and clustered Touch-and-Turn uncertainty with an explicit “no edge” seal. The free-look scratchpad does not yet inherit these controls.
Brainstorm ideas
#### 3. The 15-anomaly kill map
- momentum-12-1 — few-runner/regime luck → skip-trade Monte Carlo plus 2009/chop tables.
- reversal-1m — dead dips/cost/short fantasy → explicit delisting proceeds, 2–3× costs, borrow-constrained book.
- reversal-1w-small — microcap capacity fiction → double price/ADV floors, participation/AUM cap, large-cap replication.
- overnight-premium — closing-auction convention leak → decide before close; next-close/MOO accounting with stressed auction costs.
- low-volatility — PIT/crowding/factor-cycle bias → as-of universe, locked long OOS, turnover and regime legs.
- max-lottery — profit from unborrowable squeeze names → liquid-short replication with borrow/dividend/squeeze stress.
- 52w-high — few runners/momentum crash → skip-trade MC and fixed trend/chop tables.
- turn-of-month [CALENDAR MINEFIELD] — combinatorial snooping → charge every weekday/month/holiday look; DSR plus decades/cross-market replication.
- ex-dividend — ex-date knowability/dividend double-count → announcement-known audit and explicit unadjusted-price/cash accounting.
- splits-spinoffs — missing terms/permanent child identity → reconcile parent/child entitlement; spinoff claim inadmissible until then.
- volume-shock — same-close leakage/threshold mining → close-\(t\) signal, open-\(t+1\) return, locked sign/horizon.
- intermediate-vs-longterm — horizon-menu mining → charge all four forms, untouched OOS, skip-trade/regime tests.
- residual-momentum — full-sample regression leak → rolling as-of 36-month fits, purged chronological OOS.
- gap-fade — observed-open sort filled at that open → enter after observable SIP bar; otherwise next-day only.
- industry-mean-reversion — backfilled industry labels/short costs → as-of taxonomy, industry OOS, borrow stress and break veto.
#### 6. Five additional families, each with payer
- Compression→next-open breakout — underreactors and clustered stop entrants.
- Industry momentum rotation — slow mandate/sector reallocators.
- Preselected stable-industry pairs — urgent idiosyncratic liquidity demanders.
- Post-reverse-split distress drift — speculative holders and mandate-forced exits.
- Amihud-liquidity premium — liquidity-sensitive sellers paying patient capital.
#### 7. Three speed ideas
- Run each family’s cheapest signature-lie kill test before full metrics.
- Demand a payer×regime fingerprint; reject profitable but mechanism-incoherent averages.
- Pre-register survivors once, then launch all as parallel forward shadow baskets tomorrow.