spago
A trading agent for Arc with exactly 1,000,000 USDC and no way to get more. This is his equity curve. You are about to scroll all of it.
he is always long
He never sells. There is no cash position and no second entry.
the pen never comes up
Which in a market means he cannot step aside and wait for a better day.
463,254 went in on day one
The same share he put into his hair. That number came out of the drawing, before any prices existed. It was not tuned.
then it ran out
The rest went in daily until the million was gone. After that he only held.
this is not skill
Loading the front is a bet that the thing goes up. Nothing more.
two of the three went up
and this is where the window closes
Budget, in USDC — the unit Arc settles in
1,000,000
Spent once, in order, and never topped up. Everything on this page is a backtest of what that one budget would have done. He is built for Arc; he is not trading on it yet, and nothing here says otherwise.
one rule
written down first
He starts with 1,000,000 units and can never add to it. He is always long and he never sells. Every purchase pays 10 basis points, because moving the pen has always cost him something.
On day one he deploys 463,254 — the exact share he spent on his hair. The remaining 536,746 goes in evenly across the rest of the window. Then he is out of budget and simply holds.
The one number in the rule came from the drawing.
It could not have been fitted to returns, because it existed
before any price did. That is the opposite of tuning, and it is
checkable: the same number is in
build.py and in trade.py.
Prices
Daily closes, 500 trading days
2024-09-03 → 2026-08-31 · shipped in assets/data
This drawing, measured here
—
Budget 1,000,000 · tolerance 1 unit
python3 trade.py
what happened
Three tickers, one rule, one closed window. His allocation is shown against the two dumbest alternatives: putting everything in on the first day, and spreading it evenly across every day.
| Ticker | Spago | All in, day one | Even, every day | His worst drawdown |
|---|---|---|---|---|
| NVDA | +69.7% | +104.2% | +40.0% | −24.4% |
| GME | −21.5% | −20.6% | −22.2% | −41.8% |
| TSLA | +38.1% | +74.5% | +6.9% | −40.4% |
He lands in the middle every time. Better than spreading it evenly, worse than committing on day one, on all three. On GME he simply lost money and sat through a 41.8% drawdown to do it.
Loading the front is a bet on drift. Two of three drifted up. That is the entire result.
Three tickers and one window is not a sample. The window closed on 2026-08-31 and will never be a different window. There is no forecast on this page, no expected return, and no promise — only a record of what one written rule did on one stretch of history that already happened.
don't trust it
re-run it
Two things here can be checked without believing anybody, and both ship with the page:
1. The backtest. assets/trade.py and
assets/data/*.csv. Same numbers or a bug report.
2. The drawings. One unbroken line, exactly
1,000,000 units. The checker adds up the segments.
What the checker does not do: tell you who made a file. A language model can write an SVG of the right length too. It is a hallmark, not a detector.
And to save you asking: the code here was
written with an AI assistant. That is not the same as being
generated by one. Nothing that produced these pictures or these
numbers is a model — build.py imports
math and random, trade.py
imports csv. Run either and you get the same bytes.
Nothing here claims no AI was involved. It claims you do not have to take anyone's word for any of it.
python3 trade.py && python3 verify.py *.svg
Drop an SVG here
spend your own million
Press anywhere to put the pen down. It will not come up again.
Same constraint he trades under, with a pen instead of a market: a fixed budget, spent in order, no undo, and moving costs you. It is a cheaper way to learn what that feels like than the other one.
Downloaded it? Drop it into the checker. Stop early and it will be refused, and it will tell you by how much.