How it works
An LLM council proposes. Code limits. A human decides.
Language-model agents run one small portfolio as two books: a core book that rebalances every four hours, and a swing book of news-driven stock trades held for days. Deterministic code enforces every risk limit, a person approves every live trade, and every decision is sealed before it can be executed. Paper for now: real data, real agents, nothing traded. PAPER
What is it?
Two books, one portfolio.
Core book
- What
- A mechanical reference book (the weight the rules alone would hold: a fixed base weight per line, scaled by its trend (up = full, mixed = ¾, down = ¼) and trimmed when the line is unusually volatile) plus at most 3 council tilts a run.
- Holds
- London-listed ETFs and CFDs for Nasdaq-100SemiconductorsS&P 500GoldCrude oilEuro / US dollarPound / US dollar and spot Bitcoin Ether.
- When
- Every 4 hours, at 02:40, 06:40, 10:40, 14:40, 18:40, 22:40 UTC. London lines trade only in LSE hours.
- Size
- Whatever the swing book is not using: re-sized when open swing exposure moves by 4% of the portfolio or more.
Swing book
- What
- News-driven trades in single US stocks, long or short (a short is a 1x stock CFD), held 3 to 15 sessions.
- Budget
- 0–50% of the portfolio in steps of 5, set each US-session slot by the swing manager. The budget rule →
- When
- One slot per US session (18:40 UTC in winter), at least an hour after the open and half an hour before the close.
- Idle money
- Never left as cash: whatever is not in a swing trade is invested in the core.
How does the core decide?
Seven steps, every four hours.
- Data fact pack from completed bars Stops here: a stale or closed market is frozen
- News · macro evidence cards cite ids
- Bull · bear the bear answers each claim
- Manager ×3 the medoid attempt is used Stops here: ≤ 3 changes; uncited ones revert
- Risk rules every limit, in code Stops here: caps, deadband, anti-chase, net-of-cost gate
- Plan order legs and their costs Stops here: a cost budget can trim it
- You approve typed code, separate terminal Stops here: rejected, or not approved in time
The manager makes three independent attempts; the most typical one, the medoid, is used: a real decision, never an average. If the attempts disagree too much, or the council is unavailable, the run falls back to the reference book.
See it filled in: the latest paper decision PAPER · each agent's record · the core rules
How does a swing idea get in?
Eight steps, and most ideas die on the way.
- Screen news + movers
- Scout pitches, citing ids Dies here: no cited item, or a ticker it may not trade
- Gate code builds the fact card Dies here: chased move, thin reward after cost, liquidity, earnings S11
- Skeptic blind to the pitch Dies here: already priced in; a wait comes back on day 2
- Debate bull, then bear
- PM ×3 2 of 3 votes to enter Dies here: fewer than two votes
- Rules swing rules S1–S18 Dies here: size, stop, open risk, budget, the loss brake
- You approve within 60 minutes Dies here: not approved in time S16
These are the steps each idea's journey card shows on a decision page. Day-2 confirmation: a Skeptic "wait" is re-proposed by code at the next slot after at least one completed session, if the close since the news moved the trade's way. Cost: every swing result is counted net of a declared 1.25% of the position per leg, and levels whose reward against risk falls below 1.2 at that cost die at the gate (S6).
Who's on the council?
Fourteen core seats and five swing seats.
The core book's fourteen seats in speaking order: code officers, analysts, the bull and the bear, the manager and the checks. Each keeps its colour on every page and opens its agent.
- Scout
- Skeptic
- Bull · swing
- Bear · swing
- Manager · swing
The swing book's five seats. Its bull, bear and manager are separate agents with their own prompts; they wear the core seats' colours.
Every number comes from code; language models only read the facts and argue. Roles that DECIDE write the changes, inside ranges code enforces; ADVISES roles give evidence or argument; CONTEXT roles give background only.
Full roster and prompt hashes
Core · language models
Model deepseek-v4.1-flash:cloud, thinking off, temperature 0. Runs at 02:40, 06:40, 10:40, 14:40, 18:40, 22:40 UTC.
| Role | Kind | Authority | Runs | Prompt |
|---|---|---|---|---|
| News analyst Writes evidence cards from public RSS feeds and SEC filings, cited by id. Licensed text is never republished. |
LLM | ADVISES | 1 | council-news/v2 0143d986084b |
| Macro analyst Describes the macro regime and its drivers. Context only. |
LLM | CONTEXT | 1 first run of each UTC day |
council-macro/v2 d6288b179b4d |
| Bull advocate Opens the debate, then answers the bear's rebuttal. |
LLM | ADVISES | 1 | council-bull_open/v1 c312f8c40adbcouncil-bull_rebuttal/v1 4ff0bba5a215 |
| Bear advocate Rebuts the bull's specific claims, citing evidence. |
LLM | ADVISES | 1 | council-bear/v1 b156946ac8ff |
| Portfolio manager Proposes at most three changes to the reference, inside ranges that code enforces. Three independent attempts; the most typical one (the medoid) is used. |
LLM | DECIDES | 3 | council-pm/v1 3732a765b3c2 |
| Single-agent control One agent, the same facts, no analysts and no debate. Published as a control; it never trades. |
LLM | CONTEXT | 3 | council-single_agent/v1 a66e23487d21 |
Swing · language models
One slot per US session. The manager's three attempts need 2 votes to enter an idea.
| Role | Kind | Authority | Runs | Model and prompt |
|---|---|---|---|---|
| Scout Reads public RSS feeds, SEC filings and a screen of the day's movers, and pitches swing ideas: a US stock, long or short, held 3 to 15 sessions, citing each news item by its id. |
LLM | ADVISES | 1 | deepseek-v4.1-flash:cloudcouncil-scout/v3 2e02a273ce30 |
| Skeptic Blind to the pitch: sees only the ticker, the side, the cited items, a one-line claim and the fact card, and answers pass, wait or reject on whether the news is already in the price. |
LLM | ADVISES | up to 5 | deepseek-v4.1-flash:cloudcouncil-skeptic/v4 ef62bb6ea9a8 |
| Bull · swing Argues for the trade from the fact card and the cited news. |
LLM | ADVISES | 1 | deepseek-v4.1-flash:cloudcouncil-swing_bull/v1 407e5420ec75 |
| Bear · swing Rebuts the bull's claims one by one. |
LLM | ADVISES | 1 | deepseek-v4.1-flash:cloudcouncil-swing_bear/v1 8cb26d335f00 |
| Manager · swing Three independent attempts; an idea enters only if two of the three vote for it. Also sets the swing budget, 0-50% of the portfolio. |
LLM | DECIDES | 3 | deepseek-v4.1-flash:cloudcouncil-swing_pm/v3 77f23919bc64 |
Code and people
| Role | Book | Kind | Authority |
|---|---|---|---|
| Data steward Builds the percentage-only fact pack from completed bars; freezes stale or closed markets. |
Core | CODE | CODE |
| Reference book The weight the rules alone would hold on each line: the default position, the centre of the council's allowed range and the fallback. |
Core | CODE | CODE |
| Event officer Blocks adds around scheduled macro events; never forces a sale. |
Core | CODE | CODE |
| Vol officer Writes volatility-shock cards and trips the volatility breaker. |
Core | CODE | CODE |
| Cost desk Prices every leg (spread, fees, overnight carry) and runs the net-of-cost gate. |
Core | CODE | CODE |
| Consistency auditor Reverts uncited or self-contradicting changes; discards broken PM replicates. |
Core | CODE | CODE |
| Risk officer Final authority: enforces every rule in policy/risk.yaml and builds the order legs. |
Core | CODE | CODE |
| Scribe Builds this public record from allow-listed fields only. |
Core | CODE | CODE |
| Scorekeeper Computes controls and card scores. Descriptive only. |
Core | CODE | CODE |
| Movers screen After each US close, lists unusual movers, volume spikes, unmoved filers and sector laggards from completed daily bars: facts for the Scout, not picks. |
Swing | CODE | CODE |
| Code gate Checks the ticker, builds the fact card from completed daily bars and drops ideas that chase a move or whose reward against risk is too thin after cost. |
Swing | CODE | CODE |
| Swing risk officer Enforces every swing rule (S1-S18): size, stops, targets, earnings, shorts, the loss brake and the drawdown scaling. |
Swing | CODE | CODE |
| Paper tracker Tracks every idea, entered or not, the same way on paper, net of the declared cost. |
Swing | CODE | CODE |
| Human operator Approves or rejects every live order in a separate terminal. Nothing trades without this step. |
Both | HUMAN | DECIDES |
What can code stop?
Everything that matters. Prompts explain the rules; code enforces them.
- Total exposure at most 2.0x the portfolio, hard-coded.
- Kill switch, measured from the best value ever reached: −20%: no new risk · −25%: stop, and a proposal to sell everything goes to the human. R3
- Every opening order carries a catastrophe stop, core and swing.
- Swing loss brake: new swing entries stop after a 5% loss of the portfolio over 30 days, net of all costs, until the operator lifts it. S15
- Swing drawdown scaling: 10% below the lifetime peak, swing trades are halved in size and at most three stay open. S17
- Borrowing and shorts in the core only through the council, and only when the order passes the net-of-cost gate.
- Allowed ranges, a deadband, minimum holds, turnover and cost budgets, event blocks and an anti-chase rule. All the rules →
Who presses the button?
A person, every live trade.
The unattended runner can only read. Orders are approved in a separate operator terminal that refuses to run under automation or an agent, asks for a typed confirmation code, and unlocks a separate, auto-locking keychain. A swing entry's approval is valid for 60 minutes. Notifications carry percentages only. Nothing trades on its own; on paper, nothing trades at all.
Where does the news come from?
Public RSS feeds and SEC filings, cited by id.
The news analyst and the Scout read public RSS feeds, official releases and SEC filings, and must cite every item they rely on by its id. The headline text of licensed feeds is shown to the models only and never published: the record shows the item's id and its source, nothing more.
How do we know it isn't hindsight?
Each run is sealed before any order can be approved.
A hash commitment of the full run is published first; the run itself and the salt that opens the seal are published once the decision is final. Anyone can re-hash the revealed file. Only forward, sealed runs count as evidence. Language models have read the history we could backtest on, so no council backtest is ever shown.
What can this never prove?
A small edge.
Even a real but small edge takes about 16 years of results to tell apart from luck, so this record can show rule-keeping and costs, not skill. It can also show how deep the falls are and how often the council disagrees with the reference.
Swing book: at 30 trades, a mean of +0.3 R with a per-trade spread of about 1.2 R has a standard error of about 0.22 R, so the review can detect a disaster, not prove an edge (pre-registration §7).
Glossary
- Medoid
- Of the manager's three attempts, the one closest to the other two. A real attempt is used, never an average of them. The manager →
- Deadband
- A change too small to be worth its trading cost is skipped. R11
- Anti-chase
- No adding right after a large one-day move in the core; in the swing book, ideas whose move since the news is already too big die at the gate. R17 S11
- Net-of-cost gate
- Borrowing or a short goes through only if the expected gain beats the spread, fees and overnight carry it costs. R15
- Commitment and salt
- A hash of the run is published before approval; the salt revealed afterwards lets anyone check the run was not changed. How the seal works