Product Requirements · tracks Parameters v1.0 (frozen 2026-07-22)

What’s being built, and what “done” means.

This document summarises. CLAUDE.md is the constitution and wins on any conflict. Canonical markdown copy: docs/prd.md.

What is being built, for whom

A fully systematic monthly equity screener for a single user (Ola) running a £2,000 ring-fenced Trading 212 SIPP. It selects 12 UK/US stocks by frozen value/quality/momentum rules, prints an order sheet, and produces a monthly report (“the Paper”). Execution is manual in the T212 app: no SIPP API exists, and the no-override rule wants human hands on the orders anyway.

The year-one product is the record, not the P&L: proof the system ran exactly as written, every month, with every deviation impossible or logged.

Goals & success criteria

Per horizonmeasured by
Goals and success criteria per horizon
HorizonGoalMeasured by
Build → 1 Aug 2026M1–M6 complete, tests green, dry run eyeballedpytest suite · Ola sign-off on the M6 funnel + sheet
Phase A (cycles 1–3)3 clean paper cyclesfull screen → sheet → Paper monthly, £0 at risk
Phase B (£1,000)compliance intactevery sheet order executed, nothing added, fills logged
Phase C (£2,000)entered only after 6 compliant live cyclesviolations.md still empty
2029 verdictbeat WLDS net of costs over 36 live months, or retirethe Paper’s cumulative record, reviewed per market regime

Constraints: constitutional, not negotiable

C1 · NO-OVERRIDE

The sheet is executed as printed

Nothing skipped, nothing added, no “just this once”. Temptations get written down, not acted on.

C2 · RING-FENCE

£2,000 maximum, ever

Top-ups only on a pre-written schedule; an unscheduled deposit after a red month is itself a violation.

FROZEN PARAMETERS

§4 untouchable until 2027-07-22

Checksummed; the one pre-Cycle-1 calibration pass (data-field substitutions only) was used and closed: see docs/field-mapping.md.

DATA DISCIPLINE

£0 budget · no look-ahead · fail closed

Free sources only in Phase A. Screens use only data timestamped on or before the screen date, enforced at the fetch layer. Missing data excludes a name, never passes it. Same inputs → same sheet, always.

Functional requirements by milestone

Deliverable → acceptancestatus
Functional requirements by milestone: deliverable, acceptance and status
#DeliverableAccepted whenStatus
M1Config loader + checksum alarm; TV/YF clients; snapshot archiver; field mappingtamper test red/green; live pulls verifiedDONE
M2§4.1–4.4 gates as pure functions; edge fixtures; honest dry runtwo external reviews taken; calibration approved by OlaDONE
M3Composite ranking; hold buffer (≤25 AND >200-DMA); portfolio state machineboundary fixtures green; three-round external review; penny-exact reconciliationDONE
M4Order-sheet generator + fills logger; funnel with reason-code counts; md + HTMLtwo-round external review; crash-safe fills orderingDONE
M5The Paper from the template, incl. weather blockgolden-file match; weather provably isolated; compliance both directionsDONE
M6Full dry run on live data → Cycle 1Ola eyeballs funnel + sheet; final calibration checksum recorded only after · Saturday leg complete 25 Jul; Monday leg, sign-off, checksum remainIN PROGRESS

Outputs & consumption

Canonical record: reports/YYYY-MM/funnel.md · order-sheet.md · paper.md: plain markdown, git-diffable; the audit trail. Human surface: each cycle also renders as HTML pages in this site’s style: funnel with reason-code counts, the order sheet, the Paper, and per-stock cards (business one-liner + the exact per-gate numbers).

Hosting: the repo lives at a private GitHub remote; the site deploys to Vercel so screen Saturdays are phone-readable. The deployment must be access-protected: it contains a live personal portfolio. The publish pipeline is a small M6-era task, never allowed to delay a milestone. Scheduling: the Saturday screen may fire automatically; the in-app availability check and Monday execution remain human by construction.

Non-goals

No watchlists, ideas, or discretionary tooling. No chart or technical-analysis inputs. No backtest research: backtests only ever verify machinery, never justify parameters. No intramonth monitoring or alerts. No paid data in Phase A. No performance-chasing UI: the Paper reports; it does not tempt.

Open items

Trackedowner
Open items being tracked
FINAL calibration checksum: recorded once, after Ola eyeballs the M6 dry-run outputsM6 gate
NASDAQ:IMPP EV/EBIT: rehearsal verdict — not a data quirk. Net cash ≈ market cap, so EV collapses to ~$0.2m vs $57.7m EBIT (EV/EBIT 0.0039, value rank 100). Awaiting owner verdict before the final checksumM6
Negative-EV ranking behaviour: recorded in docs/amendments.md, watch only2027 window