← Back to Blog

trading

Front-Loading a Crypto Grid Bot: More Wins, Less Money

Front-Loading a Crypto Grid Bot: More Wins, Less Money

If you take one thing from this post: I made my grid bot win more often and earn less money — on purpose, in a backtest — and that's the whole lesson. Win rate is a vanity metric for grid trading. Here's the experiment on my own live strategy that proved it.

The idea that sounded obviously smart

My live crypto grid bot runs a boring uniform 3% grid: buy rungs every 3% below the anchor, sell each one 3% back up. I already backtested that step size into the ground, and 3% won nearly everywhere.

But there's an itch every grid trader eventually scratches: why space the rungs evenly? Near the current price, small dips happen constantly. If I made the inner rungs tighter — the first rung at −1% instead of −3% — the bot would catch all those little wiggles, cycle more often, and print more profit. Keep the outer rungs wide so the average step is still ~3% and the max depth is still −15%. Same capital, same risk envelope, just smarter spacing. Free money, right?

I've learned to distrust "free money." So I tested it instead of shipping it.

The setup (honest version)

I extended the exact same backtest harness from the 3% post — same data loader, same friction, same windows — and changed only the rung geometry. Five layouts, all 5 rungs, all reaching −15% depth, all deploying identical capital ($11/rung). The only thing that moves is where the inner rungs sit:

Every layout averages a 3% step. Friction is realistic: 0.26% fee + 5 bps slippage per side (~0.62% round-trip). I ran it over 105 non-overlapping 30-day windows across DOT, LINK, and AAVE. Apples to apples — the only variable is rung spacing.

The results

Layout Total PnL vs. baseline Win rate Profitable windows
uniform-3% (live) +$944.6 78.1% 82 / 105
asym-mild +$1014.3 +7.4% 77.1% 81 / 105
asym-strong +$634.8 −32.8% 81.0% 85 / 105
asym-tight-inner +$608.8 −35.6% 80.0% 84 / 105
uniform-2% +$412.8 −56.3% 69.5% 73 / 105

(These are backtest aggregates summed across 105 windows on ~$165 of simulated capital. The signal is the comparison between layouts, not the absolute dollar figure — this is research, not live P&L.)

Look at the two aggressive front-loads. They have the highest win rates in the whole table — 81.0% and 80.0%, both beating the baseline's 78.1% — and they earned about a third less money. asym-strong won more often and finished −33%.

The single variant that edged the baseline (asym-mild, +7.4%) did it with a slightly lower win rate — and that margin is comfortably inside backtest noise.

Why winning more lost money

Two mechanisms, both obvious in hindsight:

  1. Thin inner take-profits get eaten by fees. A rung that buys at −1% and sells at the next level up nets maybe ~1% gross. Round-trip friction is ~0.62%. So a big chunk of those "extra cycles" the tight rungs generate are barely profitable — and some go net-negative the moment slippage is real. You trade more, you pay more, you keep a sliver. (This is the same reason uniform-2% — and historically uniform-1% — lose outright: more fills, more drag, not more profit.)

  2. Tight rungs build underwater inventory in downtrends. They fill fast and early. In chop, that's great. In a falling market, they leave you holding more unrealized bags sooner — and the unrealized column was more negative for every front-loaded layout. The extra cycles you enjoy in calm markets are paid for by bigger drawdowns in trends.

Higher win rate is cheap to manufacture: just take smaller profits more often. It tells you almost nothing about whether the strategy actually makes money.

What I changed: nothing

The live grid is still uniform 3%.

The only variant that beat it didn't beat it by enough to justify the extra inventory risk and the added moving parts — and "wins inside backtest noise" is not a reason to complicate a bot that's trading real money. Meanwhile the layouts that felt better because they won more often were the worst performers in the table. That's the trap, in one screenshot.

What this backtest still can't see

Same caveat as last time: a backtest can't fully model real fills on thin inner rungs, exchange order minimums, or the path-dependence of which 30-day window you actually live through. So this informs the default — it doesn't replace watching the thing trade. Which I do, on camera, with real money, live 24/7.

The boring grid wins. Again.