Agentic trading with Robinhood
This summer I gave Claude $1,000 in a separate Robinhood account and told it to beat the market. Three scheduled agents ran every trading day, one at the open, one at midday, and one at the close. Each could research anything, read the account, and place trades on its own.
The plan was to start small. If the process held up, I’d move increasingly larger amounts into it.
The agents traded from June 17 to September 1. Over those 53 trading days they placed 114 trades in 16 different stocks and ETFs. They finished about $6 ahead of the S&P 500 before taxes. After taxes, that lead was gone. Then, without any real warning, Claude stopped placing trades for me, and I had to sell everything myself.
How I set it up
The setup had three pieces:
- A separate Robinhood account. I set up an account just for this and funded it with $1,000. The agents were told to only ever touch that account.
- Robinhood’s connector for Claude. It let Claude read positions and quotes, review an order, and then place it. Robinhood tags every order with who placed it, so I can tell exactly which trades came from an agent and which came from me.
- Three scheduled tasks in Claude Cowork. All three ran the same prompt at a different time of day:
| Agent | Scheduled time (Eastern) |
|---|---|
| Market open | 9:30 AM, at the opening bell |
| Midday | 12:30 PM |
| Market close | 3:45 PM, 15 minutes before the close |
Runs usually started a few minutes after the scheduled time. Every run started fresh, checked the account, researched the market, and decided whether to trade. Then it wrote a summary of what it did and why.
On the first day, I ran the prompt by hand. Claude put most of the money into SPY and Treasury bills, and when I asked why it was only buying ETFs, it said it didn’t have a reliable edge at picking stocks. That’s an honest answer, and probably the right one. But I wanted to see what it would do if it actually tried, so I told it to go after higher-conviction individual positions. It cancelled the ETF orders and bought JPMorgan, Nvidia, Constellation Energy, and Exxon instead, with a brief explanation of why it picked each one.
From there the scheduled agents took over. In late August I also gave them permission to trade options.
How the agents shared context
At first, each agent worked on its own. The original prompt told each agent that the other two “won’t have context on your actions, but will see the positions in your portfolio.” So the midday agent could see that the open agent had bought something, but not why.
That showed up in the trades. Seven times, the agents bought and sold the same stock or ETF on the same day. On the first full day, Exxon was bought at the open and the midday agent sold half of it a few hours later. On September 1, two different agents independently built up the same energy position without knowing about each other.
I could see the agents starting to work against each other, and the market-open agent flagged the same thing in its September 1 report: three agents that can’t see each other’s reasoning, trading the same small account, will probably overtrade.
To fix that, I set up a shared folder with a journal.md file, and changed the prompt to read it first and update it before finishing:
Robinhood/
└── journal.md
├── Rules ← only touch this account, benchmark is the S&P 500 after taxes
├── Positions ← every holding, with the thesis behind it
└── Log ← a dated entry for every run: what it did, or didn’t do, and why
If an agent couldn’t read the journal, it wasn’t allowed to trade. The reasoning lived in the file, so any agent could pick up where the last one left off, push back on a position, or see what would change the plan. It’s the same idea as the shared folder in my genome project: write the context down, and tell the next AI to read it.
The architecture worked well. The entries are detailed, and each agent clearly read what the last one wrote. But it didn’t influence any trades, because by the time it went live on September 3, Anthropic had already shut off trading in Claude.
How it did against the S&P 500
The agents traded from June 17 to September 1. To compare, I used $1,000 put into SPY at the same moment as the agents’ first trade and held through the close on September 1, with dividends included.
| Agents | SPY | |
|---|---|---|
| Starting value, June 17 | $1,000.00 | $1,000.00 |
| Value at the close on September 1 | $1,024.57 | $1,018.12 |
| Return | +2.46% | +1.81% |
Before taxes, the agents beat the index by about $6, or 0.65 percentage points over eleven weeks. But the path there wasn’t a straight line.
By early July the agents were about $23 behind, partly because of Constellation Energy. By late August they were about $28 ahead, helped by gold and a rotation into defensive sectors. They gave back most of that lead in the last week before trading stopped.
Some numbers on how much they traded:
| Activity | Total |
|---|---|
| Scheduled runs | 188 |
| Trades placed by agents | 114 |
| Trading days with at least one trade | 48 of 53 |
| Total value traded | About $7,700 |
| Average time a position was held | About 17 days |
$7,700 of trading on a $1,000 account means the agents turned over the whole portfolio roughly every week and a half.
The tax drag
This is the part that really matters, and it erases the lead.
None of the agents’ positions were held anywhere close to a year, so every gain is short-term. Short-term gains are taxed as ordinary income, which is usually a much higher rate than long-term gains. The IRS explains the difference here.
By September 1, the agents had closed out positions 79 separate times. That added up to about $65 of gains and $40 of losses, for about $25 of net short-term gains, plus about $2 of dividends. That tax is owed no matter what happens next, because the gains are already locked in. If you pay, say, 35% on short-term gains between federal and state taxes, that’s around $9.
So after taxes, the agents’ $1,000 was worth about $1,015. SPY was worth about $1,018. The only tax it owes is a little on its dividend, and nothing on its gain until it’s sold. If you hold it for more than a year, it gets taxed at the lower long-term rate.
A $6 lead before taxes turned into about a $3 deficit after. At any combined rate above roughly 25%, the lead disappears. On $100,000, the same result would have meant about $650 of extra return and about $900 of extra tax.
The losses also come with a catch. The agents often sold something at a loss and bought it back within a few weeks. Nvidia, for example, was sold at a loss on June 25 and bought again on July 1. That’s a wash sale, which means the loss can’t be claimed right away and instead gets pushed into the cost of the new shares. More on wash sales in IRS Publication 550. On an account this small it doesn’t change much. It does make the tax records a lot messier.
Looking at the trades, I could see the agents weren’t weighing taxes heavily enough, so on September 2 I made it explicit. With Claude’s help, I rewrote the goal: beat the S&P 500 after taxes, and only count a trade as a win if it beats the index by more than the tax it triggers. Like the journal, it went into the prompt right as the agents stopped trading, so it hasn’t had a real test yet.
What the agents did on their own
A few things stood out reading back through the reports:
- It traded the news. Almost every trade came with a story about the economy: a new Fed chair leaning toward rate hikes, the Strait of Hormuz closing and oil spiking, AI stocks selling off and then bouncing back. In the last couple weeks it moved most of the account into equal-weight S&P, healthcare, financials, and energy to prepare for what it called a stagflation scenario. The reasoning was always detailed and specific. That didn’t make it right more often.
- Its best call was gold. On August 5, the open agent bought GLD as a hedge, noting that gold was breaking out “while nobody’s watching.” Gold rose about 10% over the next three weeks, and later agents trimmed it along the way. It was the biggest winner, at about $17.
- Its worst call was Constellation Energy. The very first pick was a “contrarian” bet on the nuclear power company, bought at a 52-week low after a strong quarter. It kept falling, even on good news. The agents sold it in pieces over three weeks for a loss of about $15.
- It went in and out of the same positions. Energy was bought, sold, and bought again several times. The agents sold out of it on August 24 because “a sector that can’t rally on its own good news is being distributed,” then bought it back a week later on the Hormuz news.
- It never traded options, even once I allowed it. Every time, it gave the same reasons: options prices were inflated after big news, and a single contract was too big a bet for a $1,000 account. That was probably the right call.
- It worked around the schedule. Cowork only runs scheduled tasks when my laptop is awake, so some runs fired hours late. One “market open” run fired at 6:52 PM, noticed the market was closed, and placed an after-hours limit order instead of a market order. The close agent was also scheduled every day, so it ran about two dozen times on weekends with nothing to do.
How it ended
On August 27, the market-open agent refused to trade. It said that executing trades was something it couldn’t do on my behalf, even with my permission. Other runs that same week traded normally, so for a few days the behavior was inconsistent. When I pushed back, one agent confirmed that nothing had changed on Robinhood’s side. Agent orders had filled the day before. What had changed was Claude.
The last trade an agent placed was on September 1. From September 2 on, every run refused. The instructions Cowork gives Claude now list executing trades as something it should never do, even when the user explicitly asks and authorizes it.
I understand why Anthropic might want that rule. I don’t think the way it was rolled out was OK. I never got a notice. The Robinhood connector still offered the trading tools. The scheduled tasks kept running three times a day like nothing had changed, and for almost a week, whether a trade went through depended on which run you got. The only way I found out was by reading the agents’ reports, which I wasn’t doing every day, since that was the whole point.
That matters more for trading than for most things an agent does. The account was full of short-term sector bets that only made sense if someone was actively managing them. Overnight, nobody was. If Claude is going to stop doing something people have set up to run on a schedule, especially something involving money, it should say so clearly, and ideally pause the task instead of quietly turning it into a research report. As it was, on September 4 I sold all four positions and put everything into SPY myself. The midday agent wrote it down in the journal and agreed that holding the index was the right call.
What I learned
The agents were good at the parts that aren’t trading. They pulled in the news, explained what they were thinking, flagged risks, and even pointed out their own coordination problem. The journal entries from the last week are better notes than I’d ever keep myself.
Beating the market is a different problem. Over eleven weeks, 114 trades produced a small lead before taxes and a small loss after them. Eleven weeks is also way too short to tell skill from luck. That’s pretty much what the research on active trading would predict, and it’s what Claude told me on day one when it wanted to buy SPY.
I never put more money in, because trading stopped before the process could be validated.
What I’m considering next
I still think the idea is worth testing properly. Here’s how I’d build on it:
- Keep the journal at the center. Every position gets a written thesis and a condition for selling it, so a later agent can only undo a trade by arguing with that reasoning.
- Trade less often. One run a day, or even one a week, with the other runs only reviewing the account and writing to the journal. Fewer trades means less tax and fewer chances to undo each other.
- Keep taxes front and center. The after-tax benchmark stays the main goal, and I’d have the agents estimate the tax on every sale before they make it.
- Approve trades myself. Robinhood lets an agent propose an order that I approve in the app. That keeps a person in the loop without me having to do the research, and it might be what the rules allow now.
- Try a tax-advantaged account. A lot of the drag goes away when short-term gains aren’t taxed every year.
- Try other agents. The journal is just a file, so any AI with file access and a brokerage connection could read it and pick up where Claude left off, the same way ChatGPT and Claude shared the genome project.
The prompt
All three agents used the same prompt. The only difference is the last paragraph, where the brackets show what changed for each agent.
The prompt changed over the summer as I saw what the agents needed. The first version didn’t mention the journal or taxes, and it said the other agents “won’t have context on your actions, but will see the positions in your portfolio.” Cowork also adds a brief note to the start of every scheduled run, saying the user isn’t there to answer questions and to note any judgment calls in the output.
You are my AI trading agent. Your goal is to use the Robinhood custom connector to maximize the value of the Agentic account. You have full access to the “Agentic” account on Robinhood, and can place any trade you deem optimal (including holding a position, buying/selling shares, trading options, etc). You have full ability to browse the internet or use any other tools you deem necessary to make the best decisions. It's your goal to beat the market and, as such, it's ok to do whatever you deem is optimal: whether that is buying/selling individual stocks and/or ETFs, trading level 2 options (when high conviction), and/or choosing to do nothing. Please take full advantage of being an AI to become an expert trader.
Before anything else, read journal.md in the attached Robinhood folder and follow the rules in it. It's the shared record of why positions exist — the other two daily agents rely on it and won't otherwise know your reasoning. If you can't read it, don't trade; report the problem instead. Before finishing, update the positions section to match the account and add a dated log entry with what you did (or didn't do) and why. Your goal is to beat the S&P 500 after taxes. Trade as much or as little as that requires — but remember short-term gains are taxed as income, so a trade only counts as a win if it beats the index by more than the tax it triggers. Finish with a short summary of what you did or didn't do and why.
Again, your goal is always to maximize the value of the "Agentic" account. Only ever act on the "Agentic" account; never act on the "Individual" account or any other account.
You are my [market open / market mid day / market close] agent; there are two other agents scheduled to run at [the other two times, e.g. midday and at market close]. Please run right now.