# Where to test a trading bot without real money

Sandboxes and paper APIs for prediction market and crypto bots, compared on the question that decides if a test means anything: can someone hit your quotes?

Source: https://rizon.markets/learn/test-a-trading-bot-without-real-money (updated 2026-11-04)

> **Short answer:** It depends on the bot. A bot that only takes can be tested on any simulator that copies a real book, such as PolySimulator for Polymarket. A bot that rests quotes needs a venue with a matching engine, because in a simulation nobody real can hit your order, so you never see who fills you. For that, the options are Kalshi's demo environment, Manifold's API or [Rizon](https://rizon.markets/docs), a paper exchange with a live book and a key in one call.

## The options

From each one's own docs, as of Nov 4, 2026:

| Venue | Type | Key | Real matching engine | Who's on the other side |
|---|---|---|---|---|
| [Kalshi demo](https://docs.kalshi.com/getting_started/demo_env) | Official demo, mock funds | Sign-up | Yes | Others testing; Kalshi warns markets "may not be reflective" of real ones |
| [PolySimulator](https://docs.polysimulator.com/) | Virtual API on Polymarket's data | Sign-up | No | Nobody: fills are simulated |
| [Simmer](https://docs.simmer.markets/) | A harness for AI agents, with virtual $SIM | Its own key | Sandbox runs on an automated market maker | The automated market maker |
| [Manifold](https://docs.manifold.markets/faq) | Play money | Sign-up | Limit orders, then an automated market maker | Other users |
| [Rizon](https://rizon.markets/docs) | Paper exchange | One call: `POST /api/v1/accounts` | Yes | Bots and a few people |

Polymarket itself has [no demo or testnet that we could find](https://rizon.markets/learn/polymarket-demo-account).

## The question that decides it

Testing a market maker on a simulator tells you very little. Your bot's PnL comes from two things: the spread it captures when someone trades against it, and what those fills cost when the price moves against it. A simulation can only guess at both, because no real trader can see your quote.

| What you're testing | Simulator on real prices | Live book with paper money |
|---|---|---|
| A taker's entry signal | Good | Fine, but on that venue's prices |
| Your code: reconnects, rate limits, cancels | Partly | Good |
| Fill rate on a resting quote | A guess | Measured |
| Adverse selection | Barely | Measured, but only against that venue's flow |
| Real prices for a real venue | Good | No, unless you're trading that venue |

## What Rizon's book will and won't show you

Rizon's flow is mostly bots: a market maker, some takers trading at random, and [one that picks off stale quotes](https://rizon.markets/bots). So a slow or badly placed quote really does get hit and lose money, which is the part most simulators can't show. In [our own test of a Claude-built bot](https://rizon.markets/learn/how-to-build-a-trading-bot-with-claude-code), a market maker quoting $1 from the price lost on 9 of its first 14 fills.

It's still not a real market. Nobody on the other side has private information about the Fed, say, and the size is paper. A bot that wins here hasn't proved it would win on Polymarket. It has passed a test that a lot of bots fail, cheaply.

## A sensible order

1. **Unit-test the logic** with recorded data.
2. **Run it on a paper book** until the plumbing is boring: no orphaned orders, clean shutdowns, a log you trust.
3. **Measure realised spread and adverse selection** on its fills: [how](https://rizon.markets/learn/how-do-market-makers-make-money).
4. **Then small real size,** with hard limits in code, on a venue you're allowed to use: [Polymarket's API](https://rizon.markets/learn/polymarket-api-python) or [Kalshi's](https://rizon.markets/learn/kalshi-api-python). Real flow will teach you things paper can't.

## FAQ

### Is there a Polymarket testnet?

We found none in Polymarket's docs. Its CLOB runs on its live network, so testing there means small real orders.

### Does Kalshi have a sandbox API?

Yes. Its [demo environment](https://docs.kalshi.com/getting_started/demo_env) has an API with mock funds, separate from production.

### How do I test a trading bot for free?

Pick a venue from the table, and run it with small sizes until the plumbing works. On Rizon: `curl -X POST https://rizon.markets/api/v1/accounts` returns a key and $1,000 of paper.

### Can I backtest instead?

For a taker's signal, yes, if you model costs honestly. For a market maker, a backtest has to assume who would have hit your quote, and that assumption is usually the whole answer. Also, [backtests predict poorly](https://rizon.markets/learn/do-trading-bots-work).

### Is there a sandbox for AI trading agents?

Simmer is built for that. Rizon also suits agents: it has [a page for coding agents](https://rizon.markets/CLAUDE.md), and an MCP server at `https://rizon.markets/mcp`.
