Research

Measured, not claimed

We do not assert that a standing book beats a pool. We simulate both under identical demand, publish the code and the numbers, and re-run them weekly, whether or not the result flatters us.

Replay

Book vs pool under identical demand

12 intents an hour over 5 days, $250,000 of capital, 1,427 intents in total. Cost is measured against the reference price at the moment the intent arrived, so both venues are scored on the same yardstick.

OpenBell book

Fills
1,203
Median cost
90.79 bps
Median wait
10.6 h
Still resting
179

Constant-product pool

Fills
1,382
Median cost
166.64 bps
Median wait
instant
p90 cost
2677.83 bps

The trade is certainty of price against certainty of time. The book is materially cheaper and leaves one-sided flow resting; the pool always fills, and charges a long tail for it. Fill-now exists so each trader picks which certainty they want.

Stress test

What a fill-now vault loses on an old price

Wherever the feed goes quiet for more than 60 seconds, informed traders arrive against a dealer still quoting the last print at 100 bps. Positive numbers are dealer profit; negative numbers are what the vault hands to pick-offs.

Policycalmmonday gapvolatile
AQuote at any age+$28,3491,570 trades−$22,2091,570 trades+$25,6081,570 trades
BRefuse prints older than 2 min+$6,145330 trades+$5,880330 trades+$5,031330 trades
CWiden +25 bps per stale hour+$90,5791,570 trades+$40,0211,570 trades+$87,8381,570 trades

Quoting across a weekend gap is where the losses live. Policy B, refuse anything older than 120 seconds, is what the program enforces on-chain, together with a cap of 20% of vault inventory per trade.

How the archive works

Two small, dependency-free simulations that back the claims in the whitepaper. Both are plain Python 3 with no third-party packages, deterministic for a given seed, and re-run weekly by CI. Their output is rendered at /research.

We publish the measurements whether or not they flatter us.

replay.py: book vs pool under identical demand

Sends the same stream of buy and sell intents, with the same capital, through two venues:

  • an OpenBell book: bids rest in USDC, asks rest in shares, and both cross

pro-rata at the reference print plus a 25 bps premium. An order stays active across rounds until its remainder is dust.

  • a constant-product pool (x·y=k) seeded with the same capital and

arbitraged back to every print.

Demand is a Poisson arrival process (twelve intents an hour, lognormal size with a ~$2,000 median) over a GBM reference path with an overnight gap at each open.

`` python3 research/replay.py --days 5 --seed 7 --capital 250000 ``

Reports fills, median cost in basis points against the reference price at arrival, median wait, and how much flow is still resting at the end. The honest result is a trade: the book is cheaper, the pool is immediate.

stale_dealer.py: what a fill-now vault loses on an old print

Reads CSV price histories (t,price). For every gap in the feed longer than 60 seconds it simulates fill-now arrivals, 70% of them informed, leaning toward where the price actually went, against a dealer still quoting the last print, and scores three policies:

PolicyRule
Aquote at any age
Brefuse prints older than --max-age (default 120 s)
Cwiden the spread by +25 bps per stale hour

`` python3 research/make_data.py # writes research/data/*.csv python3 research/stale_dealer.py research/data/*.csv ``

Policy B is what the program enforces on-chain (instant_max_age_secs), together with a per-trade cap of 20% of vault inventory.

Data

make_data.py generates three synthetic five-minute histories over two weeks with 60-hour weekend gaps, one carrying a 15% Monday opening gap. The generated CSVs are committed so results are reproducible without regenerating them.

Results

.github/workflows/research.yml runs both scripts and commits research/results/replay.json and research/results/stale_dealer.json.

Prior work

OpenBell descends from MOO, Market On Open: Standing liquidity at the next reference price, Zenodo 2026, doi:10.5281/zenodo.22730358, CC-BY 4.0. That report notes an execution advantage over pools has not been established; this archive is our attempt to measure one honestly.

Prior work: Market On Open: Standing liquidity at the next reference price, Zenodo 2026, doi:10.5281/zenodo.22730358, CC-BY 4.0.