Charles invests on its own with one simple, tested plan: most of the money in the whole market, a few of the strongest stocks, and a safety switch for crashes, with an AI that reads the news before every new pick. It runs 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.
Rank, check the news, buy, protect, report: Charles does every step once a day and keeps doing it whether you're watching or not.
Once a month it ranks 100 big US companies by their past-year gain and buys the top 4 that are still in an uptrend, next to an S&P 500 index fund that holds most of the money.
Before a new pick is bought, an LLM (via Groq) reads its recent headlines and skips it for serious trouble, like an accounting probe. Every trade comes with a plain-English reason.
When the market ends a month below its 200-day average, everything moves to T-bills until it recovers. No stock is ever more than 5% of the account, and a daily-loss limit pauses buys.
A web dashboard on your server shows your money vs the market, what Charles holds and why, this month's stock ranking and every trade, from any browser, including your phone.
Every rebalance, safety-switch change and error is pushed to your phone, plus a daily summary and 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.
Screenshots from a running instance. The dashboard runs on port 8502 and works on your phone.
A Stocks | Kalshi switch at the top of the dashboard opens a second bot: a betting book on Kalshi's prediction markets. It bets when its forecast disagrees with the market's price by more than the fees, and shows every bet in plain English.
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, then follow along on the dashboard.
Charles checks once a day and trades on the first trading day of each month. No day-trading, no stop-loss whipsaws.
An S&P 500 index fund (SPY): 500 big US companies in one. Over long stretches this is where most of the growth comes from, so it's the core.
Stocks that rose the most over the past year tend to keep doing well for a while. Each month Charles ranks 100 big names, skips the latest month's noise, and holds the top 4 that are above their 200-day average.
If SPY ends a month below its 200-day average, everything moves to T-bills (about 4% a year) until a month ends back above it. Long market falls like 2008 and 2022 start exactly that way.
When the market is rising and calm, Charles moves the core into a 2× S&P 500 fund, and back to plain SPY on the first choppy day. Leverage only where it has paid: calm, rising markets.
Install Claude Code on the same server and work on Charles in conversation: ask why it picked a stock, try a different plan on history, 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.