How to calculate futures PnL by hand, including fees
By the end of this page you will be able to compute the profit or loss on a linear (stablecoin- or USD-margined) futures position on paper: gross PnL, both fees, net PnL, return on margin, and the exit price at which the trade breaks even. All you need is the entry price, the exit price, the quantity, the leverage and your own fee rate.
The short version, for a linear contract:
gross PnL = (exit − entry) × quantity long
= (entry − exit) × quantity short
fees = (entry × qty + exit × qty) × fee rate
net PnL = gross PnL − fees
The futures PnL calculator runs exactly this arithmetic. The point of doing it by hand once is to know what each field means, so that when the calculator and your exchange disagree you can tell which input is wrong.
Before you start
You need five numbers, and two of them are commonly wrong.
- Quantity in base units. If your venue quotes size in contracts, convert first: contracts × contract size. A contract size of 0.1 and 20 contracts is 2 units. The contract size lives in the venue’s contract specification, not in this article — see symbol filters and minimum order sizes.
- Your fee rate per side, as a decimal. A fee shown as 0.06% is 0.0006 in the formula. Use your own rate from your account’s fee page; maker and taker rates differ, and so can entry and exit if one was a limit order and the other was not (maker vs taker fees).
- Entry price, exit price, and leverage.
This method covers linear contracts only. Coin-margined (inverse) contracts settle PnL in the base coin and use a different formula; see inverse vs linear contracts.
Step 1: Gross PnL
Multiply the price move by the quantity, with the sign set by direction.
Example (illustrative numbers). Long 2 units at 3,000, closed at 3,150:
gross = (3,150 − 3,000) × 2 = 150 × 2 = 300
Example. Short 0.2 units at 50,000, closed at 48,500:
gross = (50,000 − 48,500) × 0.2 = 1,500 × 0.2 = 300
A useful cross-check: gross PnL also equals the percentage price move times the entry notional. The long moved 5% on 6,000 of notional, and 5% of 6,000 is 300.
Notice what is missing: leverage. It does not appear in the profit line at all. The reason is covered in leverage is not risk; for this calculation, just do not put it there.
Step 2: Fees on both sides
Fees are charged on notional — price times quantity — at entry and again at exit. They are not charged on profit.
Using an illustrative 0.06% per side (not any particular venue’s rate):
| Long example | Short example | |
|---|---|---|
| Entry notional | 3,000 × 2 = 6,000 | 50,000 × 0.2 = 10,000 |
| Exit notional | 3,150 × 2 = 6,300 | 48,500 × 0.2 = 9,700 |
| Entry fee | 3.60 | 6.00 |
| Exit fee | 3.78 | 5.82 |
| Total fees | 7.38 | 11.82 |
The exit fee is computed on the exit notional, which is why it differs from the entry fee. Using entry notional twice is close but not exact, and it is the kind of small discrepancy that makes a reconciliation fail by a few cents.
Step 3: Net PnL
long: 300 − 7.38 = 292.62
short: 300 − 11.82 = 288.18
Same gross profit, different net, because the short traded more notional to make it.
A losing trade uses the same arithmetic. The long from above, closed at 2,940 instead: gross is −120, fees are 3.60 + 3.528 = 7.128, net is −127.13. Fees make a loss larger; they never make it smaller.
Step 4: Margin and return on margin (ROE)
margin = entry notional ÷ leverage
ROE = net PnL ÷ margin
The long at 5× posted 6,000 ÷ 5 = 1,200 of initial margin. ROE is 292.62 ÷ 1,200 = 24.39%. The short at 10× posted 1,000, so ROE is 28.82%.
This is the percentage exchanges display most prominently, and it is the one to be most careful with. At 20× the long would have posted 300 and shown an ROE of 97.54% — on the identical 292.62 of profit. If the account holding that position had 10,000 in it, the return on the account was 2.93% at any leverage.
Step 5: The break-even exit price
The price at which net PnL is exactly zero — where the move has paid both fees and nothing more:
long: break-even = entry × (1 + f) ÷ (1 − f)
short: break-even = entry × (1 − f) ÷ (1 + f)
For the long, 3,000 × 1.0006 ÷ 0.9994 = 3,003.60. For the short,
49,940.04. A quick approximation is entry × (1 ± 2f), which gives 3,003.60
for the long as well — close enough for a sanity check, not for reconciliation.
That 0.12% gap looks trivial here against a 5% move. Against an intended move of 0.3%, the same gap is 40% of the target, which is why fee drag over a year is worth running for anyone trading small moves often.
How to tell it worked
Enter the long example into the futures PnL calculator — side long, quantity 2, entry 3,000, exit 3,150, leverage 5, fee 0.06. It should show net PnL 292.62, fees 7.38 and a break-even exit of about 3,003.60. Then change leverage to 20 and confirm net PnL does not move while return on margin does.
To check against a real fill, take the exchange’s own trade history, not the position panel: sum the fees it actually charged, and compare its realised PnL for the close with your Step 1 figure — or Step 3, if your venue nets fees into realised PnL. Allowing for rounding, the two should agree before funding. If they do not, one of the failure modes below is usually the reason.
What usually goes wrong
- Fee rate entered as a percentage. Using 0.06 instead of 0.0006 turns 7.38 of fees into 738. Every formula here takes a decimal.
- Contracts treated as units. If the contract size is not 1, a quantity read straight from the order ticket is off by that factor — PnL, fees and margin all scale with it.
- Leverage multiplied into PnL. A 5% move at 10× is not a 50% profit on the position. It is 5% on notional, which happens to be about 50% on margin.
- Funding left out. A perpetual held across funding settlements pays or receives funding, charged on notional. None of the formulas above include it. See how to calculate funding payments.
- Last price used instead of fill price. Your PnL is computed from your average fill price, which includes slippage. A partial fill at several levels produces an average that is not any price you saw on the chart.
FAQ
What is the formula for futures PnL?
For a linear contract, gross PnL is (exit − entry) × quantity for a long, and (entry − exit) × quantity for a short. Subtract fees on both sides — entry notional times fee rate plus exit notional times fee rate — to get net PnL. Leverage does not appear anywhere in the formula.
Does leverage change my profit on a futures trade?
No. Profit in currency depends on the price move and the quantity. Leverage sets how much margin you post, which changes the return on margin (ROE) and the distance to liquidation, but the same trade makes the same number of dollars at 5× and at 50×.
How are futures fees calculated?
Each side is charged the fee rate times that side’s notional value, which is price times quantity at that moment. The entry fee uses the entry price and the exit fee uses the exit price, so the two differ slightly. Fees are charged on the full position value, not on the profit.
Why does my exchange show a different PnL than my calculation?
The usual reasons are funding payments you did not include, a quantity entered in contracts rather than base units, fees at a different rate than you assumed (maker on one side, taker on the other), or an average fill price that differs from the price you had in mind. Start from the exchange’s trade history rather than the position panel.