📱 Get trade alerts on your phone — download the Android app (full dashboard + alarm-grade ring/vibrate) or enable browser push.
⚠ Local mode — auth is OFF. The dashboard is reachable by anyone who can hit this port. Set [auth].enabled = true + provision ARBX_MASTER_KEY before deploying.
Total Portfolio Value
—
across all chains
Total USDC
—
stable inventory
Wallets
—
monitored on-chain
Last Refresh
—
live RPC snapshot

Wallet Balances

chainaddressnative balancenative usd usdc usdt wethweth usd govgov balgov usd total usd

By Chain

Recent Trade Activity — last 1000 records

—
Loading…

Personal Wallets

No personal wallets yet. Pick a chain and click Generate Wallet to create one.

My Transfers

whenchainasset amount fromtorole statustxnote
Loading…

Registered Signers

chainroleaddresslabelusernameext id

Wallet Balances

— 24h window — grey = still warming up
Loading…

CEX Balances

— 24h window — grey = still warming up · double-click / double-tap a card → that venue's trade history
Loading…

My Crypto.com API

per signed-in user · encrypted at rest

Each logged-in user stores their own Crypto.com Exchange API key + secret (AES-256-GCM sealed with the engine master key). Keys are never shown after save — only a short fingerprint. Use Test to call private/user-balance. These keys are yours alone; they are not shared with other users and are not yet wired into the global trading adapters (Kraken / Binance).

loading…
Leave this on the monitor One click: opens P&L fullscreen, turns on auto-idle, and starts the screensaver. Move the mouse to wake. Screensaver rotates charts every 5 minutes.
Exact profit / loss — all time
…
Today: …
Tap a trade for the full fee breakdown, targeted profit, and achievement %
Overall trajectory Cumulative settled P&L over time — ← → pan · + − zoom
← → pan · click chart first
Move the mouse or press a key to wake · charts rotate every 5 min.
–
winning trades
–
losing trades
–
gross (before fees)
–
exchange fees paid
–
gas paid
By wallet / chain · every asset — holdings, settled P&L charts, and forward projection collapsed
loading wallets & equity…
loading…
Total Top-Up Recommended
—
across all wallets
Wallets Needing Gas
—
below target reserve
Critical / Unfunded
—
cannot trade safely
Last Refresh
—
live RPC + CoinGecko

Gas Tank Status

Edit a row's txs or reserve % then click Save
chain wallet native bal native $ usdc $ gas (gwei) ~tx cost txs left target txs reserve % target $ top-up $ status

How recommendations work

For each wallet/chain we compute:

typical_tx_cost = gas_price × typical_gas_units
target_native_$ = max(
    target_txs × typical_tx_cost,
    reserve_pct  × wallet_usdc_balance
)
recommended_topup_$ = max(0, target_native_$ - current_native_$)
  • target txs — how many trades the wallet should always be able to pay for (default 50).
  • reserve % — floor: % of the wallet's USDC kept as native gas (default 2%).
  • typical_gas_units — Uniswap-V3-swap-sized; tuned per chain (Arbitrum ≈ 1.5M because of L1 calldata).

Click Top Up to swap USDC → native on that chain via Uniswap V3 and immediately replenish the gas tank.

Top-Up Activity

(no top-ups yet this session)
Engine: inventory-arbitrage v1
Mode
—
execution mode
Kill Switch
—
global halt
Chains
—
connected
CEXes
—
configured

Chain Health

CEX Feeds

venue pair bid bid size ask ask size mid age

Opportunities

double-click a row for the P&L breakdown + fix suggestions
chain pair buy venue sell venue size gross buy imp sell imp friction diverge 1h net USD net bps state liq reject

Fair-value monitors

observe-only · deep WAVAX-quoted pools vs live reference
rule pool reference fair pool buy pool sell buy disc sell prem round trip ≥ alert 1h verdict
loading…

Recent Opportunities

—

Recent Executions

—

CEX-Maker / DEX-Hedge (DSA)

—
loading…

Staleness (DEX→CEX)

—
loading…
Live Resting Orders
—
on Kraken right now
Resting Notional
—
sum of price × vol across live orders
Fills (ring window)
—
hedge outcomes vs fills
Median Age
—
time orders have been resting

Venue-wide sandwich defaults

