Documentation / P&L Tracking

P&L Tracking

How realized and unrealized profit and loss are calculated

The P&L Components

P&L is broken into the same components you'll see in Trade Detail, the Trades Summary, and Statistics:

  • Unrealized P&L: mark-to-market profit/loss on your open positions
  • Gross Realized P&L: profit/loss locked in by closing positions, before fees
  • Commissions: total fees (shown as a negative number)
  • Realized P&L: Gross Realized + Commissions: closed P&L, net of fees
  • Net P&L: Realized + Unrealized, the complete picture

Realized P&L & Cost Basis

Realized P&L is tracked per instrument, in execution order, using a weighted-average cost basis, not FIFO lot matching:

  • Adding to a position accumulates its total cost.
  • Closing some or all of a position realizes P&L on the closed quantity against the position's average cost; any remaining position carries that running average forward.
  • The math is sign-aware, so it behaves correctly whether a leg is long (a debit) or short (a credit), and across all the executions of an adjusted trade.

Each instrument's contract multiplier is applied: equity options represent 100 shares, so a $2.50 option is $250 per contract; futures and other instruments use their own multipliers.

One exception: the Statistics Realized in Period view uses FIFO lot matching instead, so it can attribute partial closes to a specific date range. For trades partially closed across multiple periods, that figure can differ slightly from the weighted-average total shown here and in the Trades Summary.

Unrealized P&L

Unrealized P&L marks your open positions to current prices:

  • For each open leg: (current price − average entry price) × net quantity × multiplier. Net quantity and average entry are both derived from your executions, so adjustments and partial fills are reflected automatically.
  • For stock-with-options trades, the bare share holding is marked too: (current underlying price − entry price) × shares.

Each option's current value follows the pricing rule below. If a required price is missing — including when the underlying stock price isn't available — unrealized P&L is shown as "—" rather than a misleading number.

Zero-Bid Options & Missing Data

An option's current value for P&L follows a three-way rule, used everywhere the app prices options (P&L, Statistics, the delta and P&L monitors, and historical queries):

  • Bid > $0 → the bid/ask midpoint
  • Bid ≤ $0 and a BSM theoretical price is available → the theoretical price
  • Bid ≤ $0 and no theoretical price → shown as "—", never $0

When the provider returns no quote at all for a symbol, the result depends on provider health: if the provider is healthy, a missing far-out-of-the-money contract is treated as worthless ($0); if that symbol failed or the provider is unreachable, it shows "—".

If any open leg of a trade can't be priced this way, the whole trade's P&L is suppressed to "—" rather than silently substituting $0 — so a missing quote never quietly understates your results. (This is also why the Statistics equity curve is suppressed when a trade in view can't be priced.)

One deliberate exception: the payoff diagram treats a zero-bid option as worth $0, since no bid means no buyer. A payoff diagram and live P&L can differ for a zero-bid leg.

Commission Tracking

Commissions are summed across a trade's executions and folded into Realized and Net P&L. Where they come from depends on the trade's source:

  • Broker-synced trades: the actual commissions reported by your broker
  • CSV-imported trades: the values in the import file
  • Model / backtesting trades: your default rates from Settings → Trading Preferences

Sign convention: commissions are stored as negative values (a fee paid), so they reduce Net P&L correctly; a positive value represents a rebate. For example, -$1.30 means $1.30 in fees.