Your trade was green. Your closed PnL says loss. Here's why.
I stared at the same trade for ten minutes before I believed what I was looking at.
Unrealized PnL: +$140. Green, confident, exactly what I expected. I closed the position. Ten seconds later, my closed PnL read –$18.
Same trade. Same exchange. Two completely different numbers.
My first thought was that I'd fat-fingered the close. I hadn't. My second thought was that the exchange had a bug. It didn't. What I'd actually run into is something almost every crypto trader hits eventually, usually right after a trade that "should" have been a win: the number you see while a position is open and the number you get once it's closed are not measuring the same thing.
If you've ever asked yourself why did I lose money when my trade was green, this is for you.
Closed PnL vs Unrealized PnL: The Difference Nobody Explains Upfront
Unrealized PnL is a snapshot. It's the exchange telling you: "if you closed this position right now, at this exact price, before any fees, this is roughly where you'd land." It's an estimate, recalculated every second, and it's built to look clean and simple on your dashboard.
Closed PnL (realized PnL) is what actually hit your account after the trade was closed — after every fee, every funding payment, and every price adjustment the exchange applies at execution.
The gap between the two numbers is not a glitch. It's every cost that unrealized PnL doesn't bother showing you until it's too late to react.
Does Exchange PnL Include Fees?
Not the way you'd assume. Your unrealized PnL widget almost never subtracts:
- The opening trading fee
- The closing trading fee (charged at execution, after you've already committed)
- Funding payments accrued while the position was open
- Slippage between the price you saw and the price you actually got filled at
Each one is small. Stacked together on a short-term trade, they can flip a position from green to red without your entry or exit thesis being wrong at all. This is one of the most common reasons crypto PnL doesn't match balance — the fees were always going to apply, you just weren't shown a running total of them.
Funding Fees: The Silent PnL Killer
If you're trading perpetual futures, funding is the one that catches people off guard the most. Every few hours (commonly every 8 hours depending on the exchange), funding gets paid between longs and shorts to keep the perpetual price anchored to spot. If you're on the paying side of that funding rate, it gets deducted automatically — no confirmation, no notification, no line item on your unrealized PnL chart.
Hold a position through two or three funding intervals during a stretch of high funding rates, and you can watch a technically correct trade quietly bleed. This is exactly how funding fees affect PnL in a way that's invisible until the position closes and the deduction is already final.
Mark Price vs Last Price: Why the Numbers Don't Match
Here's the one that confused me the most early on. Your unrealized PnL is usually calculated against the mark price — a smoothed, manipulation-resistant reference price the exchange uses internally. But the price ticking on your chart, the one you're watching to decide when to close, is the last traded price.
In calm markets, these two are nearly identical, and you'd never notice the difference. In volatile markets, they can diverge meaningfully for short windows. You close based on what the chart shows you; the exchange settles based on mark. That mismatch alone can account for a chunk of the "wait, that's not what I expected" gap.
Hidden Trading Costs in Crypto: The Full List
Putting it all together, here's everything sitting between your unrealized PnL and your actual closed PnL:
- Opening fee (maker or taker)
- Closing fee (maker or taker)
- Funding payments accrued during the hold
- Mark price vs last price divergence at close
- Slippage on execution, especially on lower-liquidity pairs
None of these individually looks dramatic. Combined, on a trade held for even a few hours, they're often the entire difference between the green number you were watching and the red number you actually got.
How to Calculate Your Real Net Crypto PnL
The honest formula looks like this:
Net PnL = (Exit Price − Entry Price) × Position Size − Opening Fee − Closing Fee − Funding Paid ± Slippage
Most exchange dashboards don't show you this formula in one place — they show unrealized PnL on one screen and a fee history buried three menus deep on another. Reconstructing it by hand, trade by trade, is exactly the kind of manual reconciliation that makes people give up on journaling their trades at all.
Why This Isn't a You Problem
If you've been quietly assuming you're bad at reading your own dashboard, you're not. The dashboards are built to show you the exciting number in real time and the true number only after it's too late to act on it. That's not a conspiracy — it's just how exchange UIs are designed, optimized for engagement, not for accuracy.
This exact gap — watching a green trade turn into a red closed PnL, with no visibility into why — is the specific frustration that led me to build Traqr. Not to promise better trades, but to actually show the full picture: fees, funding, and true net PnL, reconciled in one place instead of scattered across exchange menus. It doesn't predict anything or tell you what to do next — it just shows you, accurately, what already happened.
The Takeaway
Your trade wasn't wrong. Your dashboard just wasn't telling you the whole story until the moment it was too late to matter. Once you know where the gap between unrealized and closed PnL actually comes from — fees, funding, mark price — the numbers stop feeling random, even when they still sting.