The obvious way to put a language model on a trading desk is to wake the best model you can afford every time anything happens. It is also the wrong way. A frontier call costs dollars and takes seconds, and most wakes need neither: they need someone to glance at the screen, confirm the thesis still holds, and go back to watching. Paying frontier prices for that glance is like staffing every seat on the desk with the CIO.
Real desks solved this a long time ago. A portfolio manager sets the frame a few times a day. A junior trader manages the book inside that frame, minute by minute. The exchange-facing infrastructure executes in microseconds and asks nobody's opinion. Three kinds of decision, three clocks, three price points.
Kestrel's agent architecture (OSS ADR-0032) makes that desk literal:
- Strategist: a frontier-tier model, dollars per call, woken only when the frame is at stake. It authors the day's Plan, Brief, Mandate, and View at the OPEN, then sleeps until a SHOCK or until the watcher escalates.
- Watcher: a small, fast model, pennies per call, at every wake. It manages the armed book inside the strategist's Mandate. It may never arm new authority; at the edge of its mandate or its certainty, it calls the PM.
- Deterministic runtime + admission Gate: microseconds, approximately free. It fires armed Plans fire-then-inform, and it admits, never trusts, both tiers.
The strategist is not on a schedule. It is event-driven: everything between frame-setting moments belongs to the cheaper clocks.
The keystone
The design lives or dies on one property: the watcher buys judgment; the runtime keeps authority. Every action the watcher authors crosses the same fail-closed admission Gate as any other agent. The Mandate is the sole admission input; the Brief shapes judgment but is structurally barred from authorizing anything. A Plan is standing authority with bounded risk as a type:
PLAN atm-rider budget 0.5R ttl +60m
WHEN phase open
DO buy 1 atm C @ lean(bid, fair, 0.5)The budget is a type, the TTL expires the authority, and the obligations are enforced by the runtime no matter which tier is managing the position. The worst a bad watcher can do is trade badly inside its envelope, which the Grade will punish. It cannot trade outside it, which the Gate makes structurally impossible. Intent flows down. Veto flows up.
That is the theory. We have run it live.
What the tracer runs are, and are not
The honesty block governs every observation below, so it goes first: every tracer run is N=1, on a synthetic practice-tier tape, with a prompted, un-fine-tuned watcher. They are wiring and feasibility probes, never performance claims, and nothing in them is rankable, by design.
The cascade is wireable
The first run interleaved a frontier strategist and a small watcher at two cadences over one Episode, against a frontier-only baseline of the same model doing everything. The cascade ran end to end to one graded Bus, and the captured run replays byte-identically with no model call at either tier.
The frontier brain woke exactly twice: once at the OPEN, and once because the watcher called. That is what the run establishes, and it is worth having: the cascade is wireable, and it replays deterministically.
The artifact we keep coming back to is that second wake. Mid-run, the watcher decided the tape had broken its thesis, and instead of improvising a new one, it stood down and escalated. Its journal, verbatim from the run:
RE-BRIEF: Spot 501.26 — HELD decisively above 501 gamma wall. Tape shows sustained push from 500.08 to 501.58 HOD with no rejection. IV skew flat, but price is NOT collapsing back through range. Breakout thesis (not fakeout) now in play. Original fade mandate is invalidated. Require strategist re-frame before arming new thesis.
Read it slowly, because it is the design working. A small prompted model, standing on a thesis it did not derive (the frontier-curated Brief), hit the edge of its mandate, did not guess, did not arm, and asked for the PM. The escalation channel routed it to a strategist re-brief end to end.
The keystone under attack
A later run upgraded both seats and accidentally ran the harder experiment: in the run we recorded, the watcher attacked the boundary at wake after wake. It reached for authority it did not have, and every attempted over-reach was refused at the tier boundary. Zero watcher authority ever crossed; the terminal turn at every ordinal was the strategist's. The Mandate held under continuous pressure, a stronger live demonstration of the keystone than a single honest escalation.
That is the sentence to keep. A watcher pushing at the boundary at every wake is precisely the weak-or-mis-prompted agent this architecture exists to survive. It pushed, the Gate refused it every time, and no authority crossed. The demonstration never depended on why the watcher reached, only that the boundary held regardless. Intent flows down, veto flows up, and the veto is deterministic.
Whether a correctly prompted small watcher over-reaches at all, and how that moves with model family, parameter count, and training regime, is an open research question: the breakout map (ADR-0032 §7). An SFT/RL and CFG hill-climb runs against it. Role discipline in small models is a measured problem here, not a solved one, and we would rather be the ones who measure it.
Grammar at decode time
There is a surprise on the other side of the desk. Every Kestrel grammar error we have observed came from the frontier tier: distinct varieties of invalid Kestrel across model generations, each failing closed to a pass, each spending the window where the Plan mattered on failing to arm. Costly in opportunity, never in money.
Grammar-constrained decoding is the rung of the ladder aimed at that class. With the grammar supplied at decode time, the syntactic failure class collapses at the sampling step: a small model's turn arrives valid by construction, adjudicated by the harness's own parser, against prompts written specifically to break it.
The claim that buys is narrower and more useful than "CFG works":
CFG is proven as a channel guarantee. It makes tiny models always-parseable and kills a whole class of silent failure. It does not make them smart.
The first half is worth paying for. The second half is where people over-read us, so we will over-say it: CFG buys no judgment. When the model is already in role, constrained and unconstrained runs come back byte-identical: same actions, same token counts, same determinism hash. And point a tight grammar at a mis-prompted model, deny the action it wants, and it redistributes onto the cheapest legal action: every turn perfectly valid, every turn perfectly useless. A guaranteed-valid channel will happily carry a worthless turn.
So the win is in killing silent failure, not in raising the ceiling. An unconstrained malformed turn does not disappear; it becomes a stand-down, a repair round trip, or worst of all something a harness quietly mis-scores. A channel that is parseable by construction makes the failure modes that remain honest, and honest failure modes are the only kind you can improve against.
Two fences, printed where they belong:
- A grammar keeps every sampled token inside the language. It cannot make a generation finish. Let the model ramble inside a free-text field and it can hit the token budget, and a truncated valid prefix still fails to parse. "Invalid syntax becomes unrepresentable" holds for completed generations only.
- The tier that needs it most cannot have it. The strategist authoring a Plan document is the source of every Kestrel grammar error we have observed, and it runs on a provider with no grammar surface. Our client fails closed rather than pretend otherwise.
And the obvious over-read, refused in advance: CFG has not solved over-reach. A grammar that omits the arming productions makes arming unrepresentable in that lane. It tells you nothing about whether the model wanted to arm. That question belongs to the breakout map, and it is measured, not assumed.
Where this goes
The prompted watcher is the cold start by design. The program is SFT distillation from frontier trajectories over the frozen View, then RLVR against the honest Grade as a verifiable reward, with grammar-constrained decoding for loop-speed validity. The headline research question is the breakout map: across model family, size, and training regime, where does viable in-loop trading judgment emerge, and how cheap is the smallest model that holds the grade?
The economics follow the same discipline as everything else here: measured, not assumed. The cascade's savings are gated on escalation discipline. A watcher that escalates at every wake converts the cascade into frontier-plus-overhead; one that holds its mandate does not. The Mandate holds either way, and closing that gap is exactly what watcher training targets. Any number that prices those economics gets printed when a properly-prompted, reproducible, N>1 run measures it, with caveats next to it and replicates before anything is called a rate.
The full architecture is documented at The desk, and the grammar story at The grammar is measured. Nothing here is trading advice, and no tracer number is a performance claim.