How REKT CHECK calculates the damage

Documented against the production engine. If code and docs ever disagree, the docs are the bug.

Transaction classification

Each retrieved transaction is classified by type before any math happens. Only swap-style trade legs become buys and sells. Wallet-to-wallet transfers, airdrops, staking rewards, mints and anything the provider could not classify are recorded as excluded transactions and never enter a position.

Native SOL and known stablecoins are treated as the pricing side of a trade, not as speculative positions.

SOL and wrapped SOL

Native SOL and wrapped SOL are the same economic asset, so they are normalized into a single pricing side. This prevents a wrap or unwrap step inside a swap from being counted as a second trade, and prevents the same SOL from being spent twice in cost basis.

Routed swaps and quote-leg netting

Aggregators frequently route one trade through several intermediate hops. REKT CHECK nets the quote legs of a routed swap so a single economic trade produces a single buy or sell, rather than one entry per hop. Intermediate routing legs are not treated as independent positions.

Historical pricing at transaction time

A trade is valued using the price near its own transaction timestamp, never today's price. Resolved prices are stored durably, so re-analyzing the same history produces the same USD figures rather than drifting with the market.

  • Recent periods use finer-grained candles; older periods fall back to daily candles.
  • A price that cannot be resolved stays unavailable — it is never substituted with zero or with the current price.
  • Recent Moves USD amounts are approximate trade-time values, limited by candle granularity.

Pricing confidence gate

An analysis is only scored when enough of its trade history could actually be priced. At least 85% historical price coverage is required, and results above 98% are treated as full confidence. Below the minimum, REKT CHECK refuses to publish a score instead of reporting a misleading one.

Engine and pricing versions

Every stored analysis records the engine and pricing versions that produced it. Older snapshots keep their original labels and are never silently re-presented as current, and rankings only compare results produced by compatible versions.

Spam and airdrop exclusion

Tokens that arrive unsolicited, carry spam-like names or URLs in their metadata, or only ever appear as inbound dust are excluded. The count of excluded tokens is reported in analysis coverage.

Spend below $1 is treated as dust and excluded from analytics entirely.

Position reconstruction

Remaining trade legs are grouped per token mint, sorted by time, and replayed. Each buy adds token amount and USD cost. Each sell removes tokens at the running average cost, moving that share of cost into cost-of-sold and the received USD into proceeds.

A position is CLOSED when the remaining balance falls below 1% of everything bought; otherwise it is OPEN. A position is measurable only when acquisition cost and the relevant price are both known and it clears the minimum position cost of $10.

Cost basis — weighted average cost

REKT CHECK uses weighted average cost for every token, with no mixing of methodologies. When multiple measurable purchases of the same token occur, the running average acquisition cost is total cost divided by total amount bought. When measurable dispositions occur, cost is released at that running average.

These analytics are not intended for tax accounting. Weighted average cost is not the methodology every jurisdiction expects, and coverage is not guaranteed to be complete.

Realized vs unrealized P&L

For a CLOSED position, profit and loss is proceeds minus cost-of-sold — this is realized. For an OPEN position, profit and loss compares total cost against current value of the remaining balance plus any proceeds already taken — this is unrealized and is labelled as such wherever it is shown.

Returns beyond ±50,000% are treated as bad data rather than a real trade.

Best Realized Trade

Selection

The position with the largest positive realized USD profit — dollars, not percentage. A +1,000% gain worth $50 does not outrank a +$5,000 realized exit. Percentage is always shown, but only as secondary information.

  • Realized only: the wallet must actually have sold, and only the sold quantity counts.
  • Requires a measurable USD acquisition cost — a free airdrop has no cost basis and can never qualify.
  • Must clear the $10 minimum cost basis on the sold quantity.
  • Spam tokens and excluded transaction types cannot qualify.
  • A partially sold position reports its realized result and is labelled as partially sold.

Worst Realized Trade

Selection

The position with the largest negative realized USD loss. A $20 bag that fell -100% is never called your worst trade when a closed position lost $500. When nothing was sold at a reliable loss, we say there is no measurable realized loss instead of substituting an open position.

Unmeasurable positions, spam tokens, airdrops and transfers are excluded, so a worthless token someone sent you unprompted can never become your worst trade.

Open positions (not a primary receipt)

Selection

