AI trading bots, and where the difficulty actually is
The difficult parts of an AI trading bot are not the prediction but the plumbing around it: how stale its view of the market is, what fees do to a small edge, what happens when an order only partly fills, and how it behaves when the venue rejects it.
An AI trading bot is software that reads a market and places orders without a person clicking. This page is about building one, not about whether you should, and nothing here is investment advice.
The model is the small part
Most projects spend their effort on the signal and then discover it was never the constraint. A bot with a mediocre view of the market and disciplined handling of costs and failures will usually outlast one with a clever model and naive plumbing, because the plumbing is what runs on every single order.
Every number you hold is already old
By the time your code has read a price, decided and sent an order, the book has moved. That gap is the thing to design around, not an inconvenience to ignore. A bot that assumes the price it read is the price it will get is not wrong occasionally, it is wrong in a way that costs a little every time and is invisible until you total it up.
Fees are not a rounding error on a small edge
If the difference you are acting on is a few basis points, the cost of acting is the same order of magnitude as the thing you are chasing. Any backtest that omits fees, and most do by default, will show a strategy that is profitable on paper and negative in practice. Put the real numbers in before you believe any result.
Partial fills are the normal case, not the edge case
You ask for a size and get some of it. A bot that assumes orders fill completely will drift out of the position it believes it holds, and it will keep acting on that belief. Reconcile against what the venue says you have rather than what your own code thinks it did, every cycle, not on startup.
The venue will refuse you, and that is the useful part
Rejections for size, price bands, rate limits and permissions are the feedback that keeps a bot honest. A system that treats every rejection as an error to retry will hammer the API and learn nothing. Read the reason, and treat a refusal as information about the market rather than a fault in your code.
The first thing to build
Not the strategy. Build the read side, and get it correct: a live price, the spread, the funding rate, refreshed on a schedule you understand, with an obvious signal when the data is stale or missing. Until you trust what you are seeing there is nothing to test a strategy against. The figures below this page are that read side, running now, through an endpoint that needs no key.
Live, right now, on this page
| Market | Price | Funding | 24h volume |
|---|---|---|---|
| BTC | $79,290.50 | 0.0013% | $450,149,512 |
| ETH | $2,449.15 | 0.0013% | $306,264,000 |
| SOL | $101.23 | 0.0013% | $94,551,931 |
| HYPE | $84.91 | 0.0013% | $14,095,194 |
Read from a live market as this page rendered, through a public endpoint that needs no key. Read at 2026-09-04 14:12 UTC; accurate as of that time and not afterwards.
Describe something and watch it get built.
Open the builder, or start from a working app and change it.