AutoTrader scans IBKR in real time and trades one deterministic strategy — Runner Momentum. A configurable 5% LAST-price surge inside 5 seconds drives qualification; every entry, exit, and risk check is mechanical and configurable from the UI.
A PyQt6 desktop app you run on your own machine against your own IBKR account. Swipe through the real working surfaces — scanner, strategy config, analytics, and recording and replay.
Every trade follows a deterministic 6-stage pipeline — no LLM and no discretion. Recorded sessions preserve the causal evidence used by replay and isolated what-if analysis.
Subscribe to multiple IBKR scanner codes in parallel — HIGH_OPEN_GAP, TOP_PERC_GAIN, HOT_BY_VOLUME, and more. Fresh broad LAST surges are evaluated against the configured Runner Momentum price, float, and RVOL gates.
HIGH_OPEN_GAP and TOP_PERC_GAIN scanners surface tickers gapping up pre-market.
RVOL is cumulative session volume divided by the average daily volume; the live gate defaults to 2.0 and can be disabled with 0.
Each ticker is checked for a fresh 5% LAST-price surge inside 5 seconds, then price, float, and RVOL qualification. Diagnostics show exact observed and required values.
Optional session recording stores scanner frames and causal strategy evidence for later replay and isolated what-if analysis.
| Ticker | Chg% | Gap% | Vol | RVOL | Float Rot | Context | Runner Status |
|---|---|---|---|---|---|---|---|
| AIXI | +47.3% | +38.1% | 2.1M | 18.4x | 2.1x | HIGH | ENTRY |
| SOAR | +31.5% | +22.0% | 890K | 9.7x | 1.6x | HIGH | WAIT |
| SIDU | +18.2% | +15.4% | 450K | 5.2x | 0.9x | MED | no setup |
| LABX | +12.6% | +9.3% | 220K | 3.1x | 0.6x | LOW | no setup |
| SKYQ | +28.9% | +19.7% | 1.3M | 12.6x | 1.9x | HIGH | WAIT |
Optional IBKR news context — deduplicated for display and recorded analysis — enriches the scanner so you can see why a name is moving. It does not place trades: live entries are purely mechanical Runner Momentum.
A two-tier scorer ranks headlines for context in the scanner and analytics — it never gates a live entry.
Provider-independent context helpers can enrich displayed and recorded headlines. Their output never gates, ranks, enters, or exits a trade.
A local heuristic can add display context when richer analysis is unavailable; missing context never changes Runner Momentum behavior.
Catalyst classification is contextual metadata for the scanner and recorded analysis only. Strongest-surge ranking uses price evidence, not headlines.
Runner Momentum qualifies fresh LAST-price surges, optionally pauses for human approval, and protects every confirmed position with mechanical fresh-BID exit rules.
During the configurable session, genuine broad LAST data must rise by the configured threshold inside the rolling window while the current row passes every enabled gate.
A qualified surge can open one nonblocking approval window. This changes timing only; it does not change qualification or introduce AI decisions.
Protection advances only from valid fresh BID data, persists across restarts, and never moves downward.
No AI makes entry, exit, ranking, or tuning decisions. Live, paper, recorded session replay, and what-if analysis consume the same saved strategy dictionary.
Runner Momentum exposes its full rule set in the Strategy panel, layered on top of global universe filters and risk controls — no code edits required.
Replay captured scanner cycles and exact five-second evidence from a recorded session. What-if evaluation uses the same saved strategy fields without changing live configuration.
Starting balance, compounded across the session
Trade-level metrics tracked per simulation run
Recorded surge evidence drives replay evaluation
Entry/exit price, P&L, hold duration, shares, exit reason, and the causal surge evidence and scanner snapshot stored with the trade.
Win rate, total P&L per day, trade count, session loss tracking, and compound returns over the date range.
When recording is enabled, scanner frames and causal entry evidence are stored in a neutral session manifest for selected-date and recent-session replay.
| Ticker | Entry | Exit | P&L% | Exit Reason |
|---|---|---|---|---|
| AIXI | $2.14 | $3.06 | +43.0% | Trailing stop |
| SOAR | $5.80 | $6.92 | +19.3% | Trailing stop |
| LABX | $1.22 | $1.10 | −9.8% | Initial stop |
| SKYQ | $3.45 | $4.30 | +24.6% | Buyer-pool trail |
Trade analytics summarize completed activity, while recorded session replay and what-if analysis let you inspect stored evidence under alternative thresholds. Analysis never changes live settings or places a trade.
A bar per day in dollars with a cumulative equity line overlaid. Hover any bar to see that day's $ and summed %.
Date, entry/exit time, session, strategy, ticker, buy/sell $, P&L%, hold (m), sell reason, sentiment, catalyst, headline. Click a row to inspect the scanner state and exact params captured at trade time.
Recorded evidence can be re-evaluated with alternative thresholds without changing the saved live strategy.
Total trades, win rate, avg profit %, total P&L, best trade, worst trade — always visible at the top of the dashboard.
Every strategy check is surfaced with the actual vs. required value. No more wondering why a trade was skipped — see the full pass/fail breakdown in real time.
A complete trading system — from real-time alerts to risk management — with active Runner Momentum parameters configurable from the UI.
Scanner rows tint when a name surges past a configurable threshold over a short window — ≥10% in 1 minute, ≥15% in 2, ≥20% in 3 — each with its own colour, so fast movers jump out of the table at a glance.
Qualified stocks in each scanner frame compete by strongest surge, then earliest signal timestamp, then symbol. Protected positions are not displaced.
Maintains one compound order/position/exit lifecycle. The first automatic position uses fixed notional; later positions use the prior compound balance after realized P&L.
Live and paper trading via IB Gateway (ports 4001/4002) or TWS (7496/7497). Configurable client ID and automatic reconnect on disconnect.
Resolves missing float through the existing yfinance → FMP → Massive fallback chain — and caches the result. Provider failure fails closed at the configured float gate.
Connectivity, quote freshness, position, order, session, and risk checks fail closed at the order boundary.
At 04:00 ET a background loop clears the scanner history file, re-anchors each ticker's session baselines, and resets per-symbol trade counts and cumulative P&L — ready for the new session.
Active Runner Momentum values are editable in the Strategy panel and round-trip to ui_config.json for live, paper, replay, and what-if use.
Context helpers can assist display and recorded analysis, but never make trading decisions.
Active Runner Momentum parameters are accessible from the UI — no code edits required. Changes take effect on the next automation cycle.
Set the % move that counts as a surge over each short window, and pick the colour each tier paints the row.
asyncio event loop in background thread. Semaphore-limited concurrent IBKR requests (5 bar fetches, 2 news). Non-blocking UI at all times.
Sentiment scores cached per ticker/day/headline. IBKR 1-min bars cached for recording and replay. Resolved float values cached to disk to avoid repeat lookups.
Session loss/profit limits, one-entry-per-symbol protection, broker ownership checks, and fresh-BID stop and trailing rules fail closed.
IBKR connection watchdog, health monitoring with in-app log window for recovery events.
Once configured, AutoTrader scans market data, qualifies Runner Momentum surges, submits orders, and manages exits mechanically. Optional news remains context only.
Multiple scanner codes stream simultaneously to build the broad tracked universe. Local Runner Momentum qualification then applies its surge, price, float, and RVOL rules.
Each genuine broad LAST update can produce one fresh surge event. Duplicate, out-of-order, stale, or malformed evidence fails closed.
Current price, known float, and cumulative RVOL must pass their configured gates alongside the fresh LAST surge. Missing required evidence fails closed.
The frame winner uses a fresh broad ASK when available, otherwise the qualifying LAST. Optional Assisted Entry requires approval, rechecks eligibility, and requires a newly validated fresh ASK.
The initial stop defaults to 10% below fill. At +10% a fresh BID locks +2%; at +30% the buyer-pool profit trail activates, with a highest-fresh-BID fallback.
A background loop clears the scanner history, re-anchors each ticker's session baselines, and zeroes per-symbol trade counts and cumulative P&L — so the system starts each morning fresh without any intervention.
Full autonomy doesn't mean no safety net. AutoTrader enforces hard risk limits at every layer so the system can run unattended without blowing up your account.
Connectivity, quote freshness, available funds, position capacity, order state, and session rules must all pass before an automatic order can proceed.
Closed-trade history and confirmed positions preserve the one-entry-per-symbol guard across scanner restarts until the next trading session.
Every live sell verifies the broker long, subtracts visible working sells, and caps quantity to what remains sellable.
Compound mode permits only one automatic order/position/exit lifecycle; manual orders remain independent.
IBKR disconnects are detected by the watchdog. Recovery reconciles broker-owned orders and positions while fresh order checks continue to fail closed.
The main window shows every decision the system makes in real time — so you can monitor without intervening.