FinRep-AI — the two-stage AI read (AI-1 → AI-2)
Last verified
The platform’s AI is split into two stages with different jobs and different honesty contracts:
- AI-1 — raw analysis. A frontier LLM (Anthropic Claude) reads the full signal pack and describes market state. It is structurally forbidden from making calls: no direction, no stance, no trade talk. A parser enforces that at intake — an AI-1 read that tries to smuggle in a directional field is rejected and stored as a failed read for the audit trail.
- AI-2 — the verdict. A synthesis stage that turns AI-1’s description plus the platform’s validated graders into the read you see on The Tape. It ships in two variants, side by side: a deterministic verdict (pure code, no LLM call — the public default) and an LLM verdict (the model writes its own read with full latitude, including a graded direction call and an optional trade idea — accountable to a forward track record, not to content filters).
Every verdict — both variants — is persisted and graded forward. The accountability layer is the track record, shown openly on The Engine’s AI-2 Tracker, not a promise.
Honesty by construction
The design principle across both stages: a field that does not exist cannot lie, and a claim that is graded cannot hide.
AI-1 is describe-only, enforced at parse time. Three hard rules reject a read outright: the risk band it reports must echo the platform’s validated drawdown-risk band verbatim (AI-1 may not invent its own risk level); no directional field may appear anywhere in the output (direction, stance, buy/sell keys — rejected at any depth); and every prose string passes a source-attribution scrub (the AI describes data in the platform’s own vocabulary — dealer positioning, dark-pool flow, options analytics — never by upstream provider). A rejected read is persisted with a null payload so the failure itself is auditable.
The deterministic AI-2 verdict has no direction field to fill. Its risk band is a mechanical passthrough of the validated drawdown-risk composite’s band — AI-2 never re-judges it and never escalates on top of it. Its magnitude read (big / normal / small expected move, either direction) comes from a pre-registered move-size band that is still being graded — it renders with a “grading in progress” marker until the forward grade confirms it. Everything else — regime backdrop, watch-lines, likelihood framing — is a pure function of named platform surfaces. Same inputs, same verdict, every time, at zero marginal cost.
The LLM AI-2 verdict gets full latitude and a full grade. The model receives AI-1’s read and the deterministic verdict as a reference floor, and may override any of it: its own risk band, its own magnitude call, its own watch-lines and levels, trade construction in prose, the graded direction call, and an optional free-text trade idea. Exactly two things reject a render, both structural: naming a restricted upstream data source, or a malformed direction field (the shape gate exists so the experiment always produces gradeable data — the content of the reasoning is free). A rejected or unavailable render falls back to the deterministic verdict, clearly marked as a fallback — the LLM path is never on the critical path.
What the AI sees (the signal pack)
Both stages read the same signal pack, built from the same signal store that feeds the dashboard and the public API — no private feed. The pack carries:
- The full current state — every persisted daily and intraday metric, serialized highest-validation-tier first, plus a curated 7-day trajectory slice.
- A fragility view up front — the air-pocket and re-entry state composites with their triggers, plus the multi-day buildup count (sustained fragility is the pattern that has historically mattered; single-day spikes are usually contrarian).
- Context blocks — signal alignment with per-category legs, recent state transitions (trailing 48h), active alerts, historical analogues with regime breakdown, a macro-calendar lookahead, a what-changed diff since the previous AI read, the dark-pool divergence context line, and the AI capital-cycle composite.
- News — recent headlines with per-article FinRep-AI sentiment scores. AI-1 distills these into a 0–10 news sentiment score persisted with each read.
- Data-quality flags and freshness — stale or degraded inputs are named in the pack, and the verdict’s uncertainty note carries them forward rather than papering over them.
When it runs
AI-1 fires twice per trading day — a pre-market read (~08:30 ET) and a close recap (~16:15 ET). Each AI-1 read immediately triggers the AI-2 synthesis: the deterministic verdict always, and the LLM variant alongside it. On weekends and market holidays no reads fire at all — the signal store is frozen on closed sessions, so a read would only re-describe stale state; the cadence resumes at the next session’s pre-market read.
Event-driven fires add reads when conditions actually change: when one of the platform’s tripwires flips from armed to triggered and holds for 20 continuous minutes — a sustained condition change, never a momentary flicker. Each wire fires at most once per episode with a 2-hour per-wire cooldown, capped at 3 event fires per day with a 30-minute minimum gap.
Grading is unaffected by event fires: the forward graders score one observation per trading day — the closing verdict — so extra intraday reads are display freshness, never double-counted evidence.
What the verdict contains
The served verdict object, rendered on The Tape’s Market State and AI Read cards:
risk— the validated drawdown-risk band (low / elevated / high) with a plain-language sentence, plus a descriptive 5-session trend qualifier (worsening / easing / steady). The trend is display context on the validated band — never a new band, never graded.magnitude— expected move size (big / normal / small, either direction), explicitly marked uncalibrated until its forward grade confirms.regime— the platform’s regime label, days in regime, and a state-only sentence. Not a forecast.downturn_read— a plain-language relabel of the risk band (quiet / tightening / deteriorating), marked ungraded.what_flips_it— up to three concrete watch-lines from the live tripwire set, each tagged with the risk direction it would move (risk-up / risk-down), never a market direction.whats_happening— the narrative summary; the newest genuine LLM render’s prose when one exists, otherwise the deterministic fallback, always labeled which it is.likelihood— honest base-rate framing from the historical analogue matcher, with sample sizes, never a bare confident percentage.uncertainty_note— data-quality caveats plus the fixed ceiling line, rendered verbatim.- LLM variant only: the graded
directioncall (1d/3d/5d, up / down / sideways, confidence 1–5) under its experiment label, and an optional trade idea with a structured grading sidecar (which ticker, which way, what horizon) so the idea is scored against the instrument’s own base rate — never left as unaccountable prose.
The accountability layer
Four standing graders score the recorded verdicts forward, each against realized outcomes, each with an explicit maturity floor below which it reports insufficient_data rather than a confident number:
- Risk band — served band vs realized forward SPY max-drawdown (does realized drawdown actually deepen low → elevated → high?).
- Magnitude — served move-size band vs realized forward 20-day volatility, per its pre-registered hypotheses (monotone, and independent of what a volatility index alone would have said).
- Direction — the LLM variant’s calls, graded per label against that label’s own base rate. This matters: a pooled hit-rate reconstructs from the label mix, not skill, so an “up” call is scored against how often the tape actually goes up, a “sideways” call against how often it actually stays flat. No pooling across labels, model versions, or variants — ever.
- Trade ideas — each graded idea scored on its named underlying’s direction over its named horizon, in excess of that instrument’s own base rate.
The distilled scorecards are public on GET /api/v1/ai2/history and rendered on The Engine’s AI-2 Tracker. While samples mature, the scorecard says so plainly — “too early to know if this works” is the designed output, not a failure state. A failed forward grade raises a loud falsification flag naming the kill action — the operator pulls the read from the display (graders never auto-act); the recording never stops.
Where to see it
- The Tape — the Market State card (deterministic: risk band + trend, move-size, regime backdrop, watch-lines) and the AI Read card (the AI summary, the direction call under its experiment chip, the trade idea when present, the honesty caption).
- The Engine — the AI-1 raw-analysis block (the stage-1 state description), the deterministic-vs-LLM comparison card (including rejected renders, shown as rejections rather than hidden), and the AI-2 Tracker with the live scorecards.
- Public API —
GET /api/v1/ai2/verdict(the current verdict) andGET /api/v1/ai2/history(the recorded cycle history plus distilled grades). The full grading internals sit behind the internal token gate. Agents can also reach the verdict via theai_briefMCP tool.
Why two stages
- Describing and judging are different failure modes. A model that both reads the tape and renders the verdict can launder a hunch into a confident call. Splitting the stages means the description is auditable on its own, and the verdict layer either contains no judgment at all (deterministic) or is graded on every judgment it makes (LLM).
- The default read costs nothing and cannot drift. The deterministic verdict is pure code over validated surfaces — always available, byte-reproducible, immune to model regressions. The LLM variant has to earn any larger role through its side-by-side track record.
- The AI reads the platform’s own surface. The signal pack is the same data the dashboard renders and the public API serves — same store, same trust adjustments, same freshness flags. If the data layer is good enough for the AI’s read, it is good enough for anyone subscribing to it.
Related KB
- The Tape — card by card — how the verdict renders on the novice cockpit
GET /api/v1/ai2/verdictandGET /api/v1/ai2/history— the two public AI-2 routesai_briefMCP tool — the agent-facing wrapper over the verdict surface- News sentiment score — the AI-1-sourced sentiment leg
- Signal alignment — the category framework the pack and verdict lean on
- Health score methodology