One trade at a time, the cost is invisible. A few units taken off a ten-thousand order rounds to nothing. The trouble is that it accumulates with every trade while the return does not, and across a year those two lines separate a long way.
This piece converts trading costs into something you can hold next to a performance number: how many percentage points come off your year. Every rate, count and position size below is an assumed figure used to demonstrate the method; your own tier is whatever the fee schedule shows at the time. Nothing here argues for or against trading anything. It only costs it out.
Why a single trade tells you nothing
There is a built-in distortion in how the two sides are perceived. The cost shows up many times as a small amount; the return shows up once, much later, as a large one. So the first gets waved away and the second gets recounted.
Put both on the same clock and the distortion disappears. Assume 0.1% per side, so 0.2% per round trip. Do fifty trips in a year with the full balance each time and the cost is 50 × 0.2% = 10%. That is not "ten percent skimmed off a good year". It is that you have to make 10% before you are level. In the same year, someone who did nothing at all starts level. To put your own number on that, you need exactly three things, and the next section is about where each of them comes from.
One subtraction from your return
Three inputs:
Read them as "how much per crossing", "how many crossings" and "how much moves each time". The third is the one that gets dropped. If a typical trip moves only a third of the balance, the drag is a third of what the first two terms suggest. In the other direction, anyone using leverage has a term above 1, because the cost is charged on the notional position rather than on their own capital.
One caveat decides how far you can trust that line. Each trip is charged on the balance the previous one left behind, so the true figure compounds rather than adding up. At a handful of trips a year the two are the same number to two decimal places. By the time you are in the hundreds they are not: the multiplication overstates the loss, and it also understates what it takes to recover. Treat the formula as an upper bound that is tight at low frequency and loose at high frequency — the next section shows where it comes apart.
Four habits, worked through
Assume 0.1% per side and the whole balance moving each time, so only the count varies:
| Habit (assumed) | Round trips a year | Formula says | Actual loss of balance | Gain needed to recover |
|---|---|---|---|---|
| Buy and leave it | 1 | 0.20% | 0.20% | 0.20% |
| Rebalance quarterly | 4 | 0.80% | 0.80% | 0.80% |
| One trip a month | 12 | 2.40% | 2.37% | 2.43% |
| Three or four trips a week | 200 | 40.00% | 32.98% | 49.21% |
Assumed values for illustration, at 0.1% per side with the whole balance moving each time. Real rates depend on your tier and discount settings; the count depends entirely on you.
The first three rows are why the shortcut survives: at one, four and twelve trips the three columns agree to within a few hundredths of a percent, and any of them answers the question. The last row is where they separate, and the separation runs in both directions at once.
The loss is smaller than the formula says. Four hundred fills, each taking 0.1% of whatever is left, leave 0.999400 = 67.02% of the balance. That is a 32.98% loss, not 40%. Each fill is charged on a smaller base than the one before it, so the damage tapers.
The recovery is larger. Getting 67.02% back to 100% takes a 49.21% gain, not 40%. This is the more useful of the two numbers, because it is the one that answers "how good does the year have to be". Anyone who reads the 40% as the hurdle is setting the bar nine points too low.
Both corrections point the same way for the same reason, and the rule of thumb is short: below roughly twenty round trips a year, use the formula and stop thinking about it. Above that, compute the two ends separately — losses with (1 − rate)fills, recovery with its reciprocal.
Now the comparison people actually want. Run the same two hundred trips at a 0.02% tier instead and the balance ends at 92.31% rather than 67.02%. The tier is worth 25.3 percentage points of ending balance — not the 32 points a subtraction of the two formula figures would suggest. Real, large, and smaller than the shortcut claims.
Compare the first row with the third. Going from "buy and leave it" to "one trip a month" changes the rate not at all and multiplies the cost by twelve. That difference was not handed out by the market. It came from a habit.
One conversion trap worth naming: the table measures drag, not loss. A yearly drag of 2.4% does not mean you are down 2.4%. It means that in the same market, your result lands 2.4 percentage points below someone who never traded. In a strong year that gap hides inside the gains and nobody notices it. In a flat or falling year it is simply part of the loss. The cost is at its most visible in the years that already hurt.
Which of the three variables to attack
| Variable | How far it can fall | What it takes | Effect |
|---|---|---|---|
| Rate per side | Capped, and harder the lower you go | Discount settings, resting rather than taking, volume tiers | Linear, a few times at best |
| Round trips a year | Down to single digits in principle | Only a change in your own decisions | Linear, potentially tens of times |
| Share of capital deployed | Constrained by the strategy | Position sizing | Linear, but rarely movable far |
The three multiply, so the one with the most room to fall is the one worth working on. The first has a known ceiling: the distance between the entry tier and the top of the schedule is whatever it is. The second has almost none, and it needs no permission, no qualification and no promotion.
None of which says the rate is not worth optimising. It is free money and it applies to every fill. It is a question of order: look at the count column before deciding how much effort to spend elsewhere. The full list of levers on the rate side is in the fee guide, tiers are in VIP levels and rates, and the discount setting is in the BNB fee discount.
The saving is certain; the gain is not
Here is the asymmetry that usually goes uncounted: costs and returns do not have the same certainty.
Cutting two hundred trips a year down to a handful moves the ending balance by something on the order of thirty percentage points, and that saving is going to happen. It requires no call to be right about anything; trade less and the money stays. Whether the extra trips would have earned that back is something nobody can promise. Two quantities with completely different certainty, routinely weighed against each other as if they were the same kind of thing.
Finance already has a word for the mechanism: churning, which describes a broker trading a client’s account heavily to generate commission, and which Wikipedia notes can quickly reduce the account’s value. The comparison needs a boundary drawn around it: that word is about someone else acting on a commission incentive, which is not the same motive as trading your own account often. On the cost side, though, the mechanism is identical — count times cost per crossing, regardless of whose finger is on the button.
Which yields one judgement you can make without forecasting anything: if a trip’s expected gain is smaller than its round-trip cost, it should not happen, whatever the price does afterwards. Working that cost out as a threshold is in what a round trip really costs.
Three costs the formula leaves out
Everything above counts only the visible trading fee. Real drag is usually larger, and the excess comes from three places:
- Cost that lives in the price. Every immediate fill crosses the bid–ask gap once, and that never appears on a statement. It is often the same order of magnitude as the fee itself; the arithmetic is in the spread.
- Costs that meter with time. Futures funding settles at intervals while a position is open, and margin interest accrues continuously. Neither depends on how often you trade; both depend on how long you hold. See what funding costs a position and how margin interest is charged.
- Getting in and out of the system. Deposit-rail fees and exchange-rate markup on the way in, network fees on the way out. These may happen only a handful of times a year, but each one can be large; see deposit costs and withdrawal costs.
Add those and every row of the earlier table moves up. By how much depends on the route you take, and there is no universal multiplier — which is why there is no figure this article can hand you for the total. What it can tell you is which records to pull: the fee column from your trade history, the funding and interest lines from the futures and margin statements, and the deposit and withdrawal receipts. Three places, and the sum of them is the number you actually want.
Your own number, from two figures
No model required:
- Total fees actually paid over the past year. Actually paid, not the schedule rate — discounts, rebates and tiers all separate the two. Where they refuse to reconcile, the fee reconciliation helper works through it fill by fill.
- Average capital held over the same period. Not the peak, and not total deposits: the amount that was actually sitting there on an average day.
- Divide one by the other. That percentage is your fee drag for the year.
- Put it next to your return. A 6% return with 4% of drag is a real result of 2%, not "up 6%, costs negligible".
The first number usually comes out larger than expected, which is normal: it is the sum of several hundred small amounts, and memory kept only the impression of one of them.
Two accounting mistakes are worth avoiding. Using total deposits as the denominator understates the drag if most of that money sat idle for half the year. And counting only the spot side leaves out futures fees and funding, which on a long-held position can exceed the trading fees outright. Both sides belong in the total. One thing this method cannot give you: the cost that lived inside prices rather than in a fee column. Nothing in an exported statement carries it, so a figure built this way is a floor on your real cost, not the whole of it.
What to change, in order
- Collect the free part first. Turn on the discount setting; get filled as maker where you can. Neither changes a single trading decision; they just stop leaving existing savings on the table.
- Then cut the trips that were never needed. The bluntest instrument and the heaviest: it lowers fees, spread and slippage in one move. The test is plain — if that trip had not happened, would the outcome differ?
- Look at tiers last. Volume gets you there when it gets you there. Manufacturing volume to reach a tier is usually backwards: the cost of the extra trading exceeds the rate it buys.
To see where you actually sit once all three layers are stacked, the cost stacking comparator puts list rate, discount and rebate in one table; for a rough sense of what one tier is worth at your volume, the annual savings estimator gives a range.
Common questions
- Can fees really eat that much of a return?
- It depends entirely on how often you trade. At an assumed 0.1% per side, one round trip a year costs about 0.2% of the balance; two hundred costs about 33%, and recovering from that takes a gain of about 49%. Same rate, same capital, two orders of magnitude apart. The question was never whether the rate is high; it is how many times a year you cross it.
- Will lowering my rate fix it?
- It helps, up to a ceiling. The distance between the entry tier and the top of the schedule is finite, whereas the number of trips can in principle fall to single digits. The two multiply, so look at which has more room before deciding where to spend effort. Rate optimisation is still worth collecting: it applies to every fill and asks you to change nothing.
- Does this matter for someone who just holds?
- Yes, but the conclusion reverses: yearly drag for a buy-and-hold position is usually a fraction of a percent and not worth optimising repeatedly. What deserves attention there is the cost of entering and leaving the system — deposit-rail markup and withdrawal network fees, which for that profile often exceed a whole year of trading fees.
- Should the spread and funding be in the calculation?
- They should. The formula covers only the visible trading fee, and real drag is usually larger: an immediate fill crosses the bid-ask gap, an open futures position settles funding, a margin position accrues interest. There is no universal multiplier for these; it depends on the route you take, so they have to be added from your own records.
- What is the fastest way to work out last year?
- Divide two numbers: total fees actually paid over the year by the average capital held over the same period. Use fees actually paid rather than the schedule rate, since discounts and rebates separate the two. Subtract the resulting percentage from your annual return and you have the real result.