October 31, 2026Position Reconstruction

Realized P&L vs Position History: Why the Numbers Don't Match

Realized P&L and position history can measure different scopes. Reconcile gross results, incurred costs and partial-close allocations with a worked example.

Cumulative realized P&L of 113.74 USDT compared with 116.74 USDT allocated closed-order P&L in a partial-close example.

Your position history shows a profitable closing event, but the realized P&L field shows a smaller number. Another closing report gives a third result.

Before treating the difference as missing profit, check what each figure includes.

Realized P&L and position history can disagree because they cover different quantities, periods, costs or events. A position history may show gross closing results, while a realized field includes fees and funding already charged. After a partial close, an allocated closed-order result can also differ from the cumulative realized result of the still-open position.

The task is to reconcile the same events under the same definition. This guide shows how to do that with a complete numerical example.

What are you actually comparing?

A realized P&L field is a calculated result. Position history is a record of events or position lifecycles whose displayed totals depend on the product presenting it. Neither label is a universal accounting standard.

View or fieldUseful forCheck before comparing
Execution historyWhat quantity filled, at what price and feeFilled quantity rather than requested order quantity
Gross closed trading resultPrice-based gain or loss on completed reductionsWhether costs are excluded
Cumulative realized position P&LRealized components attributed to the position so farIncluded costs and when the accumulation resets
Closed-order P&LResult associated with a closing recordAllocation of opening costs and funding
Current unrealized P&LCurrent marked result on the remaining quantityPrice reference and quantity still open
Account-period resultActivity within a selected reporting windowAccounts, symbols, currencies and time boundaries

The same trade can legitimately contribute different amounts to these views. First name the exact field, its scope and its cost treatment.

For the underlying records, see trade history versus position history. This article focuses on reconciling their financial totals rather than choosing a history screen.

Example: why 120, 113.74 and 116.74 USDT can all appear

Consider an illustrative linear BTCUSDT long, using a Bybit-style distinction between cumulative realized P&L and an allocated closed-order result.

The position opens with 0.10 BTC at 60,000 USDT per BTC. An opening fee of 3 USDT is charged. While it is open, 2 USDT of funding is paid. Later, 0.04 BTC closes at 63,000 USDT, with a closing fee of 1.26 USDT. The remaining 0.06 BTC stays open.

The fees are hypothetical teaching amounts, not current exchange quotations. There are no other positions, additions, rebates or costs in this example.

The closing event's gross trading result is:

0.04 x (63,000 - 60,000) = +120 USDT

If a position timeline labels that event with its gross result, +120 USDT describes price P&L on the completed reduction. It is not necessarily the net realized field.

For the cumulative position-period calculation, include the entire opening fee and the funding already paid, plus the closing fee:

Gross closed trading result: +120.00 USDT
Opening fee already charged:   -3.00 USDT
Funding already paid:          -2.00 USDT
Closing fee:                   -1.26 USDT
Cumulative realized result:  +113.74 USDT
A 120 USDT gross closing result minus 3 USDT opening fee, 2 USDT funding and 1.26 USDT closing fee equals 113.74 USDT.
The example deducts incurred opening fees, funding paid and closing fees from 120 USDT gross closed trading profit.

Illustrative cumulative realized position result. Actual fields and fee allocation depend on the exchange.

Now compare a closed-order calculation that allocates opening costs and funding to the 40% of the position closed:

ComponentCumulative position-period calculationAllocation to the 40% closed part
Gross closing result+120.00 USDT+120.00 USDT
Opening fee-3.00 USDT-1.20 USDT
Funding paid-2.00 USDT-0.80 USDT
Closing fee-1.26 USDT-1.26 USDT
Result+113.74 USDT+116.74 USDT

The allocated result is 120 - 1.20 - 0.80 - 1.26 = 116.74 USDT. The difference is 3 USDT: 1.80 USDT of opening fee plus 1.20 USDT of funding outside the closed-part allocation.

That does not mean a fee was refunded or profit was created. The two calculations assign already-known costs to different scopes.

Bybit's USDT P&L guide documents this distinction: its cumulative realized field includes trading fees, funding and partial-close results, while partial-close closed P&L prorates opening and funding fees. This is the exchange-specific basis for the example, not a rule for every history product.

Cumulative realized P&L of 113.74 USDT differs from allocated closed-order P&L of 116.74 because of 3 USDT in cost allocation.
The 40% closed allocation includes 1.20 USDT opening fee and 0.80 USDT funding, compared with 3 and 2 USDT for the whole period.

The gross closed result is the same. The opening-fee and funding allocations differ.

Should unrealized P&L be added to the realized figure?

Only when the components cover the same lifecycle and costs are handled consistently. Unrealized P&L belongs to the quantity still open; it is not another completed closing result.

Suppose the remaining 0.06 BTC is valued at 62,500 USDT per BTC, with its original 60,000 USDT entry basis:

Current unrealized P&L:
0.06 x (62,500 - 60,000) = +150 USDT

Marked lifecycle result after incurred costs:
113.74 + 150 = +263.74 USDT

