↦ Arbitrage Bot

v— Unknown Unknown Last cycle:
↻ auto-refresh 🔒 checking…
Engine Process
Stopped
Engine is not running
The dashboard stays up even when the engine is stopped.
Safety Mode
Dry-run logs every decision but never calls exchange order/withdrawal APIs. Turn off only after verifying keys, fees, and balances.
DRY RUN — safe, no live orders
Holdings
Loading…
BTC delta
Total BTC
Total MYR
Trades until rebal
Exchanges
Connected platforms and their monitoring state. Disabling an exchange removes it from future engine cycles (in-flight trades are not cancelled).
ExchangeHealthMonitoringPairsCapabilitiesAction
Loading…
Loading pair data…
Monitored Pairs
Select which pairs the bot scans and trades. Only pairs available on both exchanges are shown.
Loading available pairs…
Live Spreads
Gross and net (after fees) spread for every enabled route across all exchanges.
Pair Route Qty Spread Profit Status
Loading…
Routes
Enable or disable a whole platform below — a route is evaluated only when both of its platforms are enabled, it is supported on both legs, and its adapters are ready. The route rows are read-only; toggle platforms to control them.
Loading platforms…
Pair Buy on Sell on Status Rebalance Notes
Loading…
P&L Summary
The date range below filters both this P&L summary and the Trade History table. "Today's P&L" always reflects today regardless of the range.
All time
Total P&L (MYR)
Today's P&L (MYR)
Total Trades
Win Rate / Avg Spread
Trade History
The date range above also applies here.
Time Pair Side Exchange Qty VWAP (MYR) Total (MYR) Fee Order ID Spread Profit MYR Max Viable (MYR)
Loading…
Opportunity Scans
Ladder mode only — every window the market showed, whether or not the bot traded it. Sub-threshold windows appear with no profit figure; use Max Viable to gauge how much size each window could absorb.
Time Pair Route Best Spread Best Profit (MYR) Max Viable (MYR) Traded
Loading…
Arb Windows
Total size deployed per arbitrage window. A window opens on the first trade and spans the selected length (a 12:21 trade with a 1-hour window covers 12:21–13:21); the first trade after it closes opens the next window. Size = executed buy notional (MYR) per arb.
Window Start Window End Trades Total Size (MYR)
Loading…
Safety Mode
Dry-run logs every decision but never calls exchange order/withdrawal APIs. Turn it off only after verifying keys, fees, and balances. Restart the engine for changes to take effect.
DRY RUN — safe, no live orders
Exchange Fees
Taker fees per (exchange, pair) used in spread math. A manual row is locked — the engine never overwrites it. An api row is auto-seeded from the exchange's fee API on each engine boot. Editing a row locks it (manual); use Set auto / Lock in the Source column to switch modes (auto is only available for exchanges with a fee API).
ExchangePairBuy %Sell %SourceUpdatedAction
Loading…
Loading…
All values write to the project's .env file. Secrets are masked — click Show to reveal.
Exchange Credentials
API keys for each exchange. Binance is optional — leave its keys blank to disable it entirely. Restart the engine after changing these.
Loading…
Binance FX (XE Crawler)
Binance holds no MYR — its *_MYR pricing is synthetic (BTC/USDT × USD→MYR FX). Those pairs are only queryable when the self-hosted XE currency crawler is wired here. Leave the key blank to keep Binance metadata-only.
Loading…
Deposit Addresses
Required for auto-rebalance transfers into an exchange. Leave blank for coins you don't trade; a missing address forces that transfer to be manual.
Loading…
Notifications
Discord webhook for trade alerts, heartbeat, and error notifications.
Loading…
Portal Integration
The internal Portal reaches this bot over loopback using a shared secret. Set the key to the Portal's configured value for this app — a blank key fails closed (the Portal sees the bot as unauthorized). The base path is where the adapter mounts (default /portal). Restart the engine after changing these.
Loading…
Server & Application
API server bind + auth token and the database path. Restart required after changes. Dry-run mode is controlled by the toggle on Overview / Runtime Config, not here.
Loading…
Startup Fee Defaults
Read at engine startup only. For live changes without a restart, use Runtime Config → Fees.
Loading…
Engine Log (tail)
Last 300 lines from logs/engine.log. Refreshes on demand.
Logs will appear here once the engine is started.
Dashboard Authentication
The token is auto-generated on first run; the browser fetches it automatically over loopback — you don't need to touch this. Only use manual entry when opening the dashboard from a different machine (e.g. through the Portal or an RDP tunnel).
checking…
Portal Adapter — API Test
Exercises the adapter endpoints on this bot's loopback listener and shows the raw results. The key auto-fills from the bot; enable/disable/stop change the run state and ask to confirm.
Base path
X-Portal-Key
Auto-filled on the local machine (loopback only). Clear it to test the fail-closed 401.
Endpoints