The calculation
gross = (exit − entry) × size × direction
fees = (entry + exit) × size × fee%
net = gross − fees
Fees are charged on notional at both ends, which is the first thing that differs from an unleveraged spot trade. A 0.05% taker fee on a $30,000 position is $15 at entry and $15 again at exit, whatever leverage was used to hold it.
ROE is not a return on your account
Exchanges display return on the margin posted, not on the balance. That figure is multiplied by leverage, and it is the number in every screenshot.
| Price move | 5x | 10x | 25x |
|---|---|---|---|
| 1% | 5% | 10% | 25% |
| 3% | 15% | 30% | 75% |
| 5% | 25% | 50% | 125% |
A "+120% trade" is a 4.8% move at 25x. The market did something ordinary; the display did the rest. This is why the calculator shows the price move on its own line — not to be pedantic, but because the price move is the part you can compare against your other trades, and ROE is not.
The same multiplication runs in the other direction, which screenshots rarely show: at 25x, a 4% adverse move is a 100% loss of margin.
Fees deserve their own line
The warning on this calculator fires when fees exceed a fifth of the gross move, and that threshold is reached more easily than people expect.
A 0.05% taker fee both ways is 0.1% of notional. On a 0.5% move — a perfectly normal scalp — that is 20% of the gross result. On a scratch trade it is the entire result, and the position closed at the same price it opened.
Maker fees, often zero or negative, change this completely, which is the real argument for limit orders in high-frequency crypto trading. It is not about the fill price; it is about who pays the fee.
What this calculator does not include
Funding, if the position was held past a settlement. On a multi-day hold it can exceed the fees entirely — the funding calculator covers it.
Slippage, which on thin books and during volatility is frequently larger than both fees and funding combined. The exit price you enter here is the one you got, not the one you clicked.