eric@builds:~$ tail -f journey.log

Teaching a trading desk to run itself

One engineer, one repository, and a growing crew of AI agents — building an automated futures desk on simulation and prop-firm evaluation accounts. This is the running build log: what worked, what died on the evidence, and the guardrails that never bend.

1
human owning the blast radius
40+
scheduled guards, watchdogs & jobs
0
AI hands on live money
n≥20
the evidence bar every idea must pass
premise --explain

This is the same method as everywhere else on this site — AI drafts and diagnoses, tested code executes and enforces, a human owns the blast radius — pointed at the most adversarial domain I could pick: automated futures trading.

Signals come from charts. A small Python listener turns them into bracketed orders across a fleet of simulation and evaluation accounts. Around that core sits a cage of deterministic guards. And above it sits the newest layer: AI agents that manage exposure and risk posture — never entries — and only ever with authority they have measurably earned.

Nothing gets money authority without evidence.
The same evidence bar that promotes a strategy demotes it.
Everything fails safe: an error means no order, never a wrong one.

journey --timeline --blame

Every incident on this desk gets a fault line, because the only way to stop repeating a mistake is to say whose it was. AI means code or judgment the model produced. system means the platform, a vendor add-on or the machine. me means my hands or my call. shared means both of us, and it is never a way to say neither.

AI · 15 system · 4 me · 3 shared · 3
before Jun 2026

the black-box era

fault: me

I bought vendor bots and let them run on the same platform with no brackets and no oversight. An early wave of evaluation accounts died. Nothing about that was the machine's idea.

Jun 2026

the churn strategy

fault: shared

The first strategy the model drafted never held to a bracket: 99% of its exits were reverse, flatten or sync churn, so an edge was structurally impossible. Six evaluation accounts and a wave of sims went with it. The model wrote it; I approved it without asking for evidence first.

late Jul 2026

the cross-account hedge

fault: AI

The fan-out treated accounts at one firm as independent and placed opposing positions across them. The firm polices the trader, not the account, and closed three. Rule born that day: one actor per firm, one direction per fleet.

30 Jul 2026

the model picks entries

fault: shared

A language model chose trades on real evaluation accounts with zero track record: −$810 in a day, a profit factor of 0.29 measured afterward. It is permanently dead and a tripwire keeps it dead. The entries were the AI's; letting an unproven method touch real accounts was my call.

4–5 Aug 2026

the bug class

fault: AI

A server-side stop survived the close and fired overnight, and the naked position poisoned a trailing peak. A guard's grace clock reset on every run, so it never acted. Both were code the model wrote and I merged.

early Aug 2026

human hands on eval exits

fault: me

I hand-managed exits on evaluation accounts and closed them at the worst prices while untouched sibling accounts survived. The ledger's one lesson: no account died from a proven signal held to its bracket.

7 Aug 2026

the weekend landmine

fault: AI

The weekend stand-down walked a hard-coded list of contract months that had already rolled. It saw nothing, reported all flat, stood the connections down, and left nine accounts naked into a weekend. Hard-coded contract spellings are banned from every safety path since.

8 Aug 2026

the platform repair

fault: system

A trading-platform repair rewrote its own configuration and took a broker connection and its stored login with it. The desk grew a machine-local vault for prop-firm logins so no repair can erase them again.

10 Aug 2026

fault #41

fault: AI

A gate that existed only in a code comment. The comment described the check; the function underneath never made it. Reviewed, fixed, and the pattern named so it gets hunted.

14 Aug 2026

the double close

fault: AI

A panic flatten read the position, sent an offsetting order, re-read before the first fill landed, and sent another. A long six on a simulation account became a short six. Flattens now settle before they offset.

17 Aug 2026

unreadable is not flat

fault: AI

A dead order interface read as zero positions, and guards acted on positions they could not see; one real position spent the night naked. The reader now returns unreadable as its own answer, and every consumer treats it as not flat.

24 Aug 2026

the machine ran out of memory

fault: system

A local language model quietly consumed the trading machine's memory until the platform itself began failing. Diagnosed remotely from state files; the brain moved to the cloud with automatic failover the same afternoon.

26 Aug 2026

clicks on a funded account

fault: me

Full-size contracts traded by hand in the first minutes of the open on a funded account, breaching its consistency rule. The desk's job expanded to gating hand clicks with the same policy as its own orders.

