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.
| Factor | Weight | Description |
|---|
| PnL (90d) | 45% (v1.1) | Realized profit normalized against cohort |
| Win Rate | 30% (v1.1) | % of closed positions that were profitable |
| Hold Time | 15% | 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 |
| Tenure | 10% | 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.
| Component | Model |
|---|
| Fees | Conservative: pool volume24h × base fee / TVL, held constant over the horizon. Dynamic fees ignored (they are typically higher). |
| Impermanent loss | Standard concentrated-liquidity range value function vs HODL, using the relative pair price change measured via Jupiter prices at signal time and at horizon. |
| PnL | Fees + IL on the fixed notional. |
| Category benchmark | Signal 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