Bulk fill-rate / min-net for every live sandwich on this venue. Each pair card below also has its own Sandwich window (ASK+BID share that card’s knobs). The gold mark is the profit floor (fees + reserves + min net) — tighter than that loses money. Drag left for more fills (tighter, still profitable); right for fewer, fatter fills (wider cushion). This tab only lists and patches this venue’s rules (Kraken’s 40 bp maker needs a wider quote than Binance.US — each Maker tab keeps its own floor). Scope Kraken only
Profit floor
—
per-venue cost + min net
Cushion
—
bps above floor
Live edges
—
—
Fill rate ↔ profit per fill —
0 · more trades
at profit floor
+20 +40 +80 · fewer trades
fatter each fill
Min net profit (bps)
—
050100150
Raising min net lifts the profit floor (and every posted edge by the same cushion). Floor always stays profitable.
loading live knobs…

Edge reality

recorded posted edge · settled net · the edge this rule is posting now
loading settled fills…

Live Maker Orders on Kraken

loading…
Each card is one sandwich for a pair: ASK + BID share one posted edge, one fill-rate cushion, and one min-net. A missing side stays on the card as not on the book with the skip reason. Blue ● = live mid. Gold = profit floor. Each card has its own Sandwich window (knobs below the rail). Double-click a leg for that order’s size, the $150 cap check, and its link.
loading…

Per-Rule Rollup

—
rule live ask / bid notional ($) fills hedge ok hedge FAIL placed adopted cancelled
loading…

Recent Maker Activity

—
Lifecycle events from every CMDT rule. Newest first. Fills → green; hedge-failed → red alert. Constant placed/cancelled with no filled rows means the reprice threshold is too tight — widen repost_threshold_bps in config/default.toml so orders get time to actually match.
loading…
Trades
—
filled · failed · pending
Volume
—
sum of notional (USD)
Realised P&L
—
across journalled arb records
Win rate
—
wins / (wins + losses)

CEX-first → Avalanche Inventory Arbitrage

loading…
Every journalled arb where the CEX side fires first and the DEX fill-up happens on Avalanche C-Chain. cmdt rows = Kraken post-only → Avalanche hedge. c2c rows = Binance taker → Avalanche sell. Double-click any row for the full per-leg breakdown and profit math.
loading…

Per-Strategy Rollup

last 2 000 arb records
strategy trades filled realised P&L ($)
loading…
loading Binance.US staleness…
loading Kraken staleness…
loading Binance Global staleness…
Decisions
—
considered since boot
Allowed
—
passed every gate
Aborted
—
blocked pre-trade
Decision latency
—
in-process gate cost

Live Risk Config

edits apply on the next decision (no restart)

Reject-Reason Histogram

reasoncount

Recent Decisions

whenverdictkindchain sizenet bps decided inreasons
Live pairs
—
ticked in last 60s · On
Closest edge
—
best fresh gross (bps)
Freshest tick
—
age of newest searcher pulse
Ticks
—
scoring loops since boot
Emits
—
opportunities published
Liq rejects
—
candidates dropped by gate

Live Scoring Board

one glance per pair · state = what the last tick actually said · net USD is "—" when the quote oracle can't price notional (gross still valid)
state chainpair route size gross net USD impact b/s friction age emits last reject
Latency (tick p50/p99 · pipeline) and auto-sizer win counts live under Diagnostics below — they are not needed to read edge.
Live Opportunity Rules edit venues / sizes / floors · Save hot-swaps the running searcher
chainpair buy venuessell venues size steps (USD) min profit bps max inv skew % searchingconfig
Liquidity Gate thin pools dropped before risk / history
chainpair enabled max per-leg impact (bps) max round-trip impact (bps) max pool friction (bps) min reference spread (bps)
Auto-Sizer geometric grid → one best size per venue cycle
chainpair enabled min USD max USD steps effective grid (USD)
Diagnostics tick latency · auto-sizer wins · pipeline handoff
Auto-sizer wins
—
size-vs-profit optima picked
Tick p50 / p99
—
in-process searcher cost
Pipeline p50
—
handoff opportunity → fill
Sub-ms ticks are normal when WS pools are warm. Pipeline p50 is in-process only (risk + planner) — not RPC submission or block inclusion.
Active Chains
—
searcher running
Disabled
—
trading paused
Healthy Nodes
—
WS+HTTP up
Avg Tick Age
—
last searcher pulse

Chain Status & Toggles

flip a chain off to pause its searcher pool instantly
Nodes In-Sync
—
WS up + fresh quotes
Syncing / Stalled
—
connected, no live prices yet
Down / Stopped
—
connector unhealthy
Cached Quotes
—
last update —

Avalanche Local Node

— source: —
—
—

Nodes

click a row to load its prices & logs in the panels below
price source (all chains):
chain id status sync price source endpoint last block head age connects disconnects heads live quotes controls

