Savant

An autonomous trading agent · v0.1 for macOS, Windows, Linux

Let the models argue. Let code decide.

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.

Get Savant

The demo is the real cockpit on synthetic data, in your browser. No sign-up, no real money. Not financial advice — read the risks.

Account size
$10+ no upper limit; every limit is a share of the account
Real money
Stop 0 off until you ratify it; the paper record is shown first
Running cost
$0 extra a month: free AI tiers by default
Constitution
8 rules no model can change

I Intake

Thinking costs money. It spends it like money.

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.

  1. 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.

  2. 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.

  3. 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.

  4. 3 Court model pool + judge

    A full hearing with a cross-family prosecutor. At most 12 a day.

The wire · illustrative headlines
  • 10 crypto coins that could 10x before Christmas T0 · noise: listicle
  • SOL/USD · ETF filing lands; spot volume rising → convened: the court
  • Bitcoin price today: live updates T0 · noise: live blog
  • NVDA edges higher in premarket trading T1 · material 0.18 < 0.45
  • SOL ETF filing lands with the SEC, report says T0 · near-duplicate
  • Fed minutes: officials split on pace of cuts T1 · priority 0.6 < 1.2
  • LINK/USD · bank pilot integration announced T2 · regime fit 0.41
  • Streamer endorses new meme coin T0 · no tradable symbol
  • AAPL · services headline; nine-day base T2 · quality 61 < 70
  • AMD outlines data-centre accelerator roadmap T1 · material 0.38 < 0.45
  • LTC network upgrade scheduled for Q1 T1 · priority 0.9 < 1.2
  • COIN · outage resolved after two hours T2 · bear lethality 0.68
  • Why you should buy the dip, says analyst T0 · noise: opinion

II The hearing

Every idea that reaches the court is cross-examined.

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.

  1. I · Matter before the court

    SOL/USD — an ETF filing headline crosses the wire; spot volume is rising.

  2. 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.”

  3. III · Code checks the advocate

    • ✓ Entry zone brackets the bid
    • ✓ Stop below entry, at least 1.2 × ATR away
    • ✂ Targets clipped to 3·ATR·√(h/24)
  4. 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.”

  5. V · Rebuttal

    The advocate stands firm. Conviction after cross: 6 → 6.

  6. VI · Expert panel advisory only

    • Quant supports — range reclaimed on volume
    • Risk supports — stop is wide of the weekend noise
    • Macro abstains
  7. VII · Clef 27B, presiding

    raw0.68
    calibrated0.554

    Ruling — sent to the risk engine

III Sentencing

Models never size.

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.

Inputs to the position sizer
Account size rung R1
Market
Circuit breaker

Position

$12.23

Max loss if stopped
$0.54
Binding limit
risk
Effective risk reff
1.01%
Stop + fees + ½ spread
4.45%
Largest position allowed
$18.90
Positions at once
3

The engine's own sizePosition() with the shipped doctrine (f0ab3e91089f…). Crypto fees 0.40% round trip, half-spread 0.05%. There is no input for a model's opinion of size.

Ten dollars or ten figures. Same rules.

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.

RungAccountRisk per tradeLargest positionPositionsTotal risk
R1under $1002.5%35%312%
R2$100 – $2502.5%35%315%
R3$250 – $2,5002%30%418%
R4$2,500 – $25,0001.5%25%620%
R5$25,000 and up · no ceiling1%20%1020%

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

Eight rules no model can change.

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…).

  1. Article 1: No contract, no order.

    Every order must trace to a schema-valid DecisionContract persisted before submission.

    U1 · no-contract-no-order
  2. Article 2: Models never size.

    Model outputs may set conviction and probabilities only. Quantity, notional and price come solely from the deterministic sizer and validator.

    U2 · models-never-size
  3. Article 3: Hard caps. Cash only.

    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
  4. Article 4: Every position has an exit.

    Every position carries a stop: broker-side where Alpaca accepts one, synthetic otherwise, checked every pulse.

    U4 · every-position-has-an-exit
  5. Article 5: The kill switch is sacred.

    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
  6. Article 6: Fail closed.

    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
  7. Article 7: The journal can't be rewritten.

    Journal tables are append-only and hash-chained. No UPDATE or DELETE. The daily chain head is anchored externally (Discord).

    U7 · append-only-journal
  8. Article 8: Changing itself takes a pull request.

    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
Per-trade risk
≤ 2.5%
One position
≤ 35%
Daily loss
≤ 6%
Drawdown lock
≤ 12%
Orders a day
≤ 30
Quote age
≤ 180 s

Ceilings. The working doctrine runs tighter, and it may only ever tighten them.

V When it is wrong

Losing makes it smaller. Losing more makes it stop.

  1. Green

    under 3%

    Full size, ×1.0

  2. Yellow

    3% – 6%

    Half size, ×0.5

  3. Orange

    6% – 10%

    No new entries. Exits only.

  4. Red

    10%+, a 5% day, or 3 stop-outs in 24 h

    Sell everything and lock. Real money unlocks only with a written postmortem.

Every position has an exit.

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.

It fails closed.

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.

A watchdog with none of its code.

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

Paper and live, side by side. One is allowed to trade.

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.

The graduation gate

Tracked from data by the Governor and shown beside the ratify control:

  • Every roadmap phase built
  • 30 straight days of fully autonomous paper trading
  • 25 or more closed trades
  • Positive expectancy after fees, profit factor above 1.2
  • Zero rail violations
  • Heartbeat at 99.9% or better
  • Calibrated Brier score under 0.25
  • Every red breaker recovered and reviewed
  • A live kill-switch drill that passes

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

Trust the record, not the pitch.

Exhibit A · the journal

Change one character. Watch the chain break.

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

    • 350+test cases, deterministic, no network
    • 300 × 4simulated pulses × seeds of random broker failures, state still agrees
    • 54the seed for every property test that proves the caps hold
    • 14SQL triggers that refuse to edit or delete a journal row

    Exhibit C · the backtest lab

    We publish the losers too.

    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.

    StrategyTradesWinExpectancyProfit factorVerdict
    RSI(2) pullback · equities10478%+0.27R2.51Passes → trades on paper
    Breakout baseline · crypto54547%+0.05R1.17Unproven · kept as plumbing
    Inverse-ETF breakout10946%−0.06R0.85Loses → lab only
    Oversold bounce · crypto18444%−0.08R0.68Loses → lab only
    Trend · crypto17443%−0.08R0.83Loses → lab only
    Turn of month · crypto7046%−0.14R0.59Loses → lab only

    Run 2026-10-24. Past and simulated results do not predict future results.

    VIII Yours

    It runs on your computer. We never see your keys.

    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

    1. Get it

      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.

    2. Watch it first

      First launch opens a working cockpit in a keyless demo: a simulated $54 on live crypto prices. No accounts, nothing to set up.

    3. Go to paper

      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.

    4. Pick its minds

      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.

    One app, every platform. Start with 7 days free.

    Demo

    Free

    The full app on simulated money and live crypto prices. No broker account, no card.

    Download the demo

    Yearly

    $249 a year

    Paper and live trading, every update, every platform. About 30% less than monthly.

    Start 7 days free

    Monthly

    $29 a month

    Everything in yearly, month to month. Cancel any time from your Whop account.

    Start 7 days free

    Checkout, 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.

    All plans on Whop ·

    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.

    Read this before you run it.

    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.

    Demo The real Savant cockpit on synthetic data. Nothing here is real money.

    Scenario
    New tab ↗

    Waking the cockpit…

    Press ? inside for a guided tour. Keys 1–9 switch pages.