Volatility cover for Uniswap LPs.

Swappers pay a fee sized from measured arbitrage loss. It buys cover that pays the pool's liquidity when prices swing.

Hook fee this week
…
Paid back to LPs
…
Cover price, 1 WETH buys
…

Read from the Sepolia testnet, against the deployed Uniswap v4, 1inch Aqua and Chainlink contracts.

The problem

Arbitrage took 93% of LP fees in UNI/WETH.

We valued every swap in the UNI/WETH 0.3% pool on Ethereum at Binance one-minute prices. Measured that way, arbitrage loss came to $10.02M against $10.74M of fees over 103 weeks (one outlier week excluded), and it lands in the weeks the market moves.

LP fees minus arbitrage loss, per week
losing week profitable week
2024-11-04: LP net $25,3782024-11-11: LP net $54,0702024-11-18: LP net $23,9282024-11-25: LP net $12,5832024-12-02: LP net $47,8692024-12-09: LP net $22,2872024-12-16: LP net $51,8762024-12-23: LP net $15,0062024-12-30: LP net $6,9422025-01-06: LP net $8,4352025-01-13: LP net −$13,3782025-01-20: LP net $11,1872025-01-27: LP net $35,9322025-02-03: LP net $50,3842025-02-10: LP net $16,1692025-02-17: LP net $29,9652025-02-24: LP net −$100,6872025-03-03: LP net $22,8702025-03-10: LP net $17,1782025-03-17: LP net $44,6072025-03-24: LP net $8,4352025-03-31: LP net $19,7462025-04-07: LP net −$1,0252025-04-14: LP net $1,3272025-04-21: LP net $7,8122025-04-28: LP net $5,5862025-05-05: LP net $25,7382025-05-12: LP net $5,5922025-05-19: LP net $8,9212025-05-26: LP net −$2,0312025-06-02: LP net −$52,6902025-06-09: LP net $24,6312025-06-16: LP net −$1,2472025-06-23: LP net −$1,2852025-06-30: LP net $10,9092025-07-07: LP net $19,1892025-07-14: LP net $7,1542025-07-21: LP net $1,3892025-07-28: LP net −$4982025-08-04: LP net −$2,4732025-08-11: LP net −$18,8722025-08-18: LP net $9,0072025-08-25: LP net $4,2692025-09-01: LP net $8,7512025-09-08: LP net $3,9412025-09-15: LP net $21,1182025-09-22: LP net $1,9592025-09-29: LP net $3,9432025-10-06: LP net −$137,5162025-10-13: LP net $1,4312025-10-20: LP net $1,4672025-10-27: LP net $1,1912025-11-03: LP net $1,6642025-11-10: LP net $40,9482025-11-17: LP net $2,3212025-11-24: LP net $4842025-12-01: LP net $7382025-12-08: LP net −$5372025-12-15: LP net $6,6622025-12-22: LP net $4,2372025-12-29: LP net $1,4292026-01-05: LP net −$2,2032026-01-12: LP net $2,4002026-01-19: LP net $2,3892026-01-26: LP net $2,9542026-02-02: LP net $4,4542026-02-09: LP net $6982026-02-16: LP net $2,3012026-02-23: LP net $5,4882026-03-02: LP net $3,2502026-03-09: LP net $3,1322026-03-16: LP net $2,4322026-03-23: LP net $8342026-03-30: LP net $4,3332026-04-06: LP net $2,4972026-04-13: LP net $1,3682026-04-20: LP net $1,5142026-04-27: LP net $1,6272026-05-04: LP net $10,0342026-05-11: LP net $1,7452026-05-18: LP net $2,6702026-05-25: LP net $6702026-06-01: LP net $2,1682026-06-08: LP net $5632026-06-15: LP net −$1,4512026-06-22: LP net $3,1362026-06-29: LP net $6,6032026-07-06: LP net $6,5082026-07-13: LP net $4,3872026-07-20: LP net $3,6602026-07-27: LP net $5,9592026-08-03: LP net $1,9162026-08-10: LP net $2,4022026-08-17: LP net $11,5382026-08-24: LP net $4,1662026-08-31: LP net $35,3032026-09-07: LP net $13,4672026-09-14: LP net $51,0712026-09-21: LP net $48,3892026-09-28: LP net $11,3072026-10-05: LP net $12,2102026-10-12: LP net $9,2552026-10-19: LP net $5,1642026-10-26: LP net $787,505 (outlier, off scale)2025-10-06 · −$137,5162024-11-042026-10-26
14 of 104
weeks LPs lost money
$137,516
lost in the week of 6 Oct 2025
$0.72M
left for LPs, outlier week excluded
How it works

