📱 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 idprivate key

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 Opens P&L fullscreen and starts the screensaver. Left and right arrows change slides. Double-click to exit. Click a trade on the tape for the full breakdown. Charts rotate every 5 minutes.
Exact profit / loss — since September 4
…
Today: …
Tap a row for the full fee breakdown, targeted profit, and achievement %. Click gross / fees / gas to rewrite the headline.
$20,000 USDG on Kraken is untouched. It sits as the fee-tier park and is not used for maker bids, asks, hedges, or rebalances. Free USD/USDC above that park is what trades.
TAPE
Overall trajectory Cumulative settled P&L over time — ← → pan · + − zoom
← → pan · click chart first
← → slides · double-click to exit · click a trade on the tape for details.
–
winning trades
–
losing trades
–
gross (before fees)
–
exchange fees paid
–
standalone fees
–
gas paid
–
staleness P&L beta
loading venue fees…
loading…
loading staleness P&L…

P&L balances

Holdings by wallet and chain, with settled P&L charts and a 7-day forward projection from the trade pace.

—
held across wallets
—
settled P&L (visible)
—
chains with balances
—
assets with charts
Tap a chain chip to focus · charts use settled trades since September 4
loading wallets, equity, and settled trades…

Route priority

Every settled route, best profit first. Double-click a row for every fill on that route, with the running total. The move plan grows Kraken JOE and Kraken Pharaoh AVAX from the books that lost. USDG stays parked.

loading the move plan…
loading routes…

Route funding

Every live ask and bid vs the available balance on that side. Fed = posting at that balance. Thin = posting under it. Blocked = under the route minimum or not posting. A profitable side sizes to the balance it can hedge. Refreshes every 5 seconds.

—
live routes
—
sides
—
at 100%
—
thin
—
under min / not posting
loading route funding…
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…

Binance.US staleness beta

loading Binance.US staleness…

Binance.US staleness report beta

Loading the Binance.US staleness report…

Kraken staleness beta

loading Kraken staleness…

Kraken staleness report beta

Loading the Kraken staleness report…

Binance Global staleness beta

loading Binance Global staleness…

Binance Global staleness report beta

Loading the Binance Global staleness report…
loading the loss buffer…
Decisions
—
considered since boot
Allowed
—
passed every gate
Aborted
—
blocked pre-trade
Decision latency
—
average since boot · worst in the last minute

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 beta

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 beta

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 beta

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

Active routes · funding

RouteExchange Token side USDC side Min clip Sell on exchange Buy on exchange
Loading live routes…

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

live quotes — hover a label to see what it means
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

Open the printable process maps: every engine process, exchange data path and component data flow, with the knob values in effect now.
t is how long that function took on its last run. Red means t is at or over that function's budget (100 ms unless the box says otherwise: Binance.US steps allow for the 226 ms London to Tokyo round trip, background loops are sized to their interval). 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

live quotes — hover a label to see what it means
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.

Requirements

build 20261103.3

Bugs and optimizations found in the running engine, and what was done about each one. The posted distance still clears the live maker fee plus a 15 bp minimum. Quotes are not moved onto the touch.

