Charles screens the market, reasons over every candidate with a large language model, and places trades on its own — around the clock, on a server you control. Watch it from a live dashboard and get every move on Telegram.
Runs on Alpaca's paper-trading account by default — simulated orders, no real money. Live trading is optional and entirely your call. Not financial advice.
Screen, reason, decide, protect, report — Charles handles every step and keeps doing it whether you're watching or not.
Scores a universe of liquid stocks on momentum, volume, RSI, moving averages and strength vs SPY, then picks the day's best setups — no hand-fed tickers.
Each candidate goes to an LLM (via Groq) with its technicals and news. It answers BUY, SELL or HOLD with a confidence score and a written reason, all logged.
Trailing stops, an earnings blackout, a market-regime filter and a daily-loss kill switch all run automatically on every cycle.
A web dashboard on your server shows positions, P&L, the equity curve, signals and the decision log — from any browser, including your phone.
Every buy, sell, stop and error is pushed to your phone, plus a regular heartbeat so you know it's alive.
Installed as a system service: it starts on boot, comes back after a crash, and keeps a full log you can tail any time.
The dashboard runs on port 8501 of your server. These are screenshots from a running instance.
About 30 minutes, most of it waiting for installs. The setup guide walks through every command.
Charles lives on GitHub. Read it, fork it, star it — it's all yours.
Create a small Ubuntu droplet on DigitalOcean and run the one-line installer.
Free Alpaca paper and Groq keys (Telegram optional) go into a .env file.
charles-start, finish the short setup page, then follow along on the dashboard.
Charles holds positions for days, enters only when several signals agree, and always has an exit plan.
A buy needs agreement: trend above the moving averages, RSI in the momentum zone, MACD confirming, volume above average, and the stock beating the market.
Before any buy it reads the market's temperature — SPY trend, choppiness and volatility. In a confirmed downtrend it stops opening new positions.
The LLM sees technicals, news sentiment, the position and how long it's been held, and returns a decision with confidence. Low-confidence calls are ignored.
ATR-based trailing stops, earnings protection, a stale-trade cutoff and a daily-loss limit that halts trading for the day.
Install Claude Code on the same server and work on Charles in conversation: ask why it skipped a trade, tighten a stop rule, add a Telegram report, or explain a file. It reads the code and logs, makes the change, and can restart the bot for you.
How to set it up →No account, no subscription, no license key. Clone it, run it on your own server, and change anything you like.
Charles places simulated orders on Alpaca's paper account until you deliberately connect live keys. It makes no profit guarantees in any mode, past or simulated results don't predict real ones, and nothing here is financial advice. You're responsible for how you use it.