SATS is a fully autonomous paper trading system running on self-hosted infrastructure: a GMKtec NucBox M5 Ultra mini PC running Ubuntu Server, hostname murderbot. Signals flow through an 8-gate pipeline staffed by 10 specialized AI agents before a single trade is submitted.
The system ingests signals from seven independent sources — Reddit, StockTwits, HackerNews, Polygon News, X/Twitter cashtags, SEC EDGAR 8-K filings, and Google Trends — then validates them against market data, macro conditions, and cross-platform corroboration before a risk guardian issues a GO. Three sub-agents (1B, 1C) handle value dislocation and fundamental signals independently of the social pipeline. It operates autonomously, monitored and controlled entirely through Telegram.
Not a prototype. A working system, built the way you'd build anything meant to hold.
PostgreSQL
Signal + trade history
Redis
Real-time signal queue + credential TTL
Docker Compose
13-container orchestration
Tailscale
Secure remote access
Vaultwarden
Secret management — agent credentials distributed by Agent-0 at session open
Telegram
Alerts, kill-switch + mobile control
Gate 7 false position close
Empty Alpaca API response during a network blip caused Agent-6 to log phantom position closes, tripping the circuit breaker and halting the system. Fixed by requiring confirmed fill data before any position state change.
Alpaca 422 idempotency bug
422 responses on duplicate order IDs were counted as rejections, tripping the circuit breaker. Fixed by treating 422 as success at the executor layer — idempotent by design.
Signal deduplication at scale
Duplicate social signals were passing Gate 2 under high volume. Fixed with hash-based dedup at Agent-2 ingestion before scoring. Redis stores article/post IDs with 24hr TTL.
Polygon atomic rate limiter
Burst requests during market open were hitting API limits across concurrent agents. Implemented a Lua-based atomic sliding window rate limiter in Redis — shared across all agents, no double-counting.