The largest unrealized USD loss still held, valued at the current price against the cost basis of the remaining quantity only. This is NOT shown as one of the primary Receipts on the result page and never competes in trade rankings or the League Records — it only feeds the REKT Score, REKT Coach, Wrapped and achievements.

  • A missing current price excludes the bag — it never becomes a fake -100% loss.
  • Cost basis stays attached to the tokens still held; sold quantity is accounted separately.

Trading Win Rate

Formula

win rate = profitable measurable CLOSED positions ÷ measurable CLOSED positions

  • Open positions are excluded — unrealized moves are not wins.
  • Unmeasurable positions (missing cost or price) are excluded.
  • Airdrops, transfers, staking rewards and spam are excluded.
  • A partially sold position is still OPEN and does not count until it closes.
  • With no measurable closed positions the win rate is reported as unavailable, not 0%.

Biggest Fumble — potential upside missed

A fumble is a measurable sale followed by a supported price increase inside a bounded post-sale window. It is potential upside missed, not money lost: the trader took their proceeds and the token later traded higher.

  • Sales below $10 can never be a fumble.
  • The post-sale peak window is 30 days by default (supported windows: 7, 30, 90 days). It is never an unbounded lifetime all-time high.
  • The peak must be at least 20% above the sale price.
  • At most 10 sales are checked per analysis, largest first.
  • Ranking is by largest USD potential upside missed, so a tiny sale that later mooned cannot outrank a materially larger one.
  • If reliable post-sale pricing is unavailable, no fumble is invented — the section reports it as unavailable.

Paper Hands, Dead Bags, Round Trips

Paper Hands

Positions fully exited within 72 hours of entry. Requires timestamps for the first buy and the closing sell. Airdrops and transfers cannot qualify.

Dead Bags

Token positions that were acquired and then abandoned at a zero balance — the clearest on-chain fingerprint of a bag that went to zero. Requires the token account snapshot; spam tokens are excluded.

Round Trips

Tokens that were fully exited and then bought again. Requires at least one complete exit followed by a later measurable buy of the same mint.

All three are deterministic counts over classified trades — no sampling, no randomness, no model estimates.

REKT Score

The score is a weighted sum of factor severities rescaled to 0–100 across the factors that actually had data. Factors with missing metrics are skipped and their weight is removed from the range, so a wallet is never punished for data that could not be derived.

FactorWeightDirection
Dead bags22more rekt
Losing exits20more rekt
Trading win rate18more rekt
Paper hands16more rekt
Worst bag14more rekt
Round trips12more rekt
Transaction churn10more rekt
Microcap exposure10more rekt
Diamond hands-18less rekt
Wallet longevity-8less rekt
Best trade-6less rekt

Each factor contributes at most its own weight — that is the contribution cap. Wallets with fewer than 2 measurable trades are not scored at all.

Shared score math vs chain-specific gates

The factor table above is the shared score math: identical factors, identical weights and identical rank bands on every supported chain. Nothing in the formula is chain-aware.

What is chain-specific is the confidence gate that decides whether a reconstruction is good enough to publish a score at all, and the minimum position size that counts as a real trade. Solana is scored under the shared gate; the beta EVM chains each require more classified trades, more closed measurable positions and higher pricing coverage before a score is shown. Exact per-chain values are published on the Chains page.

A withheld score on a beta chain is a statement about our data quality, not about the wallet. Receipts and holdings may still be shown while the score is not.

Degen Type and Achievements

Degen Type is a deterministic archetype derived from the same measurable metrics — the same inputs always produce the same archetype. Achievements unlock on fixed public thresholds, for example 10 dead bags, 10 paper hands, 5 round trips or holding past 90 days. Achievements that depend on unavailable metrics simply stay locked.

League Records eligibility

  • Public entries are opt-in only; nothing is published without the wallet explicitly opting in.
  • A record position needs at least $25 of USD cost basis.
  • Absolute USD P&L must be at least $5.
  • Ranking is always by supported USD P&L; percentage return is a secondary display.
  • Realized results are the default view; unrealized entries appear only under ALL and are labelled open.
  • Records are written server-side from stored analyses — a client can never submit a P&L figure or a rank.

Analysis coverage and pricing limits

  • At most 2,500 transactions and 25 history pages are read per analysis; deeper history is reported as truncated.
  • Historical prices are not available for every token or every timestamp; affected positions are marked unmeasurable rather than estimated.
  • Unsupported DEX behaviour and unclassified transactions are counted as excluded, not silently dropped.
  • Provider rate limits can reduce coverage for a single run; a refresh can improve it.

REKT CHECK always prefers showing partial coverage over inventing missing information.

Back to docs