Calculate futures trading costs per fill, with funding and other adjustments recorded separately. USDT linear price P&L is quantity multiplied by the price difference; margin is not the fee base. If fill-price P&L already includes slippage, do not deduct it again. A funding reserve is not an actual charge. Deduct verified expenses to obtain the corresponding result; incomplete costs mean a partial result. This historical BTC exercise uses hypothetical fills, leaving missing records unresolved rather than claiming real net P&L.
A plan budgets a maximum 50 USDT loss, but reconciliation produces three figures: 35.39, 39.303305 and 40.303305. Which is the loss? Choosing the smallest might omit fees. Adding everything could count slippage or a reserve twice.
What matters is explaining where each number comes from. We will separate price P&L, trading fees and holding costs, then follow one BTC short from waiting for entry through closing. A traceable ledger reveals whether a discrepancy comes from the budget, execution or missing records.
Separate price P&L, fees and margin commitment
Price profit and loss (P&L), additional charges and committed margin need separate records. This guide covers linear perpetuals quoted and settled in USDT, with quantity measured in BTC. BTC is bitcoin and USDT a stablecoin. Coin-margined inverse contracts use different units and formulas; the calculations below do not transfer wholesale. The perpetual futures guide covers the broader product and sizing sequence.
Gross P&L, net P&L and account balance differ
Here, quantity multiplied by the entry-to-exit difference is gross price P&L. Add or subtract attributable trading fees, funding and other verified adjustments to obtain net P&L on that basis. Bybit's P&L Calculations, dated August 12, 2026, distinguishes unrealized price P&L from a closed result including trading and funding fees. Check whether a platform field already includes fees before using it; the label alone is insufficient.
Account balance can also change through other positions, deposits, withdrawals, transfers and delayed entries. Transferring in 100 USDT is not 100 of profit on this contract. Releasing committed margin is not additional income either. Funds reserved at opening and released at closing cannot be counted again as a trading gain.

Fees follow traded value and actual maker or taker status
For a linear contract, each fill's fee is quantity × fill price × applicable rate. Calculate opening and closing separately. OKX's How Are Futures Trading Fees Calculated?, dated August 26, 2026, uses traded value times rate. Products expressed in contract counts also require face value and multiplier; convert units before comparing with BTC quantities here. Margin is not the fee base. At the same quantity, higher leverage does not divide trading fees by the leverage multiple.
A maker fill supplies resting liquidity; a taker fill matches existing orders and removes liquidity. These roles do not guarantee that limits are cheaper and markets more expensive. An immediately matched limit may be a taker fill. Bybit's Post-Only Order explains cancellation when an order would execute immediately: intending to provide liquidity does not prove a fill, and waiting for a fee advantage is not suitable for every exit.
Two ways to account for slippage
Analyze slippage separately if useful, but deduct it only once. Fix a reference price, then record actual or assumed fills. If the difference already enters price P&L through fill prices, report it as execution analysis without another deduction. Funding depends separately on settlement eligibility and account entries.
Fill-price P&L already includes the same price deviation
Closing a short means buying back. If the planned exit is 78,600 but average fill is 78,620, the adverse deviation is 20 USDT/BTC. That is not another receipt charging 20 USDT. Subtracting 78,620 from entry already includes it. Alternatively, calculate planned P&L at 78,600, then subtract quantity × 20 once. With identical quantity and fees, both routes must agree.
A different reference, such as best quote at submission, trigger price or midpoint, measures a different deviation. Spread, liquidity and market movement can overlap; renaming parts of one deviation does not justify deducting them repeatedly. Slippage tolerance is not a fill guarantee either. Bybit's Market Order with Slippage Tolerance notes that insufficient liquidity within the range can leave quantity unfilled.
A funding reserve is a budget, not a booked expense
Reserving 1 USDT before entry leaves room for possible holding costs. The actual amount depends on rates, eligible quantities and account entries. An unused reserve does not create an expense. An unresolved cost is not zero just to make a spreadsheet total look final.
Funding receipts need the right sign. Under a “payments positive, receipts negative” convention, subtracting signed funding increases net P&L when funding is received. Convert a statement's signs before adding. Funding rates, settlement and holding costs explains the event timing and quantities.
Historical BTC example: complete the short's cost ledger
We use Binance USDⓈ-M Futures public Kline/Candlestick Data for BTCUSDT perpetual prices on September 10–11, 2026. All times are UTC; add eight hours for UTC+8. Four-hour and 15-minute candles are named by opening time, with their complete ranges known after closing. Prices are historical, but quantity, fills, rates and reserve below are hypothetical. There was no actual order or private statement.
Step 1: establish price order before assuming fills
The plan waits for a four-hour close below September 8's known low, 77,600.1. The September 10 12:00 candle closes at 77,218.5, confirmed only at 16:00. Looking back through the six completed candles before that breakout, the latest bullish candle is September 10 at 00:00. Its full wick range fixes the observation zone at 77,912.2–78,543.9. Wait to short the first retest of the lower edge, using last price for a 78,600.0 stop and a 76,536.6 target. Wait only six subsequent four-hour candles; cancel without a touch before September 11 at 16:00. Before entry, also cancel on a four-hour close above 78,543.9 or a subsequent 15-minute opening above that edge.
The September 11 12:30 candle reaches 76,000.3 but has a high of only 77,671.4, below entry. Its low is not profit on this short. The first interval containing 77,912.2 is 12:45–13:00. Subsequent candles do not reach the target before 13:45–14:00 crosses 78,600.0. Separate candles establish the price-touch sequence, not a trigger or fill, and supply no mark-price path. Mark price is the platform's valuation and risk reference, distinct from the latest matched trade.
Now assume a complete 0.050 BTC short fill at 77,912.2 and an adverse exit-deviation scenario of 20, producing an assumed average exit at 78,620.0. This is a teaching slippage input, not an execution report. Being within the candle's range does not guarantee that fill. Stop distance and position sizing explains how risk and capital constraints produce the quantity.