This snapshot includes the modeled costs already incurred. It does not subtract an unincurred future closing fee for the remaining 0.06 BTC, and it is not a final closed-position result.

Do not add both 113.74 and 116.74 to the same total. They are alternative representations of overlapping activity. Also do not add an earlier unrealized snapshot that already included the quantity subsequently closed.

The mechanics are explained further in what changes after a partial futures close.

Why can an account report still differ after costs are matched?

The remaining difference may come from the reporting window or account scope rather than the position arithmetic.

A position opened before the selected date range can have an opening fee outside that range and a closing result inside it. A full-lifecycle reconstruction includes both events; a date-filtered activity report may include only one.

Compare timestamps on the same basis. A local calendar day and a UTC day have different boundaries. Check the actual time filters and how the platform assigns event dates.

Also align the account, subaccount, symbol, settlement asset and position direction. Do not compare one BTCUSDT position with a report combining several contracts, or treat a transfer as profit from a closing fill.

Bybit's transaction-log documentation distinguishes cash flow, funding, fees and balance changes. Those components are useful evidence for reconciliation; a balance change alone is not proof of trading profit.

This explains why a profitable event history can coexist with a lower account result. The broader diagnostic is covered in why futures P&L can be negative despite profitable closed trades.

Which records establish the actual result?

Use executions to establish fills, closing records to inspect the exchange's reported result, and ledger entries to establish charged or received cash flows. Keep their scopes explicit.

Bybit's trade-history API documentation notes that a single order can have several executions and exposes execution-level information. Its closed-P&L documentation provides separate closing records with fields such as closed size and average entry and exit prices.

These record types answer related but different questions. A submitted order price is not evidence of a fill, and an account ledger row is not automatically a complete position lifecycle.

A practical review has five steps:

  • Identify the exact position and the start and end of the lifecycle being compared.
  • Rebuild executed additions and reductions in order, retaining the open quantity after each event.
  • Calculate gross price P&L on the closed quantities using the applicable entry basis.
  • Match trading costs and funding, labeling whether they are already netted or allocated.
  • Compare like-for-like totals and keep any unexplained residual visible.

Do not force a residual into "fees" merely because that makes the table balance. If records are missing, state what is missing. Do not silently turn an unavailable fee into zero.

For a detailed lifecycle workflow, see how to reconstruct a closed futures position from exchange data.

How do you avoid counting fees or funding twice?

Choose one consistent calculation basis. Either start with gross components and apply the appropriate costs, or start with a correctly scoped net figure and add only components it excludes.

If +113.74 USDT already deducts the modeled opening fee, closing fee and funding, subtracting those amounts again would understate the result.

Similarly, a funding payment shown as a separate ledger entry may already be incorporated into a cumulative realized field. It is useful reconciliation evidence without being another deduction to append automatically.

Review where futures funding fees go in P&L when tracing those entries. Keep paid and received amounts distinct, and check the sign convention of the source field.

SymptomLikely comparison to inspect
History is higher by incurred costsGross event result versus a net realized field
Closed-order result exceeds cumulative realizedOpening-cost or funding allocation after a partial close
Totals change with date filtersPeriod activity versus full lifecycle
Account result differs from one positionOther contracts, accounts or non-trading balance changes
Difference remains unexplainedMissing records, timing, currency or an incorrect field interpretation

These are starting points for review, not a claim that every discrepancy has the same cause.

The better question: are these numbers measuring the same thing?

Before asking which report is wrong, specify the quantity, period, lifecycle, price basis and included costs.

In the worked example, 120 USDT is the gross closing result, 113.74 USDT is the modeled cumulative realized result, and 116.74 USDT is the allocated closed-part result. Matching definitions resolves the difference without inventing a missing trade.

Fibonomy provides read-only context for changes inside positions and their account effect. It does not execute trades or provide signals. Use the position story alongside the exchange's execution and ledger records.

See the full story.

Frequently asked questions

Why is realized P&L lower than the profit shown in position history?

Check whether the history shows a gross closing result while the realized field includes incurred fees and funding. Then align the period and position scope. A lower number alone does not prove a calculation error.

Can closed P&L differ from realized P&L?

Yes, depending on the exchange's definitions. The Bybit-style partial-close example gives 116.74 USDT allocated closed P&L and 113.74 USDT cumulative realized because costs are attributed differently.

Is current unrealized P&L included in a realized figure?

Do not assume it is. The still-open quantity has a marked result that can change. Read the exact field definition before combining components.

Should I subtract funding from a net realized figure?

Only if that figure excludes the funding you intend to include. Otherwise you may deduct the same cash flow twice.

What if the records still do not reconcile?

Retain the unexplained difference and identify missing executions, costs, time coverage or account scope. Keep event identifiers and timestamps for a reproducible review rather than guessing the cause.

Sources and scope

Primary documentation checked on 1 November 2026:

All amounts are original hypothetical examples. The allocation example follows the stated exchange documentation; other platforms, contract types and reporting fields may differ. The marked lifecycle result is a snapshot after incurred costs, not a final exit guarantee.