How to calculate crypto profit and loss — five costs, not one
KEY TAKEAWAYS
- The exit fee is charged on the exit value, not the entry value. A winner closes on a bigger number, so the two fees are never equal: 5.00 in, 5.10 out on the same position.
- Fees are charged on the position size; you feel them against your margin. The same 13.10 of costs is 0.131% of a 10,000.00 position and 1.31% of the 1,000.00 you put up at 10x.
- Funding is rent, and it compounds with time rather than with size. Held 3.3 days, the funding on this trade equals the entire round-trip fee; held 30 days it eats 45% of the gross profit.
- There is a floor under every trade. A one-day futures hold needs 0.1301% of price movement before a cent is kept; the same trip on spot needs 0.2002%.
- The number on your screen is not the number that settles. Unrealised profit and loss is computed from the mark price and deducts neither the exit fee nor future funding.
What are you actually paying on one trade?
Five things, and most calculators price only the first. Work through them in the order they hit your balance:
One — the price move itself. Exit price minus entry price, times the quantity. This is gross profit and loss, and it is the only figure the words “I was up two percent” usually refer to.
Two — the fee to get in. Charged on the position size, at the taker rate if your order matched something already on the book, or the maker rate if it waited there first. On Binance’s published Regular tier for USD-margined futures those are 0.0500% taker and 0.0200% maker.
Three — the fee to get out, charged on a different number. This is the line people get wrong. The exit fee applies to the value of the position when you close it. Win, and that value is larger, so the exit fee is larger: 5.00 to enter a 10,000.00 position and 5.10 to leave it 2% higher.
Four — funding, if the instrument has it. A perpetual future has no expiry, so it keeps its price tethered to spot by making one side pay the other at fixed intervals. Binance settles every 8 hours; Hyperliquid settles every hour. It is a transfer between traders rather than a fee the venue keeps — Binance says plainly that it “does not charge any service fees” on it, and OKX says the same — but the side paying still pays. See funding rate for the mechanism.
Five — the gap between the price you saw and the price you got. Slippage appears on no fee schedule, and every worked example on this page sets it to zero. That makes the numbers below the best case, not the expected case.
There is a sixth cost that only shows up when things go wrong, and on some contracts it dwarfs the other five. Section five puts a published number on it.