Prices — (no node selected)

latest quote per (venue, pair, side, size) for the selected node
venue pair side size in size out eff. price mid block age

Logs — (no node selected)

time level target message
Pipeline
—
local node · WS · hedges
Avalanche Source
—
must be local (enforced)
Submit p50 / p99
—
sign→broadcast ms (L1)
Confirm p50 / p99
—
broadcast→receipt ms (L2)
Rate
—
swaps / last 1m · 5m
Outcomes
—
ok · fail · revert

Maker flow → atomic DEX

Every CMDT hedge is one local-node swap tx
1. CEX maker fill → 2. Atomic DEX buy/sell → 3. Local Avalanche receipt
BID fill (CEX bought base) → DEX SellBase. ASK fill (CEX sold base) → DEX BuyBase. Public RPC hedges are refused.

Manual atomic swap

same build_swap path as maker hedges
—

Speed & health

loading…

Live atomic sells / buys

CMDT hedges · manual · token moves — newest first
WhenSrcSidePair / Venue InL1 msL2 ms StatusTx
waiting for hedges…
Routes
—
scored rules
Left on the table
—
misses at or above the floor
Best missed
—
highest net bps not traded
Acted
—
posted or emitted

Token Route

opportunities the market offered that this engine did not trade
route pair venues kind last bps last missed + avg miss best miss other top reason acted seen last seen
CCTP
—
tracker
USDC move time
—
median settled
In flight
—
oldest burn
Local nodes
—
DEX submit requires local

Currencies

Drag a coin onto Sell or Buy. Each tag is that balance’s full USDC value.
SELL
BUY

Swap

drop a coin on each side
100%
The route appears here before anything is sent.

Swap in from Kraken

One process per network. Buy is a Kraken market. Withdraw is done on Kraken. Maker orders are not posted.
#networkRWAwalletKraken
Loading…
Tradable
—
enabled
Catalog
—
currencies
Big caps
—
AVAX BTC ETH LINK AAVE
Rules live
—
matching strategies ticking

Kraken sandwich ranking

Quoted 8 Oct 2026 00:14 UTC. Live pre-check used 22 bp maker. Dollars are one fill, if the hedge matches the quote. Not a daily total.
# pair side hedge net clip per fill settled history run
1 ETH / USDC ask Pharaoh WETH.e / WAVAX 24 bp $178 $0.43 No settled asks. The two Kraken buys lost $0.94. Yes. Ask is the money side. The bid needs USDC and chain WETH.
2 JOE ask only LFJ JOE / USDC 62 bp $62 $0.38 10 sells, +$1.66, average $0.17. Best proven route we can run. Yes. Sell JOE, receive USD, buy JOE back with USDC. No bid.
3 BTC / USDC ask Pharaoh BTC.b / WAVAX 5 bp $118 $0.06 No settled fills. Yes, at the 5 bp floor. Tightening this edge would pull the ask.
4 AVAX / USDC ask Pharaoh WAVAX / USDC 18 bp $68 $0.12 4 Pharaoh sells, net −$0.60. UniV3 stays off after later losses. Yes, thin. Kraken USDC is too low to bid.
5 BTC / USDC bid Pharaoh BTC.b / WAVAX 26 bp $17 $0.04 No settled fills. Yes, small. Spends USDC, not USD. Gas is most of a clip this size.
6 LINK / USDC — LFJ LINK.e / WAVAX — — — Book exists. The chain coin is bridged LINK.e, not Kraken LINK. No. Basis can eat the edge.
7 AAVE — LFJ AAVE / WAVAX — — — Kraken lists AAVE/USD only. No AAVE/USDC. No. That book spends or receives USD.
8 QI — LFJ QI / WAVAX — — — QI/USD only, and Kraken blocks orders on this account. No.
9 COQ — LFJ COQ / WAVAX — — — COQ/USD only. The book is too wide to clear the fee. No.
10 GMX, STG, UNI, SUSHI, COMP, SNX, CRV, GRT, YFI — thin C-chain pools — — — Kraken lists these as USD, not USDC. Pools are too thin to hedge a clip. No.

SOL, XRP, ADA, DOT, LTC, ATOM, and BCH have Kraken USDC books and no Avalanche hedge in this engine, so they are not a sandwich. A fill is uncommon: the last settled JOE sell was 20 Sep 2026. Do not turn these per-fill dollars into a daily figure. Live Kraken fee is 22 bp maker / 38 bp taker. The config seed stays 40/80 until TradeVolume reports; quotes use the live 22.

