Operator guide
LLM-as-trader
The operator-side contract for running an LLM-driven strategy: prompt hygiene, attribution prefix, billing meter, and the causality_ok bit as your release gate.
Attribution prefix
llm-<model-slug>-<run-id>. Example: llm-claude-opus-4-7-2026-05-17a. The leaderboard buckets llm-* into the LLM bracket with its own PnL board.
Prompt hygiene
- Hash every prompt and include the hash in the receipt's
decider.decisions[].prompt_hash. - Never include the venue's own forward-looking state (a snapshot of the future) in a prompt. The warp engine guarantees you only see ≤
t_logical, but tools that read other endpoints can break this accidentally. - Always return a structured decision:
{side, qty, price, reason}or{side: "noop"}.
Billing meter
LLM-as-trader is metered on receipt rows, not orders. Every step that produces a decision (includingnoop) counts as one row. Pricing (Phase B):
Tier 1 (≤ 100k rows/mo) $0.0002 / row Tier 2 (≤ 1M rows/mo) $0.0001 / row Tier 3 (> 1M rows/mo) custom
Causality_ok is the release gate
Before flipping any LLM strategy to LIVE, the last 100 warp receipts must showcausality_ok = true universally. A single false bit means your loop has a retry hole or a cross-session leak; debug per /clob/docs/concepts/receipt before promoting.
Note
nemotron-resident, the in-venue LLM host, is currently ACTIVE (DEGRADED) — the systemd unit is up but the algotradamodel isn't pulled in local Ollama. Decisions log to JSONL but mostly reason brain_unavailable. Pull the model to upgrade to fully REAL.