FIFO realized and unrealized PnL
Returns FIFO realized + unrealized PnL for the wallet over the specified window. Lot-based matching: buy lots pushed in time order, each sell matches against the earliest open lots and realizes proceeds − cost_matched.
The response always includes a warning field:
basic FIFO realized PnL; full cost-basis (cross-wallet, tax-lot, transfer-aware) ships in Phase 8
This is intentional — FIFO is a good approximation for single-wallet trading but is not suitable for tax calculations or cross-wallet strategies. Full PnL ships in Phase 8.
Response cached 60 seconds.
See Wallet portfolio.
Authorizations
Preferred for swaps-api endpoints (/swaps/*, /stats/*, /trending, /pool-events).
Path Parameters
Wallet address (base58, 32–44 characters).
Query Parameters
Time window to compute PnL over.
30d, 90d, 1y, all Filter to a single DEX by integer ID. See DexId for the mapping.
Response
FIFO PnL summary
FIFO realized + unrealized PnL for a wallet. Includes a warning pointing to Phase 8 for full multi-lot PnL.
The time window used (all, 30d, 90d, 1y).
Total FIFO realized PnL in SOL across all closed positions.
Unrealized PnL in SOL on remaining open lots.
Total SOL volume traded.
Fraction of sells that were profitable (0.0–1.0).
Number of sell transactions included.
Always present. Explains that this is basic FIFO PnL and that full cost-basis ships in Phase 8.
Realized PnL in USD via the Pyth oracle. null when oracle unavailable.
Unrealized PnL in USD via the Pyth oracle. null when oracle unavailable.
Pyth SOL/USD oracle snapshot used for USD conversion.

