kestrel.markets
Views

Views

How a Kestrel pod sees. A View decides what an agent perceives when the runtime wakes it; each seat reads a different screen because each seat does a different job at a different speed. This section documents the seat Views and the market variants they cover.

A View decides what an agent sees when the runtime wakes it; the agent decides what to do with it. A Kestrel pod is not one agent but a small organization of seats — roles distinguished by the deliberation budget they can afford — and each seat reads a different screen because each seat does a different job at a different speed.

This section is the library of those screens. It is organized on two axes, the same two the engine's own template-cell key turns on:

  • By seat / role — one page per View, each explaining its layout in terms of the seat's task and timescale: the Strategist View, the Watcher View, the Scanner View, and the PM View.
  • By market variant — instrument class, timescale, and strategy archetype. The Views you see today are the equity-index options variant; the same View grammar carries the other instrument classes, described under The variant axis below.

What a View is

A seat's screen is not a monolith. It is assembled through four layers, each answering a different question, each authored on its own:

  1. Seatwho is this? A role in the pod org, fixed by its affordable deliberation budget: a PM and a Strategist are slow, deliberate, frontier-class judgment (dollars, a few times a day); a Watcher is the fast reflex (pennies, seconds); a Trigger is a non-LLM reflex below even the Watcher. Seats' latency envelopes differ by orders of magnitude, which is why no single model fills them all well.
  2. Taskswhat must it decide? The seat's job: allocate an envelope, author a leaf, manage held inventory, summon a bigger brain. The tasks fix what information is decision-relevant.
  3. View configwhat does it see? The role-keyed View — the panes, in order, at the band the wake zooms to. This is the layer this section is about. Perception is tuned here.
  4. Persona / Briefhow does it lean? The soft, directional English the seat reasons from (a "disciplined risk manager," a "momentum chaser"). Personas tune policy; Views tune perception — different channels, both role-attachable, and the Brief never enters admission (it directs, it never authorizes).

The seat and its persona are policy; the View is perception. This section fixes layer 3 and leaves layers 1, 2, and 4 to their own documents.

The pod

