Binance USD-M Futures · LIVE · Tokyo
Sign in
Dashboard
Live snapshot of the bot. The cards below show service state, instance, current wallet balance, open position count, the last triggered alarm, and SSM agent reachability. Use Stop / Start to control the trading loop. Below the cards: per-position breakdown with TP / SL completion bars. Auto-refreshes every 10 seconds while this tab is open.
Wallet
Real-time wallet balance and a 7-day equity curve from Binance. Filter the trade history by date, model, regime, or outcome. Each trade shows gross PnL, fees, and net PnL. Use Refresh to pull fresh data on demand; this tab also auto-refreshes every 10 seconds while focused.
Open positions — % of equity
No open positions.
Recent realized PnL
| Date | Time | Symbol | Side | Exit reason | Model | Net (USDT) |
|---|
No realized PnL events in the last 7 days.
Trade history
| Date | Time | Symbol | Side | Model | Qty | Price | Gross | Fees | Net | Duration | Exit | Regime |
|---|
Analysis
Per-model performance derived from the bot's runtime state JSON (PF, WR, R:R, win and loss counts). Today's data updates live; older days come from S3 forensics archives. The PnL calendar shows daily PnL — click a day to drill into its forensics session.
Period summary
What is Drawdown?
Drawdown measures how far below your peak equity you are right now. Peak = the highest wallet balance you've reached in this measurement window. Current = how much you've lost since that peak (if anything).
Example: wallet hit $34.20 at peak, currently $32.15 → drawdown = (34.20 − 32.15) ÷ 34.20 = 6.0%.
Why it matters: drawdown indicates risk-of-ruin. Sustained drawdown means strategy is bleeding; small drawdown means consistent profitability.
What is Profit Factor (PF)?
PF = sum of winning trades ÷ |sum of losing trades| over a window.
PF > 1 means net positive over that window;
PF < 1 means net negative.
Example: $1.20 in wins, $0.60 in losses → PF = 2.00.
Today/7d/30d/365d PF is sourced from Binance's realized-PnL income endpoint (true gross split). Per-model PF below uses lifetime totals from the bot's own counters.
What is Win Rate (WR)?
WR = winning trades ÷ total trades over a window. A 50% WR with an asymmetric R:R (wins bigger than losses) is fine; a 65% WR with R:R below 1 still bleeds.
What is R:R (risk-to-reward)?
R:R = average win size ÷ average loss size. The bot targets ~5-7× asymmetric R:R via wide TP / tight SL; sustained R:R below 1 is a sign the configured TP/SL ratio doesn't match the market regime.
What is Sharpe?
Sharpe ratio = mean daily PnL ÷ standard deviation of daily PnL,
annualized by √252. Higher = more consistent profits per unit of
volatility. Sharpe > 1 is decent;
Sharpe > 2 is excellent for crypto futures.
What is Sortino?
Sortino ratio = mean daily PnL ÷ downside-only stdev (annualized). Same idea as Sharpe but only penalizes losing-day volatility — winning-day spikes don't drag it down. Most useful when you have asymmetric returns.
What is Calmar?
Calmar ratio = annualized return ÷ max drawdown. Tells you how much return you're earning per unit of worst-case loss. Higher is better; below 0.5 is concerning.
Risk limits & current usage
Hard stops the bot enforces automatically. When a limit is breached the bot pauses
new entries (or, for per-model caps, freezes the offending model for the day).
Pulled from operator_config.yaml + live runtime state.
PnL calendar
—
Daily PnL — last 7 days
Model performance (all-time, from runtime state)
| Model | State | PF | WR | R:R | n wins | n losses | last trade |
|---|
Regime breakdown (last seen)
| Regime | Date | Last seen | Recent count |
|---|
Model roster
| Model | State | Active in regime |
|---|
Commands
Whitelisted operations executed via SSM RunCommand on the bot host. Each command maps to a fixed payload — arbitrary shell is never allowed. Destructive commands require explicit confirmation. Write commands (Flatten / Stop / Resume) are currently deferred to Telegram — see the Operator docs for the workaround. Below: a Telegram command reference for parity.
Telegram command reference
For comparison only — these run via Telegram, not via SSM.
Monitoring
/help — top-level command listing
Compact listing of every command grouped by category. No side effects.
/status — bot liveness snapshot
Returns uptime, trades, scans, regime, paused state, PnL, wallet. First check of every session.
/health — deeper operational snapshot
WS age, scans/min, regime, lockouts, daily PnL vs cap. Use when the bot has gone quiet or lockouts are biting.
/balance — current Binance Futures wallet balance
Quick capital check before/after manual deposits.
/positions — all currently open positions
Entry, mark, qty, leverage, unrealized PnL, TP/SL, model. Verify what the bot holds without logging into Binance.
/pnl — today's PnL with per-model breakdown
Wins / losses / net per model. Mid-session or end-of-session sanity check.
/trades — session + daily trade counts
Per-model daily rollup. When you want raw counts rather than position detail.
/snapshot — write a full JSON debug snapshot
Saved under run_artifacts/. Before reporting a bug or shutting down.
Trading control
/stop — pause new entries
Existing positions are still managed. Use to freeze new risk without closing what's open.
/resume — re-enable new entries
After the condition that prompted /stop has cleared.
/flatten — market-close every open position
Cancels all TP/SL. Emergency exit. Combine with /stop for a full freeze.
/shutdown — graceful full shutdown (priming step)
Keeps open positions; exchange TP/SL remain. 30s window to send /shutdown confirm.
/shutdown flatten — like /shutdown but market-closes positions
Planned shutdown when you do NOT want to leave positions open.
/shutdown confirm — second step, actually shuts down
Must be sent within 30s of the prime.
Models & promotion
/models — list every known model with state
LIVE / SHADOW. Copy-paste names from the reply for any name-bearing command.
/models_status — per-model state + advisory metrics
Samples, win rate, bps, reasons (low_sample, neg_expectancy, etc.). Advisory only — does not gate.
/enable_model <name> — set a model to LIVE
It will place real orders. No promotion gates.
/disable_model <name> — set a model to SHADOW
Signals still fire and are logged for calibration; no live orders. Use when a model is underperforming.
Safety reset
/reset_locks — clear per-model daily DD locks
Zeros gross_pnl and the win tracker. Does NOT clear daily_pnl or cooldowns. After a transient event tripped lockouts.
/reset_dsr — clear DSR auto-rejections
When a (regime, model) is hard-blocked by DSR based on stale pre-tune data.
Verbosity
/compact — terminal verbosity → COMPACT
Entries, exits, warnings, errors only.
/verbose — terminal verbosity → VERBOSE
Every log line including heartbeats.
/tg_compact — Telegram verbosity → COMPACT
Only entries, exits, warnings, errors reach TG.
/tg_verbose — Telegram verbosity → VERBOSE
Adds periodic ~60m heartbeats.
Config
Live YAML view of operator_config.yaml on the bot host.
Click Edit to propose a change — the new YAML is
schema-validated, snapshotted to S3, applied via SSM, then the bot is
restarted with a 12-second health check + auto-rollback on failure.
Every change is audit-logged.
loading…
Editing operator_config.yaml
SHA256 of base:
Snapshot diff
Compare any two snapshots from S3 side-by-side.
Status
Legacy status view — service liveness, instance health, SSM agent reachability. Most of this is now folded into the Dashboard tab; this view remains as a focused secondary reference.
Forensics
S3-archived session reports. Each session has a folder with
summary.json, trades.csv, and the raw
recording. Click a directory to drill in; click a file to preview
(markdown / json) or download (jsonl.gz / recordings).
Logs
CloudWatch Logs from the bot service. Use a preset for common queries or write a custom Logs Insights query. Auto-refresh is intentionally OFF for this tab — Logs are search-driven; click Search to fetch.
| Date | Time | Stream | Message |
|---|
API / Latency
Custom CloudWatch metric charts. Bot-side metric publishing is pending; see the explanation banner below. The Range selector controls the lookback window.
Backtest
Submit a BV (backtest validation) run on the bot host. Pick the symbol
universe, model bundle, and date range; output streams into the panel
below as the bot's bot.backtest.runner executes via SSM.
Historical jobs persist in DynamoDB.
Job history (this session)
| Date | Submitted | Job ID | Symbols | Models | Status |
|---|
Audit log
Every operator-triggered write action — bot Start / Stop, command execution, config edit. Stored in DynamoDB with a 90-day TTL. Filterable and exportable. Records are written best-effort: a missing entry never blocks the underlying action.
| Date | Time | Actor | Action | Target | Result | Details |
|---|
Alarms
CloudWatch alarms (managed and custom). Custom rules you create with New rule appear in the top table; the bottom table shows all bot-prefixed alarms with their current state.
Custom rules (operator-managed)
| Name | State | Metric | Threshold | Period | Stat |
|---|
| Alarm | State | Date | Since | Reason |
|---|