Edgoro
Strategy

We backtested 2,160 crypto scalping strategies on 1-minute data. None of them beat the fees.

2,160 scalping setups, three years of Binance 1-minute data for BTC, ETH and SOL, honest fills and retail fees. Nothing survived. The numbers, and why.

Ask traders what their first bot should do and a lot of them describe the same thing: scalp the 1-minute chart on crypto and make a little money every day. Edgoro can write that code in a couple of minutes. The question we kept asking ourselves was whether a bot like that can make money at all once you pay what a normal account pays.

So we stopped guessing and ran the test properly. About 2,160 strategy configurations, close to three years of 1-minute candles on BTC, ETH and SOL, real fee levels, fills that don't flatter the result, and a final test period that stayed locked until the very end.

Short version: nothing that trades often survived. Below is what we tested, the one number that explains most of it, and the single idea that wasn't dead (and why we still don't call it a winner).

The setup

MarketBinance spot: BTCUSDT, ETHUSDT, SOLUSDT
Data1-minute candles, 1 Jan 2024 to 7 Nov 2026, 1,500,480 minutes per coin, no gaps
Timeframes1, 3, 5 and 15 minutes (built from the 1-minute data)
Development period1 Jan 2024 to 30 Jun 2025
Sealed test period1 Jul 2025 to 7 Nov 2026 (495 days), opened once, at the end
Retail cost0.10% fee per side + 0.01% slippage = 0.22% per round trip
Other cost levelsBNB discount (0.17% round trip), maker orders at 0.075%, VIP maker at 0.02%

Two rules did a lot of the work, so they're worth spelling out.

Fills. A market order fills at the open of the next minute, never at the close you just saw. A limit order only counts as filled if the price trades at least one tick through it. Touching your price isn't enough, because in a real order book you're standing in a queue and a touch often leaves you unfilled. When a stop and a take-profit both sit inside the same candle, we assume the stop hit first.

No peeking. The development data was used to pick and tune ideas. The last 16 months were sealed: the scripts that searched for strategies never loaded them. Before we opened them we wrote down which finalists would be tested and what "pass" meant (positive return, Sharpe of at least 0.5, positive average trade, at least two of three coins positive, drawdown smaller than 15%). Then the sealed period was opened once.

We also checked the engine itself. A strategy that cheats by looking at the next candle wins 98.4% of its trades in this engine. The same rule restricted to information that was actually available wins 49% and goes nowhere. Random entries lose exactly the fees. That's what you want to see before trusting any result.

The number that decides everything

Before testing any strategy, we asked a simpler question: how much is there to catch on a 1-minute chart?

We gave a hypothetical bot perfect foresight of the next candle. It knows whether the next minute closes up or down and trades it. On average, that perfect bot makes 0.066% per trade on 1-minute candles, and 0.146% on 5-minute candles.

A retail round trip costs 0.22%.

So even a bot that never gets a single direction wrong loses money on the 1-minute chart at retail fees. The average move is about a third of the cost. A real strategy only catches part of that move, while paying the full fee every time. It has to find rare, unusually large moves, or it can't win.

That one comparison explains most of what follows. If you only take one thing from this post, run the same check on your own market and timeframe: average absolute move per bar against your round-trip cost.

What we tried

The search ran in five rounds. Each round looked at what the previous one found and went after effects big enough to pay for the fees.

RoundWhat we testedConfigurationsResult
1The classic scalpers: RSI(2), Bollinger and Keltner fades, VWAP mean reversion, range breakouts with volume or order-flow confirmation, session-open breakouts, start-of-hour drift, momentum bursts, simple market making131Nothing positive under any fee level. Typical edge before fees: 0 to 0.07% per trade, against 0.17 to 0.22% of costs
2Bigger effects only: spike fades, extreme distance from VWAP, 15-minute momentum, wide quotes, deep limit orders620First positives, all on rare events (one trade every 3 to 10 days). Fell apart in rolling tests
3Long-only extreme VWAP fade, spike fade with volatility floor, deep-quote market making606VWAP fade positive in development, but 54 to 85% of its profit came from 5 crash days
4Volatility and time-of-day filters, trailing and fixed exits, a resting "crash bid"782Filters added nothing. The crash bid stood out
5Stress tests on the finalists: delays, 0.05 to 0.25% slippage, double fees, harsher fills, without the best days25Only the crash bid held up under every stress

Two findings from those rounds surprised us.

Limit orders made mean reversion worse, not better. Fees are lower with limit orders, so the obvious fix is "just use limits". But a limit order to buy a falling market fills exactly when the price keeps falling through it. The trades you get are disproportionately the bad ones. In our data, random limit entries started about 0.012% worse than random market entries, before fees.