Step 2: calculate opening and closing fees separately
Assume a 0.05% rate on both sides, with fees in USDT. This is not a current exchange quote or personal tier. Convert the rate to 0.0005, not 0.05. Opening traded value is 0.050 × 77,912.2 = 3,895.61, with a 1.947805 USDT fee. Closing value is 0.050 × 78,620.0 = 3,931.00, with a 1.9655 fee. Total fees are 3.913305.
Different entry and exit prices mean the opening fee cannot simply be doubled. Small discrepancies grow with quantity and price differences. For several fills, calculate each using its own price, quantity and applicable rate before adding. This ledger assumes one full entry and one full exit; confirm both quantities are 0.050 before settling it.

Step 3: reconcile two routes without double-counting slippage
The first route uses assumed fill prices directly: gross price P&L is 0.050 × (77,912.2 − 78,620.0) = −35.39 USDT. Subtract 3.913305 in fees to get −39.303305 USDT. That includes only price movement and trading fees, not unresolved funding and other adjustments.
The second route starts from the planned exit: 0.050 × (77,912.2 − 78,600.0) = −34.39. Subtract adverse slippage of 0.050 × 20 = 1 and the same 3.913305 fees: again −39.303305. Agreement shows this exit deviation is neither omitted nor deducted twice. A closing fee calculated at 78,600 would differ, so both routes use the same assumed 78,620 fill-based fee.
| Calculation route | Price P&L, USDT | Separate slippage deduction | Trading fees, USDT | Result before funding and other items |
|---|---|---|---|---|
| Fill-price route | −35.39 | None: already included | 3.913305 | −39.303305 |
| Planned-price route | −34.39 | 1.00 | 3.913305 | −39.303305 |
| Incorrect duplicate deduction | −35.39 | Another 1.00 | 3.913305 | −40.303305, double-counted |