27 Aug 2026

the naked live position

fault: AI

The live cash account sat unprotected because of a bug in guard code, caught at six in the evening. The guard was fixed and a second, independent net added behind it.

28 Aug 2026

DOUBLE on a $1k account

fault: shared

I clicked a button that doubled whatever was open; the broker had to reject it for margin. The button had no account awareness at all. My click, the model's guardless button; it now refuses before it sends.

28 Aug 2026

the live account filed as simulation

fault: AI

The one account holding real cash was classified as simulation by the desk's own tables, so real money was getting simulation-grade alerts. Reclassified, verified on the machine, and the alert tiers split: real money screams, simulation whispers.

28 Aug 2026

good strategies jailed on estimates

fault: AI

Lane cuts were made from estimated P&L rather than real fills, and jailed strategies that were fine. Released, root-caused, and the rule written: a cut from a prop account never rests on a guessed exit price.

28 Aug 2026

the outage that was the schedule

fault: AI

A session spent twenty steps diagnosing an outage that was the scheduled Friday shutdown, restarted the platform, and triggered an unnecessary cleanup. Nothing was forgotten; nothing was checked. The preflight command that prints intent beside state exists because of this.

31 Aug 2026

a stop stacked on a live bracket

fault: AI

The position sentinel tried to add a stop to a live position that already had one. Same day, a safety property with an impossible default kept the whole chart trade panel from loading. Both were the model's code.

1 Sep 2026

a reboot un-halted the desk

fault: AI

A halted desk came back armed after a reboot because a flat check failed open. The halt was restored and the check made to fail closed; a system that cannot verify flat now assumes it is not.

2 Sep 2026

chart freeze, thirteen-minute reconnect

fault: system

The platform's chart froze and a broker reconnect took thirteen minutes, with third-party add-ons the prime suspects. It set the definition of super reliable that the code is now measured against.

3 Sep 2026

the upgrade that emptied the desk

fault: system

A mid-session platform crash, then an upgrade whose database migration silently failed on an empty file: no connections, no templates, no accounts. Recovered by script, saved logins included. The vendor add-ons were dropped for good.

3 Sep 2026

the audit

fault: AI

Five reviewers, five slices, and the findings were mine to own: a control token served to the public tunnel, the evidence ledger wiped to zero bytes by a scheduled rebuild, a stand-down that knew half the firms and reported the rest flat, a readiness check crying wolf for two days, and a firm's ownership dropped by the morning stand-down so twenty-two evaluation accounts spent the day invisible. Every one is now a test.

3 Sep 2026

the token I should not have rotated

fault: AI

One audit recommendation changed the operator's own workflow: rotating that exposed token. It broke his chart alerts for an evening and was reverted on his word. Closing a leak is the desk's job; changing how a person works is his decision, and it does not hide inside a bulk approval.

4 Sep 2026

why nothing traded since the rebuild

fault: AI

A strategy override had quietly expired two days earlier, and a simulation-only day cap was gating the real-money fan-out. Nothing placed and nothing said so. Expiry abolished, the cap scoped to sims, and every refused leg now reports itself.

rules --immutable

Money moves by human hands only

Deposits, withdrawals, and funding are always a person's deliberate act. The system may monitor balances and remind — it holds no banking credentials and never will. That boundary is written down as non-negotiable, on purpose, permanently.

Firm rules are hard-coded, not remembered

Where a funded account's rules require human-only trading, the buttons enforce it: every order is one human click, and the server refuses anything that would break a firm rule — like hedging inside the same firm — even if the human clicks it.

Risk is sized to be survivable

Every experiment runs on simulation or evaluation accounts, with kill switches and hard caps beneath everything. Any future step toward real capital is deliberately small, explicitly risk-accepted, and wrapped in tighter limits than any simulation.

The evidence bar is the boss

Nobody — human or model — gets to argue with the sample. Ideas are promoted by measured results, demoted by measured results, and buried with their metrics on the headstone so no future session resurrects them by accident.

the part you can test

The desk itself is private infrastructure, but its deterministic edge is public: NQ Terminal, a live futures dashboard with zero AI at runtime — levels ranked by whether they actually held, strategies scored net of real costs, signals that explain themselves. Kick the tires and tell me what breaks.