Charles screens the market, reasons over each candidate, and places trades autonomously — on a server you control. Deploy it in 20 minutes, watch it from a live dashboard, and never babysit it.
Paper-trading mode by default — no real money at risk. Switch to live trading anytime by connecting a funded Alpaca account. Stripe-secured subscription, cancel anytime.
No clicking, no chart-staring. Charles handles the full loop — screen, reason, decide, log, alert — and keeps doing it whether you're watching or not.
Every candidate is reasoned over by a large language model. The bot explains why it acts — with a confidence score and written rationale logged for every decision.
Charles builds its own watchlist each session — no hand-fed tickers. It scans, ranks, and picks the strongest setups on its own.
Runs on Alpaca's paper API by default — zero money at risk while you evaluate. Connect a funded Alpaca account anytime to switch to live trading.
Every trade, every error, every morning routine pings your phone instantly. You always know what Charles is doing.
A Streamlit dashboard on port 8501 — open it from any device, anywhere, to see positions, P&L, and the decision log.
Installed as a systemd service: it auto-starts on reboot and restarts itself on crash. Set it once and forget it.
Charles ships with a full Streamlit dashboard accessible at port 8501 on your server. Open it from any browser — desktop, tablet, or phone — to watch positions, signals, and decisions in real time. These are real screenshots from a live running instance.
Dashboard updates every 15 seconds automatically. Access it from any device at http://YOUR_SERVER_IP:8501
Your subscription unlocks an access key tied to your server's IP. The bot will only run while that key is active — billing and access stay perfectly in sync.
Pick a plan and pay through Stripe. Your account is created instantly.
Spin up a DigitalOcean droplet — new accounts get $200 free — and run one deploy script. Full walkthrough in the setup guide.
Charles registers your server's IP. As long as your subscription is active, the access whitelist lets it run.
charles-start — and it's live. Watch the dashboard or just read the Telegram alerts.
(with DigitalOcean promotion applied)
Charles is built around free and near-free infrastructure. Here's every line item — nothing hidden.
| Item | What it's for | Cost |
|---|---|---|
| DigitalOcean droplet | 4 GB / 2 vCPU server, runs 24/7 | $24/mo ~$0* |
| Charles subscription | Access key + updates + support | $19/mo |
| Groq API | LLM inference — trade reasoning | Free tier |
| Alpaca paper trading | Market data + order simulation | Free |
| Telegram alerts | Real-time notifications | Free |
| Total | Everything, all-in | ~$19/mo* |
* New DigitalOcean accounts receive $200 in free credit — covering ~8 months of server hosting. Claim your $200 credit here →
During those 8 months, your all-in cost is just $19/month for the Charles subscription.
Cancel anytime. When your subscription lapses, your access key deactivates and the bot stops on its own — no commitment, no lock-in.
Everything you need to run Charles 24/7 on your own server.
Charles isn't a day trader chasing minute-by-minute moves. It's a swing trader — holding positions for days to weeks, entering on high-conviction signals, and exiting with a plan. Here's how it thinks.
Every morning and at 1 PM, Charles scores 100 liquid stocks across momentum, volume, RSI, 50-day MA breakout, relative strength vs SPY, and 52-week proximity. The top 10 become the day's watchlist — no manual input required.
Charles only enters a position when multiple signals align: price breaking above the 50-day MA, RSI in the momentum zone (45–68), MACD confirming, volume above average, and the stock outperforming the broader market.
Before placing any buy, Charles checks the overall market temperature — SPY trend, choppiness, and volatility. In a confirmed downtrend it suppresses new entries entirely and focuses on protecting existing positions.
Every candidate passes through a large language model that reads the full picture — technicals, news sentiment, position context, and hold duration — before returning a BUY / SELL / HOLD with a confidence score and written rationale.
Dynamic trailing stops (tighter on losers, wider on winners), earnings exit protection, a 7-day stale-trade cutoff, a daily loss limit kill switch, and a pre-market gap filter all run automatically.
Charles tracks its own win rate over closed trades and automatically tightens or loosens its confidence threshold based on recent performance — adapting without any manual tuning.