The All-Seeing Trading Intelligence Platform
Autonomous, multi-asset trading across stocks, forex, commodities, options, crypto, and CFDs — unified by a closed-loop intelligence engine that generates signals, gates risk across themes, executes through six brokers, grades every outcome, and feeds the result back into the next decision. Built end-to-end. 667 tests green.
Sauron isn't a signal feed or a bot framework — it's the synthesis of both, plus everything that connects them. Twelve evaluators fuse price, news, macro, COT, options flow and 13F filings into composite signals. A multi-dimensional risk gate prevents stacked exposure across asset classes. Six broker adapters route execution. Every trade is graded, every gate decision audited, every dollar tracked. Then the results feed back into how the next decision gets made.
AuditLogEntry captures every trade open,
close, and gate reject. Tamper detection via verify-chain. FIFO/LIFO/HIFO tax-lot
bookkeeping with Form-8949-ready CSV export. Daily pg_dump with 30-day retention.
The opportunity scanner fuses twelve evaluator kinds into multi-modal setups.
Each setup is admin-editable, weighted, and emits an
OpportunityFlag only when the composite score crosses your threshold.
Every flag becomes a Signal that gets graded against its actual outcome —
so the platform learns which evaluators carry weight in which regime.
Specialised agents powered by Claude with multi-model consensus, RAG-augmented memory, and Brier-score calibration tracking. Every agent prediction is scored against real outcomes — bad agents lose trust automatically. AI is a layer that adds confidence, never gates execution. Four autonomy levels from Observe to Full Auto — you choose.
Walk-forward backtester replays historical Signals through your
AssetBotConfig — SL/TP %, cooldowns, sizing — and walks PriceData bars
bar-by-bar to find each exit. With realistic transaction costs + slippage and an optional
train/test split, you see how the bot would have done, not just whether the
rule was profitable in theory. A config that wins on train but loses on test is overfit
and not shippable. The Eye tells you that before any capital moves.
Every trade flows through five stages. Each stage's output is logged, audited, and fed back to make the next decision smarter. No black box — every step is inspectable from the Eye.
Closed-loop means a rule that wins for 30 days then drifts negative for 7 will fire a notification, get auto-demoted from live-full back to live-small, and surface in the audit log — without anyone watching.
Synthetic trades stream in from the left. Each carries a random USD-beta,
equity-beta and sector load. Drop the caps and watch which trades the gate refuses
in real time. This is the same logic gate_new_entry() runs against your
actual bots once you're inside.
Each row is a trade the gate just judged. Green = passed,
red = refused, with the
exact cap that tripped. Same logic as production
gate_new_entry().
Every broker speaks the same duck-typed interface (ping · ticker · klines · order_book ·
market_order · account · balance). Routing per-symbol via the broker_router based on
the instrument's asset_class. Encrypted credentials at rest (Fernet). Paper-mode default.
pg_dump at 03:30 UTC
with 30-day retention. The platform looks after itself.
The audit log is append-only and hash-chained. Every trade open, trade close,
and gate rejection produces a row whose payload_hash =
sha256(prev_hash · kind · canonical(data)). Mutating any past row breaks the
chain — verify exposes the tamper. Combined with FIFO/LIFO/HIFO tax-lot bookkeeping
and Form-8949 CSV export, the platform is ready for taxable-account live deployment.
save() refuses to update existing rows; delete() raisesverify_chain() walks forward, recomputes, flags any breaks
Battle-tested OSS. Multi-stage Docker build, non-root runtime, ASGI worker
for Channels. gunicorn + uvicorn serving HTTP and WebSockets;
Sentry-instrumented; Celery beat for the recurring tasks; Channels for the per-user Eye push;
a pg_dump nightly with 30-day retention. The platform looks after itself.
Each evaluator pulls from real data feeds (SEC, CFTC, FRED, news APIs, broker depth, etc.)
and outputs a normalised score the scanner can compose. Add a new evaluator with one
register_kind() call — the scanner picks it up automatically.
Sauron starts in paper mode. Wire up your brokers when you've watched it run. Flip the orchestrator on when you're ready. Promote rules from research to live-full when their walk-forward backtest agrees with their live track record. Cautious by default — aggressive when you ask.
mode="live" per config.
Everything visible without a single broker key.