Yield Score and Risk Grade
Two numbers, two questions, deliberately never combined.
Why there are two
The score measures how much fee opportunity a pool offers. The grade measures how you can lose in it. Blending them into one number destroys both.
A thin, three-hour-old pool with enormous fee yield can be a 90 and an F at the same time. That combination is information. A single “medium” would have hidden it.
The six components
The opportunity score is a weighted blend of six measured components. These are the weights the implementation uses:
| Component | Weight | What it measures |
|---|---|---|
| Fee efficiency | 30% | 24h fees divided by TVL. The core driver of LP return. |
| Volume intensity | 20% | 24h volume divided by TVL. Turnover leads fees. |
| Volume acceleration | 15% | 24h volume against the 7-day daily mean, log-scaled. |
| Fee stability | 15% | One minus the coefficient of variation of daily fee yield over 7 days. |
| Depth quality | 10% | Share of TVL sitting in the active tick range. |
| Trade breadth | 10% | Distinct swappers over 24h, log-scaled. Separates real flow from one bot. |
How the components become a score
Each component is normalised against the current cross-section of eligible pools, not against hardcoded thresholds. The bounds are the 5th and 95th percentile of that component across the cohort; values are clamped into that window and mapped to 0–1. A cohort with no spread yields a neutral 0.5.
The normalised values are multiplied by their weights and summed. When a component cannot be computed at all, its weight is redistributed across the components that could be computed, so a pool is not silently punished for a gap in SquirtFi’s data. What tells you coverage was incomplete is the confidence level, not a depressed score.
The cohort is rebuilt on every refresh. A score is therefore a statement about a pool relative to its peers at that moment, and is not comparable across days.
Confidence
| Level | When |
|---|---|
| Low | Under 50% of the 7-day window was indexed, or three or more of the six components could not be computed. |
| Medium | Under 90% coverage, or at least one component unavailable. |
| High | Full 7-day coverage and all six components computed. |
Low-confidence pools show a placeholder in place of the score in the screener. The number exists, but presenting it next to a fully-covered pool would imply a comparison that is not there.
The risk grade
The grade starts at A and is pushed down by specific, named conditions. Each one sets a floor: the worst applicable floor wins, and every reason that applied is shown on the pool page.
| Condition | Floor |
|---|---|
| Either token is not in the canonical asset registry | F |
| A v4 pool uses a hook that is not on the reviewed list | F |
| TVL under $25,000 — exiting may move the price | D |
| Under 2% of TVL sits at the active price | D |
| Pool price has held more than 2% away from the oracle | D |
| Realized 7-day volatility in the top decile of pools | C |
| Pool is under 72 hours old | C |
One condition behaves differently. If either token is a tokenized equity, the grade is downgraded by one step from wherever it already landed, rather than floored. The token trades on-chain around the clock while its underlying market closes, so the exposure is additive to whatever else is true about the pool.
The grades are deliberately not a green-to-red temperature ramp. A grade is a category, and an F must not read as “slightly worse than a D”.
