🤖 → exchange ·
🤖 → 🤖 ·
🎯 → exchange ·
🎯 → 🤖.
Rows are origins (oracles + visitors), columns are targets.
Cells coloured by RTT (green < 100 ms, amber < 250 ms, red ≥ 250 ms, dash = unreachable / not measured).
🎯 → 🎯 and 🤖 → 🎯 are intentionally omitted — browsers behind NAT have no
reachable inbound port, so those legs would require a TURN/signalling relay
(future work). The 🎯 → 🤖 column lights up only when the 🤖 node has a
publicly-reachable edge_pinger on 9876.
Pulls every available oracle TWAP in parallel —
Pyth (hermes.pyth.network), Binance kline TWAP,
Coinbase candle TWAP, DexScreener h1,
CoinGecko 24h, and our own cross-venue TWAP
(from SPREADS.duckdb venue_snaps) — and compares each
against every other oracle PLUS the live consolidated best bid/ask
PLUS the most recent actual trade prints from Binance + Coinbase.
Surfaces every dislocation above a configurable bps threshold.
idle
Oracle TWAPs · live
Spot book + actual trades
Cross-source dislocations (sorted by bps)
Live order books · WebSocket · sub-second ticks
Persistent WebSocket subscriptions to Binance (100 ms depth20), Bybit (orderbook.50),
OKX (books5), and Coinbase (level2 incremental) — books updated on the venue's own
publish cadence, no REST polling. Aggregated across venues for the selected pair.
The detector-stats strip below shows what fraction of candidate signals die at
each gate (time-alignment, fee threshold, etc.) — the explicit "is this a real
tradeable arb at wire speed?" check.
connecting…
Arb-detector classification · what survives the fee+alignment gates
TOTAL EVALUATED
—
PASS
—
STALE (alignment)
—
UNPROFITABLE (fee)
—
INVERTED
—
NO QUOTE
—
Consolidated · top-10 levels · sum across all venues
Per-venue · live ladder
Tick log · last 40 raw venue updates
HFT live paper-trade · 1s ticks · walking forward from $100,000
A live in-RAM order-book replay: every tick_seconds we take a
fresh snapshot of all venues, compute intra-tick bid/ask and high/low across
the rolling window, run find_arbs() with DOM-aware sizing (CEX
ladder depth + AMM-curve capacity), apply round-trip taker fees, and book
the net PnL straight to cash. No DuckDB on the hot path — the snapshot ring
is pure RAM so the strategy tick lands in single-digit ms.
idle
Equity curve · live
Headline
EQUITY
—
PnL
—
RETURN
—
TRADES
—
TICK COUNT
—
FEED p95
—
ELAPSED
—
RING
—
IOC fill discipline · order-type=IOC · kill if spread < 50% of detected
FILLED
—
KILLED (in-flight)
—
FILL RATE
—
SIZING BASE
—
Recent trades
Engine is idle. Press Start or wait — this card auto-starts on page load.
Intra-tick stats (per pair · rolling 10-tick window)
Strategy · $10,000 allocation based on observed patterns
Live allocator: routes capital to the venues with the most
persistent, contemporaneous (time-skew < 3 s) edges over the
selected window. Updates with the snapshot history that the
15-second background scheduler writes to data/SPREADS.duckdb.
Allocation
Scheduler heartbeat
Capital-efficient playbook
Effective fees · rolling 30-day volume tier
Fees applied to every arb's net PnL come from the venue's fee schedule at the
tier appropriate for cumulative 30-day filled USD. Cold-start = $0 = base
tier. As the live engine writes fills via volume_tracker.record_fill(),
volume rolls past each min_vol_usd threshold and the next-tier rate auto-applies.
Mode:
Pattern lab · which arbs persist
Per (pair, buy-venue, sell-venue) edges seen in the selected window — sorted by hit count. This is the same window that drives the allocator above.
Cross-asset spreads · A/B ratio across venues
Implied cross rates (midA / midB) on each venue that quotes both.
Sorted by spread between cheapest and richest venue. Snapshot is fresh on every refresh.
Synchronized snapshot · same-tick price + ping
One coordinated pull spanning up to top-50 exchanges per CoinGecko ranking:
LIVE = direct REST depth on this machine,
DEX = DexScreener pool TVL,
CG = CoinGecko aggregated last-price + spread (synthetic bid/ask).
All rows share the same snapshot id; each carries its venue-reported
timestamp and a data-age vs snapshot centre, so cross-venue comparisons are
explicit about how out-of-phase the two books are.
no snapshot yet
Same-tick arbitrage (sorted by spread; time-skew flagged)
Per-venue alignment (every book, every venue, same tick)
Arbitrage scan · CEX ↔ CEX ↔ DEX
Live pull from public order-book endpoints + DexScreener pools.
Capacity = max size before the spread closes (CEX side: walks real
order-book depth; DEX side: constant-product against pool TVL).
Each row also names the hosting region with the lowest worst-case
RTT to both venues — your fastest information path to act on the arb.
no snapshot yet
Press Scan now to fetch live books.
Bid · ask spreads by venue
Fastest routes between parties · overview
Every party pair (exchange↔exchange, exchange↔API, API↔API) ranked by the fastest
provider-mediated round-trip time, or by how much that route saves vs the
direct public-internet baseline. Click any row to load it into the route view.
loading…
Fastest party ↔ party route via hosting provider
Three segments modeled: public last-mile from exchange A to nearest provider PoP,
private backbone between provider PoPs (lower inflation factor), public last-mile
to exchange B. Direct public internet shown as baseline.
Beating fiber · transport-mode comparison
For any two information points, compare every transport that can carry the signal —
public fiber, hyperscaler backbone, dedicated dark fibre, submarine cable, HFT microwave,
troposcatter, free-space laser, HF skywave, Starlink LEO + inter-sat laser, MEO/GEO satellite.
Each medium has its own speed (c through air vs c·2/3 through fibre) and path inflation;
the fastest option is the one that wins on
distance × inflation / medium_speed.
Modeled provider PoP → party RTT (ms)
Public-internet last-mile only. Use the chips to filter by provider.
Click a column header to point the globe at that PoP and probe from it.
fastest PoP per row (▼)slowest PoP per row (▲)