Dashboard & monitoring
These pages are where you watch the bot: the live dashboard, the full position ledger, trade history, the P&L report, and the raw activity feed.
Two semantics that apply everywhere: (1) only filled positions count toward P&L — working/pending orders and closed option markets render "—"; (2) Confidence (directional model conviction, gated) and POP (probability a defined-risk/wheel structure finishes profitable) are different metrics — POP replaces Confidence on premium trades.
Dashboard /
The auto-refreshing (20s) home screen. Eight stat cards across the top:
| Card | How to read it |
|---|---|
| Account value | Real broker total, with an "as of … UTC" timestamp. It's cached and recomputed only on a position open/close or a manual Refresh, so pages load fast. A blue PAPER pill shows in paper mode. |
| Cash | Settled cash in the account. |
| Day P&L | Today's account P&L, matching Schwab's "P/L Day" (measured vs the day's open). The only daily metric; a same-day "Reset stats" re-baselines it. |
| Open P&L (vs entry) | Unrealized P&L on filled bot positions, measured against your entry price (not the day's open). |
| Realized P&L | Cumulative realized dollars, green/red. |
| Win rate | X% (nW / nL) — wins ÷ decisive trades. $0 scratches and
never-filled/canceled orders are excluded. |
| Open positions | Count of open positions. |
| Options at risk | Count of losing option/wheel groups (red if > 0). |
Below the cards: an Automation & safety panel (Pause/Resume, Close-only, PANIC, Scan now, Reset stats), the Open positions table (with Close selected / Cancel selected / Sync with Schwab / Refresh — working orders are highlighted amber), side-by-side At risk and On track lists, Expiring soon (options ≤ 7 DTE), Recently closed, and a live Activity feed. Wheel/PMCC legs collapse into one expandable strategy row per underlying.
Positions /positions
The full ledger in three sections: Wheel / PMCC (grouped by underlying — premium collected, net P&L; click through to the drill-down), Open positions (individual non-wheel — status, qty, entry, current, P&L), and Closed (last 50). The drill-downs:
- /pmcc/position/<underlying> — the long LEAP, this week's short call(s), and all closed shorts with premium harvested, each with a P&L matrix and a Close button.
- /position/<id> — a single-position detail sheet: entry, take-profit, stop, max loss, confidence, source, mode, rationale, broker order id, and (for spreads) the structure, POP, net credit/debit, breakeven, per-leg list, a payoff chart, and an OptionStrat-style P&L matrix.
Trade History /history
Every closed trade, paginated (50/page), with summary cards (closed trades, win rate, realized P&L) and columns: Closed, Ticker, Instrument, Side, Entry, Exit, Held (duration), P&L $, P&L %, Reason. A grey "dry" tag marks dry-run trades.
P&L Report /pnl
Realized P&L from closed trades, bucketed by calendar period (Day / Week / Month / Year; open
positions excluded). Cards: Net realized P&L, Closed trades, Win rate, Profit factor (gross win ÷
|gross loss|, "∞" if no losses). Two CSV downloads: this report (/pnl.csv) and every closed
trade (/pnl_trades.csv).
Activity /activity
The full event log of everything the bot did (paginated). A funnel filter (All / Trades / Opens / Closes / Vetoes / System) and a text search. Each row is timestamp · a colored kind dot · ticker · message. The legend: opened (green), closed (grey), Roundtable considering (blue), vetoed (red), scan/cycle, warning (amber), error (red).