Step 4: unknown funding means incomplete settlement
The original plan separately reserves 1 USDT for funding. Adding 35.39, 3.913305 and 1 gives a pre-trade cost scenario of 40.303305 USDT. This matches the absolute value of the incorrect row above, but means something different: one is a budget; the other double-counts an included price deviation. The total alone cannot tell them apart.
The short-duration model assumes an exit that afternoon. But personal settlement eligibility, delayed entries and other charges remain unverified. Record funding as “awaiting reconciliation,” with the 1 reserve in its own column. Do not declare a payment of 1 or a confirmed zero merely to finish the sheet. Likewise, −39.303305 is not final account net P&L.
If later evidence establishes a 0.4 funding payment and no other adjustments, the formula gives −39.703305. A 0.4 receipt instead gives −38.903305. Both are separate reconciliation scenarios, not known outcomes of this example. Match each new fee to the product, account, asset and period; do not import another position's charge.
A valid interim status is “hypothetical price P&L and trading fees calculated; other costs unresolved.” If no part of 0.050 filled, record an unfilled plan rather than this loss. For a partial fill, recalculate confirmed quantity and check remaining orders separately. The result's level of completeness must match the evidence.

Step 5: save quantity and fee changes as separate scenarios
Halve quantity to 0.025 BTC while keeping prices and rates unchanged. Price loss becomes 17.695 and trading fees 1.9566525, totaling 19.6516525. With the fixed 1 USDT reserve unchanged, the budget is 20.6516525, not half of 40.303305. Fixed amounts and volume-dependent expenses scale differently.
In another scenario, retain 0.050 BTC but double both rates to 0.10%. Fees become 7.82661, and the budget including the same 1 reserve is 44.21661. Price P&L is unchanged. Lower fees would not make a stopped-out trade a correct directional call. Change only specified inputs and retain the original result to explain the difference.

When costs do not reconcile, check fields before formulas
Match each expense to its fill, asset and period first. Missing fee currency, treating a partial exit as complete or deducting fees from an already fee-inclusive field cannot be fixed with more decimals. Pause complete net-P&L calculation while retaining verified components.
Attribute partial fills and fee currencies individually
For each fill, retain identifier, timestamp and timezone, direction, price, quantity, fee and fee currency. A weighted average divides total price-times-quantity by that side's total quantity; the final fill price is not the average. If entry and exit quantities disagree, look for unfilled orders, remaining positions or missing fills instead of forcing a closed-trade total.
For fees outside USDT, preserve the original asset amount and record conversion time, rate and source. Without a conversion basis, list original amounts and unresolved items separately. Do not add amounts denominated in different assets. This is a unit-reconciliation rule, not a claim that every platform charges this contract in another currency.
Do not deduct fees twice from an inclusive platform result
OKX's Trading Fee Rules FAQ explains realized futures results alongside trading and funding fees. Bybit's closed-P&L fields have their own allocation definitions. Subtracting opening and closing fees again from a figure that already includes them double-counts the expense. Conversely, a raw price-difference field is not necessarily fully fee-inclusive just because its label says “realized.”
Fees may arrive later or across a date boundary. Keep an initial “provisional; awaiting funding” result, then update it with traceable adjustments. Do not reconcile an account balance change and subtract a fee already included in that change again, mistakenly concluding the platform overcharged.
Bring costs back into planning and review
A cost record improves the next budget scenario and explains overruns. Recording deviations, rates and unknowns reveals more than simply lowering the maximum leverage setting. No reserve guarantees maximum loss; market and execution conditions can exceed it.
Fee savings and protective exits involve trade-offs
Waiting solely for maker fees can let price move away or leave the exit incomplete. Market orders and price-limited orders require clear handling of insufficient liquidity and remaining quantity. Compare fee choices within the original risk and exit rules. Removing a required exit is not evidence of a useful fee saving.
Next steps and scope
Use the trading journal fields and templates to separate planned prices, assumed fills, actual fills and fees. Futures take-profit and stop-loss orders develops exit execution. Record funding event by event with the correct direction rather than substituting a reserve for a statement. Reconcile one trade before scaling up to a batch; a single win-rate number cannot reveal these differences.
This article teaches contract mechanics and historical calculations, not investment advice. Historical prices do not establish obtainable fills. All example fees, slippage and account settings are hypothetical. Actual trading can involve non-execution, liquidation due to insufficient margin and additional costs.