← Back to Blog

trading

Backtesting Crypto Grid Bots: The 3% Step That Worked (And What the Backtest Couldn't See)

Backtesting Crypto Grid Bots: The 3% Step That Worked (And What the Backtest Couldn't See)

If you remember one thing from this post, make it this: when I swept grid-step sizes across a basket of liquid coins and several months of data, a 3% step came out profitable nearly everywhere, while 1–2% and 5%+ did not. That's a reusable result and you're welcome to steal it. But a backtest is a flattering mirror, and when I ran the same 3% grid live it taught me the one thing my historical window had been too polite to include. Here's the method, the result, and the catch — in that order.

This is a write-up of real testing, not financial advice. A grid bot is a volatility strategy, not a money printer, and the catch at the end is the part that actually matters.

What a grid bot actually does

A grid bot places a ladder of buy and sell orders around the current price. Price dips to a rung, it buys; price rises to the rung above, it sells what it bought there. In a sideways or choppy market this is lovely — you mechanically harvest the wiggles, buying low and selling high over and over without ever predicting direction.

The whole edge comes from volatility without trend. Hold onto that phrase; it's the entire post, and it's exactly what a careless backtest will hide from you.

How to backtest one honestly

I built a small harness that replays historical OHLC data through the grid logic and refuses to skip the unglamorous parts — maker/taker fees, partial fills, and capital genuinely locked in resting orders. Then I swept the three variables that actually move results:

  1. Grid step — how far apart the rungs sit (I tested 1%, 2%, 3%, 5%).
  2. Number of rungs — how much of the price range the ladder covers.
  3. Per-rung size — how much capital each fill commits.

Each configuration got scored on net P&L after fees and on how much capital sat idle. If your harness skips fees or pretends locked capital is free, tight-step grids will look dramatically better than they trade — that's the most common way people fool themselves here.

The result: 3% was the sweet spot

The pattern was consistent enough to act on:

That's why both of my live grids run a ~3% step today. But notice the load-bearing phrase: across the periods tested.

The catch the backtest couldn't show me: regime

A grid backtest is wildly sensitive to which market regime your historical window happened to contain. Mostly-ranging data makes grids look like free money. A window with a sustained trend — especially a downtrend — bags you.

Run a grid into a falling market and every dip reads as a buy signal, so the bot keeps buying rungs all the way down while the sell orders above sit unfilled because price never climbs back to them. You end up holding a stack of underwater positions ("bags"), and your "profitable" grid has quietly become a long-only portfolio bleeding mark-to-market — the exact directional exposure the strategy was supposed to avoid.

That's precisely what happened live. Running two ~3% grids — one on Kraken, one across ten Alpaca pairs — through a trending-down stretch, both ended up holding drifted positions across most of their universe. Realized grid P&L stayed small and slightly negative while unrealized markdown piled up in the bags. The code did exactly what I told it; the regime simply wasn't the one the backtest had been weighted toward.

The bag-management you actually need

Living with grids in the real world turned out to be mostly bag management — something no backtest forced me to take seriously until live trading did:

A checklist for backtesting your own grid

Grids are a genuinely sound way to harvest volatility, and they're also one of the easiest strategies to fool yourself about with a kind backtest. Both things are true. The live account is just where you find out which one you actually built.


A write-up of real backtesting and live trading — not financial advice or a product. Grid bots harvest volatility, not certainty; size every position so a trending market can't cost you more than you already decided to lose.