13F institutions, short interest, 5%+ holders and insider activity — follows the stock window
People
Management and board — tenure, compensation and their own trading
Milestones
The days this stock actually moved — and what happened on them
Research
Expectations & revisions, insider activity, news, and Ask Claude — follows the stock window
Signals
MACD — follows the stock window
Relative value — peers
Valuation and operating metrics across the peer set — follows the stock window
Pairs & spread
Open stock vs any symbol — ratio, rebased performance, or dollar spread
Seasonality
Average return by calendar month — follows the stock window
Financials
Statement summaries and valuation models — follows the stock window
outside universe
Indicators
Daily option-chain snapshots — skew, risk reversal and put/call flow, recorded per name so shifts can be measured against each name’s own history
Support & resistance
Levels read from options positioning — open-interest walls, the market’s own expected range, and the max-pain pin — for every portfolio and watchlist name
Screens
Min composite
0Min momentum
0
Factor map
Where value meets growth — click a bubble for detail
Click any column to sort · ★ adds to watchlist · click a row for detail
Magic Formula map
Joel Greenblatt's two factors — cheapness (earnings yield) vs quality (return on capital) · click a bubble for detail
Momentum score 0 100◯ size = market capaxes = percentile ranks within the eligible universefinancials & utilities excluded, per the formula
Magic Formula rankings
Rank = earnings-yield rank + return-on-capital rank, lower is better · ★ adds to watchlist · click a row for detail
Quality — Piotroski F-score
Nine pass/fail tests of profitability, balance-sheet strength, and efficiency (9 = strongest) · Altman Z gauges bankruptcy risk · ★ adds to watchlist · click a row for detail
Dividend screen
Income names ranked by yield — check payout for sustainability (under ~60% is comfortable for most businesses) · ★ adds to watchlist
Sympathy selloff — unfairly punished quality
When trouble at a few names drags a whole sector down, the well-run companies that fell with them tend to rebound as the panic passes · ★ adds to watchlist · click a row for detail
✳Ask Claude about this selloff
Conviction dashboard
Where the screens agree — each stock's rank in the Composite, Magic Formula, Quality, and Revisions screens · green = top quartile · the badge counts top-quartile appearances · ★ adds to watchlist · click a row for detail
Earnings quality
Cross-sectional 1–100 percentile ranks within this app’s own universe
Not scored
Every name this model refused, and the exact reason. A ratio with a signed denominator refuses rather than ranks.
Strategy backtest
How a momentum-decile strategy would have performed on today's universe — point-in-time from historical prices · a discipline check, not a promise
Signal track record
Do the app's own scores actually predict outperformance? Measured from your saved daily snapshots — bias-free (each date uses only what was known then), and it sharpens as history builds
Custom screens
Build your own screen from any metrics — rules combine with AND · saved screens live in the dropdown
Settings
Your API key is stored encrypted on this computer and never leaves it except to call FMP.
Optional — powers the Options tab with your Schwab/thinkorswim account's data. Register a personal app at developer.schwab.com (callback URL https://127.0.0.1), paste its key and secret here, then Connect. Schwab requires a quick re-connect once a week.
Only needed when your Schwab developer apps SPLIT the products across two apps: the Book streams under "Accounts and Trading Production". Paste that app's key and secret, then Connect (its sign-in also renews weekly). Leave empty when one app carries both products.
Optional — always-on price alerts pushed to your iPhone via Pushover, even when this app is closed. Deploy the small Cloudflare worker in the cloudflare-alerts/ folder (see SETUP-IPHONE-ALERTS.md), paste its URL and your shared secret here, then “Send test”. Your armed watchlist alerts sync to it automatically.
Full refresh makes ~5 API calls per stock at up to 600/min:
500 stocks ≈ 4 min · 1,000 ≈ 9 min · 3,000 ≈ 25 min. Quote refreshes stay fast at any size.
For 3,000 stocks, drop the market-cap floor to $300M or lower.
The volume floor is often the tighter constraint below the mega-caps — many solid $2–10B
companies trade under 1M shares/day. If your universe comes up short of the size you asked for, lower this first.
After a price alert fires, it won't fire again until the price reverses this far back past the line — so a stock bouncing around your alert price only alerts once. Applies to both the in-app alerts and the always-on iPhone alerts.
Off = ranked against the whole universe (a bank looks cheap, software looks expensive).
On = ranked against sector peers, so you find the best value/growth/momentum within each sector
instead of tilting toward perennially-cheap sectors. Applies instantly, no refresh needed.
Point the app at the Excel workbook with your holdings (e.g. inside your OneDrive folder) and it keeps a "Top 10 Holdings" watchlist mirroring your ten largest positions — checked at launch and once a day while running.
When Claude gives you a small update file, save it anywhere, click the button, and choose it — the app restarts itself on the new version. Your data and settings are untouched.