Methodology · Overview
Version 1.3 · published 2026-04-22 · authored by Sera Oracle Methodology Committee · DOI: 10.x/sera.v1.3
The Sera Oracle publishes reference rates for fiat currency pairs settled in fiat-pegged stablecoins. The methodology is designed to be transparent, reproducible, and regulatorily defensible. Every published price is signed by an attester, stamps the methodology version, and is reproducible from the raw input log.
Sera does not publish a single mid. It publishes a bundle of aggregate primitives — min, max, median, vol-weighted median, mean, p25/p75, std dev, plus per-source contributions, dispersion, and holiday context. Consumers compose their own pricing strategy on top of these primitives. This separates Sera's responsibility (how aggregates are produced) from the consumer's (how aggregates are consumed).
Source taxonomy
Sources are classified into five tiers. Only Tier A contributes to the signed aggregates. The other tiers serve as deviation guards, cross-context, and display.
- Tier A · Settlement — DEX swap events (Uniswap v3/v4, Aerodrome, Curve, Balancer, PancakeSwap v3) and CEX spot order books (Binance, OKX, Bybit, Coinbase, Kraken). Real executed trades.
- Tier B · Benchmark — Frankfurter (55 central banks), Wise mid-market API. Daily-or-better reference rates. Used as deviation guard.
- Tier C · Retail — Wise consumer effective, Revolut, Remitly, WorldRemit, Western Union, MoneyGram, Xoom, PayPal. Markup-laden rates. Display only.
- Tier D · Bank & Bureau — bank board rates, airport bureaux. Daily-fix retail rates with significant markup.
- Tier E · Macro — DTCC GTR, CLS Bank, BIS Triennial Survey. Context only — never priced.
Aggregation function
For each pair, on every methodology-defined trigger (window expiry, new-tick threshold, on-demand request), the Aggregator computes the full aggregates bundle from active Tier-A sources within a rolling window:
compute_bundle(pair, methodology, ticks_in_window, t):
eligible = filter(ticks_in_window,
source ∈ active_set,
notional ≥ min_size,
pool_tvl ≥ min_tvl)
return AggregatesBundle(
min = min(prices),
max = max(prices),
median = median(prices),
volWeightedMedian = weighted_median(prices, by=notional × weight),
mean = mean(prices),
volWeightedMean = weighted_mean(prices, by=notional × weight),
p25 = percentile(prices, 25),
p75 = percentile(prices, 75),
stdDev = std(prices),
sources = [{id, price, weight, notional, age} for each],
dispersionBps = (max - min) / median × 10_000,
sourcesUsed = count(eligible)
)
Aggregate primitives
The bundle is the contract. Consumers pick which aggregate to use based on their needs. Primitives include:
volWeightedMedian — Sera's canonical recommendation. Robust to single-source manipulation. Default if a consumer doesn't specify.
median — straight median, no volume weighting. Useful for reasoning about midpoint without venue-size effects.
min / max — extremes. Useful for asymmetric protection: an AMM might quote bid=max, ask=min to avoid getting picked off.
mean / volWeightedMean — when distribution shape matters more than robustness.
p25 / p75 — quartiles for slippage envelope construction.
stdDev — paired with median for vol surface modeling.
Strategy engine
Consumers register their own pricing strategies. A strategy maps the aggregate bundle to the consumer's specific use-case price. Strategies can include conditional logic — different aggregates for different pairs, time-of-day, holiday status, dispersion levels, source coverage thresholds.
FCICAMM's strategy uses volWeightedMedian for liquid majors but switches to median with widened spreads for thin pairs, and pauses entirely if source coverage drops below three for a pair. The CLOB uses volWeightedMedian for the published mid plus the retail tier breakdown to compute its "you saved $8.30 vs Wise" claim. Different consumers, same bundle, different strategies.
Deviation guards
Before publishing the bundle, three independent guards run. If any fails, the bundle is held and a circuit breaker raises:
- Benchmark deviation — composite vs Tier-B blended reference within
50bps.
- Source dispersion — max-min across active sources within
30bps.
- Min source count — at least 3 active Tier-A sources required to publish.
Holiday handling
When a currency in the pair is on a public holiday, three things happen automatically: (1) the benchmark anchor for that currency is reclassified from warn to expected, (2) confidence on the published bundle downgrades to low · benchmark only if Tier-A coverage thins, (3) a PH badge is attached. Consumer strategies can react accordingly.
Attestation
Each bundle is signed by an attester. Current attester model is single Sera-operated signer (HSM-backed, Ed25519). Production target is 3-of-5 N-of-M committee with independent operators in different jurisdictions.
Reproducibility
The audit log retains every raw tick from every source for 7 years. Given the raw log and the methodology version, any past published bundle can be recomputed and verified against its signature. Daily Merkle root of all bundles published is anchored to Ethereum mainnet for tamper-evidence.