---
title: "Liquidity Score Changelog"
canonical: "https://pharos.watch/methodology/liquidity-score-changelog/archive/v4/"
description: "Liquidity Score Changelog - Pharos methodology version history."
---

# Liquidity Score Changelog

[All versions](https://pharos.watch/methodology/liquidity-score-changelog/)

<a id="changelog-v-4-9"></a>

## v4.9 - Blocked dead Bunni DEX inputs

**Effective:** 2026-04-03

Explicitly blocked Bunni from liquidity scoring and DEX implied-price publication after dead-venue rows kept surfacing as retained liquidity.

- Bunni is now excluded during crawl intake and DeFiLlama pool processing instead of being treated as a live DEX venue
- Retained-pool filters and challenger snapshots ignore Bunni even if stale rows or unexpected inputs survive earlier gates
- Liquidity scores, dexPriceUsd, and downstream DEX cross-checks no longer count Bunni TVL, pool counts, or protocol medians

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-8"></a>

## v4.8 - Direct-source duplicate hardening for Balancer and staged exact ids

**Effective:** 2026-04-03

Direct-source dedupe now reserves every authoritative exact pool id for later staged matching, and Balancer stablecoin pools can still collapse against direct Balancer coverage when DefiLlama omits the subtype in `balancer-v3` metadata.

- Sub-threshold direct API pools now still block later exact-address staged duplicates from re-entering scoring with incompatible TVL semantics
- GeckoTerminal and CoinGecko discovery rows can no longer inflate liquidity by resurrecting the same exact direct pool after the direct row was excluded from scoring
- Balancer stablecoin pools now dedupe correctly against Balancer direct API even when DefiLlama labels the row as generic `balancer-v3` without stable subtype metadata

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-7"></a>

## v4.7 - Retained-pool DEX price publication

**Effective:** 2026-04-03

DEX implied-price publication now derives from the final retained pool surface after dedupe, caps, and scoring filters, instead of from the earlier raw observation stream.

- Pools that are skipped as duplicates or dropped by retained-pool quality filters can no longer keep influencing dex_prices
- dexPriceUsd, price_sources_json, and downstream dexPriceCheck consumers now reflect the same retained pool surface used for challenger publication and UI liquidity detail
- High-TVL discovery rows that never survive retained-pool admission can no longer manufacture near-peg DEX aggregates for depegged assets

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-6"></a>

## v4.6 - Protocol-native DEX coverage expansion

**Effective:** 2026-03-24

Liquidity scoring now ingests Meteora DLMM, PancakeSwap V3, and Aerodrome/Velodrome Slipstream pool-state data as protocol-native direct sources, expanding primary-grade coverage across Solana, BSC, Base, and Optimism.

- Meteora DLMM pools now enter the direct-API merge path with measured TVL, volume, balances, and fee data
- PancakeSwap V3 pools now add protocol-native primary coverage across BSC and supported EVM chains through official Graph subgraphs
- Aerodrome Slipstream and Velodrome Slipstream pools now contribute pool-state TVL, balances, fees, and DEX-price observations via the on-chain Sugar view contracts
- Direct-source precedence over overlapping DeFiLlama rows now requires measured non-zero 24h volume, so Slipstream pool-state rows expand coverage without displacing stronger DL rows when volume telemetry is absent
- New concentrated-liquidity quality buckets now score PancakeSwap and Slipstream fee tiers consistently with existing Uni V3 logic

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-5"></a>

## v4.5 - Coverage recall hardening and measurement-aware confidence

**Effective:** 2026-03-24

DEX liquidity now paginates deeper through GeckoTerminal and CoinGecko Onchain discovery, enriches weak partial coverage instead of only zero-coverage rows, and scores coverage confidence from measured-vs-synthetic retained TVL rather than a fixed source-family ladder.

- GeckoTerminal and CoinGecko Onchain token crawls now read multiple bounded pages instead of stopping after page 1
- DexScreener and CoinGecko tickers fallback now trigger for weak partial coverage, not only coins with zero pools or no DEX price
- Fallback orderbook rows now preserve explicit synthetic/decayed/provenance flags instead of masquerading as organic USDC pools
- Coverage confidence now incorporates protocol breadth, source-family breadth, measured balance share, measured price share, and synthetic or decayed TVL share
- Direct-API pools default to a shorter maturity assumption and Fluid reserve normalization now marks whether balances were safely measured
- Shared secondary-pool contribution logic centralizes GT/CG/staged/fallback aggregate handling to reduce drift across merge paths

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-4"></a>

## v4.4 - Chain-aware pool identity dedupe and challenger snapshot publishing

**Effective:** 2026-03-19

DEX liquidity now resolves tracked tokens chain-aware, deduplicates pools with conservative identity keys instead of coarse fingerprints, collapses duplicate DEX price observations before aggregation, and publishes dedicated challenger snapshots from the full retained pool set.

- Direct API and staged/fallback pools resolve tracked assets by chain+address first, with chain-scoped symbol fallback only when unique
- Cross-source pool dedupe now uses exact pool ids first and derived token-shape matches only when they are unique on both sides
- Repeated sightings of the same physical pool across direct API, staged, and fallback sources now collapse before dex_prices weighting
- Depeg challenger inputs publish from the full retained pool set instead of the visible top-pools subset
- Fluid pools with missing token decimals now fall back to neutral balance rather than using unsafe raw reserve units

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-3"></a>

## v4.3 - Fluid DexReservesResolver balance integration

**Effective:** 2026-03-18

Fluid pools on Ethereum, Arbitrum, Base, and Polygon now read balances and fee detail from the official DexReservesResolver instead of staying on neutral placeholders.

- Fluid top-pool rows now populate Balance and Detail when the official DexReservesResolver is deployed on that chain
- Fluid pool quality now uses measured balance health on resolver-backed EVM chains, rather than a hardcoded neutral 1.0
- Fluid fee detail now comes from the on-chain pool config (`1% = 10_000`), normalized to basis-point badges in the UI
- BSC and Plasma Fluid pools remain on neutral-balance fallback until Fluid ships the same resolver path there

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-2"></a>

## v4.2 - Measured direct-API balance health and normalized pool-detail metadata

**Effective:** 2026-03-18

Balancer, Raydium, and Orca direct-API pools now preserve measured balance and fee metadata through scoring instead of merging with neutral placeholders. Pool-detail fee tiers are normalized to basis points for all sources.

- Direct-API Balancer, Raydium, and Orca pools now populate top-pool balance bars and detail badges
- Measured direct-API balance ratios now feed balance-weighted aggregates, stress, and effective TVL instead of assuming 1.0
- Balancer weighted pools normalize balance health against target token weights rather than raw reserve symmetry
- Orca vault balances are normalized from raw token units before balance-health calculation
- Top-pool fee tiers now serialize as actual basis points (for example 1bp, 5bp, 30bp) across UniV3, CG-onchain, and direct APIs

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-1"></a>

## v4.1 - Direct API precedence, primary-grade coverage, and fetcher contract hardening

**Effective:** 2026-03-18

Direct API sources now replace overlapping DeFiLlama pools before scoring, run ahead of staged/fallback sources, and count as primary-grade coverage. Raydium and Orca contract handling was hardened against live API drift, Fluid volume normalization moved to one-sided USD volume, and Balancer intake now excludes unsupported pool types.

- Raydium lower-case poolType contract fix restores live Solana pool coverage
- Orca now paginates via cursor.next with retry/backoff and a below-threshold stop, instead of truncating after page 1
- Direct API pools are fingerprint-deduped and preferred over overlapping DeFiLlama pools before score computation
- Direct API sources merge before staged/DexScreener/CG-ticker fallbacks, preventing lower-confidence sources from claiming the same pool first
- direct_api-only rows now classify as primary coverage (confidence 1.0) instead of fallback coverage
- Fluid volume now uses one-sided USD-normalized pool volume instead of double-counting raw token legs
- Balancer intake is limited to supported stable/weighted pool families on mapped chains only

Origin: Contemporaneous release record

Commits: Commit provenance not recorded

<a id="changelog-v-4-0"></a>

## v4.0 - Log-scale volume, cross-chain removal, durability rebalance

**Effective:** 2026-03-10

Volume activity switched from linear to log-scale. Cross-chain component removed and weight redistributed to TVL depth and pool quality. Durability sub-weights rebalanced: locked liquidity removed, organic fraction reduced to 15% with sqrt curve, history-measured signals raised to 85%.

- Volume activity now uses log-scale (33.3*log10(V/T/0.005)); median score rises from 5 to ~35
- Cross-chain component removed; TVL Depth raised to 35%, Pool Quality to 22.5%
- Durability: organic 15% (sqrt curve), TVL stability 35%, volume consistency 25%, maturity 25%
- Locked liquidity sub-component removed from durability (no reliable data source)

Origin: Contemporaneous release record

Commits: Commit provenance not recorded
