Inverse Contract PnL: Why Your Coin-Margined Trades Don't Add Up

How PnL actually works on inverse (coin-margined) contracts, the math most journals get wrong, and how to check whether your numbers are real.

If you trade coin-margined perpetuals or futures, you have probably had this moment: the exchange says you made one number, your journal or spreadsheet says another, and neither matches what actually landed in your wallet. This is rarely a data problem. It is usually a math problem, because inverse contracts do not work like the linear contracts most tools were built for.

This post walks through the actual mechanics, with numbers you can check against your own fills.

Linear vs inverse in one paragraph

A linear contract (BTCUSDT on most venues) is quoted in USD and settled in USDT. You buy 0.2 BTC worth of exposure, price moves $5,000, you make or lose 0.2 × 5,000 = 1,000 USDT. Quantity times price change. Every spreadsheet formula and most journaling tools assume this shape.

An inverse contract (BTCUSD on Bybit, Deribit, BitMEX and others) flips it. The contract is sized in USD (each contract is worth $1 on Bybit, $10 on Deribit), but margin and PnL settle in the coin itself. You post BTC as collateral, and your profit or loss arrives as BTC. That one change breaks the linear formula.

The actual formula

For a long position of N dollars of notional on an inverse contract:

PnL (in coin) = N × (1/entry − 1/exit)

A short is the same with the sign flipped. The 1/price terms are why traders call these contracts non-linear: your PnL depends on the reciprocal of price, and reciprocals curve.

Worked example. You go long $10,000 of BTCUSD at an entry of $50,000.

  • Price rises to $55,000. PnL = 10,000 × (1/50,000 − 1/55,000) = +0.01818 BTC. At the exit price that is worth about $1,000.
  • Price falls to $45,000 instead. PnL = 10,000 × (1/50,000 − 1/45,000) = −0.02222 BTC. At that exit price, also about $1,000.

Look at the coin amounts. The same $1,000 move for and against you is +0.01818 BTC on the way up and −0.02222 BTC on the way down. A long inverse position earns you fewer coins in a rally than it costs you in a selloff of the same dollar size. Shorts get the mirror image, which is one reason miners and long-term holders like inverse shorts as a hedge.

The double hit nobody prices in

There is a second effect stacked on top. Your margin is BTC. When a long goes against you, you lose BTC from your collateral, and the remaining collateral is also worth fewer dollars because the price just fell. Measured in dollars, your account drops faster than the position loss alone suggests. Measured in BTC, a winning long grows your stack slower than you might expect.

Neither view is wrong. They are two different units, and which one matters depends on whether you are trying to grow a dollar balance or a coin balance. A journal that only shows you one of them is answering half the question. This is why measuring PnL in BTC or USDT as a first-class choice matters more for inverse traders than for anyone else.

How tools get it wrong

Stock-first journals and most spreadsheets fail on inverse contracts in predictable ways:

Treating contract count as coin quantity. Your fill export says quantity 10,000, meaning ten thousand $1 contracts. A linear-minded tool multiplies 10,000 by the price change and reports a PnL in the millions. If your journal has ever shown you a comically large number on a Bybit inverse trade, this is why.

Computing in dollars and ignoring settlement. The tool works out a dollar PnL from entry and exit and stops there. But your fees were charged in BTC, your funding paid or received in BTC, and your realized PnL landed in BTC. Valuing those coin amounts at the wrong timestamp (or not at all) quietly shifts the result.

Breaking on partial closes. Inverse PnL realizes in coin as you scale out. A tool that averages entries and exits in dollar space and settles once at the end will drift from the exchange's own accounting on any trade with more than one fill.

The result is a journal you stop trusting, and a journal you don't trust is a journal you stop using.

How to check your own numbers

You do not have to take any tool's word for it, ours included. Pick one closed inverse trade and run the check by hand:

  1. Take the notional in dollars (contracts × contract size).
  2. Apply the formula above with your average entry and exit.
  3. Compare against the exchange's closed-PnL figure in coin. They should match to within fees and funding.
  4. Then check your journal against both.

If step 4 fails, every downstream stat computed from that trade (your R-multiples, win rate, profit factor) inherits the error, and no amount of charting on top can fix it.

Funding makes it worse

Perpetuals add funding payments every eight hours, and on inverse contracts those payments also settle in coin. A position that looks flat on price can be meaningfully up or down once a week of funding is counted, and counting it means valuing coin-denominated payments correctly. The two problems compound: get the settlement currency wrong and you get funding wrong for free.

What correct looks like

A journal that handles inverse contracts properly does a few specific things:

  • Computes PnL in the settlement currency first, using reciprocal math, and converts for display afterwards.
  • Records fees and funding in the currency they were actually charged in.
  • Reconciles per fill, so partial closes match the exchange's own realized-PnL accounting.
  • Lets you view the result in dollars, USDT, or the coin, because inverse traders legitimately think in either unit.

Viktury was built around this math from the start, because its founder traded these contracts and got burned by tools that weren't. We support inverse markets on Bybit and Deribit among others, and the numbers reconcile against the exchange's own.

Start your free trial at Viktury and check your own inverse trades against it. Or run the manual check above on your current tool first; it takes five minutes and it is worth knowing.