Oracle Dial
0 · prices from its reservesprices from the oracle · 1
λ0.60
arXiv:2609.33799 · Hamed Amini & Zachary Feinstein · September 2026

p = λπ + (1 − λ) π*

right now: quote = 0.60 × oracle price + 0.40 × the price the pool's reserves imply

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.

Oracle
Pool fee
Speed
Market clock10:00:00 ET
LP loss · oracle pool–per $1M a year
LP loss · CPMM–per $1M a year
Depth vs CPMM–same pool value, at the market price
Tracking error–RMS quote error, bps
Arbitrage trades–oracle pool / CPMM, today
Oracle updates–today

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.

§2.2 Theorem 2.8 · §2.3 Example 2.11

Every oracle-priced pool is a weighted average

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.

p = λ π + (1 − λ) π*Theorem 2.8

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.

Drag π or π*
Depth vs an equal-value CPMM, by oracle error
§3.1 Corollary 3.4 · §4.1 Figure 1

Trading lag risk for oracle risk

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 λ².

ℓ / V = ⅛ · depth · [(1 − λ)² σ² + λ² ση²]Remark 3.2

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.

0.50
1.0
Residual variance, as a share of the market's
Depth vs loss, λ from 0 to 0.99gray: α = 0, 0.5, 1, 2
Where the pool beats the CPMM on both
Depth vs CPMM–
LVR vs CPMM–
Verdict at the dial's λ–
§3.2.1 Proposition 3.11 · Remark 3.13 · Lemma 3.14

Sandwiching an oracle update

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.

Design
Reserves: risky x vs cash y
Attacker's take by front-run size
Attacker's take–
Arbitrage, no front-run–share of pool value
Fee that neutralizes it–
§4.2 S&P 500 case study · Figures 2 and 3

What a year of SPY quotes says

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.

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.

L2 oracle

Heartbeat
1 hour
Threshold
5 bps
Delay
2 s

A faster layer 2. Reliable enough that leaning on the oracle cuts arbitrage losses instead of feeding them.

Pull oracle

Heartbeat
1 second
Threshold
0
Delay
1 s

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.

Fee for the left chart
LP loss to arbitrage by λannualized bps, log scale
Lowest loss for a tracking-error budgetbest over λ and 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.