What is PnL?
What is PnL?
PnL stands for Profit and Loss. It is the measure of how much money you have made or lost on your trades. Understanding PnL is essential for evaluating your trading performance and making informed decisions about your strategy.
Realized vs Unrealized PnL
There are two types of PnL, and the distinction between them is critical.
Realized PnL
Realized PnL is the profit or loss from trades that have been closed. Once you sell an asset you bought or close a futures position, the resulting gain or loss becomes “realized.” It is locked in and cannot change.
Example:
- You buy ETH at $2,000 and sell at $2,100.
- Realized PnL = $2,100 - $2,000 = +$100 (before fees).
- This $100 is yours. It does not change regardless of what ETH does next.
Unrealized PnL
Unrealized PnL is the paper profit or loss on positions that are still open. It changes constantly as the market price moves. Unrealized PnL is not real money until you close the position.
Example:
- You buy ETH at $2,000. The current price is $2,150.
- Unrealized PnL = $2,150 - $2,000 = +$150.
- But if ETH drops to $1,950 before you sell, your unrealized PnL becomes -$50.
- The profit was never real until you closed the trade.
Why the Distinction Matters
Many traders make the mistake of treating unrealized gains as real money. They see their portfolio up 20% and feel wealthy, but a market correction can erase those gains overnight. Only realized PnL impacts your actual account balance.
In grid trading, this distinction is especially important. A grid bot may show significant unrealized losses during a price dip (because it has bought at multiple levels above the current price), while simultaneously having healthy realized PnL from completed TP cycles.
How to Calculate PnL
Basic PnL Calculation
For a long position: PnL = (Exit Price - Entry Price) x Quantity
For a short position: PnL = (Entry Price - Exit Price) x Quantity
Including Fees
Real PnL must account for all trading costs: Net PnL = Gross PnL - Trading Fees - Funding Costs
Example:
- Buy 0.5 ETH at $2,000 (cost: $1,000).
- Sell 0.5 ETH at $2,100 (proceeds: $1,050).
- Gross PnL: +$50.
- Trading fees (0.02% maker, both sides): $1,000 x 0.02% + $1,050 x 0.02% = $0.41.
- Funding paid (held position for 24 hours at 0.01%): $1,000 x 0.01% x 3 = $0.30.
- Net PnL: $50 - $0.41 - $0.30 = $49.29.
Calculating ROI
ROI (Return on Investment) expresses your PnL as a percentage of your initial capital:
ROI = (Net PnL / Initial Capital) x 100
Example:
- Initial capital: $5,000.
- Net PnL after one month: $250.
- ROI = ($250 / $5,000) x 100 = 5% per month.
Annualized ROI
To compare strategies over different time periods, annualize your ROI:
Annualized ROI = Monthly ROI x 12 (simple method)
Or for compound returns:
Annualized ROI = ((1 + Monthly ROI) ^ 12 - 1) x 100
Using the 5% monthly example: (1.05^12 - 1) x 100 = 79.6% annualized (compounded).
PnL in Grid Trading
Grid bots have a unique PnL profile:
Realized PnL accumulates with every completed buy-TP cycle. Each cycle adds a small, consistent profit. Over time, these add up.
Unrealized PnL fluctuates based on open positions. When the price is near the bottom of the grid, unrealized PnL may be negative because positions bought at higher levels are underwater. When the price is near the top, unrealized PnL is positive.
Total PnL = Realized PnL + Unrealized PnL. A healthy grid bot typically shows growing realized PnL that eventually offsets any unrealized losses.
Summary
- PnL (Profit and Loss) comes in two forms: realized PnL from closed trades is locked in, while unrealized PnL from open positions fluctuates with the market.
- Net PnL must include all costs (trading fees, funding rates) for an accurate picture, and ROI expresses your PnL as a percentage of initial capital.
- Grid bots build steady realized PnL from completed TP cycles while unrealized PnL fluctuates with price, making total PnL the key metric to monitor.
Next Step
An important concept for understanding your worst-case performance: What is Drawdown?
✨ Was this article helpful?
Ask your questions on Ask on Discord →