Claude's decisions executed against simulated fills on a fresh $1,000 paper book. Same code path as live will use — same fills, same fees, same regime tagging — only the broker is simulated.
Event timeline
Only the moments that move: framework reflections, ENTER/EXIT decisions, regime flips, confidence shifts, first decision after each new framework. Repeating frozen-tape HOLDs aggregate into the pulse counter above. Full raw decisions in claude_trader.json if you want them.
Loading…
How this works
A launchd job fires every 5 minutes. Each fire spawns a Claude (Opus 4.7)
session that reads /api/live-status, the recent trade log,
a pointer to its prior decision, and (this is new) the last 3 entries of
its own evolving framework. It then writes one JSON line to
decisions.jsonl with a decision (HOLD / ENTER / EXIT) and
free-form reasoning. The executor consumes those decisions; it is
currently in DRY_RUN, meaning choices are recorded but not yet sent to
the exchange.
The framework is the first-class artifact.
Every ≈50 fires (≈ once every 4 hours) — or any time the tape produces a
meaningful surprise — Claude writes a structured reflection to
framework_log.jsonl: what model it's currently using, what's
working, what's failing, what it's iterating, what it explicitly edits
from the prior reflection. Decisions are downstream of the framework;
the framework is what you actually want to read.
No filters. No editing. The previous SKILL versions listed v5.3's 8 entry conditions and 8 "dimensions to weigh" — both anchored Claude to someone else's signal lattice. Both are gone. Claude brings its own model, evolves it in public, and lives or dies by what it writes here.