A proprietary real-time algorithmic trading platform fully integrated with Charles Schwab's Individual Trader API — streaming live market data across 19 symbols, computing multi-indicator confluence signals at sub-second latency, and executing automated OCO bracket orders with institutional-grade risk management and adaptive position tracking.
Market data flows from Schwab's streaming API through a custom indicator engine and into an automated order management system — all non-blocking on a single Node.js event loop. No heavy frameworks, no build step, no external message queue.
Every component was developed and validated against live Schwab market data — handling real-world edge cases like token expiry mid-session, partial fills, market regime shifts, and simultaneous alert bursts across multiple symbols.
Eight independent technical indicators are computed on every 5-minute candle close, each contributing a weighted vote to a proprietary confluence score. Signals only fire when multiple independent indicators align — filtering noise and reducing false positives without over-fitting to a single measure.
Proprietary ScoringWhen a confluence threshold is crossed, the system automatically places a 1st-Triggers OCO bracket order via the Schwab Trader API — simultaneously setting the profit target and stop loss. The entire order lifecycle is tracked in SQLite and streamed in real time to the dashboard via Server-Sent Events.
Phase 2b Auto-TradeSPY, QQQ, VIX, and UVXY snapshots are captured every 15 minutes and used to classify the current market regime. The Observer Filter Sets system applies historically-optimized filter combinations based on that day's conditions — improving signal quality adaptively without manual intervention.
Adaptive FilteringAn offline optimizer evaluates over 2,000 filter combinations against 30 days of historical alerts, determining which filters maximize win rate under each observed market regime. Results are stored and automatically applied to subsequent live trading sessions when the regime classifier matches.
2,048 CombinationsOnce a position enters the profit zone, the system activates a dynamic trailing stop whose width adapts to current market conditions. EMA slope and Chaikin Money Flow direction determine whether the trail tightens or widens — protecting gains without exiting strong trending moves prematurely.
ATR-Based WidthSix independent safeguards gate every auto-trade: session time window enforcement, direction filter, duplicate position check, per-symbol limit, per-trade bucket cap, and total portfolio cap. Optional stop/target price randomization prevents detectable entry patterns from accumulating.
6-Gate Safety SystemThe dashboard polls every 5 seconds and displays live confluence scores, prices, and position status for all 19 watched symbols. Per-symbol alert checkboxes control which tickers fire desktop notifications and trigger auto-trade orders.
| Symbol | Price | Score | Meter | ATR | Signal | Alert |
|---|---|---|---|---|---|---|
| NVDA | 127.84 | +8 | 3.42 | ▲ LONG | ⚡ AUTO | |
| AAPL | 213.56 | +7 | 2.18 | ▲ LONG | ⚡ ALERT | |
| TSLA | 248.90 | −8 | 7.63 | ▼ SHORT | ⚡ AUTO | |
| AMD | 168.32 | +3 | 4.07 | Watching… | — | |
| META | 563.14 | +5 | 8.21 | Building… | — | |
| MSFT | 419.77 | −2 | 3.84 | Neutral | — |
| Symbol | Alerts | Win Rate | Performance | Actual P/L |
|---|---|---|---|---|
| NVDA | 24 | 75% | 75% | +$820 |
| AAPL | 18 | 67% | 67% | +$610 |
| TSLA | 21 | 62% | 62% | +$540 |
| AMD | 15 | 73% | 73% | +$495 |
The live interface combines market regime intelligence, watchlist scoring, pivot S/R levels, automated order controls, and real-time position tracking — all in a single view.
The dashboard is a standard browser app — no native install required. On the local network it's instant; with an nginx reverse proxy it's accessible from any device on any connection.
Any device on the same WiFi points its browser at
192.168.x.x:3001. The full dashboard, reports, and QT
Positions panel are instantly available — no install, no app store.
An nginx reverse proxy with TLS (Let's Encrypt via win-acme) sits in front of the Node.js server. Anywhere internet access with HTTPS, HTTP basic auth, and automatic certificate renewal.
The Mock↔Live mode button is accessible from mobile. Switch between paper-trade simulation and live Schwab broker orders from any device — same session state, same open positions.
Step through past trading days using the date picker. Each day shows all placed trades with entry, stop, target, exit price, exit type (stop / profit-protect / early-exit), and realized P&L.
A five-tab reports system provides full-depth analysis of every alert, order, and market condition — enabling iterative refinement against real historical data without leaving the browser.
Full day-by-day replay of every alert with P&L breakdown, win rate by symbol, by hour-of-day, by confluence score level, and by market regime classification.
Each trading day is correlated with SPY%, QQQ%, and VIX close to reveal which macro conditions most favor the strategy's signal quality across different regimes.
The optimizer evaluates all filter combinations against historical alerts to find the configuration that maximizes win rate under the current market regime, with before/after comparison across the 30-day window.
The QT Positions panel shows all open and closed trades for the current session with live price feeds, unrealized P&L, and one-click close functionality directly from the dashboard without navigating to a separate order screen.
Built entirely on Node.js 22 with no heavy frameworks — raw WebSockets, native SQLite bindings, Server-Sent Events, and vanilla JavaScript on the frontend. Fast, lean, and fully observable with no build pipeline.
This platform represents years of iterative development against live Charles Schwab market data — from OAuth2 integration through full automated bracket order execution. Built by Saer Khan, a software consultant with 30+ years of enterprise development experience.