Fund these

Read 8 Oct 2026 00:14 UTC. Leave the $20,000 USD park where it is. Deposit USDC, not USD.
route already posting blocked side send why
AVAX / USDC
Pharaoh bid
Ask, ~6.1 AVAX Bid $200 USDC on Kraken Free USDC is $0.28. The bid floor is about $43. Avalanche already holds ~19 AVAX, so the hedge can sell it.
BTC / USDC
Pharaoh bid
Ask, ~0.0014 BTC Bid Same $200 USDC The bid is live at about $17, under the $43 size where gas stops eating the edge. Avalanche holds ~0.00078 BTC.b, enough for one minimum hedge.
ETH / USDC
Pharaoh bid
Ask, ~0.069 ETH. Highest dollars per fill. Bid $200 USDC on Kraken and 0.02 WETH.e on Avalanche Chain WETH.e is 0.00024 ETH. A bid hedge has nothing to sell. The ask is already funded.
JOE
LFJ ask
Ask Bid stays off Nothing A bid would spend USD. Do not fund it, and do not move the $20,000.
AAVE
Binance LFJ
Neither side Both Nothing The bid’s modeled net is about 40 bp, but the executable hedge is about −170 bp. Sending coins would post a losing trade.

Token / Pair

Enable / disable a currency — fans out to every CMDT / d2d / sniper rule with that base
on currency category on-chain CEX venues rules notes
Loading…

Triple-listed (Kraken + Binance.US + Avalanche DEX) big caps are limited to assets with real C-Chain liquidity: AVAX, BTC.b, WETH.e, LINK.e, AAVE.e. JOE trades Kraken + LFJ (not Binance.US). PHAR is Pharaoh’s own token (PHAR/WAVAX) and is not listed on either CEX — toggle keeps fair-value / DEX inventory rules in the catalog. Disable prompts you to rotate remaining wallet inventory into USDC/AVAX. Single-click a row to expand every trading route for that currency (toggle each On/Off + per-route edge bp). Double-click opens Token Route — edge sliders, Liquidity, and BPS math (full fee waterfall for Kraken & Binance makers).

Tokens
—
in catalog
Σ Avalanche liq
—
DexScreener pools ≥$1k
Σ 24h volume
—
across listed pools
Selected
—
click a row

Tokens

Avalanche depth + CEX marks — click for full brief
token category price 24h liq $ top dex
Loading…

Select a token

summary · liquidity · strategy fit · 30d price

Pick a token on the left. You will see what it is, why we care for CMDT/d2d, live Avalanche pool liquidity, and ~30 days of USD price history.

Staleness Strategy

