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