Methodology

LiquiScope is built on verifiable on-chain data. Every metric published on the leaderboard is derived from Meteora DLMM position events indexed directly from Solana mainnet-beta. This page explains how we calculate each metric.

Current versionv1.0.0

PnL Calculation

PnL = claimed_fees + unclaimed_fees + current_value − total_deposits

Total Deposits — Sum of all USD values deposited into the position via OpenPosition and AddLiquidity events, priced at the time of deposit using Jupiter Price API.

Claimed Fees — Cumulative fees collected through ClaimFees events, converted to USD at claim time.

Unclaimed Fees — Fees accrued but not yet claimed, estimated from pool fee rates and position liquidity share.

Current Value — Mark-to-market value of remaining liquidity in the position, priced at current token prices.

Impermanent Loss (IL)

IL = HODL_benchmark − (current_value + claimed_fees)

The HODL benchmark represents what the wallet would have if it simply held the deposited tokens without providing liquidity. A positive IL means the LP underperformed vs holding; a negative IL means fees exceeded the opportunity cost.

Smart-Score

Smart-Score is a composite ranking metric (0–100) that evaluates LP performance across five dimensions. Weights are configured externally and can be updated without code changes. The table below shows the baseline components; v1.1 refinements follow.

FactorWeightDescription
PnL (90d)45% (v1.1)Realized profit normalized against cohort
Win Rate30% (v1.1)% of closed positions that were profitable
Hold Time15%Median position duration — longer = more committed
Drawdown⁻¹excluded (v1.1.1)Suspended: no equity-curve source yet — a flat weight granted everyone free points; returns with a data source
Tenure10%Time since first seen on-chain — rewards consistency

Smart-Score v1.1

Version 1.1 refines three aspects of the formula. Component weights are unchanged — what changed is how each component is measured. Activation is gated by the mandatory backtest on the public signal track record; until it confirms non-worse ranking quality, version 1.0 remains active (see the methodology changelog).

  • Capital-weighted win rate: profitable closed positions are weighted by deposited capital, so one $50,000 win counts more than ten $50 wins.
  • Capital efficiency instead of hold time: fees earned per dollar of capital per day, log-scaled — replacing the old "longer hold = better" bias that rewarded idle liquidity.
  • Eligibility filters: wallets with fewer than 3 closed positions or a median position under $10 are marked ineligible and their score is halved — never inflated.
  • Cohort normalization: wallets are percentile-ranked within their style cohort (scalp < 1 day, mid-term < 7 days, passive ≥ 7 days by median hold), falling back to the global ranking for cohorts under 5 members.
  • New anti-gaming check: a burst of 5+ positions opened in the same pool on the same day is flagged as a wash-trading pattern and penalized.

All thresholds are configuration, not code. Formula selection is controlled by the SCORER_FORMULA setting (v1.1 — including cohort normalization and the burst check — activates after the ranking backtest passes; cohort percentiles are computed over the current scoring batch). Changes are versioned in the methodology changelog.

Smart-Flow Detection

A "smart inflow" is detected when a wallet with Smart-Score ≥ 70 opens or adds liquidity to a pool. An alert is triggered when ≥ 3 such wallets enter the same pool within a 60-minute window.

  • Threshold: Score ≥ 70 (configurable)
  • Window: 60 minutes (configurable)
  • Min wallets: 3 (configurable)
  • Alert latency: ≤ 30s p95 from on-chain finality

Signal Track Record

Every published smart-flow signal is scored against a hypothetical position entered at detection time: fixed $1,000 notional, symmetric ±50% bin range around the active bin, held for 1h / 6h / 24h / 7d. All figures are estimates and marked as such.

ComponentModel
FeesConservative: pool volume24h × base fee / TVL, held constant over the horizon. Dynamic fees ignored (they are typically higher).
Impermanent lossStandard concentrated-liquidity range value function vs HODL, using the relative pair price change measured via Jupiter prices at signal time and at horizon.
PnLFees + IL on the fixed notional.
Category benchmarkSignal fee APR vs the median APR of pools with the same bin step at computation time (a proxy for a random same-category entry).

Data Sources

  • Helius Enhanced TransactionsPrimary ingestion source for position events via webhooks
  • Meteora REST APIPool snapshots and state verification (rate-limited to 30 RPS)
  • Jupiter Price APIHistorical and real-time token prices for USD valuation
  • Solana Mainnet-betaAll data originates from on-chain transactions — no self-reported inputs