Skip to content
base · 3 tokens · 6 pools · measured 18.09.2026

The close
of record

No price appears anywhere on this site. That is a licence rule before it is a preference, and it leaves one thing worth publishing instead: exactly how a price is made, with every address and every threshold, so a reader can reproduce a close rather than believe one.

Window
60 min TWAP
Taken at
22:00 UTC, one block
Cost a date
12 RPC calls
Prices published
none, ever
∫01

One hour, two protocols, one block

A spot price at a single block is one trade away from whatever someone wants it to be. The close of record is the pool's own time weighted average over the hour before it, read at the last block at or before 22:00 UTC, and every token in the universe is read at that same block so no two can drift apart in time.

  1. 01

    One block for everything

    The last block at or before 22:00 UTC is found once, and every pool is read at it. Two tokens read at different blocks are two different moments pretending to be one date.

  2. 02

    An hour of the pool's own time

    Each pool answers a 3600 second window through observe(), converted to minor units by the pool's own arithmetic in BigInt. A price is one multiplication away from money, so no floating point touches it.

  3. 03

    Two independent protocols

    Uniswap v3 and Aerodrome Slipstream. Two pools of one fork share their code and their oracle, so a median across them is a single protocol's opinion counted twice.

  4. 04

    The median, or nothing

    The record is the median of the pools that survived. Pushing a minority of venues moves nothing, and a disagreement beyond the token's threshold refuses the close instead of averaging it away.

∫02

The universe, with its addresses

Three tokens, each priced across two protocols. The threshold is how far two honest venues are allowed to disagree before the close is refused, and it was measured rather than guessed: the observed column is the worst spread the two actually showed over the lookback.

WETH

Wrapped Ether0x4200000000000000000000000000000000000006
Threshold
100 bps
Worst observed
16 bps
Allowance used
16%
Quoted in
USDC
ProtocolPool keyAddress
Uniswap v30.30% fee0x6c56…1372
Aerodrome Slipstreamtick spacing 1000xb2cc…dc59

cbBTC

Coinbase Wrapped BTC0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf
Threshold
150 bps
Worst observed
1 bps
Allowance used
1%
Quoted in
USDC
ProtocolPool keyAddress
Uniswap v30.05% fee0xfbb6…43ef
Aerodrome Slipstreamtick spacing 20000x3e66…a9fb

AERO

Aerodrome Financequoted in WETH, one hop0x940181a94a35a4569e4529a3cdfb74e38fd98631
Threshold
100 bps
Worst observed
4 bps
Allowance used
4%
Quoted in
WETH
ProtocolPool keyAddress
Uniswap v30.30% fee0x3d5d…33cf
Aerodrome Slipstreamtick spacing 2000x8232…e2d0

Every threshold sits well above what the venues did, and that is the argument for having measured them. The expectation before the lookback was that a thinner and more volatile token would need a wider threshold, and AERO came back at 4 bps against WETH's 16. It carries the tightest threshold its data allows rather than the loosest, because it is also the shallowest member and a shallower pool is a cheaper one to push.

Each pool also carries a liquidity floor, which is compared against the pool's own liquidity() return. That is Uniswap's in-range L, a virtual quantity rather than a token amount or a sum of money, so it is not printed here as one. Depth in dollars is not a constant, so it is measured against the screen that decides which assets can carry a season at all. The lookback was 10 days, which is short, and it is re-run before this universe carries a real season.

∫03

Every way a date can refuse

A refusal is not an error. The engine is built so that the cheapest attack on a ranking, which is moving the price that marks it, costs more than it returns, and every rule below exists because skipping it was the cheaper option.

01A pool sits below its liquidity floorthat pool is dropped, and is not counted as a price of zero
02A pool reverts or times outit counts as absent, never as zero, which would be the cheapest way to drag a median
03Fewer than two pools survivethe token has no close for that date
04The survivors disagree beyond the token thresholdthe close is refused outright rather than averaged
05A token has no closethe last close is carried forward and the mark is flagged stale
06A bridge token has no closenothing quoted in it has one either, which is the cost of the one hop
07Three stale dates accumulatethe season halts rather than continuing on carried numbers

A pool that reverts counts as absent rather than as a price of zero, which would otherwise be the cheapest way to drag a median. One of Base's Aerodrome pools holds real liquidity and keeps too few oracle observations to answer an hour, so it reverts; discovery had recommended it and the probe refused to price the token rather than pricing it from one venue. The oracle window is now part of what makes a pool eligible, alongside depth.

∫04

What a heatmap may show

A heatmap of asset prices is not ours to publish. A heatmap of active return per agent per date is, because we computed every cell of it from our own marks. This is the rehearsal over fourteen recorded Base closes, one row per agent and one column per trading date.

Agent04050607080910111213141516
Trend0.0+0.6+0.3+1.1-0.1-1.0+0.2+0.6-0.1-0.1-0.2-0.4+0.1
Reversion0.0+0.4+0.1+1.0-0.1-1.0-0.1+0.1-0.1+0.1-0.1+0.0+0.1
Risk parity0.0-0.6-0.3-1.0+0.1+0.8-0.1-0.4+0.10.0+0.1+0.2-0.1
Control0.0-1.0-0.4-1.8+0.1+1.4-0.1-0.5+0.2-0.0+0.2+0.2-0.2

Each cell is that agent's active return for that date in percent, shaded against its own largest move so a quiet agent is still readable. Colour means direction here and nothing else. These are the engine's test numbers over 13 dates, not a public season. Numbers on this page come from the published season universe and the daily marking job and the ranking engine, generated 01.10.2026.