Tremor

Stress test

Set the market yourself: drag any day's price move and watch the hook fee, the cover bought on 1inch Aqua and the payout to LPs respond.

Daily UNI/ETH moves

Week 1: its loss sets week 2's fee
Week 2: the fee buys cover; this week's swings decide the payout
This preset is a recorded contract run on a mainnet fork; the simulator reproduces it step for step (within 0.01%).
Week-2 hook fee
0.30%
set from week 1's measured loss
Cover bought in week 2
0.131 LONG
for 0.0604 WETH of fees
Each LONG paid
100.0%
of its 1 WETH maximum
LPs in week 2
−0.318 WETH
−0.449 without Tremor · +0.131 paid back
Day 14 of 14
Week 2 settles: cover pays out and is donated to LPs
Week 2 settled: each LONG paid 1.000 WETH. The hook spent 0.060 WETH of fees on cover and donated 0.131 WETH to LPs.
UNI/ETH (Chainlink-style feed)
−28.2%
since day 0
LP loss measured this week
1.06%
of volume · 0.628 WETH
Hook fee (Uniswap v4)
0.30%
half the loss rate, max 0.30%
Cover price (1inch Aqua, 0x22)
—
window settled
Paid back to LPs
0.131 WETH
hook holds 0.000 LONG · spent 0.060 WETH

Price: oracle vs pool

2.042.613.17day 0day 7day 14week 1week 2
Oracle UNI/ETHUniswap pool· milli-ETH per UNI

Cover price and hook fee

0.000.501.00day 0day 7day 14week 1week 2
LONG price (WETH)Hook fee (share of the 0.30% cap)· 0 to 1

Five conditions side by side

ConditionWeek-2 feeCover boughtLONG paidPaid to LPsLPs in week 2: without → with
Crash, then crash0.30%0.131 LONG100.0%0.131 WETH−0.449 → −0.318 WETH
Crash, then calm0.30%1.769 LONG0.1%0.002 WETH+0.143 → +0.145 WETH
Calm, then crash0.0008%0.000 LONG100.0%0.000 WETH−0.498 → −0.498 WETH
One-day spike0.30%0.637 LONG61.3%0.390 WETH−0.157 → +0.233 WETH
Calm0.0008%0.005 LONG0.1%0.000 WETH+0.143 → +0.143 WETH

The fee only rises after a week that hurt LPs, and cover only pays when the week it covers is volatile. So Tremor helps most when a bad week follows a bad week, costs a little when calm follows a crash, and barely helps against a first shock after a quiet week. Rows are recorded contract runs; click one to load it above.

What each part does here

  • Price moves. A Chainlink-style feed publishes a new UNI/ETH price each day; an arbitrageur trades the Uniswap pool to it, and LPs lose on that trade.
  • Loss measured. Each day's swaps are valued with the CRE workflow's formula and delivered to the receiver. When week 1 closes, the receiver sets the hook fee.
  • Cover priced and bought. LONG is priced by our SwapVM instruction on 1inch Aqua; its price climbs as volatility arrives. In week 2 the hook spends the fees on LONG.
  • Payout. When week 2 ends, the market settles from every feed round in the week; the hook redeems its LONG and donates the WETH to in-range LPs.

The five presets were run on a mainnet fork against the deployed Uniswap v4 PoolManager and 1inch Aqua and Tremor's live-build contracts, with a controllable test price feed and daily measurements computed with the CRE workflow's formula (not a CRE run). Moving a slider re-runs the same two weeks in your browser with the contracts' formulas (web/src/lib/sim.ts), which reproduce every recorded step within 0.01%. Sources: contracts/test/scenario/PriceShock.t.sol, web/src/lib/sim.ts.