I had a trading bot running on a server. I switched it off, and the reason wasn't a losing streak: it was a measurement.
Five strategies, 77,000 one-minute candles of BTC and ETH, fees subtracted. The best of them all returned +0.0135% per trade, with a t = 0.16 statistic.
That's zero. Not "a little": zero.
What was measured, and against what
The five families anyone starting out tends to try:
- Momentum — if it went up, it'll keep going up.
- Reversion — if it went up too much, it'll come back.
- Order-book imbalance (OBI) — if there's more buying pressure than selling, the price moves that way.
- Grid — laddered orders that capture oscillation.
- Funding carry — collecting the funding rate on perpetuals.
And a volatility-based exit rule of the kind that does have good literature behind it.
Each was measured subtracting the account's real fees, not an ideal fee or zero. That detail is what decides the experiment, and it's the one most often left out.
Why fees flip the sign
A strategy on one-minute candles trades a lot. Each trade pays twice: on entry and on exit. If your gross edge per trade is on the order of thousandths of a percentage point and your round-trip fee is on the order of hundredths, there's no strategy: there's a machine for transferring money to the exchange with intermediate steps.
The fee-free backtest of those same five strategies showed curves that went up. That's the whole trap in one sentence: a backtest without fees doesn't measure a strategy, it measures market noise, and noise always has stretches that go up.
The t-statistic, which is the uncomfortable part
A positive average return says nothing on its own. Flip a coin a thousand times and you'll find streaks. The question is whether your result is distinguishable from chance, and that's what the t-statistic answers: how many standard deviations separate your mean from zero.
With t = 0.16, the answer is that it isn't distinguishable. Not by a long way. To talk about a signal you need to be around 2, and even then with caution given the number of strategies tested —testing five and keeping the best already biases the result upward, so the real bar is higher, not lower.
Another of the strategies gave an information coefficient of +0.00%. It's hard to find a more honest number.
The second measurement: the fixed cost
Even if the edge had been small but real, there was a calculation almost nobody makes: the server costs money every month, edge or no edge. With a small account, the annual cost of the infrastructure exceeded the expected return of a marginal edge.
That is, even in the optimistic scenario —real but tiny edge— the whole system lost money. Not because of the market: because of the bill.
What was done
The bot and the data collector were switched off, and the capital moved to a savings product with a published rate. It yields little and yields what it says.
Switching off isn't giving up. Keeping a system running with an edge measured at zero isn't a neutral position: it pays fees, it pays infrastructure and —most expensive of all— it consumes the attention that would be producing elsewhere.
What I take away
- Measure with fees from the very first backtest. If they show up at the end, they'll flip conclusions you already took as settled.
- Demand a statistic, not a curve. A rising curve is the easiest thing to produce by accident in this trade.
- Count the fixed cost inside the result, not beside it. A system that needs a server has to pay for it before it can be considered profitable.
- A negative result is a result. These measurements saved months of tuning parameters on something that didn't exist.
Xiliux