What does a 2% winner really pay?
Take a long position worth 10,000.00, hold it for one day, and close it 2% higher. Here is every line, in the order it lands:
| Line | How it is worked out | Amount |
|---|---|---|
| Gross profit and loss | 10,000.00 × 2% | +200.00 |
| Entry fee | 0.0500% of 10,000.00 | −5.00 |
| Exit fee | 0.0500% of 10,200.00 (the exit value) | −5.10 |
| Funding, 1 day | 3 periods × 0.0100% of 10,000.00 (assumed rate) | −3.00 |
| Slippage | set to zero here; in reality, not zero | 0.00 |
| Net profit and loss | what settles | +186.90 |
So 13.10 of a 200.00 gain never arrives — 6.6% of the profit. On a single good trade that is a rounding error you can live with. Two things make it stop being one.
The first is a smaller move. Costs do not shrink with your edge; they are set by the position size and the clock. Run exactly the same trade with a 0.1% move instead of 2%: gross 10.00, costs 13.00, net -3.00. Right about the direction, right about the entry, still down. That is not bad luck, it is arithmetic, and it is the honest answer to the most common question a new trader has about their own statement.
The second is time. Hold the winning version for 30 days instead of one and funding alone comes to 90.00, taking the net from 186.90 down to 99.90. The price did exactly the same thing in both cases. Roughly 45% of the profit went in rent.
Why does the same fee hurt more with leverage?
Because the fee is charged on the position and felt against your own money, and leverage is exactly the distance between those two numbers. The costs on this trade are 13.10 no matter how the position was funded. What changes is what 13.10 is a percentage of:
| Leverage | Your margin | Costs as % of the position | Costs as % of your money | Clearance fee if liquidated |
|---|---|---|---|---|
| 1x | 10,000.00 | 0.131% | 0.13% | 1.2% of 10,000.00 |
| 5x | 2,000.00 | 0.131% | 0.66% | 6.2% of 2,000.00 |
| 10x | 1,000.00 | 0.131% | 1.31% | 12.5% of 1,000.00 |
| 20x | 500.00 | 0.131% | 2.62% | 25.0% of 500.00 |
Read the fourth column, because that is the one your account statement reflects. The same trade, the same fee schedule, the same price move: 0.131% of your capital at 1x and 2.62% at 20x. Leverage does not change the break-even price move at all — that is the useful thing to know, and the next section works it out — but it multiplies what every cost does to your balance.
The last column is the cost nobody budgets for. Binance publishes a liquidation clearance fee in the ninth column of its perpetual trading-parameters table — not on the fee page, which is why almost no guide mentions it. On BTCUSDT it is 1.25% of the position: 125.00 on a 10,000.00 position, which is 25 times a single taker fee. At 20x that one line is 25.0% of the money you put up, on top of the loss that triggered it. The rate is per-contract, not universal — XMRUSDT is listed at 2.00% — and we have not checked the equivalent figures on OKX or Bybit, so we are not quoting any. Read 5 September 2026.
If that number is new to you, our companion guide on how liquidation price is calculated shows how far the price has to travel before it applies.
How far must price move before you break even?
Far enough to cover both fees and the funding you accrued, which gives a formula you can run on your own numbers in a few seconds. With f as the fee rate each way and Φ as the total funding rate over the hold, the required move m is:
m = (fin + fout + Φ) ÷ (1 − fout)
The divisor is there because the exit fee is charged on the larger, post-move value — it is the algebraic version of the point in section one. It is a small correction, and it is the one every quick mental estimate drops. Feeding in the published taker rate and the assumed funding rate:
Three readings worth taking from that chart. First, the flat number — 0.1001% — is the floor under every futures trade you take as a taker, before you have an opinion about anything. Second, if both your fills are maker fills instead, the floor drops to 0.0400%, which is less than half; on a strategy that trades often, the choice between limit and market orders is a larger effect than most entry rules. Third, funding overtakes the entire round-trip fee after about 3.3 days at the assumed rate, and that crossover is worth knowing because it splits trading costs into two different problems: a frequency problem under a few days, and a rent problem beyond it.
That crossover moves with the funding rate, so calculate your own: days = (fin + fout) ÷ (rate × periods per day). At half the assumed rate it doubles to 6.7 days; at triple it collapses to 1.1. And when funding is negative, the side you are on may be receiving it, in which case holding lowers your break-even instead of raising it.
Is spot or futures cheaper for the same trade?
Per round trip, futures — by half, which surprises most people who assume the leveraged product is the expensive one. Binance’s published Regular tier charges 0.100% taker on spot and 0.0500% on USD-margined futures. Same exchange, same account, same coin:
So the answer depends entirely on how long you hold, and it is not close in either direction. In and out inside a single funding window, futures cost half as much. Hold for a month and the futures position has paid 90.00 in rent that the spot position never owed. This is also why “which exchange is cheapest” is usually the wrong question: on a 10,000.00 futures round trip the gap between Binance, OKX and Bybit is about a dollar, while the gap between a day trade and a month-long hold on the same venue is 90.00.
That crossover has a practical corollary that experienced discretionary traders tend to arrive at from the other end, by watching an account rather than by doing the arithmetic: trades whose thesis plays out over hours to a few days fit a perpetual, and trades whose thesis plays out over weeks belong on spot, because the funding on a multi-week perpetual position quietly consumes the move you were waiting for. One school of practice puts the dividing line at the trade’s own timeframe — hourly and four-hourly ideas on futures, daily and weekly ideas on spot — and if a longer idea has to be expressed with leverage, to break it into shorter segments rather than hold one position through it. That is a judgement rather than a rule, and our 3.3-day figure is what it looks like when you put a number on it: it is roughly where a four-hourly trade ends and a multi-day hold begins. The number is not a licence to hold for 3.3 days either — funding is only one of the reasons a position gets closed.
Two caveats that cut in opposite directions. Fee discounts exist — holding BNB knocks 10% off Binance futures fees and 25% off spot fees, and the VIP tiers reduce both further with volume — so a heavy trader’s floor is lower than the one on this page. And futures carry the liquidation clearance fee from section three, which spot does not have at all, because a spot position cannot be liquidated.
How do you work it out yourself, step by step?
Six steps. The first one decides whether the other five are right or wrong by a factor of your leverage.
- Write down the notional, not the margin. Every fee on the page is charged on the position size. If you put up 1,000.00 at 10x, the number the fees see is 10,000.00. Get this one wrong and everything after it is wrong by a factor of ten.
- Multiply the notional by the entry fee rate. Taker if your order matched immediately, maker if it sat on the book first. On Binance's Regular futures tier those are 0.0500% and 0.0200%, and the difference is not small: maker both ways drops the break-even move from 0.1001% to 0.0400%.
- Multiply the EXIT value by the exit fee rate. Not the entry value. A winning trade closes on a bigger number, so the exit fee is bigger: 5.00 in, 5.10 out on the same 10,000.00 position. Two identical fee lines is the most common arithmetic slip on this page.
- Count the funding periods you actually held through. Not days — settlements. Binance settles every 8 hours, so one day is three charges; Hyperliquid settles hourly, so one day is twenty-four. Then multiply periods by rate by notional. Funding can be negative, in which case this line is income.
- Subtract the three from the gross, then check it against your own screen. Gross 200.00 minus 13.10 of costs is 186.90. If the exchange's realised figure differs, the gap is almost always slippage on one of the two fills, and that tells you something useful about the size you traded.
- Divide by the margin, not the notional, to see what it did to you. 13.10 of costs is 0.131% of the notional and 1.31% of the 1,000.00 you actually risked. Both numbers are true; only the second one is the one you feel.
Which mistakes do careful people still make?
Charging the exit fee on the entry value. It makes a winner look better than it was and a loser look worse, and it is invisible because the two numbers are so close: 5.00 against 5.10 here. On a 50% move it stops being close.
Mixing position size and margin in the same calculation. Fees and funding are charged on the position; returns are usually quoted against margin. Both are valid units and the answer is meaningless if a sum contains one of each. Label every line before you add it up.
Counting funding in days instead of settlements. A day is three charges on Binance and twenty-four on Hyperliquid. Holding a position over a weekend on an hourly-funding venue is roughly 0.48% of the position at the assumed rate — easily more than the round trip.
Assuming funding is a cost. It has a sign. When the rate is negative the shorts pay the longs, and a long position is being paid to wait. Subtracting it blindly understates a perfectly good trade.
Pricing the good outcome only. The clearance fee in section three is 1.25% of the position on BTCUSDT and appears in none of the arithmetic above, because the arithmetic above assumes you closed the trade yourself. Budget for the version where you did not.
Trusting the screen. The unrealised figure is a mark-price estimate with two costs missing. Our mark price entry explains why that reference price exists and why it is not the price you will get.
When is this guide wrong?
In four situations, each of them common.
When your fee tier is not the Regular one. Every figure here uses the entry-level published tier. Volume discounts, exchange-token discounts and maker rebates all push the floor down, in some cases by more than half. The method holds; the rates do not.
When funding is nothing like 0.0100%. The rate is set by the market every period and can be negative. It is the one assumption on this page, and it is the input that matters most for anything held longer than a couple of days. Use the formula in section four with the rate your own screen is showing.
When the position is large enough to move the book. Every example assumes both fills happen at the price you saw. Trade size beyond the visible liquidity and slippage stops being a rounding error and becomes the largest line in the table — the one item here that no published rate can tell you in advance.
When tax is in the picture. In many countries a closed trade is a taxable event, and the amount at stake there can be larger than every cost on this page combined. We are not qualified to tell you how that works where you live and this guide does not try. Ask someone who is, before the trade rather than after it.
FAQ
How do you calculate profit and loss on a crypto trade? Start with the gross move and then subtract four things, not one. Gross profit and loss is (exit price minus entry price) times the quantity. From that, subtract the entry fee charged on the position size, the exit fee charged on the position size at exit, the funding you paid for every settlement period you held through, and any slippage between the price you saw and the price you filled at. On a 10,000.00 position that gains 2% and is held one day, the gross figure is 200.00 and the net figure is 186.90: 13.10 in fees and funding, which is 6.6% of the profit. If the position is liquidated rather than closed, a fifth cost lands on top, and on BTCUSDT it is the biggest of the lot.
Why did I lose money on a trade that went the right way? Because being right about the direction is not the same as clearing the round-trip cost. On the published Regular futures tier, entering and exiting as a taker costs about 0.1% of the position, and every 8-hour funding period you hold through adds more. That sets a floor: on a one-day hold the price has to move 0.1301% in your favour before you keep a cent. A trade that went 0.1% the right way grossed 10.00, paid 13.00, and settled at -3.00 — right, and still down. This is the main reason a screen full of small wins does not add up to a bigger balance.
Does the unrealised PnL number on the exchange include fees? No, and it is worth knowing exactly what it leaves out. The unrealised figure is computed from the mark price, which is a reference price rather than the price your close will fill at. It does not deduct the exit fee you have not paid yet, it does not deduct funding you will pay for periods you have not reached, and it cannot know your slippage on the way out. On the worked example the screen reads 200.00 while the amount that finally settles is 186.90. Treat it as a position tracker, not a bank balance.
Is spot or futures cheaper to trade? Per round trip, futures — by half. Binance's published Regular tier charges 0.100% taker on spot against 0.0500% on USD-margined futures, so the same 10,000.00 round trip costs 20.20 on spot and 10.10 on futures, and the break-even move is 0.2002% against 0.1001%. But futures then charge rent: funding lands every 8 hours, and at a funding rate of 0.0100% per period the accumulated funding overtakes the entire round-trip fee after about 3.3 days. Cheaper for a day trade, more expensive for a position you intend to sit on, and leverage makes both numbers bigger relative to your own money.