How this dashboard works

Trading Scanner · V1.3 · Atlas
← Back to dashboard

What you're looking at

This is a read-only view of a local-first swing scanner. It does not place live trades unless paper execution is explicitly enabled on the server. The page auto-refreshes every 30 seconds from DuckDB and the latest scan cycle.

What the scanner does each cycle

Roughly every 3 minutes during US market hours (longer when closed):

  1. Pull recent equity bars from Alpaca (IEX feed), BTC DVOL from Deribit, and VIX into DuckDB.
  2. For each symbol in the universe (29 names): compute VARS vs SPY, TTM Squeeze, EMA 9/21, RSI, ATR%.
  3. Filter for liquidity and volatility bands ($50M+ ADV, 1.5–8% ATR%).
  4. Score confluence (V1.3): VARS above its 20-day MA, EMA alignment, RSI 40–70, relaxed squeeze rule.
  5. Rank survivors and surface up to 3 alerts per day.
  6. Size positions with ψ from the VIX/DVOL regime; submit Alpaca paper orders only if execution is enabled.

Not financial advice. Default mode is scan + log only (ENABLE_PAPER_EXECUTION=false). Paper execution is ON on this instance.

Where it lives

The scanner and this dashboard run on Atlas, a homelab server (PowerEdge R720) on your LAN. Both services are Docker containers from the trading-scanner repo.

Host
Atlas (10.0.0.145)
Dashboard
http://10.0.0.145:8787
Scanner
Docker service trading-scanner (no public port)
Database
data/alpaca_markets.duckdb on the Atlas volume
Branch
dev

Stable public URL: https://scanner.kybernet.tech
On Tailscale (private): 100.71.165.80:8787 or atlas.tail401605.ts.net:8787.

Data sources