Found Kind What was wrong What we did Build
2026-11-02 P&L A CEX fill whose DEX hedge reverted still counted as a multi-dollar win. The report used the swap’s min-out as if the pool had paid. A reverted hedge never invents proceeds. The headline keeps the settler’s booked fee (and burned gas). Oct 30 AAVE and BTC no longer print +$3 from JoeRouter EXPIRED. 20261103.3
2026-10-24 P&L The loss card said a 45 bp live edge covered a 250 bp buffer. That buffer is older than 48 hours and does not raise the post. A loss older than 48 hours says so on the card. The headline, the win and loss counts, gross, fees, and gas each say what they add, since September 4. 20261024.8
2026-10-24 GUI A narrow live card hid how far the order sat from the book, and hid how long it had rested. The side cell also printed the whole trade id. From the touch and age stay visible, with their names in front of the numbers. The side cell says on book. The trade id is on the hover and in the copied JSON. 20261024.7
2026-10-24 GUI The live row called the gap from the mid “to the touch,” and it called the profit of crossing the current book the profit of filling our order. From the touch is the gap from the best book price on that side to our order. At the touch is the net if that book filled, after fees. At our price is the net if someone hits our order and the pool does not move. A live card shows the limit and the size, not a paragraph. 20261024.6
2026-10-24 GUI The live card put the hedge gap and the walk-to-our-price gap under one word, and buried the required post in a row of pills next to a price chart. The live card leads with six labeled figures: required post, distance now, edge knob, floor, cushion, and min net. To the touch is its own column. The price chart sits under Where the prices sit. 20261024.5
2026-10-24 Risk A fill report on a shared Kraken or Binance.US account was logged as missed on the first pair that heard it, even when another pair still had the order. The missed-fill alarm fires only for the pair that posted or adopted that order, and only after that pair has lost the resting row and the placement record. 20261024.4
2026-10-24 GUI The live window opened every pair with four charts and three sliders. The word sandwich and five different edges sat on one card. The live window shows the pair, the two orders, and the distance. Charts and sliders sit under Adjust this pair. Each label has a tooltip. Edge knob, required post, and distance now stay separate names. 20261024.3
2026-10-24 Risk A missed fill and a retry still expired after one hour. The in-memory list of dropped orders did too. Every recovery path keeps the fill hedgeable for a day. The phone alert is unchanged. The 15 bp gate still applies. 20261024.2
2026-10-24 Guard The loss buffer was empty after a restart until someone opened P&L. A ten-day-old crash number was not used, and a thin opposing touch could still fill a resting order. Buffers are saved and loaded at startup, and P&L is built once after boot so a fresh loss arms without opening the page. A loss older than 48 hours does not raise the post. An opposing touch under $10 pulls the resting quote. Owning the touch on a real book does not. 20261024.2
2026-10-24 P&L Wallet cards shared one read across hedges. Binance before-and-after stayed frozen when the strings differed slightly. Gas and the clip used the resting size, not the fill, and skipped the dollar mark. Late fills had no momentum. Tape drift stayed on the candle after the price was replaced. Each card applies its own hedge leg unless the live wallet already moved by that leg. A venue read that has not moved by the fill is updated from the fill. Gas and the clip use the filled size in dollars. Momentum is stamped at post. Drift is recomputed from the engine price. 20261024.2
2026-10-24 Frequency A same-tick repost skipped the free-balance check. The traded-through counter went up on the cancel decision, before the market had traded through. The live window called the edge knob the posted edge, and a saved 5 bp minimum looked live. The repost may use the clip just cancelled, and nothing beyond the free balance plus that clip. The counter is only a cancel the market traded through within 60 seconds. The live window names the edge knob, the required post, and the distance now, and the minimum shows 15 bp. Hover any label for the definition. 20261024.2
2026-10-24 Risk A hedge whose target net was under the minimum was still sent. One card read −142 bp and lost $1.09. Another read +21 bp against a 5 bp floor. The hedge is refused when target net is under the minimum. The minimum is 15 bp and a saved 5 bp knob cannot undercut it. The refusal is logged and counted. 20261024.1
2026-10-24 Risk The maker loop dropped orders. The settler found them hours later, including two naked positions held overnight. A fill the loop missed is queued for a day, not one hour, and the phone is alerted the moment the settler sees it. Late-fill memory holds 256 orders for the hour. The 15 bp gate still applies. 20261024.1
2026-10-24 Risk Account cards went negative. A $2.74 free balance minus a $154 fill printed −$152. A 1.15 AVAX balance minus a 17.53 sale printed −16.38. Margin is not enabled. That subtraction was the free residual, and the spent coins were already locked in the order. The after-balance no longer goes negative. A new post cannot exceed the free balance the venue just reported, except the repost of an order we just cancelled. 20261024.1
2026-10-24 Risk max_rest_ms did not cancel. Orders rested 42 minutes against a 180 second cap, and 17 minutes against a 90 second cap. The cap was cleared whenever the price had not left the band. The cap cancels on the tick it expires, including when the price is unchanged and when the side is otherwise skipped. The cancel is counted. 20261024.1
2026-10-24 Risk Auto-size posted $154 against a $120 maximum and three clips under the configured minimum. The size grid and the post both stay inside min_usd and max_usd. A balance under the minimum does not post. 20261024.1
2026-10-24 Risk A 34 bp post went out against a 38 bp fee. The round trip could not win. A post is refused unless its edge clears the live fee stack, half of any exchange spread above 20 bp, and the 15 bp minimum. 20261024.1
2026-10-24 Risk A maker order filled in two pieces 10 ms apart. The hedge used the first piece and left 0.001152 base unhedged. The two prints are one quantity. The hedge waits half a second and sends the larger cumulative size. A later print sends only the remainder. 20261024.1
2026-10-24 Guard The loss buffer was calculated on every losing trade and never given to the strategy. The card also showed the losing trade's posted edge as if it were this fill's edge. Each P&L load publishes the worst buffer per route and side. A live edge under that buffer does not post, and a resting order under it is pulled. The copied figure is named loss posted edge. 20261024.1
2026-10-24 Frequency Cancels where the market then traded through the price were 26 to 46 per route. The hold was a fixed 8 bp, including on quotes that had paid for more room. A toward move is held for the whole distance that still clears 15 bp. Past that, the cancel is counted as a traded-through cancel. The order is not held into a loss. 20261024.1
2026-10-24 Guard Orders filled on books the engine had marked untrustworthy, including a 63 bp book and a thin opposing touch. An exchange book wider than 40 bp, or a pool wider than 80 bp, pulls the quote. A book between 20 and 40 bp adds half that excess to the required edge. An untrusted mid still blocks only a new post. 20261024.1
2026-10-24 Guard JOE momentum_max_bps was 400, so the guard could not fire short of a crash. A fat modeled edge then lifted the cap further. A saved knob above 80 bp is capped at 40 bp, and the surplus lift does not apply to that cap. A side with no momentum sample does not start a new post. 20261024.1
2026-10-24 P&L The fallback target printed the edge and labelled it as edge minus the fee. 34 minus 38 showed as +34 bp. Every target path subtracts the fee stack. A stored figure that is already below the edge is left as the net. 20261024.1
2026-10-24 P&L Wallet quote gained exactly 0.031296 on trades of different sizes. Two hedges in the same millisecond swapped each other's wallet fields. The min-clip notional was the probe size, so gas read 34 bp on a $154 fill. A wallet read that only moved by dust, or a second hedge inside two seconds, uses this leg's own amounts. Gas bps and the min-clip notional are scaled to the order that filled. Binance after-balances still apply the fill when the cache has not moved. 20261024.1
2026-10-24 P&L The public candle and the engine book disagreed by 25 to 500 bp, and the momentum line followed whichever one the card happened to read. Late fills showed no momentum at all. Five fields were all called the edge. When the candle is more than 30 bp from the engine mid, the card uses the engine mid. The knob, the posted distance, the distance at post, and the executable distance are separate fields. A new post waits until a momentum sample exists. 20261024.1
2026-10-23 Fee The cost of a quote has to be the account’s fee, not a stale seed. Kraken fills since Oct 7 charged about 20–22 bp. Binance.US maker fills charged 0 BNB. The quote and the hedge check read the live schedule (Kraken TradeVolume 22 maker / 38 taker, Binance.US 0 maker). A Kraken zero before that read is treated as the 40 bp seed, so a fill is not priced as free. 20261023.3
2026-10-23 Fee Kraken order OI3SGN (15 Oct) was booked with a zero fee. The DEX hedge is DispatchFailed, so the settler skipped the fee read. Every 10 minutes the settler reads Kraken fills from September 4. A missing fee is read from the order itself, including when the hedge failed, and the booked profit moves by that fee. 20261023.4
2026-10-23 P&L The headline, tape, and charts mixed in trades from before September 4. P&L, the tape, the charts, and the profit report start on September 4, 2026 (New York). Older rows stay in the database. 20261023.3
2026-10-23 Speed Each live route asked the pool for every clip size one after another, so the order update waited on the whole chain of reads. The size grid is quoted four at a time. The posted price is unchanged: live maker fee, reserves, the 15 bp minimum, and the 8 bp rest band. 20261023.3
2026-10-23 Speed The footer asked the Avalanche node on every status poll, including a log read while the node was still starting. The node answer is reused for 8 seconds. Trading and hedging do not wait on that poll. 20261023.3
2026-10-23 Frequency After a reprice cancel the new quote waited for the next block. That gap was one to two seconds with no order on the book. A failed place in that gap used to start a 45 second cooldown. A cancel with no fill places the replacement on the same pass. The distance is unchanged. If the venue still has the old clip locked, the reservation stays with this order and the next pass tries again, without the 45 second cooldown. 20261023.11
2026-10-23 Speed Kraken and Binance rules for the same pool each asked the node for the same clip at the same moment. The second read started before the first answer was stored. The first read of a clip is shared. A second rule waits for that answer and uses it. If that read fails, the waiter asks again. The posted distance is unchanged. 20261023.10
2026-10-23 Speed The configured clip was read on its own. The rest of the size grid waited for that answer, then made a second pool read. The clip is included in the same pool read as the rest of the grid. The grid is sized from the last pool mark when that mark is under 5 seconds old, and from the exchange book after that. The prices that decide the order are the ones just read. 20261023.9
2026-10-23 Speed The size grid still sent a separate pool read for every clip, four at a time. A new block waited on those trips before the order could move. Every clip on a rule is read in one call. A size already stored for this block is reused. A sell from the previous output is kept only within 0.5%, and the price is the size that was quoted. 20261023.8
2026-10-23 Speed Each clip reads the pool twice in a row. The buy comes back, then the sell of that output is read, and the order waits out both trips on every new block. The sell of the previous output is read in the same wave as the new buy. It is kept when that output is within 0.5% of the new one, and the price is the size that was quoted. A larger move is read again at the real output. 20261023.7
2026-10-23 Speed Each clip on a tick asked the node for the latest block’s gas. One quote waited on that same answer once per size, ahead of the pool read that sets the price. A chain head younger than 3 seconds already carries that block’s base fee, so the quote uses it. A second read inside the same second reuses the last answer. The posted distance is unchanged. 20261023.6
2026-10-23 Frequency In 20 minutes the engine cancelled 102 resting quotes. Median drift was 9.2 bp against an 8 bp line, and 75 of those cancels were less than 2 bp past that line. Each cancel dropped the order to the back of the queue. A toward move may use the 2 bp that was already paid at post time. The order stays up until the fill would miss the 15 bp minimum. A wider tick (the line is already above 8 bp) gets no extra room. Away moves still re-anchor at 8 bp. 20261023.5
2026-10-22 Frequency Quotes sit about 50–65 bp off a 2 bp-wide touch. A 6-hour sample was roughly one fill against about 1,300 posts. Median cancel was 8.8 bp of drift. Left in place. That distance is the fee plus the 15 bp minimum plus the rest band. A closer quote would post inside the fee. The 15 bp floor is not lowered. 20261022.8

