Financebotresearch desk研究台

Discovery › screen

Screen undervalued vs BR

Question asked: can a wide undervalued / 52-week-decline sweep find something as good as or better than BR (ACCUMULATE, [8.5], in zone $150–180 at $169.27)?

Answer: no. Two names earned a full /analyze; neither displaces BR. The pre-scan estimate was "2–4 new candidates at [7.0–7.5], ~10% chance of beating BR." That is what the scan returned.


What the three screens actually produced

Screen Hits Usable after framework filter Kill reason for the rest
undervalued_large_caps 25 ~4 ~80% commodity/energy/gold/EM banks — and most have already run (IAG +125%, UMC +177%, APA +98%, CVE +98% on the year). "Cheap PE" on a price-taker at a cycle top is the oldest trap in the file.
rerating 25 ~6 The only screen that surfaced quality. Also the only one with real de-rates (WING −68%, CSGP −64%, INTU −53%).
yield-today 25 ~2 ~40% were preferred shares (AXS-PE, ACGLO, RNR-PF, CTA-PA/PB, ALL-PH, PSA-PH) whose P/B and P/E fields are meaningless artifacts, plus MLPs with K-1 complexity (MPLX, WES, HESM, PAA) and cyclical shippers with variable payouts (FRO, SBLK, HAFN, BWLP).

Signal-to-noise: roughly 12 of 75 survived a first-pass framework filter. Two survived a second.


The overlap finding — the funnel is already working

Seven hits were already on the watchlist, and three carry decisions that the screen directly contradicts. This is the most useful thing the scan produced:

Name Screen says Watchlist already says Who's right
ZTS cheap — 12.0x PE, −50.6% [5.5], downgraded 8/06 — second FY26 guidance cut, adj EPS $6.85–7.00 → $6.15–6.25, organic revenue −1%, mgmt "assumes no near-term market stabilization" The watchlist. ZTS screens cheap because the E is falling. Textbook value trap.
ARCC 9.61% yield, P/B 1.03 [5.5], HOLD — do not add. Coverage broke below 1.0x The watchlist. The yield is the warning, not the attraction.
INTU 20.4x PE, −52.7% [7.0], On Deck, in zone $300–345, gated on the 8/25 print Agreed — and it's already queued.

Two of the three "cheapest quality names" the screen surfaced are names this agency has already established are cheap for a reason. That is the value-trap base rate, made concrete.


The two that earned real work

BSX — Boston Scientific · the best new name

Price / off high $51.42 · −53.0% from $109.50
PE ttm → fwd 20.8x → 14.95x ⚠️ vendor field, verify
Gross / op margin 69% / 23%
Revenue / earnings growth +7% / +15%
PEG · beta 0.73 · 0.57
Target (mean) $62.69 (+21.9%)

A 69%-gross-margin medtech compounder growing earnings 15% does not de-rate 53% for no reason. Either something broke or this is a genuine dislocation — the screen cannot tell which, and that is the entire point of the escalation rule. No dividend, so it cannot fill BR's income role.

PGR — Progressive · the most interesting number on the page

10.4x trailing earnings with 35% ROE, 0.26 beta, 24% D/E, revenue +7%, −18.7% off high. That combination is rare.

🚩 But the 6.55% dividend yield is almost certainly an artifact — against a 1.97% five-year average, this is PGR's variable annual special dividend, not a run-rate. Treating it as an income stream would repeat pitfall-dyt-inverts-when-price-caused-the-yield in a new costume. Underwrite on the P/E and the ROE, or not at all.

Rejected on sight

NKE — trades at its 52-week low ($40.51 vs $40.00), revenue −1%, 78% payout, 17.6x forward for a shrinking business. A turnaround, not a compounder. · TSCO — earnings −15%, D/E 249%, and consensus target $35.52 sits below the $36.43 spot. · TYL — 41.7x trailing on 10% ROE isn't cheap, it's just less expensive. · POOL — decent (31% ROE) but flat earnings on housing cyclicality. · WU — 13.3% yield on a melting ice cube.


Verdict against BR

BR BSX PGR
Conviction [8.5], established unscored unscored
In an entry zone? yes no zone set no zone set
Income role 2.55% yield, 20yr raise streak, 41% payout none artifact yield
Evidence depth two full files, FY26 confirmed one screen row one screen row

BR keeps the top spot, and it isn't close on evidence. A screen row is a nomination; BR has a delivered fiscal year, a record sales number, a 20th consecutive raise, and a $1.5B buyback behind it. Nothing here justifies delaying a BR add to wait for a better idea.


Round 2 — the other three screens

The first pass covered 3 of 24 available screens. Three more were run: evergreen, yield-tomorrow, undervalued_growth_stocks. Round 2 produced no name that beats BR, and arguably none that earns a full /analyze.

⚠️ Structural finding: the screens are capped at 25 rows

.mcp/fin.py defines screen(name, count=25) and the CLI never overrides it. Every screen returns exactly 25 rows no matter how many names pass the filter, and the — 25 hits header reads like a match count but is a row count. The truncation takes the top 25 by the screen's sort field, so a qualifying name that sorts 26th is invisible. See [[pitfall-fin-py-screen-silently-caps-at-25-rows]].

This bounds every conclusion in this file. Six screens is at most 150 rows with heavy overlap — undervalued_growth_stocks repeated ~60% of undervalued_large_caps (CDE, MU, AGNC, HST, KGC, IAG, OXY, UMC, APA, AR, CVE, NLY, CNQ, ALLY, WBS). Real unique coverage was under 100 names. The honest claim is "nothing in ~100 screened rows beats BR," not "nothing in the market does."

