Trader PnL calculation

This doc describes how you can calculate a trader’s total P&L

Term Definition
PnL currency The currency into which the entries are converted to.
Currency Trader income or outcome currency
Total Credit Sum of incomes of the trader in the currency (without fees)
Total Credit Fees Sum of fees applied to incomes of the trader in the currency
Total Credit Value (Total Credit + Total Credit Fees) estimated in pnl currency using the latest market price
Total Debit Sum of outcomes of the trader in the currency (without fees)
Total Debit Fees Sum of fees applied to outcomes of the trader in the currency
Total Debit Value (Total Debit + Total Debit Fees) estimated in pnl currency
Average Buy Price Total Credit Value / (Total Credit + Total Credit Fees)
Average Sell Price Total Debit Value / (Total Debit + Total Debit Fees)

Configuration

To enable the PnL calculation for traders you need to setup at least one destination currency in the PNL_CURRENCIES variable.

Environment Variable Example Description
PNL_CURRENCIES usd,btc List of pnl currencies
CONVERSION_PATHS usd/krw:_usdt/usd,usdt/krw this will convert usd to krw using the last price of markets usd/usdt (reversed) and usd/krw By default conversions are made using the direct market (BTC to USD use latest market price of btc/usd). If a direct conversion market is missing you can specify a conversion path setting this variable. Several paths can be defined with semi-colon (;) separation.

Formulas

Calculate user Realized PNL

For one currency

Realized PNL Value = Total Debit Value * (Average Sell Price - Average Buy Price) / Average Sell Price

Calculate user Unrealized PNL

For one currency

Asset Current Value = Balance * Last Market Price
Asset Average Buy Value = Balance * Average Buy Price
Unrealized PNL Value = Asset Current Value - Asset Average Buy Value
Unrealized PNL Percentage = (100 * Unrealized PNL Value) / Asset Average Buy Value

Calculate user Total PNL

For one currency

Total PNL = Realized PNL + Unrealized PNL

Total user assets PNL


Total Asset Average Value = SUM(Asset Average Buy Value)
Total Asset Current Value = SUM(Asset Current Value)
Total PNL Value = Total Asset Current Value - Total Asset Average Value
Total PNL Percentage = (100 * Total PNL Value) / Total Asset Average Value

1) Initial State

Currency Balance Total Credit Total Credit Fees Total Credit Value Total Debit Total Debit Fees Total Debit Value Average Buy Price Average Sell Price Realized PNL Unrealized PNL Total PNL Average PNL Price Total PNL Value
BTC 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2) Deposit 3 BTC, Portfolio Currency = ETH, Last Market Price (BTC/ETH) = 10 000

Currency Balance Total Credit Total Credit Fees Total Credit Value Total Debit Total Debit Fees Total Debit Value Average Buy Price Average Sell Price Realized PNL Unrealized PNL Total PNL Average PNL Price Total PNL Value
BTC 2.994000 2.994000 0.006000 30 000 0 0 0 10 000 0 0 0 0 10000 29940

Average Buy Price = 30000 / (2.994000 + 0.006000) = 10000
Total PNL Value = Total Credit * Average Buy Price -Total Debit Value = 2.994000 * 10 000 - 0 = 29940
Average PNL Price = Total PNL Value / Balance = 29940 / 2.994000 = 10000

3) Sell 1 BTC, Portfolio Currency = ETH, Last Market Price (BTC/ETH) = 9000

Currency Balance Total Credit Total Credit Fees Total Credit Value Total Debit Total Debit Fees Total Debit Value Average Buy Price Average Sell Price Realized PNL Unrealized PNL Total PNL Average PNL Price Total PNL Value
BTC 1.994000 2.994000 0.006000 30 000 1 0 9000 10 000 9000 -1000 -1994 -2994 10501.5045135 20940

Average Sell Price = 9000 / (1 + 0.006000) = 9000
Realized PNL = Total Debit Value * (Average Sell Price - Average Buy Price) / Average Sell Price = 9000 * (9000 - 10 000) / 9000 = -1000
Unrealized PNL = Balance * Last Market Price (BTC/ETH) - Balance * Average Buy Price = 1.994000 * 9000 - 1.994000 * 10 000 = - 1994
Total PNL = Realized PNL + Unrealized PNL = -1000 + (-1994) = -2994
Total PNL Value = Total Credit * Average Buy Price - Total Debit Value = 2.994000 * 10 000 - 9000 = 20940
Average PNL Price = Total PNL Value / Balance = 20940 / 1.994000 = 10501.5045135