Skip to main content
GET
/
indicator
/
pnl
/
trader-unrealized-profit-margin
On-chain Trader Unrealized Profit/Loss Margin
curl --request GET \
  --url https://api.cryptoquant.com/v2/indicator/pnl/trader-unrealized-profit-margin \
  --header 'Authorization: Bearer <token>'
{
  "status": {
    "code": 123,
    "message": "<string>"
  },
  "result": {
    "window": "<string>",
    "data": [
      {
        "date": "<string>",
        "nupl_1m_3m": 123
      }
    ]
  }
}

What it measures

Percentage difference between current price and the Trader Realized Price — the unrealized profit or loss of active traders expressed as a %

How to interpret it

Extremely high margins = traders likely to start selling (overheating). Deeply negative margins = traders underwater, capitulation may be near. Crossing above/below 30-day MA = confirms positive/negative price momentum.

Key thresholds

40% = elevated, correction risk; ~7–8% = STH local top signal; 0% = breakeven (strong support in bull); –5% to –18% = distressed; –17% to –18% = extreme (seen at Aug 2024 crash and July 2024 correction, both price bottoms)

How to use it

Best as a contrarian indicator at extremes. Deeply negative = capitulation approaching. Extremely positive = overheating. Also watch vs. 30-day MA — crossing below confirms negative momentum.

Run this metric in CryptoQuant Analytics

Authorizations

Authorization
string
header
required

For each API request, include the Authorization HTTP header with Bearer {access_token}.

Query Parameters

window
string
default:day

Time interval for aggregation.

from
string

Starting time, formatted as YYYYMMDDTHHMMSS (UTC). If window=day, YYYYMMDD is also accepted.

to
string

Ending time, formatted as YYYYMMDDTHHMMSS (UTC). If window=day, YYYYMMDD is also accepted.

limit
integer

Maximum number of data rows to return.

Response

200 - application/json

Bitcoin price valuation

status
object
required

Returned with every response; indicates whether the request was successful.

result
object
required