
BackTest must use Expected net value per order
EV = P(fill) × spread − slip − adverse
EV =Expected Value
P(fill) =Probability tô fill
Spread =ask-bid
SLIp= Slippage
adverse = Adverse Selection
***I Will not include “rebate”.

Example 1 — Binance Spot (typical retail user)
Scenario
Pair: BTC/USDT
Grid spread: 0.05%
Limit orders as maker
P(fill): 0.35
Slippage: 0.01%
Adverse selection: 0.02%
Rebate: 0
Calculation
EV = 0.35 × 0.05% − 0.01% − 0.02%
EV = 0.0175% − 0.03%
EV = −0.0125%
What this means in real life
You are losing money on average per order, even though:
some trades close green
the grid looks active
you feel productive
This is why people say:
“But I see profitable trades!”
Yes. And still lose overall.

Example 2 — KuCoin Spot (worse execution)
Scenario
Slightly larger spread: 0.06%
Lower P(fill): 0.30
Slippage: 0.015%
Adverse selection: 0.025%
Rebate: 0
Calculation
EV = 0.30 × 0.06% − 0.015% − 0.025%
EV = 0.018% − 0.04%
EV = −0.022%
KuCoin grids lose money faster, because:
worse queue position
thinner liquidity
slower execution
Looks attractive on the surface. Bleeds underneath.

Example 3 — Pionex (the trap)
Reality
You don’t control maker or taker
You don’t control the order book
You don’t receive rebates
You pay a flat fee, for example 0.05%
Scenario
Theoretical spread: 0.08%
Apparent P(fill): 0.40
Slippage: 0.02%
Adverse selection: 0.03%
Calculation
EV = 0.40 × 0.08% − 0.02% − 0.03%
EV = 0.032% − 0.05%
EV = −0.018%
What’s really happening
You get automation and comfort
Pionex captures the structural edge
You keep the execution risk
The grid earns. You finance it.

Why most people think they are winning
Because they:
look at individual winning trades
ignore orders that never filled
ignore adverse selection
ignore queue decay
never calculate EV

When could EV become positive?
For a normal retail user, only if at least one of these changes dramatically:
P(fill) greater than 0.6
Real spread greater than 0.12%
Slippage lower than 0.005%
Adverse selection close to zero