Day 1 of 182  ·  $6,000 paper account  ·  Sept 30, 2026

The AI reads the news. The rules press buy.

The challenge: build a news-trading bot in one day, write zero lines of code by hand, and never let the AI make the trading decision.

The Jelly Charts jellyfish
15AI agents directed
564automated tests passing
0lines typed by hand
1job for the AI
The bot thinking out loudReplay test · sample data
  1. NVDA news received (latency 1.0s): NVIDIA raises full-year guidance
  2. Claude: BULLISH 0.92 - guidance raised
  3. NVDA subscribed, armed LONG, waiting for volume
  4. RVOL 2.5 · price impulse +2.0%
  5. waiting for 9 EMA
  6. 9 EMA pullback confirmed
  7. breakout triggered · BUY 20 NVDA @ 101.60 (stop 100.60)
  8. +1.1R -> sold 50% (10 NVDA @ 102.70)
  9. trail raised to 102.44
  10. 5m close below ATR trail -> position closed, +0.25R

The problem

Ask a chatbot "should I buy this?" and you get a confident answer with no record behind it.

No rule you can test. No log of when it was wrong. If you trade from rules you wrote down before the trade, that answer is useless to you.

So I split the work. The AI does the one thing it is good at: reading a headline and saying what kind of news it is. Plain Python does everything that touches money, and every decision is written to a database.

The rules

Six steps. The AI works on the first one only.

  1. AINews
  2. CodeVolume 2× normal
  3. CodePrice up 1.5%
  4. CodeFirst pullback to the 9 EMA
  5. CodeBreaks the pullback high
  6. CodeEntry, 1% risk

Good news only arms a stock. The market has to confirm it with volume and price before anything happens.

The prompts

What I actually typed

Prompt 1 · the spec (excerpt)
Do not attempt to beat Bloomberg to the initial headline.

We are deliberately entering AFTER the news has caused an observable
market reaction.

The AI does NOT decide entries, stops, sizing, or exits.

The AI has one job:
CLASSIFY THE NEWS.

BULLISH NEWS != BUY.
Bullish news only ARMS the ticker.
The market must confirm the news.

The full spec has 34 sections: risk limits, exits, a daily loss kill switch, and a rule that every rejected trade must record its reason.

Prompt 1 · the AI's instructions (excerpt)
Determine the likely immediate directional implication of THIS NEWS,
not the long-term quality of the company.

Be conservative.

If the news is ambiguous, routine, promotional, already expected,
non-material, or you cannot clearly determine the direction:
NEUTRAL.
Prompt 2
use subagents sonnet 5.5 to do this task give them clear end states and be the orchestrator for this task please.

Claude split the spec into waves, gave each agent its own files and a finish line it had to prove, and checked every result itself.

Prompt 3
use auth cli sonnet 5.5 not api

The bot calls Claude through my own Claude subscription. No API key sits on the server, and the AI process never sees the brokerage keys.

The build

One day, in order

  1. Foundation

    A paper-only lock: the bot refuses to start if any setting points at a live trading account.

  2. Three agents at once

    News and the AI classifier, market data, and the risk math were built at the same time, each agent in its own files.

  3. The strategy and the orders

    The setup rules, order handling, crash recovery, a dashboard and a monthly report.

  4. Two agents tried to break it

    They filed about 30 findings. One was wrong, and a measurement proved it. The rest were fixed, each with a test that failed first.

  5. Moved to a Windows server

    Ported, bundled, and on the server by 11:20 AM New York time. 563 tests passed there on the first run.

Four bugs the reviewers caught before a single trade

Selling too early

The broker cancels a stop order with a small delay. The bot would have tried to sell shares the stop still held.

A loss limit you could reset

A restart with new settings would have given the bot a fresh daily loss budget.

Half trading days

On a 1 PM close, the 3:55 PM close-out never fires. Positions would have stayed open overnight.

One share, one signal

A single 1-share trade on one exchange could have triggered a buy.

The one job

How the AI labels news

Test headlines I sent through the real classifier. Each answer took 2 to 5 seconds.

Test headlineLabelConfidenceTrades?
Quarterly dividend of $0.10, unchangedNEUTRAL0.90No
$2B Army contract, 3× annual revenueBULLISH0.85Arms it
FDA approval for lead drugBULLISH0.70No, below 0.75
$400M share offering at a 12% discountBEARISH0.90No, shorts off
Day one, live

The first 20 minutes on real news

8stories read
0bullish
0trades
4shadow setups

Zero trades is the correct result. None of the news was strong enough. The bot also follows neutral stories as shadow setups that can never trade. They answer a question most traders only guess at: does the news label matter at all, or is it only the price action?

The edge is not the AI's opinion. It is the rules around it, and the record it keeps.

Every story the bot sees is logged at the step where it stopped. After six months, that log shows which part of the idea works and which part is noise.

Open source · MIT

Get the code. Free.

NewsWave is open source under the MIT license. Read it, run it on a paper account, change the rules.

github.com/AskElira/newswave

git clone https://github.com/AskElira/newswave.git
What you need
  • A free Alpaca paper trading account
  • Python 3.12
  • Claude Code, logged in. The bot runs on your Claude subscription, so no API key.
View on GitHub
Your turn

Backtest your own ideas on futures and stocks.

Jelly Charts Local Edition backtests your ideas on futures and stocks on your own machine, and you code your own strategies with your Claude subscription.

Buy for $149

$149 once · includes 1 year of updates · $59/yr after that, only if you want new versions