PUBLIC DATA THE WORDS THE NUMBERS THE EXPLANATION THE OUTPUT News flow (free) CNBC, Yahoo Finance, Fortune: no paywall Earnings filings SEC XBRL, 8-K releases Market data prices, 10y UST, ERP 1 Extract & code verbatim statements, each coded to a value-driver codebook: Revenue growth TAM SHARE REV Operating margins PRICE COST Investment efficiency INVEST Cost of capital EQUITY DEBT Failure risk FAIL coded statements, by date 2 Price the growth share NGV = adj. TTM EPS ÷ CoE CoE = 10y UST + β × ERP share = 1 − NGV ÷ P point-in-time EPS, stepped at each 8-K; β re-estimated monthly; daily series daily Δ 3 Bridge each day Market factors EPS update Treasury & beta Company-specific periods labels 4 Explain, point in time Every period the period's news ±1 day and the stock's own moves, no market figures → cause, with its confidence Every earnings release one-time items extracted from the press releases, amounts checked in code; code labels the reaction Placebo check, built in a cause in a market-driven or within-noise period is suspect: counted against the stand-out periods cited 5 Attribution report why the growth share moved: each month, each period, each earnings release every cause and release cites its sources + confidence; placebo count Qwen3-235B Claude Sonnet
Scroll sideways to see the whole flow.
The bridge says how much of each move needs explaining. The coded statements say what changed. Code cuts each month into periods, labelled by how much of the move the market explains (a rolling S&P 500 and sector-ETF model); a day whose company-specific move is at least 2.5× its trailing 60-day volatility stands alone. Every period and every earnings release gets an explanation built only from the news and filings around it, with every cause cited. The news is company-specific, so a cause found where the market or ordinary noise explains the move is suspect: the placebo check counts them.

Two models, each matched to its job

Step 1 · Extraction

Qwen3-235B open-weight, via DeepInfra

Task
High volume, narrow job: extract statements from each article and code them to the codebook, returned as schema-enforced JSON.
Why
The task is tightly constrained, so a large open-weight model does it at a fraction of frontier prices. It answers with sentence numbers, so every quote is verbatim.
Step 4 · Explanation

Claude Sonnet Anthropic, batch API

Task
A few dozen calls a year that need judgment: one per period (44 for Costco's year), naming the change in expectations behind its move, and one per earnings release, which only extracts the one-time items its press releases name. Outputs are structured and validated in code.
Why
This is where model quality matters most. Running the calls as one batch job lowers the price.

A cheap model where volume is high and the task is constrained, a stronger one where volume is low and judgment matters. Each paid step shows its cost estimate and asks before spending. The extraction model is a setting, so Sonnet can run step 1 too.

Proof of concept: Costco in 2024

71.3% → 78.6%
growth share, Jan to Dec
864 → 484
articles read, coded statements kept
44 + 4
period and earnings-release explanations, each citing its evidence
≈ $0.26
AI cost for the whole year
Bridge of the changepp
Marketreturn explained by the S&P 500 and RSPS, the equal-weight consumer-staples ETF+3.8
Company-specific, stand-out periodsthe 10 divergent or outlier periods+0.5
Company-specific, quiet periodsthe 34 market-driven or within-noise periods+3.7
EPS updatesnew quarter replacing the old at each release−3.5
10-year Treasury+2.2
Beta+0.6
Total+7.3

The re-rating came from the market and ordinary drift: the 10 periods that stand out net to +0.5pp. Each release raised trailing EPS, which worked against the growth share; $0.97 of the $2.35 rise was one-time items the press releases name.

Why the output can be trusted

What better data would add

The prototype runs on free sources: three outlets on Media Cloud whose full text can be fetched without a paywall, selected by a search term in the headline. Nothing downstream depends on the source. A licensed news feed would plug into step 1 unchanged.

We expect it to widen coverage and cut screening noise. In the Costco run, 36 of 44 periods have no cause found and one more had no news, and none of the six stand-out rises has a cause in the news. Part of that is drift that news may never explain, which is why estimate revisions and style factors are also on the roadmap.

Today (free)Licensed feed
OutletsCNBC, Yahoo Finance, FortuneBroad press plus wire services
SelectionCompany name in the headlineEntity-tagged articles, sector news
Primary sourcesPress releases onlyEarnings-call transcripts
Noise864 articles → 484 statementsFewer listicles and duplicates