trd.fun / lab
Method — field guide + reviews

Six-lens field-guide gap review

Updated 2026-08-26
Review outcome: Six independent lenses turn the field guide into a ranked repair list.
CURRENT
docs/research/field-guide-gap-review-2026-08-26.md

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

RankGapLensFixEffort
1Retroactive intraday fillEngine, timing & costsFill from the first sealed M1 open after the decision plus configured submission latency; bind decision and fill timestamps into the receipt.M
2No enforceable one-shot lockbox / Sharadar lockbox consumptionStatistics; Workflow & evidenceReserve 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
3No comprehensive cross-program trial registryEngine, timing & costs; Statistics; Archetypes vs batteryAppend 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
4Point-in-time metadata rewrites historyData stack; Archetypes vs batterySeal an effective-dated security master keyed by permanent ID, including size, category, and industry history.M + vendor data
5Gap-fade and event terms are not executable/knowable across the broad universeArchetypes vs battery; Data stackKeep results descriptive until broad auction M1 data and PIT ex-dividend, merger, spinoff, and disposition terms exist.M–L
6No prelaunch economic kill contractLive loopHash a numeric live-risk-policy/v1 into graduation and enforce its loss, drawdown, envelope, drift, and retirement thresholds automatically.L
7Broker caps are not end-to-endLive loopEnforce deployment, order, symbol, fleet, and daily-loss limits for every quantity.M
8Historical validation is not operationalWorkflow & evidenceCustody exact validation panels, execute frozen qualifiers once, and retain a separate lockbox.L
9Tonight’s snapshot chain is not manifest-boundData stackRead current manifests through the verified store and emit the data dictionary plus input hashes.S–M
10Price/volume semantics and failed-row handling are not frozenData stackFreeze tested vendor semantics and quarantine rows that fail economic validation.M
11Actions and delistings lack knowable-time terms and proceedsData stack; Archetypes vs batteryBuild a PIT action/disposition ledger with dividend pay dates, full terms, delisting proceeds, and conservative fallbacks.M–L
12No sealed PIT earnings/fundamentals historyData stackAcquire announcement timestamps and as-first-reported fundamentals.L + vendor data
13No historical borrow, locate, fee, or dividend-on-short authorityData stack; Archetypes vs batteryKeep promotion long-only until historical borrow evidence exists.L
14Cost model lacks real-money fidelityEngine, timing & costsVersion symbol/liquidity/time-bucket costs calibrated from paper fills and bind them into capability identity.M
15Free-look execution conventions remain underspecifiedEngine, timing & costsFreeze formation time, next-tradable fill, delisting, and short-locate conventions before running survivors.S
16Adaptive wave/family resets do not control series-wide errorStatisticsMake exploration selection-only; use global Holm/FWER for a few live choices or BHY-FDR for a portfolio.M
17Exact-40 is operational completeness, not 40 temporal observationsStatisticsRequire a multi-session block-bootstrap lower bound before evidentiary promotion.M
18No true per-fold refit, stitched fold table, or resilience reportWorkflow & evidenceSeal fold-level IS/OOS metrics, η/trend, and profitable-fold share; refit only when live operation will refit.M
19No plateau/cliff vetoWorkflow & evidenceRequire a sealed economic-neighbor map, contiguous ≥90%-of-best region, cliff veto, and center selection.M
20Fragility coverage is incompleteWorkflow & evidenceAdd deterministic reshuffle, skip, jitter, random-twin, and 2×–3× cost stress receipts with bad-tail gates.M
21Implementation-shortfall comparison is partialLive loopPersist broker-versus-simulator shortfall on identical signals by liquidity bucket and gate cost-model recalibration.M
22No Monte Carlo portfolio risk envelope or drift layersLive loopSeal 10,000 date-clustered portfolio paths plus daily max-drawdown, envelope, correlation, and drift receipts.M
23No portfolio sizing/capacity authorityLive loopPreregister a sizing family with risk, correlation, ADV, concentration, and stressed-impact caps.M
24Three eras are not a regime testArchetypes vs batteryAdd fixed per-year × trend/volatility/liquidity tables and forward drift/retirement gates.S
25Newey–West lag was dimensionally wrongStatistics; Archetypes vs batteryPredefine 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, while availableMs == 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:2 defines 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

  1. Freeze 1998–2021 for screening and 2022–2026 as lockbox; advance only two candidates on one net primary endpoint.
  2. Replace the single permutation with 1,000 within-date randomized-rank twins preserving turnover, exposure, and costs.
  3. 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 validationPanelsReady is 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 holdoutAccessCount but 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

  1. 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.
  2. 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.
  3. 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 has permaticker, 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 category historically ([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 and famaindustry also 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 better close×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-lottery and 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

  1. Triage price/volume looks on a classification-free PIT universe, long-only first; treat shorts and current-size tables as diagnostics.
  2. Prioritize PIT security/industry history: one acquisition rehabilitates all 15 size results and unlocks industry-neutral reversal.
  3. 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/v1 into 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, and qty===1 bypasses 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.md is 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

  1. momentum-12-1 — few-runner/regime luck → skip-trade Monte Carlo plus 2009/chop tables.
  2. reversal-1m — dead dips/cost/short fantasy → explicit delisting proceeds, 2–3× costs, borrow-constrained book.
  3. reversal-1w-small — microcap capacity fiction → double price/ADV floors, participation/AUM cap, large-cap replication.
  4. overnight-premium — closing-auction convention leak → decide before close; next-close/MOO accounting with stressed auction costs.
  5. low-volatility — PIT/crowding/factor-cycle bias → as-of universe, locked long OOS, turnover and regime legs.
  6. max-lottery — profit from unborrowable squeeze names → liquid-short replication with borrow/dividend/squeeze stress.
  7. 52w-high — few runners/momentum crash → skip-trade MC and fixed trend/chop tables.
  8. turn-of-month [CALENDAR MINEFIELD] — combinatorial snooping → charge every weekday/month/holiday look; DSR plus decades/cross-market replication.
  9. ex-dividend — ex-date knowability/dividend double-count → announcement-known audit and explicit unadjusted-price/cash accounting.
  10. splits-spinoffs — missing terms/permanent child identity → reconcile parent/child entitlement; spinoff claim inadmissible until then.
  11. volume-shock — same-close leakage/threshold mining → close-\(t\) signal, open-\(t+1\) return, locked sign/horizon.
  12. intermediate-vs-longterm — horizon-menu mining → charge all four forms, untouched OOS, skip-trade/regime tests.
  13. residual-momentum — full-sample regression leak → rolling as-of 36-month fits, purged chronological OOS.
  14. gap-fade — observed-open sort filled at that open → enter after observable SIP bar; otherwise next-day only.
  15. 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

  1. Compression→next-open breakout — underreactors and clustered stop entrants.
  2. Industry momentum rotation — slow mandate/sector reallocators.
  3. Preselected stable-industry pairs — urgent idiosyncratic liquidity demanders.
  4. Post-reverse-split distress drift — speculative holders and mandate-forced exits.
  5. Amihud-liquidity premium — liquidity-sensitive sellers paying patient capital.

#### 7. Three speed ideas

  1. Run each family’s cheapest signature-lie kill test before full metrics.
  2. Demand a payer×regime fingerprint; reject profitable but mechanism-incoherent averages.
  3. Pre-register survivors once, then launch all as parallel forward shadow baskets tomorrow.
On this page 37 sections
LAB documentation describes design intent and research safeguards. It does not provide trading instructions or operational access.