No dataset yet
The page renders from web/data/data.json, which the pipeline builds
from SEC EDGAR filings and Yahoo Finance prices. Nothing has been generated yet.
Start a first build with the Update data button in the sidebar, or from a terminal:
cd "C:\Local Disk\investment\stock-screener"
set SEC_USER_AGENT=Your Name your@email.com
python -m pipeline.cli update --universe sec --limit 300
The first run is the slow one. After that every refresh is incremental β
unchanged filings answer with 304 Not Modified and prices only fetch
the bars since the last stored date.
My account
Sign in to build and track a portfolio. Balances are hypothetical β no real money and no brokerage is involved.
Build a portfolio
Answer the risk questionnaire, review the proposal and its reasoning, then fund it with a hypothetical balance and track it.
Live trading
Real orders on Binance Spot, signed with credentials held in this machine's environment. Administrator only.
Everyone's Favourite
undervalued on a majority of the methods valid for that businessTop value candidates
Top growth candidates
Valuation labels across the universe
which strategist's method each company satisfiesClassification
Graham score distribution
criteria passed, 0β7Dataset coverage
what the system currently holdsIndustry coverage
by SIC descriptionStrategy indexes vs S&P 500
top N per approach, optimiser-weighted, benchmarked against SPYHistorical backtest β pick a start year
selects each approach using only fundamentals filed by that date, then measures forward with no look-aheadValuation screener
every method is only applied where it is valid for that businessValuation methods β pick the strategists you want
Graham's defensive criteria β tick only what you want enforced
Filters
Earnings opportunities
reporting soon or just reported Β· scored with the reasoning shownAutomatic shortlist
ranks the universe on criteria you set, and shows why each name appearsReporting calendar
Most important upcoming reports
ranked by market capitalisation and analyst coverageModel estimates vs consensus
walk-forward models run on the largest upcoming reportsEarnings forecast
walk-forward validated Β· every model scored against a seasonal-naive benchmarkStrategy backtest
signals execute at the next bar's open Β· costs charged both sidesPortfolio construction
models you parameterise Β· outputs are calculations, not ordersCurrent holdings (optional)
SYMBOL:QUANTITY:PRICE, comma separated β produces rebalance tradesScreen filters
These control what the screener shows. The canonical Graham score and
the Value / Growth labels are computed by the pipeline β to change those, set the
matching environment variables from pipeline/config.py and re-run
python -m pipeline.cli export.
How each number is produced
Data sources
- Universe β Binance Stocks (
--universe stocks) reads Binance's own US-equity symbol list fromGET /sapi/v1/equity/market/exchangeInfo, giving the authoritative set of stocks and ETFs your account can trade, along with each symbol's tradability, fractional-share support, overnight eligibility, minimum order size and bStock code. That endpoint isMARKET_DATA: it needs your API key in theX-MBX-APIKEYheader but is not signed, so no API secret is involved. - Other universes β
--universe secscreens all ~8,000 SEC filers with no credentials at all;--universe filetakes your own CSV. - A caution about the crypto endpoint β the general
/api/v3/exchangeInfois a crypto spot endpoint and must not be used to find equities. Its base assets collide with US tickers constantly:ENSis Ethereum Name Service not EnerSys,CVXis Convex Finance not Chevron,BCHis Bitcoin Cash not Bank of Chile. That legacy mode survives only as--universe crypto-spotand should not be used for screening. - ADRs and ETFs β some Binance-tradable symbols have no SEC 10-K filer behind them (foreign ADRs, most ETFs). They are tradable but cannot be screened on fundamentals, so they are reported and skipped rather than shown with empty ratios.
- Fundamentals β SEC EDGAR XBRL
companyfacts, annual (10-K) figures only, latest amendment wins per fiscal year. - Prices β Yahoo Finance daily adjusted closes, plus split events.
- Split adjustment β adjusted closes are split-adjusted but a 10-K's EPS is not, so filed per-share figures are divided by every split that post-dates the fiscal year end. Without it Booking Holdings' 25:1 split showed a P/E of 1.0.
Graham's seven defensive criteria
- Adequate size β sales β₯ $100m (industrials) or assets β₯ $50m (utilities).
- Strong financial condition β current ratio β₯ 2 and long-term debt β€ working capital; for utilities, debt β€ 2Γ book equity.
- Earnings stability β positive EPS in each of the last ten years.
- Dividend record β an uninterrupted dividend for twenty years.
- Earnings growth β at least one-third growth in per-share earnings over ten years, measured on three-year averages at both ends.
- Moderate P/E β price Γ· average earnings of the past three years β€ 15.
- Moderate price to assets β P/B β€ 1.5, or P/E Γ P/B β€ 22.5.
Criteria 3, 4 and 5 need a decade of filings. EDGAR's XBRL archive begins around 2009, so a company can fail them for want of history rather than for want of quality β the detail view shows how many years were actually available.
Other valuations
- PEG = current P/E Γ· EPS growth in percentage points.
- DCF β two-stage free cash flow (operating cash flow β capex), five high-growth years at the historical FCF CAGR capped at 15%, then a 2.5% terminal growth, discounted at 10%, net of debt, per diluted share.
- Graham formula value β V = EPS Γ (8.5 + 2g) Γ 4.4 Γ· Y, with EPS the three-year average, g capped at 15 and Y a AAA bond yield assumption.
- Industry average β trimmed mean across companies sharing a two-digit SIC group, so one outlier cannot swamp the column.
Known limits
- Ratios come straight from XBRL tags. Tagging varies between filers; financials and REITs in particular will show gaps where a tag does not exist.
- Dividend history is derived from
CommonStockDividendsPerShare*tags, which start well after 20 years ago for most filers β criterion 4 is therefore strict. - Prices are adjusted closes; intraday and corporate-action edge cases are not modelled.