Funnel Run — April 25, 2026

First end-to-end run of the deep-value funnel. 100 new stocks analyzed across 20 parallel Opus batches.
What was built today: A 4-stage pipeline (price refresh → SQL pre-filter → quality ranking → parallel deep-dive agents). Code lives in /Users/ravf/projects/work/research/investments/funnel/.

What was produced: 80 new three-report analyses (financials.md / business.md / future.md / meta.json each), all integrated into the website at reports-v3.html.

Cost: ~$50-80 in Claude tokens (rough estimate based on 16 batches × 5 stocks each, ~$3-5/stock).

Pipeline summary

StageOutputCode
1. Price refresh (yfinance)3,561 / 3,648 tickers refreshed (Yahoo rate-limited the rest)refresh_prices.py + refresh_prices_chart.py
2. Pre-filter SQL800 candidates ($50M-$5B mcap, P/TB<1.5 OR cash>50%MC OR EV/sales<1)prefilter.py
3. Quality rankingComposite score: P/TB + cash/MC + low debt + FCF + EV/sales. China ADRs penalized.rank.py
4. Deep-dive (Opus subagents)80 stocks analyzed in 16 parallel batchesinject_reports.py

Best ideas surfaced (score 6-8)

TickerScoreNameThesis (from agent reports)
OSG8Octave Specialty GroupAmbac post-rebrand. MGA platform + $1.6B NOLs at HoldCo. Sum-of-parts >> mcap.
OM7Outset MedicalNegative EV ($87M net cash > $83M mcap). Home dialysis + AGI tailwind.
ACTG7Acacia ResearchStarboard-controlled. $361M cash + 4 operating businesses. ~50% of SOTP.
FPH7Five Point HoldingsCA land at 40-65% NAV. Net cash. $40M buyback authorized Apr 23.
CCRN7Cross Country HealthcareFailed merger arb. $20M Aya term fee + $130M cash + $40M buyback. 46% deal discount.
SRBK7SR BancorpMutual-to-stock conversion thrift. 80% of TBV. Active buyback. M&A target.
CYRX7CryoportCGT supply chain leader. AGI tailwind. $185M convertible 2026 catalyst.
CABO7Cable OnePhysical fiber/coax moat. 3x P/FCF. Dropped 10% Apr 24. Target ~$70-80.
GASS7StealthGasPaid off all $85M debt. Net cash. 0.49x book. 31 LPG carriers.
XPER7Xperi Inc.Connected Car (DTS AutoStage in 14M vehicles) is AGI beneficiary. P/E 6.7.
SRL6Scully RoyaltyIron ore royalty + activist cleanup. Royalty currently in court interpleader.
MBLY6Mobileye GlobalReal biz (Intel 70% stake) but screen MC was wrong; true mcap $7.77B.
HMY7Harmony GoldForward P/E 4.77, net cash, gold near ATH, copper transition optionality.
VALE7Vale SACarajás iron ore — one of most durable industrial assets globally. 4Bt+ reserves at 67% Fe.
WBD6Warner Bros Discovery3x'd to $27 on PSKY merger. Strategic IP value remains.
SBSW6Sibanye StillwaterPGM recovery + gold + Keliber lithium. 2.5x in past year.
BCYC6Bicycle TherapeuticsPlatform biotech with big-pharma partners. $626M cash on $337M mcap.
HURC6Hurco CompaniesReal net cash 34% of mcap. Machine tools for AGI/robotics manufacturing.
AMPY6Amplify EnergyEliminated $127M debt. Beta CA offshore platforms politically irreplaceable.
AII6American Integrity InsuranceFL specialty insurer. 3.95x earnings. 5.19% div. Hurricane risk is the trade.

Critical lessons learned about the screen

The screen surfaced false positives at a high rate. Almost every batch found that the cash-rich / low-P/TB metrics were misleading.

1. "cash > 50% of mcap" ignores debt

Many "cash-rich" stocks have offsetting debt: ANGI (net debt $194M not "cash 1.01x mc"), AMCX (net debt $1.35B), CNDT (net debt $556M), BXC (net debt $288M), ADV (net debt $1.43B = 3x mcap), CMCO (post-Kito 7-8x net leverage). Fix: filter on net cash (cash − debt) not gross cash.

2. Banks always show high "cash/mc" — but bank cash is not shareholder cash

Bank balance sheets always have huge "cash" (deposits sitting at the Fed) but it's not distributable. FFWM was already merged. OPY is a broker-dealer where operating cash isn't shareholder cash. Fix: exclude SIC banking codes from the cash-rich screen, use bank-specific metrics (P/TBV, NIM, NPAs, CRE concentration).

3. P/TB stale or fictional

Several stocks show "low P/TB" because the data is stale; tangible book has gone negative since: AMWL (TBV -$78M), FORR (TBV -$12.6M), ACCO (TBV -$511M), EHTH ($1.13B "trade receivables" is constructive ASC 606 PV not real assets). Fix: re-pull TBV at filter time, exclude negative-TBV.

4. Controlled microcaps trade at permanent discount

APWC (PEWC owns 81%, $11M float), BH (Sardar Biglari controls 74.3%), Vafias-controlled GASS (31% controller), Simmons family controls VHI (91%). The discount won't close — it's a governance feature, not a mispricing. Fix: flag insider ownership > 50% as a yellow card.

5. Pending M&A surfaces as "value"

GDOT was an announced merger arb situation, not a fundamental value play. FONR has a definitive going-private deal at $19. Fix: cross-reference SEC 8-K M&A filings to flag arb situations.

6. Pre-revenue biotech and Chinese ADRs are noise

Filtered manually after batch 1 produced too many of these. Permanent fixes needed in prefilter.py.

What to do next

  1. Fix the prefilter (the 6 issues above). Re-run on full universe.
  2. Manually review the score 7-8 standouts. Pick 2-3 for a real position.
  3. Refresh remaining metrics: cash, debt, revenue (XBRL still from March 11). Need an SEC EDGAR incremental fetcher for this.
  4. Productionize the funnel as cron: weekly price refresh, monthly XBRL refresh, weekly screen + queue diff.
  5. Build the other 4 sources of ideas (AGI news, superinvestor 13Fs, news movers, crashed stocks) — see sources-of-ideas.html.

Files