Article 1: No contract, no order.
Every order must trace to a schema-valid DecisionContract persisted before submission.
U1 · no-contract-no-order
An autonomous trading agent · v0.1 for macOS, Windows, Linux
Savant trades on its own, on an account of any size — ten dollars or ten figures. Language models find ideas and fight over them — an advocate, a prosecutor from a different model family, a panel and a judge. Then plain code sizes the trade, eight rules no model can change decide what is allowed, and a kill switch sits outside all of it.
The demo is the real cockpit on synthetic data, in your browser. No sign-up, no real money. Not financial advice — read the risks.
I Intake
Cheap code reads everything. Small models read what is left. The expensive hearing is kept for the few ideas that survive — at most 12 a day. Every idea that dies gets a written reason.
0 Reflex TypeScript · free
Noise, duplicates, stale quotes, spreads, fee hurdles. All arithmetic happens here, in code. At most 150 headlines a day reach the queue.
1 Triage clef-flash
One headline per call, because batching distorted the scores. Promoted only at P(material) ≥ 0.45 and priority ≥ 1.2; at most 8 a pulse.
2 Structure Clef 27B
Long-favoured? Fits the regime? How lethal is the bear case? Passes at 0.72 with quality ≥ 70; at most 40 a day.
3 Court model pool + judge
A full hearing with a cross-family prosecutor. At most 12 a day.
II The hearing
The prosecutor must come from a different model family than the advocate. If none is available, the case is not traded. Below is a synthetic hearing built from the demo fixtures; real hearings post the same transcript.
I · Matter before the court
SOL/USD — an ETF filing headline crosses the wire; spot volume is rising.
II · The advocate gemini-3.5-flash · google
“SOL reclaims its 20-day high on rising spot volume after the ETF filing headline; the move holds above 182.”
III · Code checks the advocate
IV · The prosecutor gpt-oss-120b · openai-oss
“Funding is already positive and the headline may be priced in; a loss of 180 invalidates the breakout and the weekend book is thin.”
V · Rebuttal
The advocate stands firm. Conviction after cross: 6 → 6.
VI · Expert panel advisory only
VII · Clef 27B, presiding
Ruling — sent to the risk engine
III Sentencing
The court only says how sure it is. How much to buy comes from one pure function. This is that function — the engine's own code, not a copy — running in your browser. Change the account from ten dollars to a billion and watch the same rules scale.
Every limit is a share of the account, and the share shrinks as the account grows. The top rung has no ceiling: at very large sizes, market liquidity — not the software — is what sets the limit.
| Rung | Account | Risk per trade | Largest position | Positions | Total risk |
|---|---|---|---|---|---|
| R1 | under $100 | 2.5% | 35% | 3 | 12% |
| R2 | $100 – $250 | 2.5% | 35% | 3 | 15% |
| R3 | $250 – $2,500 | 2% | 30% | 4 | 18% |
| R4 | $2,500 – $25,000 | 1.5% | 25% | 6 | 20% |
| R5 | $25,000 and up · no ceiling | 1% | 20% | 10 | 20% |
Why 54? Our own reference account started with $54 — the hardest size there is, where every cent of fees shows. If the rules hold there, they hold anywhere. Targets must clear 3× fees and spread at every size.
IV The constitution
Enforced in code and covered by tests. They change only by a git commit from the operator, and a tunable
value looser than the constitution fails the build. Printed here straight from the
constitution the engine loads (sha256 d8da856ac01d…).
Every order must trace to a schema-valid DecisionContract persisted before submission.
U1 · no-contract-no-order
Model outputs may set conviction and probabilities only. Quantity, notional and price come solely from the deterministic sizer and validator.
U2 · models-never-size
Per-trade risk, total heat, position notional, daily loss and drawdown caps below are absolute. Cash only: no margin, no shorting, no naked options, no leveraged products. Bearish exposure only by buying the 1x inverse ETFs (SH, PSQ, RWM, BITI).
U3 · hard-caps-cash-only
Every position carries a stop: broker-side where Alpaca accepts one, synthetic otherwise, checked every pulse.
U4 · every-position-has-an-exit
The kill-switch and RED breaker cannot be overridden by any model or Governor. LIVE unlock requires an operator-written postmortem. PAPER, which runs fully autonomously, unlocks itself only after the minimum cooldown, once flat, with a machine postmortem; every RED trip counts against LIVE graduation.
U5 · kill-switch-sacred
Stale data, unknown broker state, reconciliation mismatch, or any free-tier budget at or above the hard-stop fraction forces REDUCE_ONLY. Never fail open.
U6 · fail-closed
Journal tables are append-only and hash-chained. No UPDATE or DELETE. The daily chain head is anchored externally (Discord).
U7 · append-only-journal
The Governor may only propose changes as pull requests. There is no approve-each-trade mode: LIVE stays dormant (Stop 0) until every roadmap phase is built and the fully autonomous PAPER account has passed the graduation gate, and then trades only after the operator ratifies (RATIFY). Capital-ladder promotions also need ratification.
U8 · self-modification-is-a-pr
Ceilings. The working doctrine runs tighter, and it may only ever tighten them.
V When it is wrong
Green
under 3%
Full size, ×1.0
Yellow
3% – 6%
Half size, ×0.5
Orange
6% – 10%
No new entries. Exits only.
Red
10%+, a 5% day, or 3 stop-outs in 24 h
Sell everything and lock. Real money unlocks only with a written postmortem.
A stop at the broker wherever it accepts one, and a stop checked by the brain on every pulse wherever it doesn't. Stops only ever move up.
Stale data, an order it doesn't recognise, a position it didn't open, a budget at 90%: new entries stop. A kill flag it can't read counts as killed.
In the cloud edition a separate sentinel, deployed on its own, checks the heartbeat every minute and can sell everything — even if the brain itself is broken. On the desktop the kill switch is in the tray.
VI Graduation
Both run the same brain and the same contracts, each sized for its own balance — whatever that balance is. Nobody approves trades; there is no mode for it. Real money starts only when you ratify it, with the paper record in front of you.
PAPER · trading on its own
Paper
Pretend money, real prices. It charges itself modelled fees and slippage that the paper broker doesn't, so the record isn't flattered.
LIVE · dormant at Stop 0
Live
Real money. It joins at Stop 0 and places nothing until a person ratifies it. The gate below is what the app checks for you first.
Tracked from data by the Governor and shown beside the ratify control:
Then a person types RATIFY — and confirms it again, 10 minutes to 24 hours later, on a fresh
sign-in.
On your own install you decide: you can connect a live account at any time. It joins dormant at Stop 0, and the ratify screen shows this gate's verdict as a warning, not a block: you decide. Everything else still binds it.
VII The record
Exhibit A · the journal
Every journal row is hashed with the one before it. SQL triggers refuse to update or delete. The daily
head is posted outside the system. These hashes are computed live by the journal's own
rowHash(). Edit the payload of row 3.
Exhibit B · the tests
Exhibit C · the backtest lab
Three years of history, fees and slippage modelled, multiple-testing corrected. Only what passes may trade on the paper account; the rest are watched in a separate lab account. This is our own research, not live performance — and a backtest that agrees with the literature is still a backtest.
| Strategy | Trades | Win | Expectancy | Profit factor | Verdict |
|---|---|---|---|---|---|
| RSI(2) pullback · equities | 104 | 78% | +0.27R | 2.51 | Passes → trades on paper |
| Breakout baseline · crypto | 545 | 47% | +0.05R | 1.17 | Unproven · kept as plumbing |
| Inverse-ETF breakout | 109 | 46% | −0.06R | 0.85 | Loses → lab only |
| Oversold bounce · crypto | 184 | 44% | −0.08R | 0.68 | Loses → lab only |
| Trend · crypto | 174 | 43% | −0.08R | 0.83 | Loses → lab only |
| Turn of month · crypto | 70 | 46% | −0.14R | 0.59 | Loses → lab only |
Run 2026-10-24. Past and simulated results do not predict future results.
VIII Yours
We ship software and you run it. No hosted brain, and no server of ours ever holds your broker keys or your money.
Screenshot of the demo cockpit · synthetic data
One licence, one app for macOS (Apple silicon and Intel), Windows and Linux (x64 and arm64). It lives in the tray; closing the window doesn't stop it.
First launch opens a working cockpit in a keyless demo: a simulated $54 on live crypto prices. No accounts, nothing to set up.
Connect your free Alpaca paper account when you're ready, then a live account of any size when you decide it has earned it. Keys can live in your system keychain, and backups are encrypted.
Free model tiers by default. Add any OpenAI- or Anthropic-compatible endpoint — including local models through Ollama or LM Studio — and it rotates through them.
Demo
Free
The full app on simulated money and live crypto prices. No broker account, no card.
Download the demoYearly
$249 a year
Paper and live trading, every update, every platform. About 30% less than monthly.
Start 7 days freeMonthly
$29 a month
Everything in yearly, month to month. Cancel any time from your Whop account.
Start 7 days freeCheckout, your licence key and your downloads are handled by Whop. You aren't charged during the trial; cancel before it ends and you pay nothing. A full refund within 14 days of your first payment, no questions (refund policy). Prices in USD; tax may apply.
Updates are signed and never install without your click. Your licence is renewed with our licence server about once a day and keeps working offline for up to 14 days; without one the demo always works, and a paper or live account keeps its stops but opens nothing new. macOS builds are ad-hoc signed and Windows SmartScreen asks once.
Savant is software, not advice. Nothing on this page or in the app is financial, investment, tax or legal advice, or a recommendation to buy or sell anything. We are not a broker or an adviser, and we never hold your money or your keys.
Trading can lose money — all of the money you put in. Crypto and stocks move fast and gaps can jump straight past a stop. An autonomous system acts without asking you, and software, data feeds, brokers and model providers can fail.
Paper is not live. Paper accounts use pretend money against real prices; real fills, fees and slippage differ. Backtests and paper results are simulated, describe the past, and do not predict the future. No result on this page is a promise of any return.
You are in charge. You choose whether to connect a live account and when to ratify it. Only trade money you can afford to lose entirely. Check that automated trading is legal and suitable for you where you live.
The live demo on this page runs on synthetic data. It is not a real account, real money or real trading results.