What round 2 returned

Name The pitch Why it fails
AMP 13.7x ttm / 11.0x fwd, ROE 63%, revenue +12%, earnings +12% Trading at its 52-week high ($565.07 vs $565.44). Target $574 = +1.6%. Real quality, zero margin of safety.
AFL 13.0x ttm, 0.59 beta, 26% op margin Fwd P/E 15.95x is higher than ttm — earnings are expected to fall. The +47% earnings growth is a one-off. Target $118.86 sits below the $120.73 spot.
T 8.0x, 4.53% yield Yield is below its 6.22% five-year average — not cheap on its own history. Fwd P/E 9.46 > ttm 8.0. EV $334B vs $166B cap.
MO 6.52% yield, 61% op margin Yield below its 7.60% five-year average, 89% payout, earnings −3%. A terminal-decline annuity, not a compounder.
AOS 17.4x, −13.5% on the year Earnings −15%, revenue −1%.

The rest of evergreen was quality at full price (NVDA 34x, AAPL 35x, MA 31x, LLY 41x) and yield-tomorrow was the same (JNJ 30x, CL 36x, LIN 31x, ITW 26x). The screens sorted for quality return names that are expensive; the ones sorted for cheapness return names whose earnings are falling. Nothing sat in the overlap — which is exactly the slot BR occupies.

A repeatable tell worth keeping

AFL, T and MO all show forward P/E above trailing P/E. That single comparison flags "the cheap multiple is trailing, and the E is going down" faster than any other field on the snapshot. All three screened cheap; all three fail on it.

FIS — the funnel catching a trap for the second time

undervalued_growth_stocks surfaced FIS at 6.44x earnings, 4.12% yield, −41% on the year — the single cheapest quality-adjacent name across all six screens.

The watchlist already analyzed it on 8/06 and scored it [5.0], WATCH, no position. The finding there: "every screener shows 6.6x trailing earnings — the real figure is 19.3x," caught by net margin 28% exceeding op margin 21%. The error is 3x, and the screen reproduced it verbatim today.

Along with ZTS and ARCC in round 1, that is three of the cheapest names across six screens already correctly rejected by prior work. The funnel is working; the screens are re-offering names it has already priced.


Final verdict

BR holds the top spot against all six screens. Of ~100 unique rows, two names earned real work (BSX, PGR — both round 1), and neither carries BR's combination of established conviction, an open entry zone, and a 20-year income record.

Recommended next steps, in order: 1. Act on BR — in zone, second scan held. The queue's constraint is execution, not supply (pattern-shortlist-runs-when-unexecuted). Six screens just failed to find a reason to wait. 2. BSX — already under analysis in a separate thread as of 2026-08-12. Do not duplicate. 3. INTU on 8/25 — already queued, already in zone, and a bigger scheduled catalyst than anything these six screens found. 4. PGR only if the income sleeve needs a candidate — verify the dividend basis first. 5. Optional tooling fix: add a count flag to fin.py --screen. Until then, going wider means more differently-sorted screens, not deeper ones.


Round 3 — the cap is fixed, and it was hiding 79%

fin.py --screen now accepts name:count (--screen rerating:100); a bare name keeps 25. Re-running each screen at :250 gives the true match counts:

screen rows seen in rounds 1–2 true matches seen
undervalued_growth_stocks 25 238 11%
evergreen 25 156 16%
yield-tomorrow 25 130 19%
undervalued_large_caps 25 97 26%
yield-today 25 55 45%
rerating 25 45 55%
total 150 721 21%

🚩 The cap hid BR itself

rerating matched 45 names. BR is row ~35 — below the 25-row cut. The screen built to find de-rated quality did match the benchmark name of this entire exercise and then truncated it away.

That retroactively rewrites both earlier rounds. "Six screens found nothing better than BR" was really "the top 21% by each sort field found nothing better than BR" — and the sort fields demonstrably discard exactly the kind of name being hunted.

What was in rows 26–45 of rerating alone

Name
VRSK Verisk Analytics · 27.7x · −31.5% The most BR-like name found in three rounds — insurance-data near-monopoly, regulated-ish infrastructure, subscription revenue.
HLNE Hamilton Lane · 15.7x · 2.29% yield · −34.8% Private-markets asset manager, capital-light.
MMS Maximus · 8.05x · 2.44% yield · −36.7% Government BPO. Cheapest quality-adjacent name in the tail.
NICE 14.35x · −31.4% Contact-center software, AI-disruption narrative.
OLED Universal Display · 22.2x · −35.2% OLED IP licensor.
LULU, PEGA, TRMB, APTV, LEN, SITE, STN Cheap, but each with a visible structural problem.
CHKP Already in the Graveyard — failed its 8/04 break trigger.

One truncated tail of one screen produced two names (VRSK, HLNE) more BR-comparable than anything in rounds 1 and 2 combined.

Revised answer on whether to keep screening

Rounds 1–2 said no. That answer was an artifact of the cap and is withdrawn. The binding constraint was the tool, not the market. With 721 matched names now reachable and the most BR-comparable candidate found in the first tail examined, one more properly-sized pass is worth running — bounded, and still producing nominations that need /analyze to clear.

What execution shows: 🟢 act on BR, unchanged. Nothing in the tail is analyzed, zone-set, or carries an income record. The re-screen is about replenishing the funnel, not about BR.