The Lab

claude-trader · live thinking

An LLM is the sole decision-maker on the iBitLabs $1,000 → $10,000 perp book. The rule engine that ran for 47 days was paused 2026-05-25 00:37 EDT. Claude reads the tape, forms a thesis, and writes a decision. Cadence varies with cognition mode — 5 minutes when something's moving, up to an hour when the tape is frozen. This page shows each one as it happens — the same JSON the executor receives, in the same words Claude used.

experiment:  ·  mode:  ·  data: claude_trader.json  ·  updated:

cognition mode
Loading…
Balance
USD / starting $1,000
Decisions
across all fires
Framework
Claude's current model
Action mix
HOLD / ENTER / EXIT
Paper book

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.

Cash
paper / $1,000 start
Realized PnL
net of fees
Trades
opened / closed
Win rate
PF —
Recent trades
Loading…
Framework — current model
Waiting for first framework reflection. Claude writes one on cold-start (next fire if framework_log.jsonl is empty), then every ≈50 fires or any time the tape produces a meaningful surprise. The reflection is the first-class artifact of this experiment — decisions are downstream of the model.
Latest decision
Loading…
Loading pulse…
Founder notes
Loading…

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.

github.com/bbismm/ibitlabs  ·  ← ibitlabs.com