Edge Scanner v1.1.1
Fixes from the first live session running Charles Schwab and Alpaca side by side on a 6,450-symbol universe. If you use DATA_PROVIDER=schwab, update: v1.1.0 can leave the dashboard unresponsive on a large universe.
Not financial advice. The sample setups are starting points, not a strategy.
Schwab fixes
- The dashboard stalled on Schwab. The premarket lists re-downloaded today's bars on every refresh. Alpaca serves that in one batched call; Schwab serves one symbol per request at about 120 a minute, so the requests backed up and charts took 27 seconds, the premarket screen stayed blank, and rankings and Setup Check appeared dead. On Schwab the lists now come from the premarket price and volume the scanner already holds, with no requests. Charts load in under a second again.
- Odd lots no longer set prices in bars built from quotes. A quote's last price is the latest trade of any size, and thin premarket trading is mostly odd lots at off-market prices. Built bars had premarket highs and lows about 0.7% wider than real bars, up to 8%. A price now counts only when the last trade was a round lot for that price (100, 40, 10 or 1 shares by price tier); odd lots still add their volume. This is the rule real bars follow.
- Starts were slow every day. Recently listed symbols can never reach back to the start of the history window, so they were downloaded again on every start: about 1,800 extra requests, fifteen minutes. The provider now remembers what it has already asked for. A warm start on the full universe takes about 8 minutes instead of 25.
- A start after the open left most symbols at zero volume, so their relative volume read 60 to 80 percent low all day. Symbols past the 600 that get today's bars back-filled are now caught up from quotes in a few seconds: the day's open, high, low, last and volume so far. Their VWAP is approximate, and their volume includes premarket, until the next start before the open.
Measured agreement with Alpaca so far
Same universe, same setups, first half hour of the session. Median difference, Schwab against Alpaca:
| Symbols (most liquid first) | VWAP | High / low of day |
|---|---|---|
| 1 to 300, real bars | 0.09% | 0.00% |
| 301 to 3,300, built from streamed quotes | 0.18% | 0.06% |
| 3,301 and up, built from polled quotes | 0.31% | 0.4% |
Alert-by-alert agreement is still being measured and will be reported in the next release.
New
start_scanner_schwab.bat: a second scanner on Schwab data beside the first one (port 7787, its own alert archive).scripts/compare_live_feeds.py: compares two running scanners, symbol state and alerts, per data tier.
Update
git pull
pip install -r requirements.txt
npm --prefix dashboard-v2 install
npm --prefix dashboard-v2 run build
Your .env and everything in data/ are untouched.