Configuration history

Saved knob sets, newest first. A row is a config file or a profile file whose edge, minimum, momentum, size, or dry-run differs from the one before it. The engine still will not post or hedge under 15 bp when an older file shows a lower minimum.

loading…
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.

Kraken staleness doctrine beta

Staleness takes the Avalanche pool first, waits for the receipt, then hedges on Kraken. It holds no resting order. The gate prices that hedge as a taker fill on the adverse touch, even when execution tries a post-only order first.

Maker orders are a different strategy. They post on Kraken and hedge on the DEX. Both may be on. They do not share a score.

The law

  1. DEX, then Kraken. A tick reads the Kraken websocket book, quotes the Avalanche pool at the funded size, and only then may swap. The Kraken hedge is the second leg.
  2. Score the taker. maker_first may try a post-only hedge for about 1.2 seconds, then an IOC. The gate does not use that maker price or the maker fee. It uses the touch a taker would pay and the live taker fee. A maker-sized edge is not a fire.
  3. The required gap is the whole stack. Required gross is the taker fee, the slip buffer, gas, the latency reserve, and the pair’s min net, rounded up. The operator threshold raises it when that number is higher. Modeled net must also clear $0.25.
  4. A gross gap above 250 bp is a bad quote. The engine refuses it. A real book we trade does not clear 250 bp at size.
  5. A side that cannot fund the clip does not quote. Buying the DEX needs chain quote and Kraken base. Selling the DEX needs chain base and Kraken quote. Capacity under the pair’s minimum is unfunded, not a near miss.
  6. Only a fresh websocket book may fire. A REST book can paint a price. It cannot authorize a take. A book older than 1.5 seconds cannot fire. After a fire the pair waits its cooldown.
  7. Do not cut the live floors to force a print. Quiet tape under the stack stays under the stack. The big switch on Kraken → Strategies turns every Kraken staleness rule off, and the next click puts each rule back to the mode it had.
  8. Staleness stays out of headline P&L until the staleness tile on the P&L page is on. Wins, losses, and P&L today follow that switch.