Measure the loss. Charge for it. Buy cover with it.

01

Measure

A Chainlink CRE workflow values every swap in the pool at exchange prices and reports last week's arbitrage loss on-chain.

Chainlink CRE → TremorReceiver
02

Charge

A Uniswap v4 hook charges swappers a fee sized from that loss, capped at 0.30%. With no fresh report, it charges nothing.

Uniswap v4 hook fee · ERC-6909 claims
03

Cover

The fee buys LONG claims on UNI/ETH volatility from a 1inch Aqua strategy. When a week settles, the payout is donated to the pool's in-range liquidity.

1inch Aqua · SwapVM instruction 0x22
The payout

Cover pays more when the market moves more.

Each LONG claim pays out from the volatility of UNI/ETH over one week, sampled from every Chainlink price update in the week. Two historical weeks, replayed on a mainnet fork from real Chainlink history:

Week of 6 Oct 2025
50 Chainlink updates
Realized volatility
305%
LONG paid
100%

The October crash. Volatility passed the 150% cap, so LONG paid in full.

Week of 24 Feb 2025
17 Chainlink updates
Realized volatility
59.8%
LONG paid
15.9%

A calmer week. LONG paid 15.9% of the maximum and SHORT took the rest.

Built in the open

Built at ETHGlobal Mumbai. Every line is public.

The contracts, the Chainlink workflow, the data behind every number on this page and the spec we built from are in one repository, under the MIT licence.

54 / 54
unit and invariant tests pass
7 / 7
tests pass on a mainnet fork
10,508
pricing outputs match a separate Python model exactly
3,000
pips set by the Chainlink workflow alone, in simulation
Questions

The short answers.

Who pays for the cover?+

Swappers in the Tremor pool, through a Uniswap v4 hook fee. The fee is sized from last week's measured arbitrage loss divided by volume, halved, and capped at 0.30%. If no fresh measurement arrives, the fee drops to zero.

What does an LP get?+

Nothing to claim or manage. The hook holds the cover. When a week settles, it redeems its LONG claims for WETH and donates that WETH to the liquidity in range at the time, over a few hundred blocks. That rewards current liquidity, not necessarily the LPs who took the loss.

Is it live on mainnet?+

No. Tremor runs in two places. The full demo runs on a local fork of Ethereum mainnet, against the deployed Uniswap v4 PoolManager, 1inch Aqua registry and Chainlink UNI/ETH feed, including two real weeks settled from history. It is also deployed on Sepolia, against the real v4 PoolManager and 1inch Aqua, where it settles on Chainlink ETH/USD with a test UNI token.

Why not just raise the LP fee instead?+

For average returns, you should. We ran both on the same two years: paying the same add-on straight to LPs earns about 8% more in total and swings less week to week. Spending it on Tremor cover instead cut the worst week from about -$124k to -$71k. Tremor is for LPs who want the tail cut, not a higher mean. The script is in the repo (data/benchmark_dynamic_fee.py).

What are the known limits?+

The numbers are pool-wide, so a single LP can do better or worse. Liquidity that joins just for a payout and leaves within 100 blocks forfeits its share to the LPs who stayed (OpenZeppelin's liquidity penalty), but an LP that joins shortly before a payout and stays still gets a share. And the cover only works on a new v4 pool, so LPs would have to move to it.

See the hook, the cover and the payouts working.

The app reads every number straight from the contracts on a mainnet fork. Quotes work without a wallet.

Open the app