Pass (Bursa) = ROIC ≥ floor and P/B ≤ ceiling (both applied by TradingView) and net profit > 0 in each of the last 4 reported quarters (klsescreener) and RM/day ≥ gate and, when ticked, trailing free cash flow > 0. Untick hide fails to see every screened name with the reason it failed (dimmed).
ROIC is TradingView's: net income ÷ average total invested capital, trailing — net-income based, so one-off gains inflate it; the Q+ streak, the FCF check and the n/m guard (invested capital under 20% of market cap, or ROIC above 100%) exist to catch that. Green ≥ 20, teal ≥ 15.
FCF yield = trailing free cash flow ÷ market cap — the direct test of whether the market is right to distrust the earnings. Q1 / Q2: net profit (RM'm) of the two latest reported quarters; Q+: consecutive profitable quarters from the latest. DURABLE = 8+ (two full years).
RM/day: price × klsescreener's 3-month average volume (TradingView's 30-day average as fallback; hover shows both, ! when they disagree by more than 3×). RVOL: 10-day average volume ÷ 90-day (≥1.5× teal, ≥2× amber); read with 1D — high RVOL on a red day here is usually distribution. NEW = not in the previous scan on this device.
ROIC ≥ 20 with P/B ≤ 1 forces a trailing PE around 5 or below: this is where the market prices earnings as non-recurring. The checks remove accounting artefacts; they cannot tell a franchise from a cycle top. Read the quarterly trend before acting.
Pass (US) = ROIC ≥ floor (TradingView) andcheap on cash or earnings: FCF yield ≥ 5% or EV/EBITDA ≤ 10 (PE ≤ 15 if TradingView lacks EV/EBITDA) and net income > 0 in each of the last 8 quarters (SEC filings) and $/day ≥ gate and, when ticked, trailing FCF > 0 and FCF ≥ 60% of net income (SEC cash-flow statement; TradingView FCF if the SEC series is missing). P/B is any by default — in the US a 20%-ROIC business trades at 4–10× book; below-book names here are the distressed ones.
Streak and cash come from the SEC's XBRL data (10-Q / 10-K as filed). Q4 is never filed as a quarter, so it is derived as fiscal year minus the first nine months; derived quarters are marked ° on hover. FCF/NI = trailing free cash flow ÷ trailing net income — under 60% means earnings aren't turning into cash.
Ticker links to the company's SEC filings; Name links to TradingView. Amounts in USD millions.
The S&P list will be longer and its names "reasonable" rather than absurd — that is an efficient market working. The edge here is smaller and slower than on Bursa; the screen finds quality at a fair-to-cheap price, not neglect.
Fair value follows Invest Like a Guru (Charlie Tian, 2017), which says to pick the method that fits the business. DCF (primary, for predictable companies): two-stage discounted earnings — 10 years at the company's own growth rate (10-year net-profit CAGR, capped at 20%), then 10 years at 4%, discounted at 12% (toggle), per share. Book value for banks and insurers. Graham Number √(22.5 × EPS × tangible book/share) as the conservative fallback when earnings are not predictable. Lynch fair value (fair P/E = growth rate, ≤25) is shown on hover and is the book's cross-check for 15–25% growers. MoS = (fair − price) ÷ fair; the book's benchmark is that Buffett's acquisitions were bought 30–40% below DCF value, so green ≥ 30%, teal 0–30%, red below 0. Impl g = reverse DCF: the 10-year growth the current price already assumes — compare it with the company's past growth (hover).
Predictable (proxy for the book's predictability rank): profitable in every trailing year on record (≥ 5 years, up to 10) and profit rose in at least 60% of those years. Earnings are trailing-12-month net profit; if the latest year is more than 1.5× the year before, the DCF uses the three-year median instead (and measures growth from it), so a single one-off year cannot move the value (the book: normalised earnings beat a one-off year). Values are computed on totals and converted to a per-share price via market cap, so share splits and bonus issues cannot distort them. Fair value above 5× the price is flagged — that is almost always a one-off or peak-cycle year, not a bargain. The book is explicit that DCF does not apply to cyclicals, commodity producers, turnarounds or loss-makers; those rows say so.
Look up: type a Bursa code / short name (Bursa tab) or a US ticker (US tab) in Find and press ⏎ — the counter is fetched and pinned with a LOOKUP tag, evaluated against the current rules, starrable, never hidden by "hide fails"; dropped on the next rescan.
Watchlist: click ★ to save a counter on this device with a snapshot of its stats at that moment. The Watchlist tab shows price then vs now, whether it still passes, Q+ now and a note; CSV / JSON export from that tab exports the watchlist, ⇧ Import merges one from another device. Browser storage — export now and then.
Sources: TradingView screener backend (universe, ROIC, ROE, P/B, PE, DY, FCF, EV, volume — Bursa and US) · klsescreener (Bursa codes, quarterly reports) · SEC EDGAR / XBRL (US quarterly net income, cash flow, capex), via your Cloudflare Worker. Bursa scans on every load; the US tab scans when opened. Each is cached on this device and painted instantly.