📱Get trade alerts on your phone — download the Android app (full dashboard + alarm-grade ring/vibrate) or enable browser push.Download Android APK
⚠ 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
chain
address
native
balance
native usd
usdc
usdt
weth
weth usd
gov
gov bal
gov 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.
chain
label
address
native
usdc
weth
usd
actions
My Transfers
when
chain
asset
amount
from
to
role
status
tx
note
Loading…
Send from Personal Wallet
—
Registered Signers
chain
role
address
label
username
ext 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 monitorOne 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 trajectoryCumulative 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 projectioncollapsed
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
DEX hedges (Kraken AVAX)
Target venues for Kraken→Avalanche maker hedges. Off pulls resting makers on the next tick.
PharaohLFJUniswap V3
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…
Inventory Arb Trade
—
—
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
reason
count
Recent Decisions
when
verdict
kind
chain
size
net bps
decided in
reasons
…
checking engine state…
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
chain
pair
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
chain
pair
buy venues
sell venues
size steps (USD)
min profit bps
max inv skew %
searching
config
Liquidity Gate thin pools dropped before risk / history
chain
pair
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
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
When
Src
Side
Pair / Venue
In
L1 ms
L2 ms
Status
Tx
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.
#
network
RWA
wallet
Kraken
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.
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
asset
free
locked
total
loading…
OPEN ORDERS
pair
side
price
qty
status
loading…
RECENT TRADES · double-click a row for the fee waterfall
time
pair
side
qty
price
quote
fee
maker
Settled P&L
System
Order ID
Trade 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
venue
trading
adapter
min
avg
max
samples (ms)
anticipated execution
Open this tab — live REST ping from the engine host.
Live bookTicker (WebSocket)
pair
bid
bid size
ask
ask size
mid
age
waiting for first WS frame…
Binance.US account binance-spot
loading signed balances…
BALANCES
asset
free
locked
total
loading…
OPEN ORDERS
pair
side
price
qty
status
loading…
RECENT TRADES · double-click a row for the fee waterfall
time
pair
side
qty
price
quote
fee
maker
Settled P&L
System
Order ID
Trade 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
venue
trading
adapter
min
avg
max
samples (ms)
anticipated execution
Open this tab — live REST ping from the engine host.
Live bookTicker (WebSocket)
pair
bid
bid size
ask
ask size
mid
age
waiting for first WS frame…
Binance Global account binance-global
loading signed balances…
BALANCES
asset
free
locked
total
loading…
OPEN ORDERS
pair
side
price
qty
status
loading…
RECENT TRADES · double-click a row for the fee waterfall
time
pair
side
qty
price
quote
fee
maker
Settled P&L
System
Order ID
Trade 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
Kraken account
Exchange Balances
Asset
Free
Locked
Total
Source
As of
Hold
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:
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.
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.
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.
Pair budgets
Each live pair has its own exchange dollar budget and its own Avalanche dollar budget.
A bid may rest up to the exchange amount. The hedge may spend up to the Avalanche amount.
The exchange sliders together cannot pass that account. The Avalanche sliders together
cannot pass this exchange's share of the Avalanche wallet. Save uses the button above.
Loading pair budgets…
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…
when
chain
purpose
venue
side
market
amount in
amount out (actual / floor)
tx
status
label
error
Loading executions…
Standalone feesno hedge · the number is the venue fee only · not in the totals above
when
venue
pair
side
fee
order
Exchange Fill Record
— fills · — maker · fetched — from the private exchange API
Time
Pair
Side
Quantity
Price
Quote Amount
Fee
Liquidity
Settled P&L
Order ID
Trade 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…
when
chain
purpose
venue
side
market
amount in
amount out (actual / floor)
tx
status
label
error
Loading executions…
Standalone feesno hedge · the number is the venue fee only · not in the totals above
when
venue
pair
side
fee
order
Exchange Fill Record
— fills · every Kraken + Binance.US private fill · click a row for the fee waterfall
Time
Exchange
Pair
Side
Quantity
Price
Quote Amount
Fee
Liquidity
Settled P&L
Order ID
Trade 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
stage
count
last ns
mean ns
p50 ns
p99 ns
max 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
target
count
Top messages
numbers + tx hashes collapsed to # so similar errors group
signature
count
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
%
MHz
bar
Memory & swap
from /proc/meminfo
—
Filesystems
capacity + inodes
mount
device
type
size
used
avail
use%
inodes%
Network interfaces
live RX/TX rates over ~250ms sample
iface
state
speed
RX/s
TX/s
RX tot
TX tot
err/drop
addrs
Systemd units
key colo services
unit
active
sub
pid
rss
restarts
Docker
containers
name
state
cpu%
mem
pids
Top processes
by CPU over sample window (top 25)
pid
user
name
cpu%
mem%
rss
thr
cmd
Thermal zones
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
id
status
src→dst
amount
burn tx
attestation
mint tx
age
Rebalance History
id
status
src
dst
amount
mode
burn tx
attestation
mint tx
operator
created
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
when
chain
direction
wallet
wrapped
amount
status
tx
error
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
— · — · —
Recent skip decisions — why the loop is (correctly) idle
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.
asset
buy on
buy $
sell on
sell $
gross bps
net bps
note
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.
asset
chain
local sym
USD mid
buy
sell
venue
age
fresh
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
…
Page access
Select a user →
Drag pages between Available and Granted. Only granted pages appear in that user's navigation.
Tap a row in the table above to edit that user. Changes apply after Save (they take effect on next login or page refresh).
Available
Granted
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
Upstream + gate
Guest dashboard
Loading…
Readiness checklist
Loading…
Live trade gate
Identity
Authentication
Upstream relay
Connected guests
Actions
What's left to do
Deploy a guest droplet
Two ways to authorize a new guest:
A. Zero-friction (shared secret)
Pick a long random string (e.g. openssl rand -hex 32).
Paste the SAME value into [instance.relay].shared_secret in this engine's default.toml AND every guest's default.toml.
Restart this engine. Guests can now dial in immediately, no admin click needed.
Open Admin → Instances, find the matching pending row, click Approve.
Token is issued, guest auto-resumes on subsequent restarts.
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.
page
function
health
(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.
Fill detail
Marks show where the simulated trade would have executed on each venue. CEX = maker fill price; DEX = modeled hedge price (pool fee + slip).
Ops reference
Same text as each page’s help carousel. Print a card or print all.
arbx · folded capital
—
Exact realized P&L
…
Today …
–
wins
–
losses
–
gross
–
fees
Trajectory · all trades
Cumulative settled P&L over time
Trajectory · gains only
Cumulative winning trades
Trajectory · losses only
Cumulative losing trades
move · click · key to wake · charts rotate every 5 min
File a ticket
Describe the issue or request. An admin will see it on the Tickets page.
Top up gas — …
From wallet—
USDC available—
Recommended—
Native price—
Est. native out—
Trade Breakdown
What was bought, what was sold, and exactly how much was made or lost — settled money, verified against the exchange record and the on-chain receipt.
loading…
Opportunity Analyzer
P&L breakdown + what-would-make-this-profitable suggestions from the last searcher tick.
loading…
Maker Fill Details
How close the live price is to filling this resting order, and why the edge is where it is.
loading…
Profitability Analysis
How this rule's net BPS is calculated + what would make it profitable.