L1 oracle
- Heartbeat
- 1 hour
- Threshold
- 25 bps
- Delay
- 60 s
A slow base chain. It needs defensive settings, high fees and low λ. The plain CPMM stays the best design until more than 11 bps of tracking error is acceptable.
p = λπ + (1 − λ) π*
An automated market maker normally prices only from its own reserves, so it trails the real market and pays arbitrageurs to catch up. This paper lets the pool read a price oracle too. It proves that any well-behaved oracle-priced pool quotes a weighted average of the oracle price and its own inventory price, then works out when leaning on the oracle pays. Turn the dial at the top. Every instrument below responds.
Synthetic SPY-like session, not market data: one-second steps, 13% annual volatility, a one-cent spread. Each second, arbitrageurs trade whenever the pool's fee-adjusted quote crosses the market, which is how the paper runs its backtest. Losses are annualized from today's session so far.
The pool has two anchors. The oracle price π comes from outside. The inventory price π* comes from the reserves alone: it is the quote at which pool and oracle would agree.
The paper proves that if the quote never passes on the whole of an oracle move, it always sits between the two anchors, a share λ of the way toward the oracle. Drag either anchor.
Leaning on the oracle also concentrates liquidity. With a correct oracle, depth at the market price is 1/(1 − λ) times a CPMM of the same value. When the oracle is wrong, depth at the true price falls away, and past a break-even error the pool ends up shallower than the CPMM.
Liquidity providers lose to arbitrageurs whenever the quote is stale. The paper's loss-versus-rebalancing (LVR) formula splits that loss into two parts: the market move the quote misses, weighted by (1 − λ)², and the oracle's own error, weighted by λ².
Each step toward the oracle trims lag but imports noise, and the extra depth amplifies whatever is left. With noise ratio α = ση/σ, the pool beats a CPMM in the same state only while λ < 1/(1 + α²).
The left chart traces λ from 0 to 0.99. The shaded corner is where the pool is deeper and also loses less.
A push oracle posts each update as its own transaction. An attacker can buy just before the update, on the stale curve, and sell just after, on the refreshed curve at the higher price.
The pool starts with 1 unit of each asset at a price of 1, so it is worth 2. The oracle then jumps from 0 to Δπ. In the paper's example (λ = 0.6, Δπ = 0.5), plain arbitrage after the update takes 2.7% of the pool. Draining the risky reserve first takes 25.6%.
The price-tracking design (λ = 1) is worse: its curve never touches the axes, so the take keeps rising toward the whole pool as the front-run grows.
A fee on each leg closes the gap. Once λ·Δπ ≤ −log(1 − γ), front-running adds nothing, and the update itself offers no arbitrage.
The authors replay every second of SPY's 2023 national best bid and offer against a simulated tokenized-SPY pool. Arbitrageurs are the only traders, each day starts fresh at the open, and they sweep λ from 0 to 0.99 and fees from 0 to 50 bps under three oracle setups.
A slow base chain. It needs defensive settings, high fees and low λ. The plain CPMM stays the best design until more than 11 bps of tracking error is acceptable.
A faster layer 2. Reliable enough that leaning on the oracle cuts arbitrage losses instead of feeding them.
Read on demand. At about 7.5 bps of tracking error and λ ≈ 0.84, losses fall to roughly 0.001 bps a year, about $0.10 on a $1M position.
Paper findings above. For a fixed loss budget, available depth grows by orders of magnitude as the oracle gets more reliable. In every regime, measured depth stayed within 0.22% of the 1/(1 − λ) multiplier. The best fee kept landing on the 50 bps edge of the grid, which the authors attribute to having no ordinary traders in the simulation, not to an optimal fee.
This rerun uses synthetic one-second days with SPY-like volatility, not the paper's data, and the paper's update rules, arbitrage rule and metrics. Expect the same shape, not the same numbers.