Method
How the numbers are made.
No black boxes. This is exactly how a Grind Report is calculated, and where it can fall short.
FIFO round trips
For every token, buys are queued as lots. When a sell arrives it consumes the oldest lots first. Each consumed lot, or part of a lot, becomes one round trip.
Realized PnL for a round trip is the SOL received for that slice minus the SOL spent on it. Partial sells split proceeds and cost pro-rata, so nothing is double counted.
What counts as a trade
Only swaps where the wallet is the user side, with SOL (or wrapped SOL) on one leg and a token on the other. USDC and USDT legs are converted to SOL at today’s SOL price and labelled.
Plain transfers in or out are not trades. A token received with no buy has no cost basis, and a sell of it is flagged “no buy found” on the 30d range. On shorter ranges, sells of tokens bought before the range are marked “basis before range” and left out of realized PnL.
USD at today’s SOL price
Past trades are valued in SOL from the swap itself. The USD figure multiplies that by the current SOL price. No historical price is guessed.
Fees
Fees are the transaction fee in lamports, which includes any priority fee, summed across swap transactions in the range where the wallet paid. Shown as network and priority fees paid.
The Graveyard
Holdings are read from the wallet’s token accounts. A token is a dead bag when its value is under $1, its liquidity is under $1,000, or its value is down 90% or more versus the wallet’s cost in SOL.
Each is priced with a real Jupiter sell quote for the full balance (3% slippage setting), including price impact and route. If no route exists it shows as unsellable right now. Quotes are information only. GRINDLAB cannot sell anything.
Limits
History is capped at 1,000 swaps per report. Very active wallets may hit the cap on longer ranges, and the report says so.
Multi-hop swaps between two non-SOL tokens, and unusual aggregator routes, may not be parsed. They are counted and flagged. Reports are cached for 60 seconds.
FAQ
Questions, answered.
Frequently asked questions
Do I need to connect my wallet?
No. GRINDLAB never asks you to connect a wallet, sign a message or approve a transaction. You paste a public address and it reads public blockchain data. There is no sign-in.
Can I look at someone else’s wallet?
Yes. Every Solana wallet is public, so any address can be scored. The report page is a shareable link.
How is PnL calculated?
Swaps are matched first in, first out, per token, in SOL terms. A buy is SOL spent, a sell is SOL received. Each closed lot is a round trip, and partial sells are split pro-rata. USD values use today’s SOL price, not historical prices.
What is a round trip?
One buy lot matched to the sell that closed it. A single buy sold in two pieces becomes two round trips, each with its own entry, exit, hold time and result.
What counts as a dead bag in the Graveyard?
A token still held where its current value is under $1, its Jupiter liquidity is under $1,000, or its price is down 90% or more versus the wallet’s cost in SOL. Each one is checked with a real Jupiter sell quote, price impact included.
What does “rent locked” mean?
Every token account holds a small SOL deposit. GRINDLAB reads the current rent-exempt minimum from the network and shows how much sits in the accounts holding your dead bags. It is information only.
Why does my report say “showing the latest swaps”?
History is capped at 1,000 swaps (10 pages) per report so it stays fast. Very active wallets can hit that cap on longer ranges. Shorter ranges are always complete.
Which swaps are left out?
Plain transfers, and multi-hop swaps between two non-SOL, non-stablecoin tokens that cannot be valued in SOL. Left-out swaps are counted and flagged on the report.