DEV Community

edvyno
edvyno

Posted on Edited on

Bots aren't returns. They're records.

Everyone is posting a bot that "turned $69 into $13,370 overnight."

Mine is at $75.26, and I can show you every cent of it.

I run five small revenue lanes from one machine: an x402 data API, two trading desks, a prediction-market desk, and a sports in-play lane. This is the stack, and the four rules that separate a system from a screenshot.

(Disclosure: this is my own system. Every number below is measured from my own ledgers on 2026-11-04. I am not selling anything here.)

The 10 building blocks

01 / Cron + append-only JSONL ledgers.
Every lane writes rows — timestamp, market, price, model probability, stake, verdict. No row, no trade. No row, no claim. JSONL because a partial write costs you one line, not the table.

02 / A profit gate that fails closed.
A lane may only risk cash once its own realized record is positive: at least 10 settled rows and a mean above zero. No data means no money. My sports lane is currently negative, so it runs paper while it builds a cohort. The gate is code, not a mood.

03 / Exactly one component places orders.
One executor per lane, with spend and loss ceilings hard-coded inside it. When two scripts can both press buy, the second one is a bug you haven't met yet.

04 / Order status is checked before any retry.
success: true from an exchange means ACCEPTED, not FILLED. Poll the order, read the matched size, write the ticket only then. A retry on an unverified order is how one position becomes three.

05 / Public venue APIs for positions, books and fills.
HyperLiquid and Polymarket expose the truth. Your dashboard is what you hoped happened.

06 / A scoreboard feed for in-play state.
Prices reprice from the score faster than any indicator. The feed is the input; the model is only the opinion.

07 / SQLite for money, JSONL for decisions.
Revenue rows carry the payer address. Cast the timestamp — mine stores epochs as strings. Import your own wallets from one file: I once inflated my own revenue 80x with a hand-typed address in an exclusion list.

08 / A paid-data API with real settlements.
38 paid routes, real 402 challenges, real settlements. A paywall that has never settled is a prototype. Mine has settled — all of it from my own routing test, which is why it does not count as revenue.

09 / One morning report, not a dashboard.
Closed profit by lane, open positions with size, fees, failed orders with reasons, and why each lane is armed or shut — generated from the ledgers, not from screenshots.

10 / The boring one: a "why did nothing fire" line.
Every silent night explains itself. Last night's closest miss: a signal at +14.5% edge that the rule killed because the model probability (0.68) sat below the 0.70 floor, and the book never traded at the ask that would have cleared the 12% bar. Silence with no reason is the failure mode that kills accounts.

The four rules, again

  1. One order placer per lane.
  2. Hard-coded spend and loss limits inside the executor.
  3. Order status verified before any retry.
  4. A record behind the headline.

The honest part

My external revenue tomorrow morning will probably be $0.00 again.

The report will say so: lifetime $0.06 from three buyers, last sale in October, zero buyers today. The buyers column is empty and it prints empty.

That is the post I wish the $13,370 guy had written.

Bots aren't returns. They're records — and the record is the only thing that survives contact with a real market.

Where to check my numbers

I don't ask you to take the report on faith. The public artifacts behind it are open and updated on a schedule:

If the numbers on those pages ever disagree with this post, believe the pages. That's the point of publishing them.

Top comments (0)