What the losses fixed

The Kraken JOE clips were scored as if the hedge would rest as a maker, about +2 to +24 bp. After the DEX receipt, Kraken filled the hedge as a taker at about 38 bp. Realized result was about −90 to −150 bp. One quote modeled +817 bp and still lost money. That quote is now a bad quote and does not fire.

Taker scoring stops that mismatch. It does not stop the pool moving during the receipt window. That drift is why slip and the latency reserve stay inside the required gap. Two older AVAX clips on Binance lost the same way at a 2 bp fee: the pool moved before the hedge, not because the fee was scored as maker.

The Kraken book

Each row is one [[staleness]] rule on Kraken. Cross-quote pairs hedge a USD, USDC, or USDT book and trade a WAVAX pool. The card shows the CEX price in that CEX quote. The gate converts the touch into the DEX quote before it scores.

  • AVAX/USDC on Pharaoh, hedge AVAX/USDC.
  • JOE/USDC on LFJ, hedge JOE/USD. Smaller clip, longer cooldown.
  • BTC.b/WAVAX on Pharaoh, hedge BTC/USDC.
  • WETH.e/WAVAX on Pharaoh, hedge ETH/USDC.
  • AAVE/WAVAX on LFJ, hedge AAVE/USD.

Binance.US and Binance Global have their own staleness rules. This page does not govern them. Binance Global stays dry until its own page says otherwise.

In force now

Live knobs and the last verdict. This is what the gate is using, not a copy of the file.
loading…

Ops reference

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