When Kraken’s mid jumps ahead of the Avalanche DEX quote-at-size, we sell AVAX on-chain first, wait for the receipt, then buy AVAX back on Kraken (one shared trade id). Inverse of Maker Orders (CMDT).
Live vs On
Live = score + Trade History only. On = live DEX→CEX execution. Config dry_run also forces observe.
History
Fires, near-misses and verdict changes land in Trade History as kind=staleness; every evaluation is in the page's gap sparkline. Hedge fills also appear under Kraken → Trade History.
Cooldown / inventory
After the DEX leg is dispatched the pair cools for cooldown_ms (a rejected fire burns no cooldown). Size is clipped to spendable chain AVAX/USDC (after other strategies' reservations and the exchange allocation slider) and Kraken free balance.

What is RTT?

RTT = Round-Trip Time — how long it takes for a message to go to Kraken and for the reply to come back. On this page the headline number is WS Order RTT: the wall-clock time from when we send a private WebSocket add_order / cancel_order until Kraken’s ack arrives. That is the same path the trade engine uses for maker posts.
Typical (median)
Most recent order acks over ~15 minutes. Resistant to rare reconnect spikes that used to pull a plain average to ~20 ms.
VIP TCP
Network floor only (~0.2 ms on colo). Connect time to the Beeks VIP — not a full order ack.
Why ~1–3 ms, not sub-ms?
Order RTT includes Kraken’s matching/ack processing on top of the wire. Sub-millisecond is the TCP path; order ack is wire + exchange.
Kraken WS Order RTT
—
typical (median) add/cancel wire→ack · trade engine path
Anticipated Execution
—
signed order → exchange ack
Market-Data Feed
—
websocket push stream
Last Sample
—
from live private WS orders

Kraken Latency

venuetradingadapter ws feed ws fills (private) order RTT (WS measured) orders sampled anticipated execution
Open this tab or click Refresh — numbers come from live WS order posts, not public REST ping.

Kraken WS Order RTT history

Kraken account

signed balances · open orders · fills
BALANCES
assetfreelockedtotal
loading…
OPEN ORDERS
pairsidepriceqtystatus
loading…
RECENT TRADES · double-click a row for the fee waterfall
timepairsideqtyprice quotefeemaker Settled P&L System Order IDTrade ID
loading…

How these latency numbers are derived

When the "measured" badge shows, the number is not an estimate — it is the median wall-clock time of recent real add_order / cancel_order calls this engine sent over the live private Kraken websocket (colo VIP when live), from send to exchange ack, Kraken's own processing included. The table shows min / median / max of those calls. Only when no websocket order has been sent recently does the page fall back to durable history (still median), or — if none exist — an estimate marked "est".

Colo vs public. With the Beeks↔Kraken cross-connect live, private WS rides VIP 100.64.33.x (~0.2 ms TCP). Order ack is typically 1–3 ms because matching/ack time sits on top of the wire. Public Cloudflare REST is not used for live order entry while the private socket is up.

Fill detection is push, not poll. The "ws fills (private)" column shows the authenticated executions stream: the moment one of our maker orders fills, Kraken pushes the event down this socket and the strategy dispatches the DEX hedge immediately — it does not wait for a polling tick.

Staleness Strategy

When Binance.US bookTicker jumps ahead of the Avalanche DEX quote-at-size, we sell AVAX on-chain first, wait for confirmation, then buy AVAX on Binance.US (one trade id). Near-zero US taker (~2 bp) makes thin gaps viable.
Live vs On
Live = observe + history. On = live execution. Config dry_run forces observe even when On.
History
Scored ticks → main Trade History (kind=staleness). CEX hedge fills → Binance.US → Trade History.
Cooldown / inventory
Pair cools after each fire. Clips respect chain AVAX and Binance.US USDT free balance; can run alongside CMDT.
Binance REST RTT
—
engine host → api.binance.us
Market-data WS
—
bookTicker push
User-data WS
—
listenKey · fills
Binance.US Equity
—
signed account · live balances
Open Orders
—
resting on Binance.US
Trading
—
venue kill switch

Binance.US reconcile

Waiting for the first pass.

Binance.US latency

venuetradingadapter minavgmax samples (ms) anticipated execution
Open this tab — live REST ping from the engine host.

Live bookTicker (WebSocket)

pair bidbid size askask size mid age
waiting for first WS frame…

Binance.US account binance-spot

loading signed balances…
BALANCES
assetfreelockedtotal
loading…
OPEN ORDERS
pairsidepriceqtystatus
loading…
RECENT TRADES · double-click a row for the fee waterfall
timepairsideqtyprice quotefeemaker Settled P&L System Order IDTrade ID
loading…

How this dashboard is sourced

Independent of the Kraken tab. Public bookTicker (raw per-pair sockets), private user-data fills, and signed WS API order.place run over Binance.US websockets. REST is fallback only. The top KPI prefers measured WS order RTT when we have samples, else GET /api/v3/ping. Account tables come from GET /api/v3/account, /api/v3/openOrders, and /api/v3/myTrades. Maker 0 / taker 2 bp on the zero-fee spot promo. Enable/Disable is this venue's kill switch only — it does not touch Kraken.
Reads work from this host (egress 170.75.202.90): balances and the user stream are live. Spot order writes still return -2015 — the API key can read but cannot trade from this IP. CMDT and staleness stay off until Binance has Spot Trading enabled for that key and IP. Turning them live now would not place a hedge.

Staleness Strategy

Same DEX-first path as Binance.US, hedged on Binance Global. Global taker is ~10 bp, so the threshold and net floor are higher — fires only on larger stale gaps.
Live vs On
Live = observe + history. On = live DEX→Global hedge. Enable the venue kill switch and fund USDT/AVAX first.
History
Scored ticks → main Trade History (kind=staleness). Hedge fills → Binance Global → Trade History.
Cooldown / inventory
Cooldown after fire. Size clipped to chain AVAX and Global USDT free balance; runs alongside Global CMDT rules.
Binance REST RTT
—
engine host → api.binance.com
Market-data WS
—
bookTicker push
User-data WS
—
listenKey · fills
Global Equity
—
signed account · live balances
Open Orders
—
resting on Binance Global
Trading
—
venue kill switch

Binance Global latency

venuetradingadapter minavgmax samples (ms) anticipated execution
Open this tab — live REST ping from the engine host.

Live bookTicker (WebSocket)

pair bidbid size askask size mid age
waiting for first WS frame…

Binance Global account binance-global

loading signed balances…
BALANCES
assetfreelockedtotal
loading…
OPEN ORDERS
pairsidepriceqtystatus
loading…
RECENT TRADES · double-click a row for the fee waterfall
timepairsideqtyprice quotefeemaker Settled P&L System Order IDTrade ID
loading…

How this dashboard is sourced

Separate from Binance.US. Public bookTicker on wss://stream.binance.com:9443, private user-data fills, and signed WS API order.place on wss://ws-api.binance.com/ws-api/v3. REST base is https://api.binance.com. Keys are ARBX_BINANCE_GLOBAL_* (not the US keys). Enable/Disable is this venue's kill switch only — it does not touch Binance.US or Kraken. Strategies still target binance-spot until retargeted.
Exchange
—
—
Assets
—
non-empty signed balances
Free Assets
—
assets with spendable balance
Last Fetch
—
private exchange API

Exchange Balances

AssetFreeLocked TotalSourceAs of
Choose an exchange’s Balances page.
Billed now
—
waiting for Kraken
Parked on Kraken
—
$20,000 of USD is reserved and is never used for orders
Next tier by parking
—
assets on platform
More to park
—
to reach that tier

Kraken fee ladder

Loading…

How a Kraken fill stays hedged

A Kraken maker is post-only. The moment it fills, the private WebSocket execution listener dispatches the Avalanche hedge. That path is measured in milliseconds. The slower REST poll is only the backup if the socket drops an event.

Three checks stop a fill from sitting with no hedge:

  1. DEX down. Two ticks in a row where the on-chain hedge cannot be quoted cancel every resting maker on that rule. The reason recorded is that the DEX leg is unavailable, so a fill can never rest unhedged. A Kraken or Binance rate-limit is not treated as a DEX outage — those orders stay up.
  2. Gate closed. Turning the rule off, losing the local Avalanche node, flipping the venue kill switch, or turning this asset Off on Balances closes the gate. The next tick pulls the resting makers. A live maker is not left up while the orchestrator would refuse the hedge.
  3. Failed hedge is not profit. If the Kraken leg fills and the DEX leg never gets a transaction, the execution is marked failed. It is excluded from settled profit and listed below. The janitor does not sell that leftover on its own. The Balances page is the control that sells an asset and spreads the dollars across the assets left On.

Rows here are Kraken only. The profit report still lists every venue.

Unhedged Kraken fills

Loading…

Exchange
—
Avalanche wallet share
Target Allocation
—%
hard ceiling for this exchange
Allocated Now
—
active trades and maker orders
Available to Trade
—
inside this exchange budget

Exchange Wallet Allocation

This percentage partitions the shared Avalanche wallet by exchange. All live strategies, maker orders, and staleness trades derive their maximum allocation from this ceiling before posting.
—%

Shared Avalanche Wallet Envelope

—
Combined exchange targets cannot exceed 100%. Unassigned capacity remains idle and available for a later allocation change.

Deployable Capacity by Strategy

Each maker side sizes itself to the tightest live constraint: exchange collateral (free balance + its own resting order), on-chain hedge inventory not reserved by other strategies, and this exchange's wallet-allocation headroom. When the bound is cex collateral the wallet share is not what limits the order — the exchange balance is.
Loading strategy capacity…

Active Allocation Breakdown

Loading reservations…
Exchange
—
—
Executions
—
round trips on this exchange
Filled
—
hedge confirmed on-chain
Reverted / Failed
—
hedge reverted or failed
Settled P&L (exact)
—
from fills + on-chain receipts

Current Trades

bid/ask sandwiches resting on this exchange's book — tracked mid shows which side is closer to a fill
Loading…

Executions — loading…

whenchainpurposevenueside market amount inamount out (actual / floor) txstatuslabelerror
Loading executions…

Exchange Fill Record

— fills · — maker · fetched — from the private exchange API
TimePairSideQuantity PriceQuote Amount FeeLiquiditySettled P&LOrder IDTrade ID
Choose an exchange’s Trade History page.

Flowchart

t is how long that function took on its last run. Red means t is 100 ms or longer. A dash means the function has not run since this process started.
Executions
—
on-chain trade attempts
Filled
—
tx confirmed on-chain
Reverted / Failed
—
tx mined but reverted
Settled P&L (exact)
—
from fills + on-chain receipts

Current Trades

bid/ask sandwiches on the CEX book — tracked mid shows which side is closer to a fill
Loading…

Executions — loading…

whenchainpurposevenueside market amount inamount out (actual / floor) txstatuslabelerror
Loading executions…

Exchange Fill Record

— fills · every Kraken + Binance.US private fill · click a row for the fee waterfall
TimeExchangePairSideQuantity PriceQuote Amount FeeLiquiditySettled P&LOrder IDTrade ID
Loading exchange fills…

Considered Opportunities — loading…

when kind chain route size net bps floor bps net usd avail bal verdict reason / outcome
Loading opportunities…
Considered
—
Allowed
—
Aborted
—
Allowed P&L (est)
—
Mode
—
execution mode
Uptime
—
since boot
HTTP
—
admin endpoint
Iris API
—
CCTP attestation

Fee Engine

applied on next opportunity tick

Runtime

—

Pipeline Latency (in-process)

execute pipeline only — wire-time latency is bound by RPC + relay
stagecountlast ns mean nsp50 nsp99 nsmax ns
Errors
0
since boot or last reset
Warnings
0
since boot or last reset
Last 5 min
—
err / warn
Ring
—
in-memory capacity

Top sources

grouped by tracing target — usually a Rust module path
targetcount

Top messages

numbers + tx hashes collapsed to # so similar errors group
signaturecount

Live feed

0 events shown
time level target message fields file
Tasks Running
—
live background workers
Total Registered
—
since boot
Finished / Aborted
—
terminated tasks
Failed / Panicked
—
non-zero exit

Registered tasks

every long-lived background task tracked by the central supervisor
name kind status uptime spawned at finished at description
Host
—
colo box
CPU
—
load —
Memory
—
available —
Root disk
—
—
— —

Identity

host / OS / uptime
—

This engine process

arbx-engine self
—

CPU

—
core%MHzbar

Memory & swap

from /proc/meminfo
—

Filesystems

capacity + inodes
mountdevicetype sizeusedavailuse% inodes%

Network interfaces

live RX/TX rates over ~250ms sample
ifacestatespeed RX/sTX/s RX totTX tot err/dropaddrs

Systemd units

key colo services
unitactivesubpidrssrestarts

Docker

containers
namestatecpu%mempids

Top processes

by CPU over sample window (top 25)
pidusername cpu%mem%rss thrcmd

Move USDC via CCTP

—
⇅
—
From—
To—
Amount—
Modecctp_v1
Est. fees~$2.50 src gas + ~$0.50 attestation

Bridge Routes

Available CCTP corridors (USDC native burn-and-mint).

CCTP Tracker

background service polling Iris every 5s —
Last tick
—
since boot
In flight
0
non-terminal transfers
Burns
0
submitted · failed
Attestations
0
last seen —
Mints
0
settled · failed

Currently in flight

idstatussrc→dst amountburn txattestationmint txage

Rebalance History

idstatussrcdst amountmode burn txattestationmint tx operatorcreated
Total Native USD
—
across every wallet × chain
Total Wrapped USD
—
canonical wrapped-native
Recent Wraps
—
submitted (in journal)
Recent Unwraps
—
submitted (in journal)

Per-Chain Wrap Status

live RPC: native (snapshot) · wrapped (multicall) · click Wrap to deposit native into the WETH9-clone, Unwrap to withdraw native back
Loading wrap balances…

Wrap / Unwrap Activity

whenchaindirectionwallet wrapped amount statustxerror
Loading activity…
Total Inventory USD
—
across every chain wallet
Chains in Drift
—
at least one token off target
Stalled Pairs
—
rule cannot fire — base or quote ≈ 0
Swap Suggestions
—
queued for operator click

Auto-Rebalance —

when ON, the engine fires one swap per cycle per chain, gated by every guard below — daily caps, gas %, drift %, oscillation, cooldown
Mode
—
Max swap (USD)
Min swap (USD)
Cooldown (sec)
Min drift %
Max gas % of swap
Daily swap cap
Daily USD cap
Spent today (rolling 24 h)
— swaps · $—
Last action
never
Cycles · Swaps · Errors
— · — · —

Per-Chain Inventory

target = equal split across base/quote of every [[dex_to_dex]] rule on the chain · native reserved as gas
Loading rebalance snapshot…
Assets tracked
—
canonical names with ≥1 chain
Chains compared
—
distinct chain ids
Executable now
—
net > 5 bps after costs
Watching
—
gross > 3 bps but not yet net-positive

Executable Cross-Chain Opportunities

net > 5 bps after CCTP fee + 2 swap legs (5 bps each) + 8 bps slippage buffer · execute manually via the Rebalance and CCTP Bridge tabs
asset buy on buy $ sell on sell $ gross bps bridge swap slip net bps staler route
loading…

Watching

gross spread present but cost stack still wins — these are early-warning rows, watch for them to flip net-positive.
assetbuy onbuy $ sell onsell $ gross bpsnet bpsnote
loading…

Per-Chain Asset Prices (USD mid)

freshest BuyBase + SellBase quote on a USD-pegged pair. Stale (> 30 s) rows are excluded from the spread search above.
assetchainlocal sym USD mid buysell venueagefresh
loading…

Profit report

One card per trade route. Wallet in this currency is the full USD balance of that asset, every venue, not split across routes. Result is settled money after fees and gas. Gas is that on-chain cost, already taken out of the result. Performing is the return on that money, or the win rate, or how the live quote compares with its floor. Edge reality is the posted edge stored on each fill, the net that fill was aimed at, and the settled net it actually hit. Print and the PDF list every pair.

Open this page to load the latest report.

User accounts

…

Create user

—
Total
—
Open
—
In progress
—
Waiting
—
Resolved

Tickets

New ticket

Select a ticket to view the thread, or submit a new one.

Alchemy

Manages the API key used when a chain's endpoint source is set to Alchemy on the Nodes-Pricing tab. One key covers every network that has an alchemy_network slug configured — you don't pay per-chain.

loading…
Eligible chains
—
How Alchemy billing works
Alchemy bills by Compute Units shared across every network in their catalogue. The $49/mo Growth tier gives you one monthly CU pool; you create one app per network on Alchemy's dashboard but they all draw from the same balance. For arbx that means the same key lights up Avalanche, Ethereum, Base, Arbitrum, Optimism, and Polygon pricing feeds as soon as you flip their respective toggles to Alchemy on the Nodes-Pricing tab.

This instance …

…

Pending enrollments

Approved guests

Guest dashboard

Loading…

Readiness checklist

Loading…

Identity

Authentication

Actions

What's left to do

Relay audit log (last 256)

Functions
—
named dashboard functions
Firing
—
(t) still climbing
Stalled
—
(t) ≥ 8s and still running
Slow
—
last (t) ≥ 1s

Function Speed

(t) starts when the function is fired. While it is still running, (t) is the time since that fire. When it returns, (t) is how long the fire took. A healthcheck reads (t) four times a second. ok means the last fire finished under 1s. slow means the last (t) was 1s or more. stalled means it is still running and (t) has reached 8s. This page does not call the functions.

pagefunctionhealth (t) fires max (t) last error
Loading function list…

Approve guest

Bearer token issued

The guest will receive this token automatically on its next status long-poll. If you need to install it manually, copy the value below into the guest's data/relay_token file (raw text, no JSON wrapping). This token will not be shown again.

Change password

CEX-Maker / DEX-Hedge (DSA)

—
loading…

Staleness (DEX→CEX)

—
loading…
Trading Rules
Rules are grouped by strategy kind below. Double-click any row for the full profitability analysis (cost stack + buy/sell legs + coaching). Press ▸ ops to inline the live opportunity feed. Modes: OFF — paused · LIVE — observe only, not fed to the trade engine · ON — fully executing. CMDT and Staleness can both be ON at once (DSA maker-first vs DEX-first capture). CMDT rules flagged dry_run in config stay in observe mode regardless of ON.
Trade Profiles
…
Profiles are per exchange. Activating a Kraken profile never touches Binance knobs (and vice versa). Engage Autosave to record every live edit into that exchange’s active profile and both change logs below.
Profiles · Kraken
loading…
Editing profile
ⓘ
What the maker strategies are using right now. Hover ⓘ next to each knob for an explanation.
loading…
Kraken change log
this exchange · newest first
loading…
All exchanges
global · newest first
loading…
CMDT Backtest
Replays guarded-maker CMDT logic per DEX venue (Pharaoh, UniV3, LFJ, Pangolin) against Kraken BBO + trades + DEX mids. Each venue has its own tape stream. Historical DEX is proxied from CEX OHLC; live sampler writes real per-venue mids.
Strategy & knobs
DEX venues (Kraken CMDT rules) — unchecked = all
Edge (bps) 110
20110200
Min net profit (bps) 55
055150
Compare profiles runs saved Trade Profiles + live/boot defaults. Run custom knobs applies the sliders above (edge + min net) on selected venues using boot defaults for other fields.
Market tape
loading…
Ranking
No run yet. Compare profiles or run custom knobs, then click a name to see per-venue PnL.

Ops reference

Same text as each page’s help carousel. Print a card or print all.