Filters didn't rescue anything. Volatility filters and session filters mostly shrank the sample. The extreme moves that paid only happened when volatility was already high, so the filter was redundant.

The sealed test

Six finalists that use market orders went into the sealed period. All six failed.

FinalistDevelopment SharpeSealed-period returnSealed-period Sharpe
VWAP capitulation fade (z below -6)0.98+0.8%0.27
15-minute momentum (reference)-0.11+0.6%0.10
VWAP fade, re-optimised every monthn/a-4.5%-0.82
VWAP capitulation fade (z below -5)1.65-7.0%-1.28
5-minute spike fade1.50-5.9%-1.48
Fast VWAP fade (about 1.3 trades a day)0.43-28.2%-2.85

Look at the second and fourth columns. The strategies that looked best during development were not the ones that did best afterwards. The edge before fees of the z-5 fade dropped from 0.52% per trade to 0.08%. That's what overfitting looks like when you finally measure it: the result was mostly the search, not the market.

The only finalist that traded more than once a day lost 28% of the account. Frequency is the enemy here. Every extra trade pays 0.22% whether the idea works or not.

The one idea that wasn't dead: the crash bid

One family behaved differently from the start. Instead of chasing price, it waits.

Every minute, the bot places a buy limit order 2% below the last close and moves it with the market. It only fills when a coin suddenly drops more than 2% within a minute, which mostly happens during liquidation cascades. It then sells at +2%, or at market after four hours if the bounce doesn't come.

In the sealed period, at full retail fees:

Crash bid (2% below)BTC buy and hold, same period
Return+7.0%-29.2%
Worst drawdown-1.9%-53%
Trades43 in 495 daysn/a
Winning trades79%n/a
Average result per trade, after fees+0.48%n/a

That looks good. Here is why we don't call it proven:

  • 43 trades is very few. The 95% confidence interval for the average trade runs from -0.26% to +1.14%. Zero is inside it, so statistically we can't rule out that the true edge is nothing.
  • The profit sits on a handful of days. 10 October 2025, one of the biggest liquidation days on record, made +2.4% of the +7.0% by itself. Without the five best days, the total drops to +1.3%.
  • We knew those crashes happened. When we ran the test, we already knew the sealed period contained big liquidation events. The finalists were chosen from development data, and the crash bid was already the strongest family there, but that knowledge could still have nudged us towards crash-buying ideas.
  • Real fills may be worse. One-minute candles don't show the order book. In a real crash, thousands of resting bids sit at the same levels, and not all of them fill.

It also isn't a scalper in the usual sense. It's in cash 99.8% of the time and trades once every 11 days or so across three coins. We're now running it as a forward paper test on live prices, with the rules frozen, because only new data can tell whether the result was real.

What this means if you want a scalping bot

Here's what we'd take from all this before writing a single line of bot code:

  1. Compare the average move to your round-trip cost. If the average bar on your timeframe moves less than your fees, frequent trading is a fight you start from behind. Use the expectancy calculator to see what win rate and payoff you'd need.
  2. Count your trades. At 0.22% per round trip, 5 trades a day costs about 1.1% of the position every day in fees and slippage. Most scalping ideas don't produce that much edge in a week.
  3. Keep a period you never look at. Tune on one stretch of data, test once on another. If you keep re-testing on the "test" period, it stops being a test.
  4. Model fills pessimistically. Next-bar fills for market orders, a tick through for limits, stop before target when both are inside the same candle. Most dream backtests die on these three rules alone. Our list of backtesting mistakes that inflate results goes through the others.
  5. Check how much of the profit comes from the best few days. If removing five days removes the edge, you're looking at an event strategy, and you should size it and judge it like one.
  6. Be wary of a high win rate. The crash bid wins 79% of the time and is still statistically unproven. A bot that wins 90% of its trades can lose money if the losers are big enough.

None of this says short-term trading can't work for anyone. Market makers with rebates, firms sitting next to the exchange's servers and traders with real information do make money there. It says that a retail account paying retail fees, running a 1-minute pattern bot, faces a cost it almost certainly can't cover.

How we'd test your idea instead

If you have a strategy in mind, describe it in plain English to the crypto bot builder and run it through the Backtest Lab. Fees and slippage are included, and the lab holds back an out-of-sample period and tells you plainly when a result looks like luck. It's the same discipline we used here, just faster.

This article describes historical simulations for educational purposes. It isn't investment advice, and past results, simulated or real, don't predict future returns. Trading crypto, especially with leverage, can lose you more than you expect. Test everything on a demo account first.

Build it with Edgoro

Describe your strategy in plain English and get a TradingView indicator in Pine Script v6 or a MetaTrader 5 Expert Advisor in minutes. Every first purchase is covered by a 7-day money-back guarantee.

Build your indicator with Edgoro