How neusse/edge-trader-for-schwab works
Edge Trader is a local equities-trading dashboard for Alpaca Paper and Charles Schwab, with a read-only Demo mode. The main workflow is: a user reviews account and position data, configures and confirms an order, the selected broker adapter submits or manages it, and refreshed broker data is projected into the dashboard with P&L and protection coverage. The README documents additional Paper equity controls and Auto B/E; spreads and options are not enabled for trading. Edges use README statements or the SOURCE INDEX references; unsampled implementation details are not inferred.
Main entry points: app.py Web app · poller.py Account poller · canonical_view.py Canonical projection · store.py Local SQLite
Components 21
Dashboard
- Web app
companion/app.py - Dashboard client
companion/static/cockpit.js
Runtime and state
- Account poller
companion/poller.py - Local SQLite
companion/store.py
Broker integration
- Broker models
companion/brokers/models.py - Alpaca Paper
companion/brokers/alpaca_paper.py - Schwab adapter
companion/brokers/schwab_adapter.py - Demo data
companion/demo.py
Account projections
- Canonical projection
companion/brokers/canonical_view.py - Dashboard view
companion/view.py - Order coverage
companion/orders.py - P&L ledger
companion/pnl.py
Order workflows
- Order service
companion/trading.py - Bracket sizing
companion/bracket.py - Broker order service
companion/brokers/order_service.py - Paper Auto B/E
companion/brokers/paper_auto_be.py - Paper equity controls
companion/brokers/paper_equity.py - Spread subsystem
companion/spreads/spreads.py - Spread desk
companion/spreads/spread_desk.py
Other components
- Trader
- Schwab API
Connections 25
- Trader → Web app: uses locally
README.md - Web app → Dashboard client: serves dashboard
companion/app.py - Web app → Account poller: uses polling
companion/app.py - Web app → Local SQLite: uses state
companion/app.py - Web app → Demo data: uses demo
companion/app.py - Account poller → Schwab adapter: queries broker
companion/poller.py - Account poller → Local SQLite: records results
companion/poller.py - Account poller → Canonical projection: projects snapshots
companion/poller.py - Account poller → Dashboard view: builds state
companion/poller.py - Schwab adapter → Broker models: translates to
companion/brokers/schwab_adapter.py - Alpaca Paper → Broker models: translates to
companion/brokers/alpaca_paper.py - Schwab adapter → Schwab API: calls
README.md - Canonical projection → Order coverage: uses order projection
companion/brokers/canonical_view.py - Canonical projection → P&L ledger: uses fill ledger
companion/brokers/canonical_view.py - Canonical projection → Dashboard view: feeds dashboard view
companion/brokers/canonical_view.py - Web app → Order service: routes workflows
companion/app.py - Order service → Bracket sizing: sizes brackets
companion/trading.py - Order service → Broker order service: uses order service
companion/trading.py - Broker order service → Local SQLite: records mutations
companion/brokers/order_service.py - Broker order service → Alpaca Paper: uses adapter
companion/brokers/order_service.py - Account poller → Paper Auto B/E: watches stops
companion/poller.py - Paper Auto B/E → Local SQLite: persists watch
companion/brokers/paper_auto_be.py - Web app → Paper equity controls: routes Paper controls
companion/app.py - Web app → Spread desk: spread routes
- Spread desk → Spread subsystem: uses spread logic
companion/spreads/spread_desk.py