pod tier stack
                     ┌─────────────────────────────────────────────┐
   humans sit        │  humans — above the root, always             │
   above the root    └───────────────────────┬─────────────────────┘
   ╔══════════════════════════════════════════╪══════════════════════════════════════════╗
   ║  L0 · RISK  (a LAYER, not a seat)         │   clamps / vetoes · may never open risk    ║
   ║  outranks every node including the PM     │   rendered surface: the kernel safety block ║
   ╚══════════════════════════════════════════╪══════════════════════════════════════════╝
                       ┌──────────────────────┴──────────────────────┐
                       │  PM node  (runs a Pod: allocates + discovers)│
                       │    · Allocator  — envelope allocation        │  slow · $$ · aggregate
                       │    · Scanner    — scan-fire read-why         │  minutes · single-name
                       └──────────────────────┬──────────────────────┘
                                              │  arms / assigns Coverage / authors leaves
                       ┌──────────────────────┴──────────────────────┐
                       │  Trader node  (runs a Book: manages a leaf)  │
                       │    · Strategist — frames + authors plans     │  a few/day · $$ · frontier
                       │    · Watcher    — manages · escalates        │  seconds · ¢ · fast reflex
                       │        └─ Trigger — summons the Watcher      │  sub-second · non-LLM
                       └──────────────────────┬──────────────────────┘
        off-tape ······························┴······  Historian — reads Blotters after close,
        (no live seat's latency budget)               curates lineage + evolves the Brief

Reading the stack: Risk is the L0 layer, not a seat — strictly subtractive, above everyone. The PM runs a Pod (allocates children's envelopes, arms and de-arms, assigns Coverage, watches aggregates) and splits into an Allocator half and a Scanner half. The Trader runs a Book (a leaf, the only place positions live) and splits into a Strategist and a Watcher. The Trigger is the pod's third live tier below the Watcher — a non-LLM reflex that summons, never decides, and so reads the frozen Frame's features directly rather than a screen. The Historian works off-tape after the close, reading Blotters and Grades rather than a live Frame; it curates the pod's memory and evolves the Brief. Trigger and Historian have no View by construction, for opposite reasons — one reads below language, the other reads after the session.

The pod-seat roster is closed — pm, strategist, watcher — and it is the role axis of the engine's evidence cell key. A seat is admitted only where its sub-job genuinely diverges: by latency of at least an order of magnitude, by a typed boundary a document crosses, and by being independently measurable. That filter is why Risk stays a mechanism, the Grader stays an engine, and the Trigger stays a tier — none of them a seat.

How a View is chosen

Every wake resolves to exactly one View through a strict precedence:

explicit authored View  >  seat founder View  >  phase default
  • An explicit view — one an agent authored, scheduled, or a Wake forced — always wins. A seat never overrides an authored lens.
  • Otherwise, when the driver knows the acting seat, that seat's founder View for the frame kind is used (the Strategist's at the open, the Watcher's and the Scanner's on a wake).
  • Otherwise the frame kind's phase default panes render — byte-identical to a run with no seat at all.

Seat Views are opt-in. By default a Session runs the phase-default panes and consults no seat; set seatViews: "founder" on the AgentConfig to have each acting seat read its View. The two settings are distinct experimental subjects and fold into the run's ConfigId automatically, so a founder run and a phase-default run are always separable in the record. Where a seat has no View for a frame kind — a Strategist at a wake, a Watcher at the open, the PM's allocation half — resolution falls through to the phase default; absence is a first-class value, never a silently fabricated screen.

Every rendered screen in this section is byte-real — generated from the live renderer, never hand-typed, so a renderer change re-pins the screens or CI goes red. Every View block is written in real Kestrel syntax and round-trips byte-stable against its golden corpus.

The seat axis

ViewSeatTaskTimescaleFrame
Strategist ViewStrategistFrame the session, author the plans, price the exitsA few times a day, at dollars a callOPEN
Watcher ViewWatcherManage held inventory inside its plans; escalate at the edge of certaintySeconds, at pennies a callWAKE
Scanner ViewPM (discovery half)Read one name deeply when a universe-wide scan firesMinutes, single-nameWAKE
PM ViewPM (allocation half)Allocate children's envelopes; watch aggregate exposureSlow, aggregate

The Strategist and the Watcher are the two halves of the Trader that runs a Book; the Scanner and the PM's allocation cockpit are the two halves of the PM that runs a Pod. Each half is a distinct layout because each does a distinct job at a distinct speed — which is exactly the "different layout by task and timescale" this section is organized around.

The variant axis

A View is composed once and rendered against whatever market the instrument declares. The market a screen speaks is set by the instrument's SessionScheme — the registry attribute that declares an instrument's boundary stream (its opens, closes, and session splits). Four schemes ship today:

VariantSessionSchemeStatus
US equity & index options (0DTE)equity-rthShipped — the Views in this section
CME futurescme-rth-overnightOn the same View grammar
Crypto perpetualsperp-utc-dayOn the same View grammar
Spot FXfx-weekOn the same View grammar

The founder Views documented here are the equity-index options variant, and their panes are options-native: the chain pane with its intrinsic-floored fair, the pin, the expiry-relative session ordinals, the theta the Watcher pays to hold. They render against equity-rth, the default scheme every equity and index instrument resolves to.

The other three schemes ride the same View grammar and the same seats. A perpetual's rolling UTC day has no daily close, so its prior-context pane names that absence instead of inventing a midnight bar; a CME instrument splits its RTH session from the overnight; spot FX runs a Wellington-open-to-NY-Friday-close week. As each variant's panes land, its layouts join this section as those Views — futures, perpetuals, and FX pages slot onto the variant axis without disturbing the seat axis, because a variant changes the market a View speaks, not the seat that reads it.

On this page