apps2 · stocks

stock screener — themes · volume-spike · RSI · multi-timeframe divergence · price-action patterns · P/E · hot/cold tape & normalized lines hubstockscryptosectorscohortsdecoupfundamentals screener + tape/line over the shared stock archive loading
Data: shared static archive at ../stocks/data. Quote refresh covers ranked US names only (top volume + high volatility), not the full list. Never fetches prices from the browser.
ControlsStocks — normalized lines (selected subset vs ES / NQ / oil / gold / USDJPY, then SPX/NAS100) Each line = one ticker from the CURRENT filtered set, normalized so different-priced stocks compare on ONE axis. The first five yellow lines are ES, NQ, oil, gold, and USD/JPY (from the shared futures archive). Impulse z (default) = σ vs the visible window mean (best for divergence); full stretch to fit = each line 0→1 across the window (shape); % change = from the window start. SPX (SPY) + NAS100 (QQQ) baselines stay solid and dark (Bold baselines thickens them). This is a selectable subset — the top-N by the table's active sort (a 500-line chart is spaghetti) plus any ticker you click in the hot/cold tape below; each is individually toggleable (Select / Deselect all). Click a line to identify it (dims the others); click empty space to dismiss; shift-click = all-series dateline. Retail P/C reference rides its own right scale. Re-frame with the zoom presets / View(bars) / drag-pan (shared with the tape).
loading tickers…
Select all Deselect all Clear pinned Draw lines: OFF Clear lines Bold baselines Vol regime Retail P/C ref
Stocks hot/cold tape — red = hot/stretched · blue = cold/washed-out Each row = one ticker from the CURRENT filtered set (capped at 120 — tighten filters to see fewer); each cell colors that date on ONE shared diverging ramp. DEEP RED = HOT (stretched high vs the mode's reference), DEEP BLUE = COLD, pale = normal. Cell coloring re-labels the ramp per lens (the mandatory 4 + 2): own history (default) · cross-sectional rank (vs the whole board that day) · vs SPX · vs NAS100 · all-ticker %-move · vs own mean. Sort rows re-orders by ticker, or by the colour of one column: the selected column when on screen; otherwise the latest data column (click a cell to select one). Click a ticker's cells to pin it into the line chart above. Hover a ticker name for the full company name; click the name to open that ticker's page in a new tab (phone: tap once for the name, tap again to open). Heatmaps expose relative rotation across history that overlapping lines cannot — that is why it accompanies the line chart. Shares the View(bars) / drag-pan with the line chart.
Chart controls: ONOFF
Whisper quadrant — each ticker's volume-move (vol z) vs price-move (price z) over the window: where it started (hollow) and where it is now (filled) The tickers chosen by Show / Rank by / Count (ranked over every ticker in the current filters) are each placed by x = price-move z (how unusual its return over the window is vs its own history) and y = volume-move z (how unusual its average volume over the window is vs its own history). Both dots use the SAME measure, the window's own move (63 sessions by default, counted in the ticker's own trading sessions): hollow dot = at the start of the window, filled dot = at the latest completed session, so the line between them is the path the ticker took; 4 small joints along it are the same measure at equally spaced sessions in between, fainter early and stronger late. Weekend and holiday rows with no trading are not counted as sessions. Labels sit on the filled dots farthest from the centre, placed outward; a label with no room by its own dot is left off (click any dot). The view fits every dot with a small margin; Y zoom (slider or Shift+wheel) stretches it, Reset returns to the fit. Click any dot or line for the ticker, company name, every point with its date and both z values, the change and its rank, shown in the corner opposite the click; the next click anywhere (or Esc) closes it. Position = co-occurrence of the two moves — the two z's are shown POSITIONALLY, never multiplied into one score. The four quadrants read: top-right up on rising volume (confirmation) · top-left down on rising volume (distribution / capitulation) · bottom-right up on quiet volume (thin rally) · bottom-left down on quiet volume (quiet fade). The ranked table below carries each ticker's exact start, latest and change z values, the latest volume's OWN-history percentile + n, cross-sectional rank, a distribution rail (R-UI-30) and the reason when an end is missing; click a row to pin that ticker into the line chart above.

Stock Screener

universe— visible— fetched— Collection: Preset: AI prompt → tick ✓ rows, then: source: —
24h % 7d % 30d % 90d % 1y % 5y % mcap M$
How these volume / RSI / divergence filters work
Min/max rangesEach box below is a min/max range — leave a side blank to ignore it. A stock passes only if it sits inside every range you set.
vol×30dtoday's volume ÷ its 30-day average. 1 = normal, 2 = double the usual (often earnings/news), 0.5 = quiet. How to use: set min 2 to surface names with sustained above-normal flow ("in play"); use max to drop blow-off extremes.
vol Δ1today's volume ÷ yesterday's. The fastest spike detector — catches a surge before the 30-day average absorbs it, but noisier (a quiet prior day inflates it). How to use: min 3 = today triples yesterday; min 5 = cleanest one-day spikes.
vol Δ3today's volume ÷ the average of the last 3 days. Smoother — confirms a real surge rather than a one-bar blip against an unusually quiet baseline. How to use: pair vol Δ3 min ≈2 with vol Δ1 to weed out false spikes.
RSI Ddaily 14-period RSI (momentum, 0–100). <30 oversold, >70 overbought. How to use: max 35 → oversold bounce candidates (longs); min 70 → extended/overbought rallies; min 45 max 55 → coiling, neutral names building energy.
RSI divprice and momentum disagree (a reversal warning). 🟢 Bullish = price makes a lower low while RSI makes a higher low (selling exhausting → bounce). 🔴 Bearish = price higher high while RSI lower high (rally tiring → pullback). How to use: each colour is any / require (only show names that have it) / exclude (hide them); the tf dropdown scopes that to one candle range (1h/2h/4h/8h/D/W/M), or any tf = fired on any frame.
OBV divthe same divergence logic on On-Balance Volume (running signed volume) instead of RSI. Volume-confirmed, so it's higher-conviction when it agrees with an RSI divergence — require both for the strongest signals.
⚙ Div calctunes how divergence is detected and updates every 🟢/🔴 tag + the two divergence filters live: RSI period (7 = more & faster, 21 = fewer & cleaner) · pivot sensitivity (2 = more, smaller swings → more signals; 5 = only major swings) · depth = how far back each timeframe scans (short = fresher, deep = more & older) · TF = which candle ranges to scan. Defaults (RSI 14 · pivot 3 · standard · 1h/2h/4h/D/W) are the most common, and your changes are remembered in this browser.
Volume surge vol×30d vol Δ1 vol Δ3 Momentum & divergence RSI D RSI div: ⚙ divergence settings:  TF OBV div:
PA pattern: PA type: PA tf: PA dev%≤ % anchor age%≤ % min touches≥ strictness break within bars Freshness latest pt ≤ % from price latest pt age ≤ % of len
Region: Sector: Industry: Theme:
What this page isapps2 stocks screener: the same table, pattern-grid, and compare views as the original stocks page, in the shared apps2 look.
What you can screenprice changes, volume spikes, RSI, bullish/bearish divergences, price-action patterns with a Pine Script export, filters and presets, and a detail chart for one ticker.
P/E column (trailing + forward)Trailing P/E (price ÷ TTM EPS) where the company is profitable; loss-making names show FORWARD P/E marked "f". Dash = no trailing earnings and no positive forward estimate (or an ETF).
Tape + line paira hot/cold tape and a normalized line chart of the same stocks, so you can scan the board and then read one line precisely.
Where the files livereads the archive at ../stocks/data (universe list + daily/hourly candles + P/E file).
Freshnessthe server tops up today's US daily bars for the ranked sets; the page prints coverage as x of N and the measured quote ages. ?source=local still loads from your machine.
No browser fetchnever calls Yahoo from the browser.
Baselinesfirst five yellow: ES, NQ, oil, gold, USD/JPY from ../basics/data/bars. SPX = SPY and NAS100 = QQQ stay as extra stock-archive references.