← Blog/blog/dex-fee-volatility-proxy

The on-chain volatility number that is really an activity meter

A decentralized exchange, or DEX, lets traders swap assets against a pool instead of an order book. A liquidity provider, or LP, supplies those assets and earns a fee on each swap. Uniswap v3 lets an LP concentrate capital inside a chosen price range, which makes a very narrow position behave a little like a short-dated option.

Khaldoun asks an appealing question: can the pool's fees reveal implied volatility—the market's price of future movement—without an external price oracle? The paper derives an elegant number from three on-chain observables. Its most important result is also a warning about the number's name.

01

Three pool readings become one square root

The proxy is σfee = 2 × fee rate × √(volume / active liquidity). Volume and liquidity must cover the same observation window. The fee rate is a fraction, so a 0.30% pool uses 0.003. More volume raises the number; more liquidity spreads the same flow across a deeper pool and lowers it.

def fee_implied_activity(fee_rate, volume, active_liquidity):
    if fee_rate < 0 or volume < 0:
        raise ValueError("inputs must be non-negative")
    if active_liquidity <= 0:
        raise ValueError("active_liquidity must be positive")
    return 2 * fee_rate * sqrt(volume / active_liquidity)

The site runs the tested TypeScript implementation; Python and C++ are faithful translations. In the deterministic illustration below, volume grows while the fee tier and liquidity stay fixed. Four times the flow produces only twice the proxy because of the square root.

fee-implied activity
Deterministic illustrative ratios, not paper data. A 0.30% fee tier and fixed liquidity produce square-root—not linear—growth in the fee-activity proxy.
02

Why an option analogy produces the formula

In Black–Scholes, theta is the option value lost as time passes. For an option about to expire, theta concentrates near the strike price like a narrow pulse. The paper spreads that pulse across Uniswap's smallest usable price range, then matches its height to fees earned per unit of active liquidity. Uniswap's standard fee tiers and tick spacings simplify the match to the formula above.

03

The missing leg makes volatility unidentifiable

A narrow LP position has negative convexity: larger price moves hurt at an accelerating rate. Its economics therefore have two legs: fees earned from flow, and the cost of rebalancing after the external price moves. The first scales roughly with traded volume; the second scales with price variance. Pool fees alone do not reveal how the two split the full option cost.

Call the unknown fee-capture share α. The paper's relationship is σstructural = σfee / √α. The exact same pool readings support every α between zero and one, hence many possible structural volatilities.

observed fee proxypossible structural volatility
Deterministic sensitivity from the tested core. Points use α = 1, 0.75, 0.5, 0.25, and 0.1. The observed proxy stays fixed; the compatible structural volatility changes because α is not on-chain observable.
04

The paper's one-pool check is encouraging, not identification

Paper-reported metricETH/USDC 0.30% pool
Daily observations1,276
Mean fee proxy57.06%
Mean realized volatility53.53%
Correlation0.87
Mean proxy minus realized volatility3.53 pp
Days proxy exceeded realized volatility68.26%
Median squared proxy/realized ratio1.18
Maximum squared proxy/realized ratio11.33
Selected values from the paper's Table 1: daily observations from January 2023 through July 2026. These are reported results, not outputs of our illustrative core.

A 0.87 correlation says the proxy reacts to real market regimes. It does not prove the two series measure the same latent object. The comparison uses realized volatility, a backward-looking rolling measure, while fee flow can react inside the current window. The squared ratio is therefore right-skewed and reached 11.33 exactly when lag matters most.

The evidence is also one ETH/USDC pool over one window. The paper explicitly leaves cross-pool, cross-fee-tier, and forward-looking options comparisons to future work.

05

What I would probe next

  • Compare the proxy with a forward-looking ETH options volatility index.
  • Separate price-correcting arbitrage from retail and inventory-driven swaps.
  • Reconstruct tick-level flow instead of pairing pool-wide volume with current liquidity.
  • Test whether rankings survive changes in fee tier, user mix, and window length.

The paper's 0.87 correlation invites a model, but correlation alone cannot repair missing variables. Explore what a fitted relationship can and cannot say on the linear-regression page.

References

  1. Amy Oumayma Khaldoun (2026). Fee Implied Volatility on Uniswap v3: A DEX Native Proxy and Its Limits. arXiv preprint, q-fin.MF