Wallet analysis API
GET/wallets/:chain/:address/analysis
A wallet's PnL, win rate, volume, return distribution and PnL timeline over a window, with its labels.
Parameters
| Name | In | Type | Default | Allowed values |
|---|---|---|---|---|
chain | path | string | required | evm:56 (BSC), solana, evm:8453 (Base), evm:4663 (Robinhood Chain) or evm:1 (Ethereum) |
address | path | string | required | Wallet address (BSC) or account (Solana) |
window | query | string | 7d | 1d, 7d, 30d, 90d |
Response
| Field | Type | Meaning |
|---|---|---|
chain, wallet, labels, indexedSince, window | string, string, string[], number, string | As in every wallet answer, its labels, and the window. |
realizedPnlUsd | number | PnL of the window's sells, against each position's all-time average buy price. |
unrealizedPnlUsd, totalPnlUsd | number | Unrealized PnL now, of every position, traded in the window or not (unknown ones count as 0); and the sum. |
boughtUsd, soldUsd, trades, buys, sells, tokens | number | The window's swaps, and the tokens they traded. |
wins, losses, winRate | number, number, number | null | Tokens with realized PnL above and below 0 in the window; winRate is wins / (wins + losses), null without either. |
distribution | object | Tokens sold in the window by realized return (average sell / average buy − 1): gt500, 200to500, 50to200, 0to50, minus50to0, ltMinus50. |
timeline[] | array | t (bucket start, unix ms), realizedPnlUsd, boughtUsd, soldUsd, trades. Hourly for 1d, per UTC day otherwise; ascending, empty buckets left out. |
best[], worst[] | array | Up to 3 positions with the largest realized gain and loss in the window. |
Example
Captured 2026-09-28 18:03 UTC on a test instance, trimmed to the last 2 buckets.
curl -s -H 'Authorization: Bearer <key>' 'https://app.aurelia.build/api/wallets/evm:56/0x3304e22ddaa22bcdc5fca2269b418046ae7b566a/analysis?window=1d'
{
"chain": "evm:56",
"wallet": "0x3304e22ddaa22bcdc5fca2269b418046ae7b566a",
"labels": [
"sniper",
"fresh"
],
"indexedSince": 1790546261920,
"window": "1d",
"realizedPnlUsd": 59.5089770354906,
"unrealizedPnlUsd": 6.776263578034403e-14,
"totalPnlUsd": 59.50897703549067,
"boughtUsd": 1608,
"soldUsd": 60,
"trades": 24,
"buys": 14,
"sells": 10,
"tokens": 3,
"wins": 1,
"losses": 0,
"winRate": 1,
"distribution": {
"gt500": 1,
"200to500": 0,
"50to200": 0,
"0to50": 0,
"minus50to0": 0,
"ltMinus50": 0
},
"timeline": [
{
"t": 1790611200000,
"realizedPnlUsd": 5.95089770354906,
"boughtUsd": 0,
"soldUsd": 6,
"trades": 1
},
{
"t": 1790618400000,
"realizedPnlUsd": 0,
"boughtUsd": 600,
"soldUsd": 0,
"trades": 2
}
],
"best": [
{
"token": {
"address": "0xa9fcda9bd321adeb7cbbbd30ef2dd0ed1d657777",
"symbol": "TAX",
"name": "Tax Token",
"decimals": 18
},
"quote": false,
"trades": 22,
"buys": 12,
"sells": 10,
"unpricedTrades": 0,
"bought": "20118000",
"sold": "9800",
"open": "20108200",
"boughtUsd": 1008,
"soldUsd": 60,
"avgBuyPriceUsd": 0.00005010438413361169,
"avgSellPriceUsd": 0.006122448979591836,
"priceUsd": 0.006,
"priceAt": 1790618400000,
"realizedPnlUsd": 59.5089770354906,
"unrealizedPnlUsd": null,
"totalPnlUsd": 59.5089770354906,
"firstTradeAt": 1790546864920,
"lastTradeAt": 1790618578665
}
],
"worst": []
}
Notes
- Non-quote positions only. Windows are hourly buckets, the newest still filling:
1dis the last 24,7dthe last 168. - From the wallet's own rows, never the chain. Cached 5 s. An unknown wallet answers
200with zeros.